Changeset 7646 for trunk/NEMOGCM/NEMO/TOP_SRC/CFC
- Timestamp:
- 2017-02-06T10:25:03+01:00 (7 years ago)
- Location:
- trunk/NEMOGCM/NEMO/TOP_SRC/CFC
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/TOP_SRC/CFC/par_cfc.F90
r3680 r7646 10 10 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 11 11 !!---------------------------------------------------------------------- 12 USE par_pisces , ONLY : jp_pisces !: number of tracers in PISCES13 USE par_pisces , ONLY : jp_pisces_2d !: number of 2D diag in PISCES14 USE par_pisces , ONLY : jp_pisces_3d !: number of 3D diag in PISCES15 USE par_pisces , ONLY : jp_pisces_trd !: number of biological diag in PISCES16 12 17 13 IMPLICIT NONE 18 19 INTEGER, PARAMETER :: jp_lc = jp_pisces !: cumulative number of passive tracers 20 INTEGER, PARAMETER :: jp_lc_2d = jp_pisces_2d !: 21 INTEGER, PARAMETER :: jp_lc_3d = jp_pisces_3d !: 22 INTEGER, PARAMETER :: jp_lc_trd = jp_pisces_trd !: 23 24 #if defined key_cfc 25 !!--------------------------------------------------------------------- 26 !! 'key_cfc' : CFC tracers 27 !!--------------------------------------------------------------------- 28 LOGICAL, PUBLIC, PARAMETER :: lk_cfc = .TRUE. !: CFC flag 29 INTEGER, PUBLIC, PARAMETER :: jp_cfc = 1 !: number of passive tracers 30 INTEGER, PUBLIC, PARAMETER :: jp_cfc_2d = 2 !: additional 2d output arrays ('key_trc_diaadd') 31 INTEGER, PUBLIC, PARAMETER :: jp_cfc_3d = 0 !: additional 3d output arrays ('key_trc_diaadd') 32 INTEGER, PUBLIC, PARAMETER :: jp_cfc_trd = 0 !: number of sms trends for CFC 33 34 ! assign an index in trc arrays for each CFC prognostic variables 35 INTEGER, PUBLIC, PARAMETER :: jpc11 = jp_lc + 1 !: CFC-11 36 INTEGER, PUBLIC, PARAMETER :: jpc12 = jp_lc + 2 !: CFC-12 37 #else 38 !!--------------------------------------------------------------------- 39 !! Default : No CFC tracers 40 !!--------------------------------------------------------------------- 41 LOGICAL, PUBLIC, PARAMETER :: lk_cfc = .FALSE. !: CFC flag 42 INTEGER, PUBLIC, PARAMETER :: jp_cfc = 0 !: No CFC tracers 43 INTEGER, PUBLIC, PARAMETER :: jp_cfc_2d = 0 !: No CFC additional 2d output arrays 44 INTEGER, PUBLIC, PARAMETER :: jp_cfc_3d = 0 !: No CFC additional 3d output arrays 45 INTEGER, PUBLIC, PARAMETER :: jp_cfc_trd = 0 !: number of sms trends for CFC 46 #endif 47 48 ! Starting/ending CFC do-loop indices (N.B. no CFC : jp_cfc0 > jp_cfc1 the do-loop are never done) 49 INTEGER, PUBLIC, PARAMETER :: jp_cfc0 = jp_lc + 1 !: First index of CFC tracers 50 INTEGER, PUBLIC, PARAMETER :: jp_cfc1 = jp_lc + jp_cfc !: Last index of CFC tracers 51 INTEGER, PUBLIC, PARAMETER :: jp_cfc0_2d = jp_lc_2d + 1 !: First index of CFC tracers 52 INTEGER, PUBLIC, PARAMETER :: jp_cfc1_2d = jp_lc_2d + jp_cfc_2d !: Last index of CFC tracers 53 INTEGER, PUBLIC, PARAMETER :: jp_cfc0_3d = jp_lc_3d + 1 !: First index of CFC tracers 54 INTEGER, PUBLIC, PARAMETER :: jp_cfc1_3d = jp_lc_3d + jp_cfc_3d !: Last index of CFC tracers 55 INTEGER, PUBLIC, PARAMETER :: jp_cfc0_trd = jp_lc_trd + 1 !: First index of CFC tracers 56 INTEGER, PUBLIC, PARAMETER :: jp_cfc1_trd = jp_lc_trd + jp_cfc_trd !: Last index of CFC tracers 14 INTEGER, PUBLIC :: jp_cfc0, jp_cfc1 !: First/last index of CFC tracers 57 15 58 16 !!====================================================================== -
trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcice_cfc.F90
r5434 r7646 5 5 !!====================================================================== 6 6 !! History : 2.0 ! 2007-12 (C. Ethe, G. Madec) Original code 7 !!----------------------------------------------------------------------8 #if defined key_cfc9 !!----------------------------------------------------------------------10 !! 'key_cfc' CFC tracers11 7 !!---------------------------------------------------------------------- 12 8 !! trc_ice_cfc : MY_TRC model main routine … … 40 36 END SUBROUTINE trc_ice_ini_cfc 41 37 42 43 #else44 !!----------------------------------------------------------------------45 !! Dummy module No MY_TRC model46 !!----------------------------------------------------------------------47 CONTAINS48 SUBROUTINE trc_ice_ini_cfc ! Empty routine49 END SUBROUTINE trc_ice_ini_cfc50 #endif51 52 38 !!====================================================================== 53 39 END MODULE trcice_cfc -
trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcini_cfc.F90
r3294 r7646 6 6 !! History : 2.0 ! 2007-12 (C. Ethe, G. Madec) 7 7 !!---------------------------------------------------------------------- 8 #if defined key_cfc9 !!----------------------------------------------------------------------10 !! 'key_cfc' CFC tracers11 8 !!---------------------------------------------------------------------- 12 9 !! trc_ini_cfc : CFC model initialisation … … 15 12 USE par_trc ! TOP parameters 16 13 USE trc ! TOP variables 14 USE trcnam_cfc ! CFC SMS namelist 17 15 USE trcsms_cfc ! CFC sms trends 18 16 … … 21 19 22 20 PUBLIC trc_ini_cfc ! called by trcini.F90 module 23 24 CHARACTER (len=34) :: clname = 'cfc1112.atm' ! ???25 21 26 22 INTEGER :: inum ! unit number … … 46 42 INTEGER :: iskip = 6 ! number of 1st descriptor lines 47 43 REAL(wp) :: zyy, zyd 44 CHARACTER(len = 20) :: cltra 48 45 !!---------------------------------------------------------------------- 49 46 ! 47 CALL trc_nam_cfc 48 ! 50 49 IF(lwp) WRITE(numout,*) 51 50 IF(lwp) WRITE(numout,*) ' trc_ini_cfc: initialisation of CFC chemical model' 52 51 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~' 53 54 55 IF(lwp) WRITE(numout,*) 'read of formatted file cfc1112atm' 52 ! 53 IF(lwp) WRITE(numout,*) 'Read annual atmospheric concentratioins from formatted file : ' // TRIM(clname) 56 54 57 55 CALL ctl_opn( inum, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) … … 66 64 END DO 67 65 100 jpyear = jn - 1 - iskip 68 IF ( lwp) WRITE(numout,*) ' ', jpyear ,' years read'66 IF ( lwp) WRITE(numout,*) ' ---> ', jpyear ,' years read' 69 67 ! ! Allocate CFC arrays 70 68 71 ALLOCATE( p_cfc(jpyear,jphem, 2), STAT=ierr )69 ALLOCATE( p_cfc(jpyear,jphem,3), STAT=ierr ) 72 70 IF( ierr > 0 ) THEN 73 71 CALL ctl_stop( 'trc_ini_cfc: unable to allocate p_cfc array' ) ; RETURN … … 87 85 IF(lwp) THEN 88 86 WRITE(numout,*) 89 WRITE(numout,*) 'Initiali zation deqint ; No restart : qint equal zero '87 WRITE(numout,*) 'Initialisation of qint ; No restart : qint equal zero ' 90 88 ENDIF 91 89 qint_cfc(:,:,:) = 0._wp … … 105 103 jn = 31 106 104 DO 107 READ(inum,*, IOSTAT=io) zyy, p_cfc(jn,1 ,1), p_cfc(jn,1,2), p_cfc(jn,2,1), p_cfc(jn,2,2)105 READ(inum,*, IOSTAT=io) zyy, p_cfc(jn,1:2,1), p_cfc(jn,1:2,2), p_cfc(jn,1:2,3) 108 106 IF( io < 0 ) exit 109 107 jn = jn + 1 110 108 END DO 111 109 112 p_cfc(32,1:2,1) = 5.e-4 ! modify the values of the first years 113 p_cfc(33,1:2,1) = 8.e-4 114 p_cfc(34,1:2,1) = 1.e-6 115 p_cfc(35,1:2,1) = 2.e-3 116 p_cfc(36,1:2,1) = 4.e-3 117 p_cfc(37,1:2,1) = 6.e-3 118 p_cfc(38,1:2,1) = 8.e-3 119 p_cfc(39,1:2,1) = 1.e-2 120 110 !p_cfc(32,1:2,1) = 5.e-4 ! modify the values of the first years 111 !p_cfc(33,1:2,1) = 8.e-4 112 !p_cfc(34,1:2,1) = 1.e-6 113 !p_cfc(35,1:2,1) = 2.e-3 114 !p_cfc(36,1:2,1) = 4.e-3 115 !p_cfc(37,1:2,1) = 6.e-3 116 !p_cfc(38,1:2,1) = 8.e-3 117 !p_cfc(39,1:2,1) = 1.e-2 121 118 IF(lwp) THEN ! Control print 122 119 WRITE(numout,*) 123 WRITE(numout,*) ' Year p11HN p11HS p12HN p12HS'120 WRITE(numout,*) ' Year c11NH c11SH c12NH c12SH SF6NH SF6SH' 124 121 DO jn = 30, jpyear 125 WRITE(numout, '( 1I4, 4F9.2)') jn, p_cfc(jn,1,1), p_cfc(jn,2,1), p_cfc(jn,1,2), p_cfc(jn,2,2)122 WRITE(numout, '( 1I4, 6F10.4)') jn, p_cfc(jn,1:2,1), p_cfc(jn,1:2,2), p_cfc(jn,1:2,3) 126 123 END DO 127 124 ENDIF … … 145 142 ! 146 143 END SUBROUTINE trc_ini_cfc 147 148 #else149 !!----------------------------------------------------------------------150 !! Dummy module No CFC tracers151 !!----------------------------------------------------------------------152 CONTAINS153 SUBROUTINE trc_ini_cfc ! Empty routine154 END SUBROUTINE trc_ini_cfc155 #endif156 144 157 145 !!====================================================================== -
trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcnam_cfc.F90
r4624 r7646 6 6 !! History : 2.0 ! 2007-12 (C. Ethe, G. Madec) from trcnam.cfc.h90 7 7 !!---------------------------------------------------------------------- 8 #if defined key_cfc9 !!----------------------------------------------------------------------10 !! 'key_cfc' CFC tracers11 !!----------------------------------------------------------------------12 8 !! trc_nam_cfc : CFC model initialisation 13 9 !!---------------------------------------------------------------------- 14 10 USE oce_trc ! Ocean variables 15 USE par_trc ! TOP parameters16 11 USE trc ! TOP variables 17 12 USE trcsms_cfc ! CFC specific variable 18 USE iom ! I/O manager19 13 20 14 IMPLICIT NONE 21 15 PRIVATE 16 17 CHARACTER(len=34), PUBLIC :: clname ! Input filename of CFCs atm. concentrations 22 18 23 19 PUBLIC trc_nam_cfc ! called by trcnam.F90 module … … 42 38 !! ** input : Namelist namcfc 43 39 !!---------------------------------------------------------------------- 44 INTEGER :: numnatc_ref = -1 ! Logical unit for reference CFC namelist45 INTEGER :: numnatc_cfg = -1 ! Logical unit for configuration CFC namelist46 INTEGER :: numonc = -1 ! Logical unit for output namelist47 40 INTEGER :: ios ! Local integer output status for namelist read 48 41 INTEGER :: jl, jn 49 TYPE(DIAG), DIMENSION(jp_cfc_2d) :: cfcdia2d50 42 !! 51 NAMELIST/namcfcdate/ ndate_beg, nyear_res 52 NAMELIST/namcfcdia/ cfcdia2d ! additional diagnostics 43 NAMELIST/namcfc/ ndate_beg, nyear_res, clname 53 44 !!---------------------------------------------------------------------- 54 ! ! Open namelist files 55 CALL ctl_opn( numnatc_ref, 'namelist_cfc_ref' , 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 56 CALL ctl_opn( numnatc_cfg, 'namelist_cfc_cfg' , 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 57 IF(lwm) CALL ctl_opn( numonc, 'output.namelist.cfc', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 45 ! 46 jn = jp_cfc0 - 1 47 ! Variables setting 48 IF( ln_cfc11 ) THEN 49 jn = jn + 1 50 ctrcnm (jn) = 'CFC11' 51 ctrcln (jn) = 'Chlorofluoro carbon 11 Concentration' 52 ctrcun (jn) = 'umolC/L' 53 ln_trc_ini(jn) = .false. 54 ln_trc_sbc(jn) = .false. 55 ln_trc_cbc(jn) = .false. 56 ln_trc_obc(jn) = .false. 57 ENDIF 58 ! 59 IF( ln_cfc12 ) THEN 60 jn = jn + 1 61 ctrcnm (jn) = 'CFC12' 62 ctrcln (jn) = 'Chlorofluoro carbon 12 Concentration' 63 ctrcun (jn) = 'umolC/L' 64 ln_trc_ini(jn) = .false. 65 ln_trc_sbc(jn) = .false. 66 ln_trc_cbc(jn) = .false. 67 ln_trc_obc(jn) = .false. 68 ENDIF 69 ! 70 IF( ln_sf6 ) THEN 71 jn = jn + 1 72 ctrcnm (jn) = 'SF6' 73 ctrcln (jn) = 'Sulfur hexafluoride Concentration' 74 ctrcun (jn) = 'umol/L' 75 ln_trc_ini(jn) = .false. 76 ln_trc_sbc(jn) = .false. 77 ln_trc_cbc(jn) = .false. 78 ln_trc_obc(jn) = .false. 79 ENDIF 80 ! 81 REWIND( numtrc_ref ) ! Namelist namcfcdate in reference namelist : CFC parameters 82 READ ( numtrc_ref, namcfc, IOSTAT = ios, ERR = 901) 83 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfc in reference namelist', lwp ) 58 84 59 REWIND( numnatc_ref ) ! Namelist namcfcdate in reference namelist : CFC parameters 60 READ ( numnatc_ref, namcfcdate, IOSTAT = ios, ERR = 901) 61 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfcdate in reference namelist', lwp ) 62 63 REWIND( numnatc_cfg ) ! Namelist namcfcdate in configuration namelist : CFC parameters 64 READ ( numnatc_cfg, namcfcdate, IOSTAT = ios, ERR = 902 ) 65 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfcdate in configuration namelist', lwp ) 66 IF(lwm) WRITE ( numonc, namcfcdate ) 85 REWIND( numtrc_cfg ) ! Namelist namcfcdate in configuration namelist : CFC parameters 86 READ ( numtrc_cfg, namcfc, IOSTAT = ios, ERR = 902 ) 87 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfc in configuration namelist', lwp ) 88 IF(lwm) WRITE ( numonr, namcfc ) 67 89 68 90 IF(lwp) THEN ! control print 69 WRITE(numout,*) 91 WRITE(numout,*) ' ' 92 WRITE(numout,*) ' CFCs' 93 WRITE(numout,*) ' ' 70 94 WRITE(numout,*) ' trc_nam: Read namdates, namelist for CFC chemical model' 71 95 WRITE(numout,*) ' ~~~~~~~' … … 76 100 IF(lwp) WRITE(numout,*) ' initial year (aa) nyear_beg = ', nyear_beg 77 101 ! 78 79 IF( .NOT.lk_iomput .AND. ln_diatrc ) THEN 80 ! 81 ! Namelist namcfcdia 82 ! ------------------- 83 REWIND( numnatc_ref ) ! Namelist namcfcdia in reference namelist : CFC diagnostics 84 READ ( numnatc_ref, namcfcdia, IOSTAT = ios, ERR = 903) 85 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfcdia in reference namelist', lwp ) 86 87 REWIND( numnatc_cfg ) ! Namelist namcfcdia in configuration namelist : CFC diagnostics 88 READ ( numnatc_cfg, namcfcdia, IOSTAT = ios, ERR = 904 ) 89 904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfcdia in configuration namelist', lwp ) 90 IF(lwm) WRITE ( numonc, namcfcdia ) 91 92 DO jl = 1, jp_cfc_2d 93 jn = jp_cfc0_2d + jl - 1 94 ctrc2d(jn) = TRIM( cfcdia2d(jl)%sname ) 95 ctrc2l(jn) = TRIM( cfcdia2d(jl)%lname ) 96 ctrc2u(jn) = TRIM( cfcdia2d(jl)%units ) 97 END DO 98 99 IF(lwp) THEN ! control print 100 WRITE(numout,*) 101 WRITE(numout,*) ' Namelist : natadd' 102 DO jl = 1, jp_cfc_2d 103 jn = jp_cfc0_2d + jl - 1 104 WRITE(numout,*) ' 2d diag nb : ', jn, ' short name : ', ctrc2d(jn), & 105 & ' long name : ', ctrc2l(jn), ' unit : ', ctrc2u(jn) 106 END DO 107 WRITE(numout,*) ' ' 108 ENDIF 109 ! 110 ENDIF 111 112 IF(lwm) CALL FLUSH ( numonc ) ! flush output namelist CFC 102 IF(lwm) CALL FLUSH ( numonr ) ! flush output namelist CFC 113 103 114 104 END SUBROUTINE trc_nam_cfc 115 105 116 #else117 !!----------------------------------------------------------------------118 !! Dummy module : No CFC119 !!----------------------------------------------------------------------120 CONTAINS121 SUBROUTINE trc_nam_cfc ! Empty routine122 END SUBROUTINE trc_nam_cfc123 #endif124 125 106 !!====================================================================== 126 107 END MODULE trcnam_cfc -
trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90
r6140 r7646 7 7 !! NEMO 1.0 ! 2004-03 (C. Ethe) free form + modularity 8 8 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) reorganisation 9 !!---------------------------------------------------------------------- 10 #if defined key_cfc 11 !!---------------------------------------------------------------------- 12 !! 'key_cfc' CFC tracers 9 !! 4.0 ! 2016-11 (T. Lovato) Add SF6, Update Schmidt number 13 10 !!---------------------------------------------------------------------- 14 11 !! trc_sms_cfc : compute and add CFC suface forcing to CFC trends … … 29 26 30 27 INTEGER , PUBLIC, PARAMETER :: jphem = 2 ! parameter for the 2 hemispheres 31 INTEGER , PUBLIC :: jpyear ! Number of years read in CFC1112 file28 INTEGER , PUBLIC :: jpyear ! Number of years read in input data file (in trcini_cfc) 32 29 INTEGER , PUBLIC :: ndate_beg ! initial calendar date (aammjj) for CFC 33 30 INTEGER , PUBLIC :: nyear_res ! restoring time constant (year) 34 31 INTEGER , PUBLIC :: nyear_beg ! initial year (aa) 35 32 36 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: p_cfc ! partial hemispheric pressure for CFC33 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: p_cfc ! partial hemispheric pressure for all CFC 37 34 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: xphem ! spatial interpolation factor for patm 38 35 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qtr_cfc ! flux at surface 39 36 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qint_cfc ! cumulative flux 37 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: atm_cfc ! partial hemispheric pressure for used CFC 40 38 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: patm ! atmospheric function 41 39 42 REAL(wp), DIMENSION(4,2) :: soa ! coefficient for solubility of CFC [mol/l/atm] 43 REAL(wp), DIMENSION(3,2) :: sob ! " " 44 REAL(wp), DIMENSION(4,2) :: sca ! coefficients for schmidt number in degre Celcius 45 40 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: soa ! coefficient for solubility of CFC [mol/l/atm] 41 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: sob ! " " 42 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: sca ! coefficients for schmidt number in degrees Celsius 46 43 ! ! coefficients for conversion 47 44 REAL(wp) :: xconv1 = 1.0 ! conversion from to … … 79 76 INTEGER :: im1, im2, ierr 80 77 REAL(wp) :: ztap, zdtap 81 REAL(wp) :: zt1, zt2, zt3, z v278 REAL(wp) :: zt1, zt2, zt3, zt4, zv2 82 79 REAL(wp) :: zsol ! solubility 83 80 REAL(wp) :: zsch ! schmidt number … … 117 114 ! time interpolation at time kt 118 115 DO jm = 1, jphem 119 zpatm(jm,jl) = ( p_cfc(iyear_beg, jm, jl) * FLOAT (im1) &120 & + p_cfc(iyear_end, jm, jl) * FLOAT (im2) ) / 12.116 zpatm(jm,jl) = ( atm_cfc(iyear_beg, jm, jl) * REAL(im1, wp) & 117 & + atm_cfc(iyear_end, jm, jl) * REAL(im2, wp) ) / 12. 121 118 END DO 122 119 … … 145 142 146 143 ! Computation of speed transfert 147 ! Schmidt number 144 ! Schmidt number revised in Wanninkhof (2014) 148 145 zt1 = tsn(ji,jj,1,jp_tem) 149 146 zt2 = zt1 * zt1 150 147 zt3 = zt1 * zt2 151 zsch = sca(1,jl) + sca(2,jl) * zt1 + sca(3,jl) * zt2 + sca(4,jl) * zt3 152 153 ! speed transfert : formulae of wanninkhof 1992 148 zt4 = zt2 * zt2 149 zsch = sca(1,jl) + sca(2,jl) * zt1 + sca(3,jl) * zt2 + sca(4,jl) * zt3 + sca(5,jl) * zt4 150 151 ! speed transfert : formulae revised in Wanninkhof (2014) 154 152 zv2 = wndm(ji,jj) * wndm(ji,jj) 155 153 zsch = zsch / 660. 156 zak_cfc = ( 0.3 9* xconv2 * zv2 / SQRT(zsch) ) * tmask(ji,jj,1)154 zak_cfc = ( 0.31 * xconv2 * zv2 / SQRT(zsch) ) * tmask(ji,jj,1) 157 155 158 156 ! Input function : speed *( conc. at equil - concen at surface ) 159 157 ! trn in pico-mol/l idem qtr; ak in en m/a 160 158 qtr_cfc(ji,jj,jl) = -zak_cfc * ( trb(ji,jj,1,jn) - zca_cfc ) & 161 #if defined key_degrad162 & * facvol(ji,jj,1) &163 #endif164 159 & * tmask(ji,jj,1) * ( 1. - fr_i(ji,jj) ) 165 160 ! Add the surface flux to the trend … … 185 180 ! 186 181 IF( lk_iomput ) THEN 187 CALL iom_put( "qtrCFC11" , qtr_cfc (:,:,1) ) 188 CALL iom_put( "qintCFC11" , qint_cfc(:,:,1) ) 189 ELSE 190 IF( ln_diatrc ) THEN 191 trc2d(:,:,jp_cfc0_2d ) = qtr_cfc (:,:,1) 192 trc2d(:,:,jp_cfc0_2d + 1) = qint_cfc(:,:,1) 193 END IF 182 DO jn = jp_cfc0, jp_cfc1 183 CALL iom_put( 'qtr_'//ctrcnm(jn) , qtr_cfc (:,:,jn) ) 184 CALL iom_put( 'qint_'//ctrcnm(jn), qint_cfc(:,:,jn) ) 185 ENDDO 194 186 END IF 195 187 ! … … 212 204 !!--------------------------------------------------------------------- 213 205 INTEGER :: jn 214 206 !!---------------------------------------------------------------------- 207 ! 208 jn = 0 215 209 ! coefficient for CFC11 216 210 !---------------------- 217 218 ! Solubility 219 soa(1,1) = -229.9261 220 soa(2,1) = 319.6552 221 soa(3,1) = 119.4471 222 soa(4,1) = -1.39165 223 224 sob(1,1) = -0.142382 225 sob(2,1) = 0.091459 226 sob(3,1) = -0.0157274 227 228 ! Schmidt number 229 sca(1,1) = 3501.8 230 sca(2,1) = -210.31 231 sca(3,1) = 6.1851 232 sca(4,1) = -0.07513 211 if ( ln_cfc11 ) then 212 jn = jn + 1 213 ! Solubility 214 soa(1,jn) = -229.9261 215 soa(2,jn) = 319.6552 216 soa(3,jn) = 119.4471 217 soa(4,jn) = -1.39165 218 219 sob(1,jn) = -0.142382 220 sob(2,jn) = 0.091459 221 sob(3,jn) = -0.0157274 222 223 ! Schmidt number 224 sca(1,jn) = 3579.2 225 sca(2,jn) = -222.63 226 sca(3,jn) = 7.5749 227 sca(4,jn) = -0.14595 228 sca(5,jn) = 0.0011874 229 230 ! atm. concentration 231 atm_cfc(:,:,jn) = p_cfc(:,:,1) 232 endif 233 233 234 234 ! coefficient for CFC12 235 235 !---------------------- 236 237 ! Solubility 238 soa(1,2) = -218.0971 239 soa(2,2) = 298.9702 240 soa(3,2) = 113.8049 241 soa(4,2) = -1.39165 242 243 sob(1,2) = -0.143566 244 sob(2,2) = 0.091015 245 sob(3,2) = -0.0153924 246 247 ! schmidt number 248 sca(1,2) = 3845.4 249 sca(2,2) = -228.95 250 sca(3,2) = 6.1908 251 sca(4,2) = -0.067430 236 if ( ln_cfc12 ) then 237 jn = jn + 1 238 ! Solubility 239 soa(1,jn) = -218.0971 240 soa(2,jn) = 298.9702 241 soa(3,jn) = 113.8049 242 soa(4,jn) = -1.39165 243 244 sob(1,jn) = -0.143566 245 sob(2,jn) = 0.091015 246 sob(3,jn) = -0.0153924 247 248 ! schmidt number 249 sca(1,jn) = 3828.1 250 sca(2,jn) = -249.86 251 sca(3,jn) = 8.7603 252 sca(4,jn) = -0.1716 253 sca(5,jn) = 0.001408 254 255 ! atm. concentration 256 atm_cfc(:,:,jn) = p_cfc(:,:,2) 257 endif 258 259 ! coefficient for SF6 260 !---------------------- 261 if ( ln_sf6 ) then 262 jn = jn + 1 263 ! Solubility 264 soa(1,jn) = -80.0343 265 soa(2,jn) = 117.232 266 soa(3,jn) = 29.5817 267 soa(4,jn) = 0.0 268 269 sob(1,jn) = 0.0335183 270 sob(2,jn) = -0.0373942 271 sob(3,jn) = 0.00774862 272 273 ! schmidt number 274 sca(1,jn) = 3177.5 275 sca(2,jn) = -200.57 276 sca(3,jn) = 6.8865 277 sca(4,jn) = -0.13335 278 sca(5,jn) = 0.0010877 279 280 ! atm. concentration 281 atm_cfc(:,:,jn) = p_cfc(:,:,3) 282 endif 252 283 253 284 IF( ln_rsttr ) THEN … … 269 300 !! *** ROUTINE trc_sms_cfc_alloc *** 270 301 !!---------------------------------------------------------------------- 271 ALLOCATE( xphem (jpi,jpj) , & 272 & qtr_cfc (jpi,jpj,jp_cfc) , & 273 & qint_cfc(jpi,jpj,jp_cfc) , STAT=trc_sms_cfc_alloc ) 302 ALLOCATE( xphem (jpi,jpj) , atm_cfc(jpyear,jphem,jp_cfc) , & 303 & qtr_cfc (jpi,jpj,jp_cfc) , qint_cfc(jpi,jpj,jp_cfc) , & 304 & soa(4,jp_cfc) , sob(3,jp_cfc) , sca(5,jp_cfc) , & 305 & STAT=trc_sms_cfc_alloc ) 274 306 ! 275 307 IF( trc_sms_cfc_alloc /= 0 ) CALL ctl_warn('trc_sms_cfc_alloc : failed to allocate arrays.') … … 277 309 END FUNCTION trc_sms_cfc_alloc 278 310 279 #else280 !!----------------------------------------------------------------------281 !! Dummy module No CFC tracers282 !!----------------------------------------------------------------------283 CONTAINS284 SUBROUTINE trc_sms_cfc( kt ) ! Empty routine285 WRITE(*,*) 'trc_sms_cfc: You should not have seen this print! error?', kt286 END SUBROUTINE trc_sms_cfc287 #endif288 289 311 !!====================================================================== 290 312 END MODULE trcsms_cfc -
trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcwri_cfc.F90
r5836 r7646 6 6 !! History : 1.0 ! 2009-05 (C. Ethe) Original code 7 7 !!---------------------------------------------------------------------- 8 #if defined key_top && defined key_cfc && defined key_iomput 9 !!---------------------------------------------------------------------- 10 !! 'key_cfc' cfc model 8 #if defined key_top && defined key_iomput 11 9 !!---------------------------------------------------------------------- 12 10 !! trc_wri_cfc : outputs of concentration fields
Note: See TracChangeset
for help on using the changeset viewer.