- Timestamp:
- 2016-11-30T17:56:53+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_merge_2016/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90
r6140 r7403 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 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 45 43 46 44 ! ! coefficients for conversion … … 79 77 INTEGER :: im1, im2, ierr 80 78 REAL(wp) :: ztap, zdtap 81 REAL(wp) :: zt1, zt2, zt3, z v279 REAL(wp) :: zt1, zt2, zt3, zt4, zv2 82 80 REAL(wp) :: zsol ! solubility 83 81 REAL(wp) :: zsch ! schmidt number … … 117 115 ! time interpolation at time kt 118 116 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.117 zpatm(jm,jl) = ( atm_cfc(iyear_beg, jm, jl) * REAL(im1, wp) & 118 & + atm_cfc(iyear_end, jm, jl) * REAL(im2, wp) ) / 12. 121 119 END DO 122 120 … … 145 143 146 144 ! Computation of speed transfert 147 ! Schmidt number 145 ! Schmidt number revised in Wanninkhof (2014) 148 146 zt1 = tsn(ji,jj,1,jp_tem) 149 147 zt2 = zt1 * zt1 150 148 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 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) 154 153 zv2 = wndm(ji,jj) * wndm(ji,jj) 155 154 zsch = zsch / 660. 156 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) 157 156 158 157 ! Input function : speed *( conc. at equil - concen at surface ) 159 158 ! trn in pico-mol/l idem qtr; ak in en m/a 160 159 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 160 & * tmask(ji,jj,1) * ( 1. - fr_i(ji,jj) ) 165 161 ! Add the surface flux to the trend … … 185 181 ! 186 182 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 183 DO jn = jp_cfc0, jp_cfc1 184 CALL iom_put( 'qtr_'//ctrcnm(jn) , qtr_cfc (:,:,jn) ) 185 CALL iom_put( 'qint_'//ctrcnm(jn), qint_cfc(:,:,jn) ) 186 ENDDO 194 187 END IF 195 188 ! … … 212 205 !!--------------------------------------------------------------------- 213 206 INTEGER :: jn 214 207 !!---------------------------------------------------------------------- 208 ! 209 jn = 0 215 210 ! coefficient for CFC11 216 211 !---------------------- 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 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 233 234 234 235 ! coefficient for CFC12 235 236 !---------------------- 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 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 252 284 253 285 IF( ln_rsttr ) THEN … … 269 301 !! *** ROUTINE trc_sms_cfc_alloc *** 270 302 !!---------------------------------------------------------------------- 271 ALLOCATE( xphem (jpi,jpj) , & 272 & qtr_cfc (jpi,jpj,jp_cfc) , & 273 & 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 ) 274 307 ! 275 308 IF( trc_sms_cfc_alloc /= 0 ) CALL ctl_warn('trc_sms_cfc_alloc : failed to allocate arrays.') … … 277 310 END FUNCTION trc_sms_cfc_alloc 278 311 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 312 !!====================================================================== 290 313 END MODULE trcsms_cfc
Note: See TracChangeset
for help on using the changeset viewer.