- Timestamp:
- 2016-11-08T18:17:26+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90
r7192 r7211 7 7 !! NEMO 1.0 ! 2004-03 (C. Ethe) free form + modularity 8 8 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) reorganisation 9 !! 4.0 ! 2016-11 (T. Lovato) Add SF6, Update Schmidt number 9 10 !!---------------------------------------------------------------------- 10 11 !! trc_sms_cfc : compute and add CFC suface forcing to CFC trends … … 25 26 26 27 INTEGER , PUBLIC, PARAMETER :: jphem = 2 ! parameter for the 2 hemispheres 27 INTEGER , PUBLIC :: jpyear ! Number of years read in CFC1112 file28 INTEGER , PUBLIC :: jpyear ! Number of years read in input data file (in trcini_cfc) 28 29 INTEGER , PUBLIC :: ndate_beg ! initial calendar date (aammjj) for CFC 29 30 INTEGER , PUBLIC :: nyear_res ! restoring time constant (year) 30 31 INTEGER , PUBLIC :: nyear_beg ! initial year (aa) 31 32 32 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 33 34 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: xphem ! spatial interpolation factor for patm 34 35 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qtr_cfc ! flux at surface 35 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 36 38 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: patm ! atmospheric function 37 39 38 REAL(wp), DIMENSION(4,2) :: soa! coefficient for solubility of CFC [mol/l/atm]39 REAL(wp), DIMENSION(3,2) :: sob! " "40 REAL(wp), DIMENSION(4,2) :: sca ! coefficients for schmidt number in degre Celcius40 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 41 43 42 44 ! ! coefficients for conversion … … 75 77 INTEGER :: im1, im2, ierr 76 78 REAL(wp) :: ztap, zdtap 77 REAL(wp) :: zt1, zt2, zt3, z v279 REAL(wp) :: zt1, zt2, zt3, zt4, zv2 78 80 REAL(wp) :: zsol ! solubility 79 81 REAL(wp) :: zsch ! schmidt number … … 113 115 ! time interpolation at time kt 114 116 DO jm = 1, jphem 115 zpatm(jm,jl) = ( p_cfc(iyear_beg, jm, jl) * REAL(im1, wp) &116 & + p_cfc(iyear_end, jm, jl) * REAL(im2, wp) ) / 12.117 zpatm(jm,jl) = ( atm_cfc(iyear_beg, jm, jl) * REAL(im1, wp) & 118 & + atm_cfc(iyear_end, jm, jl) * REAL(im2, wp) ) / 12. 117 119 END DO 118 120 … … 141 143 142 144 ! Computation of speed transfert 143 ! Schmidt number 145 ! Schmidt number revised in Wanninkhof (2014) 144 146 zt1 = tsn(ji,jj,1,jp_tem) 145 147 zt2 = zt1 * zt1 146 148 zt3 = zt1 * zt2 147 zsch = sca(1,jl) + sca(2,jl) * zt1 + sca(3,jl) * zt2 + sca(4,jl) * zt3 148 149 ! speed transfert : formulae of wanninkhof 1992 149 zt4 = zt2 * zt2 150 zsch = sca(1,jl) + sca(2,jl) * zt1 + sca(3,jl) * zt2 + sca(4,jl) * zt3 + sca(5,jl) * zt4 151 152 ! speed transfert : formulae revised in Wanninkhof (2014) 150 153 zv2 = wndm(ji,jj) * wndm(ji,jj) 151 154 zsch = zsch / 660. 152 zak_cfc = ( 0.3 9* xconv2 * zv2 / SQRT(zsch) ) * tmask(ji,jj,1)155 zak_cfc = ( 0.31 * xconv2 * zv2 / SQRT(zsch) ) * tmask(ji,jj,1) 153 156 154 157 ! Input function : speed *( conc. at equil - concen at surface ) … … 202 205 !!--------------------------------------------------------------------- 203 206 INTEGER :: jn 204 207 !!---------------------------------------------------------------------- 208 ! 209 jn = 0 205 210 ! coefficient for CFC11 206 211 !---------------------- 207 208 ! Solubility 209 soa(1,1) = -229.9261 210 soa(2,1) = 319.6552 211 soa(3,1) = 119.4471 212 soa(4,1) = -1.39165 213 214 sob(1,1) = -0.142382 215 sob(2,1) = 0.091459 216 sob(3,1) = -0.0157274 217 218 ! Schmidt number 219 sca(1,1) = 3501.8 220 sca(2,1) = -210.31 221 sca(3,1) = 6.1851 222 sca(4,1) = -0.07513 212 if ( ln_cfc11 ) then 213 jn = jn + 1 214 ! Solubility 215 soa(1,jn) = -229.9261 216 soa(2,jn) = 319.6552 217 soa(3,jn) = 119.4471 218 soa(4,jn) = -1.39165 219 220 sob(1,jn) = -0.142382 221 sob(2,jn) = 0.091459 222 sob(3,jn) = -0.0157274 223 224 ! Schmidt number 225 sca(1,jn) = 3579.2 226 sca(2,jn) = -222.63 227 sca(3,jn) = 7.5749 228 sca(4,jn) = -0.14595 229 sca(5,jn) = 0.0011874 230 231 ! atm. concentration 232 atm_cfc(:,:,jn) = p_cfc(:,:,1) 233 endif 223 234 224 235 ! coefficient for CFC12 225 236 !---------------------- 226 227 ! Solubility 228 soa(1,2) = -218.0971 229 soa(2,2) = 298.9702 230 soa(3,2) = 113.8049 231 soa(4,2) = -1.39165 232 233 sob(1,2) = -0.143566 234 sob(2,2) = 0.091015 235 sob(3,2) = -0.0153924 236 237 ! schmidt number 238 sca(1,2) = 3845.4 239 sca(2,2) = -228.95 240 sca(3,2) = 6.1908 241 sca(4,2) = -0.067430 237 if ( ln_cfc12 ) then 238 jn = jn + 1 239 ! Solubility 240 soa(1,jn) = -218.0971 241 soa(2,jn) = 298.9702 242 soa(3,jn) = 113.8049 243 soa(4,jn) = -1.39165 244 245 sob(1,jn) = -0.143566 246 sob(2,jn) = 0.091015 247 sob(3,jn) = -0.0153924 248 249 ! schmidt number 250 sca(1,jn) = 3828.1 251 sca(2,jn) = -249.86 252 sca(3,jn) = 8.7603 253 sca(4,jn) = -0.1716 254 sca(5,jn) = 0.001408 255 256 ! atm. concentration 257 atm_cfc(:,:,jn) = p_cfc(:,:,2) 258 endif 259 260 ! coefficient for SF6 261 !---------------------- 262 if ( ln_sf6 ) then 263 jn = jn + 1 264 ! Solubility 265 soa(1,jn) = -80.0343 266 soa(2,jn) = 117.232 267 soa(3,jn) = 29.5817 268 soa(4,jn) = 0.0 269 270 sob(1,jn) = 0.0335183 271 sob(2,jn) = -0.0373942 272 sob(3,jn) = 0.00774862 273 274 ! schmidt number 275 sca(1,jn) = 3177.5 276 sca(2,jn) = -200.57 277 sca(3,jn) = 6.8865 278 sca(4,jn) = -0.13335 279 sca(5,jn) = 0.0010877 280 281 ! atm. concentration 282 atm_cfc(:,:,jn) = p_cfc(:,:,3) 283 endif 242 284 243 285 IF( ln_rsttr ) THEN … … 259 301 !! *** ROUTINE trc_sms_cfc_alloc *** 260 302 !!---------------------------------------------------------------------- 261 ALLOCATE( xphem (jpi,jpj) , & 262 & qtr_cfc (jpi,jpj,jp_cfc) , & 263 & qint_cfc(jpi,jpj,jp_cfc) , STAT=trc_sms_cfc_alloc ) 303 ALLOCATE( xphem (jpi,jpj) , atm_cfc(jpyear,jphem,jp_cfc) , & 304 & qtr_cfc (jpi,jpj,jp_cfc) , qint_cfc(jpi,jpj,jp_cfc) , & 305 & soa(4,jp_cfc) , sob(3,jp_cfc) , sca(5,jp_cfc) , & 306 & STAT=trc_sms_cfc_alloc ) 264 307 ! 265 308 IF( trc_sms_cfc_alloc /= 0 ) CALL ctl_warn('trc_sms_cfc_alloc : failed to allocate arrays.')
Note: See TracChangeset
for help on using the changeset viewer.