Changeset 14276 for NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zprod.F90
- Timestamp:
- 2021-01-07T23:09:56+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zprod.F90
r13233 r14276 67 67 INTEGER :: ji, jj, jk 68 68 REAL(wp) :: zsilfac, znanotot, zdiattot, zconctemp, zconctemp2 69 REAL(wp) :: zratio, zmax, zsilim, ztn, zadap, zlim, zsi lfac2, zsiborn69 REAL(wp) :: zratio, zmax, zsilim, ztn, zadap, zlim, zsiborn 70 70 REAL(wp) :: zprod, zproreg, zproreg2, zprochln, zprochld 71 71 REAL(wp) :: zdocprod, zpislopen, zpisloped, zfact 72 REAL(wp) :: zratiosi, zmaxsi, zlimfac, zsizetmp 73 REAL(wp) :: zrum, zcodel, zargu, zval, zfeup , chlcnm_n, chlcdm_n72 REAL(wp) :: zratiosi, zmaxsi, zlimfac, zsizetmp, zfecnm, zfecdm 73 REAL(wp) :: zrum, zcodel, zargu, zval, zfeup 74 74 CHARACTER (len=25) :: charout 75 75 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zw2d 76 76 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d 77 REAL(wp), DIMENSION(jpi,jpj ) :: zstrn78 77 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprmaxn,zprmaxd 79 78 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpislopeadn, zpislopeadd, zysopt … … 94 93 zprbio (:,:,:) = 0._wp ; zprchld (:,:,:) = 0._wp ; zprchln (:,:,:) = 0._wp 95 94 zmxl_fac(:,:,:) = 0._wp ; zmxl_chl(:,:,:) = 0._wp 95 consfe3 (:,:,:) = 0._wp 96 96 97 97 ! Computation of the maximimum production. Based on a Q10 description … … 100 100 zprmaxn(:,:,:) = 0.8_wp * r1_rday * tgfunc(:,:,:) 101 101 zprmaxd(:,:,:) = zprmaxn(:,:,:) 102 103 ! compute the day length depending on latitude and the day104 ! Astronomical parameterization taken from HAMOCC3105 zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp )106 zcodel = ASIN( SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp ) )107 108 ! day length in hours109 zstrn(:,:) = 0.110 DO jj = 1, jpj111 DO ji = 1, jpi112 zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad )113 zargu = MAX( -1., MIN( 1., zargu ) )114 zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. )115 END DO116 END DO117 102 118 103 ! Impact of the day duration and light intermittency on phytoplankton growth … … 127 112 DO ji = 1, jpi 128 113 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 129 zval = MAX( 1., zstrn(ji,jj) )114 zval = MAX( 1., strn(ji,jj) ) 130 115 IF( gdepw_n(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 131 116 zval = zval * MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) … … 225 210 ! Si/C of diatoms 226 211 ! ------------------------ 227 ! Si/C increases with iron stress and silicate availability (zsilfac)212 ! Si/C increases with iron stress and silicate availability 228 213 ! Si/C is arbitrariliy increased for very high Si concentrations 229 ! to mimic the very high ratios observed in the Southern Ocean (zsilfac 2)214 ! to mimic the very high ratios observed in the Southern Ocean (zsilfac) 230 215 ! A parameterization derived from Flynn (2003) is used for the control 231 216 ! when Si is not limiting which is similar to the parameterisation … … 236 221 zsiborn = trb(ji,jj,1,jpsil)**3 237 222 IF (gphit(ji,jj) < -30.0 ) THEN 238 zsilfac 2= 1. + 2. * zsiborn / ( zsiborn + xksi2**3 )223 zsilfac = 1. + 2. * zsiborn / ( zsiborn + xksi2**3 ) 239 224 ELSE 240 zsilfac 2= 1. + zsiborn / ( zsiborn + xksi2**3 )225 zsilfac = 1. + zsiborn / ( zsiborn + xksi2**3 ) 241 226 ENDIF 242 zratiosi = 1.0 - trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn ) / ( zsilfac 2* grosip * 3.0 + rtrn )227 zratiosi = 1.0 - trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn ) / ( zsilfac * grosip * 3.0 + rtrn ) 243 228 zratiosi = MAX(0., MIN(1.0, zratiosi) ) 244 229 zmaxsi = (1.0 + 0.1**4) * zratiosi**4 / ( zratiosi**4 + 0.1**4 ) 245 230 IF ( xlimsi(ji,jj,jk) /= xlimdia(ji,jj,jk) ) THEN 246 zysopt(ji,jj,jk) = zlim * zsilfac 2* grosip * 1.0 * zmaxsi231 zysopt(ji,jj,jk) = zlim * zsilfac * grosip * 1.0 * zmaxsi 247 232 ELSE 248 zysopt(ji,jj,jk) = zlim * zsilfac 2* grosip * 1.0 * zsilim**0.7 * zmaxsi233 zysopt(ji,jj,jk) = zlim * zsilfac * grosip * 1.0 * zsilim**0.7 * zmaxsi 249 234 ENDIF 250 235 ENDIF … … 291 276 ! do not suggest it for accimated cells. Uptake is 292 277 ! downregulated when the quota is close to the maximum quota 293 zratio = 1.0 - MIN(1.0,trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) * fecnm + rtrn ) ) 278 zfecnm = xqfuncfecn(ji,jj,jk) + ( fecnm - xqfuncfecn(ji,jj,jk) ) * ( xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) ) 279 zratio = 1.0 - MIN(1.0,trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) * zfecnm + rtrn ) ) 294 280 zmax = MAX( 0., MIN( 1.0, zratio**2/ (0.05**2+zratio**2) ) ) 295 zprofen(ji,jj,jk) = fecnm * zprmaxn(ji,jj,jk) * ( 1.0 - fr_i(ji,jj) ) &281 zprofen(ji,jj,jk) = zfecnm * zprmaxn(ji,jj,jk) * ( 1.0 - fr_i(ji,jj) ) & 296 282 & * (1. + 0.8 * xnanono3(ji,jj,jk) / ( rtrn + xnanono3(ji,jj,jk) & 297 283 & + xnanonh4(ji,jj,jk) ) * (1. - xnanofer(ji,jj,jk) ) ) & … … 317 303 ! do not suggest it for accimated cells. Uptake is 318 304 ! downregulated when the quota is close to the maximum quota 319 zratio = 1.0 - MIN(1.0, trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) * fecdm + rtrn ) ) 305 zfecdm = xqfuncfecd(ji,jj,jk) + ( fecdm - xqfuncfecd(ji,jj,jk) ) * ( xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) ) 306 zratio = 1.0 - MIN(1.0, trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) * zfecdm + rtrn ) ) 320 307 zmax = MAX( 0., MIN( 1.0, zratio**2/ (0.05**2+zratio**2) ) ) 321 zprofed(ji,jj,jk) = fecdm * zprmaxd(ji,jj,jk) * (1.0 - fr_i(ji,jj) ) &308 zprofed(ji,jj,jk) = zfecdm * zprmaxd(ji,jj,jk) * (1.0 - fr_i(ji,jj) ) & 322 309 & * (1. + 0.8 * xdiatno3(ji,jj,jk) / ( rtrn + xdiatno3(ji,jj,jk) & 323 310 & + xdiatnh4(ji,jj,jk) ) * (1. - xdiatfer(ji,jj,jk) ) ) & … … 339 326 zprod = rday * zprorcan(ji,jj,jk) * zprchln(ji,jj,jk) * xlimphy(ji,jj,jk) 340 327 zprochln = chlcmin * 12. * zprorcan (ji,jj,jk) 341 342 ! The maximum reachable Chl quota is modulated by temperature 343 ! following Geider (1987) 344 chlcnm_n = MIN ( chlcnm, ( chlcnm / (1. - 1.14 / 43.4 *tsn(ji,jj,jk,jp_tem))) * (1. - 1.14 / 43.4 * 20.)) 345 zprochln = zprochln + (chlcnm_n-chlcmin) * 12. * zprod / & 328 zprochln = zprochln + (chlcnm - chlcmin) * 12. * zprod / & 346 329 & ( zpislopeadn(ji,jj,jk) * znanotot +rtrn) 347 330 … … 350 333 zprod = rday * zprorcad(ji,jj,jk) * zprchld(ji,jj,jk) * xlimdia(ji,jj,jk) 351 334 zprochld = chlcmin * 12. * zprorcad(ji,jj,jk) 352 353 ! The maximum reachable Chl quota is modulated by temperature 354 ! following Geider (1987) 355 chlcdm_n = MIN ( chlcdm, ( chlcdm / (1. - 1.14 / 43.4 * tsn(ji,jj,jk,jp_tem))) * (1. - 1.14 / 43.4 * 20.)) 356 zprochld = zprochld + (chlcdm_n-chlcmin) * 12. * zprod / & 335 zprochld = zprochld + (chlcdm - chlcmin) * 12. * zprod / & 357 336 & ( zpislopeadd(ji,jj,jk) * zdiattot +rtrn ) 358 337 … … 386 365 & + ( o2ut + o2nit ) * ( zpronewn(ji,jj,jk) + zpronewd(ji,jj,jk) ) 387 366 ! 388 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) 389 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zfeup 367 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - ( texcretn * zprofen(ji,jj,jk) & 368 & + texcretd * zprofed(ji,jj,jk) ) 369 consfe3(ji,jj,jk) = ( texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) ) & 370 & * 75.0 / ( rtrn + ( plig(ji,jj,jk) + 75.0 * (1.0 - plig(ji,jj,jk) ) ) * trb(ji,jj,jk,jpfer) ) / rfact2 390 371 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - zprmaxd(ji,jj,jk) * zysopt(ji,jj,jk) & 391 372 & * rfact2 * trb(ji,jj,jk,jpdia) … … 401 382 ! when ln_ligand is set to .true. in the namelist. Ligand uptake is small 402 383 ! and based on the FeL model by Morel et al. (2008) and on the study of 403 ! Shaked and Lis (2012)384 ! Shaked et al. (2020) 404 385 ! ------------------------------------------------------------------------- 405 386 IF( ln_ligand ) THEN … … 412 393 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) 413 394 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zdocprod * ldocp & 414 & - zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) + 2.E3* (1.0 - plig(ji,jj,jk) ) ) * lthet395 & - zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) + 75.0 * (1.0 - plig(ji,jj,jk) ) ) * lthet 415 396 zpligprod1(ji,jj,jk) = zdocprod * ldocp 416 397 zpligprod2(ji,jj,jk) = zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) & 417 & + 2.E3* (1.0 - plig(ji,jj,jk) ) ) * lthet398 & + 75.0 * (1.0 - plig(ji,jj,jk) ) ) * lthet 418 399 ENDIF 419 400 END DO
Note: See TracChangeset
for help on using the changeset viewer.