- Timestamp:
- 2019-11-22T15:29:17+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Property svn:mergeinfo deleted
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/PISCES/P4Z/p4zprod.F90
r11536 r11949 53 53 CONTAINS 54 54 55 SUBROUTINE p4z_prod( kt , knt )55 SUBROUTINE p4z_prod( kt , knt, Kbb, Kmm, Krhs ) 56 56 !!--------------------------------------------------------------------- 57 57 !! *** ROUTINE p4z_prod *** … … 63 63 !!--------------------------------------------------------------------- 64 64 INTEGER, INTENT(in) :: kt, knt ! 65 INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! time level indices 65 66 ! 66 67 INTEGER :: ji, jj, jk … … 119 120 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 120 121 zval = MAX( 1., zstrn(ji,jj) ) 121 IF( gdept _n(ji,jj,jk) <= hmld(ji,jj) ) THEN122 IF( gdept(ji,jj,jk,Kmm) <= hmld(ji,jj) ) THEN 122 123 zval = zval * MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) 123 124 ENDIF … … 140 141 DO ji = 1, jpi 141 142 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 142 ztn = MAX( 0., ts n(ji,jj,jk,jp_tem) - 15. )143 ztn = MAX( 0., ts(ji,jj,jk,jp_tem,Kmm) - 15. ) 143 144 zadap = xadap * ztn / ( 2.+ ztn ) 144 zconctemp = MAX( 0.e0 , tr b(ji,jj,jk,jpdia) - xsizedia )145 zconctemp2 = tr b(ji,jj,jk,jpdia) - zconctemp145 zconctemp = MAX( 0.e0 , tr(ji,jj,jk,jpdia,Kbb) - xsizedia ) 146 zconctemp2 = tr(ji,jj,jk,jpdia,Kbb) - zconctemp 146 147 ! 147 148 zpislopeadn(ji,jj,jk) = pislopen * ( 1.+ zadap * EXP( -0.25 * enano(ji,jj,jk) ) ) & 148 & * tr b(ji,jj,jk,jpnch) /( trb(ji,jj,jk,jpphy) * 12. + rtrn)149 & * tr(ji,jj,jk,jpnch,Kbb) /( tr(ji,jj,jk,jpphy,Kbb) * 12. + rtrn) 149 150 ! 150 zpislopeadd(ji,jj,jk) = (pislopen * zconctemp2 + pisloped * zconctemp) / ( tr b(ji,jj,jk,jpdia) + rtrn ) &151 & * tr b(ji,jj,jk,jpdch) /( trb(ji,jj,jk,jpdia) * 12. + rtrn)151 zpislopeadd(ji,jj,jk) = (pislopen * zconctemp2 + pisloped * zconctemp) / ( tr(ji,jj,jk,jpdia,Kbb) + rtrn ) & 152 & * tr(ji,jj,jk,jpdch,Kbb) /( tr(ji,jj,jk,jpdia,Kbb) * 12. + rtrn) 152 153 ENDIF 153 154 END DO … … 204 205 ! Si/C is arbitrariliy increased for very high Si concentrations 205 206 ! to mimic the very high ratios observed in the Southern Ocean (silpot2) 206 zlim = tr b(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi1 )207 zlim = tr(ji,jj,jk,jpsil,Kbb) / ( tr(ji,jj,jk,jpsil,Kbb) + xksi1 ) 207 208 zsilim = MIN( zprdia(ji,jj,jk) / ( zprmaxd(ji,jj,jk) + rtrn ), xlimsi(ji,jj,jk) ) 208 209 zsilfac = 4.4 * EXP( -4.23 * zsilim ) * MAX( 0.e0, MIN( 1., 2.2 * ( zlim - 0.5 ) ) ) + 1.e0 209 zsiborn = tr b(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil)210 zsiborn = tr(ji,jj,jk,jpsil,Kbb) * tr(ji,jj,jk,jpsil,Kbb) * tr(ji,jj,jk,jpsil,Kbb) 210 211 IF (gphit(ji,jj) < -30 ) THEN 211 212 zsilfac2 = 1. + 2. * zsiborn / ( zsiborn + xksi2**3 ) … … 237 238 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 238 239 ! production terms for nanophyto. (C) 239 zprorcan(ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * tr b(ji,jj,jk,jpphy) * rfact2240 zprorcan(ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * tr(ji,jj,jk,jpphy,Kbb) * rfact2 240 241 zpronewn(ji,jj,jk) = zprorcan(ji,jj,jk)* xnanono3(ji,jj,jk) / ( xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) + rtrn ) 241 242 ! 242 zratio = tr b(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) * fecnm + rtrn )243 zratio = tr(ji,jj,jk,jpnfe,Kbb) / ( tr(ji,jj,jk,jpphy,Kbb) * fecnm + rtrn ) 243 244 zmax = MAX( 0., ( 1. - zratio ) / ABS( 1.05 - zratio ) ) 244 245 zprofen(ji,jj,jk) = fecnm * zprmaxn(ji,jj,jk) * ( 1.0 - fr_i(ji,jj) ) & 245 246 & * ( 4. - 4.5 * xlimnfe(ji,jj,jk) / ( xlimnfe(ji,jj,jk) + 0.5 ) ) & 246 247 & * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concnfe(ji,jj,jk) ) & 247 & * zmax * tr b(ji,jj,jk,jpphy) * rfact2248 & * zmax * tr(ji,jj,jk,jpphy,Kbb) * rfact2 248 249 ! production terms for diatoms (C) 249 zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * tr b(ji,jj,jk,jpdia) * rfact2250 zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * tr(ji,jj,jk,jpdia,Kbb) * rfact2 250 251 zpronewd(ji,jj,jk) = zprorcad(ji,jj,jk) * xdiatno3(ji,jj,jk) / ( xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) + rtrn ) 251 252 ! 252 zratio = tr b(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) * fecdm + rtrn )253 zratio = tr(ji,jj,jk,jpdfe,Kbb) / ( tr(ji,jj,jk,jpdia,Kbb) * fecdm + rtrn ) 253 254 zmax = MAX( 0., ( 1. - zratio ) / ABS( 1.05 - zratio ) ) 254 255 zprofed(ji,jj,jk) = fecdm * zprmaxd(ji,jj,jk) * ( 1.0 - fr_i(ji,jj) ) & 255 256 & * ( 4. - 4.5 * xlimdfe(ji,jj,jk) / ( xlimdfe(ji,jj,jk) + 0.5 ) ) & 256 257 & * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concdfe(ji,jj,jk) ) & 257 & * zmax * tr b(ji,jj,jk,jpdia) * rfact2258 & * zmax * tr(ji,jj,jk,jpdia,Kbb) * rfact2 258 259 ENDIF 259 260 END DO … … 270 271 zprod = rday * zprorcan(ji,jj,jk) * zprnch(ji,jj,jk) * xlimphy(ji,jj,jk) 271 272 zprochln = chlcmin * 12. * zprorcan (ji,jj,jk) 272 chlcnm_n = MIN ( chlcnm, ( chlcnm / (1. - 1.14 / 43.4 *ts n(ji,jj,jk,jp_tem))) * (1. - 1.14 / 43.4 * 20.))273 chlcnm_n = MIN ( chlcnm, ( chlcnm / (1. - 1.14 / 43.4 *ts(ji,jj,jk,jp_tem,Kmm))) * (1. - 1.14 / 43.4 * 20.)) 273 274 zprochln = zprochln + (chlcnm_n-chlcmin) * 12. * zprod / & 274 275 & ( zpislopeadn(ji,jj,jk) * znanotot +rtrn) … … 277 278 zprod = rday * zprorcad(ji,jj,jk) * zprdch(ji,jj,jk) * xlimdia(ji,jj,jk) 278 279 zprochld = chlcmin * 12. * zprorcad(ji,jj,jk) 279 chlcdm_n = MIN ( chlcdm, ( chlcdm / (1. - 1.14 / 43.4 * ts n(ji,jj,jk,jp_tem))) * (1. - 1.14 / 43.4 * 20.))280 chlcdm_n = MIN ( chlcdm, ( chlcdm / (1. - 1.14 / 43.4 * ts(ji,jj,jk,jp_tem,Kmm))) * (1. - 1.14 / 43.4 * 20.)) 280 281 zprochld = zprochld + (chlcdm_n-chlcmin) * 12. * zprod / & 281 282 & ( zpislopeadd(ji,jj,jk) * zdiattot +rtrn ) 282 283 ! Update the arrays TRA which contain the Chla sources and sinks 283 tr a(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) + zprochln * texcretn284 tr a(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) + zprochld * texcretd284 tr(ji,jj,jk,jpnch,Krhs) = tr(ji,jj,jk,jpnch,Krhs) + zprochln * texcretn 285 tr(ji,jj,jk,jpdch,Krhs) = tr(ji,jj,jk,jpdch,Krhs) + zprochld * texcretd 285 286 ENDIF 286 287 END DO … … 296 297 zproreg2 = zprorcad(ji,jj,jk) - zpronewd(ji,jj,jk) 297 298 zdocprod = excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk) 298 tr a(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk)299 tr a(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - zpronewn(ji,jj,jk) - zpronewd(ji,jj,jk)300 tr a(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zproreg - zproreg2301 tr a(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zprorcan(ji,jj,jk) * texcretn302 tr a(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) + zprofen(ji,jj,jk) * texcretn303 tr a(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) + zprorcad(ji,jj,jk) * texcretd304 tr a(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * texcretd305 tr a(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcretd306 tr a(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zdocprod307 tr a(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + o2ut * ( zproreg + zproreg2) &299 tr(ji,jj,jk,jppo4,Krhs) = tr(ji,jj,jk,jppo4,Krhs) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk) 300 tr(ji,jj,jk,jpno3,Krhs) = tr(ji,jj,jk,jpno3,Krhs) - zpronewn(ji,jj,jk) - zpronewd(ji,jj,jk) 301 tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) - zproreg - zproreg2 302 tr(ji,jj,jk,jpphy,Krhs) = tr(ji,jj,jk,jpphy,Krhs) + zprorcan(ji,jj,jk) * texcretn 303 tr(ji,jj,jk,jpnfe,Krhs) = tr(ji,jj,jk,jpnfe,Krhs) + zprofen(ji,jj,jk) * texcretn 304 tr(ji,jj,jk,jpdia,Krhs) = tr(ji,jj,jk,jpdia,Krhs) + zprorcad(ji,jj,jk) * texcretd 305 tr(ji,jj,jk,jpdfe,Krhs) = tr(ji,jj,jk,jpdfe,Krhs) + zprofed(ji,jj,jk) * texcretd 306 tr(ji,jj,jk,jpdsi,Krhs) = tr(ji,jj,jk,jpdsi,Krhs) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcretd 307 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) + zdocprod 308 tr(ji,jj,jk,jpoxy,Krhs) = tr(ji,jj,jk,jpoxy,Krhs) + o2ut * ( zproreg + zproreg2) & 308 309 & + ( o2ut + o2nit ) * ( zpronewn(ji,jj,jk) + zpronewd(ji,jj,jk) ) 309 310 ! 310 311 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) 311 tr a(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zfeup312 tr a(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - texcretd * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk)313 tr a(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk)314 tr a(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zpronewn(ji,jj,jk) + zpronewd(ji,jj,jk) ) &312 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) - zfeup 313 tr(ji,jj,jk,jpsil,Krhs) = tr(ji,jj,jk,jpsil,Krhs) - texcretd * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) 314 tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk) 315 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) + rno3 * ( zpronewn(ji,jj,jk) + zpronewd(ji,jj,jk) ) & 315 316 & - rno3 * ( zproreg + zproreg2 ) 316 317 ENDIF … … 327 328 zdocprod = excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk) 328 329 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) 329 tr a(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zdocprod * ldocp - zfeup * plig(ji,jj,jk) * lthet330 tr(ji,jj,jk,jplgw,Krhs) = tr(ji,jj,jk,jplgw,Krhs) + zdocprod * ldocp - zfeup * plig(ji,jj,jk) * lthet 330 331 zpligprod1(ji,jj,jk) = zdocprod * ldocp 331 332 zpligprod2(ji,jj,jk) = zfeup * plig(ji,jj,jk) * lthet … … 412 413 zw2d(:,:) = 0. 413 414 DO jk = 1, jpkm1 414 zw2d(:,:) = zw2d(:,:) + zprorcan(:,:,jk) * e3t _n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated primary produc. by nano415 zw2d(:,:) = zw2d(:,:) + zprorcan(:,:,jk) * e3t(:,:,jk,Kmm) * zfact * tmask(:,:,jk) ! vert. integrated primary produc. by nano 415 416 ENDDO 416 417 CALL iom_put( "INTPPPHYN" , zw2d ) … … 418 419 zw2d(:,:) = 0. 419 420 DO jk = 1, jpkm1 420 zw2d(:,:) = zw2d(:,:) + zprorcad(:,:,jk) * e3t _n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated primary produc. by diatom421 zw2d(:,:) = zw2d(:,:) + zprorcad(:,:,jk) * e3t(:,:,jk,Kmm) * zfact * tmask(:,:,jk) ! vert. integrated primary produc. by diatom 421 422 ENDDO 422 423 CALL iom_put( "INTPPPHYD" , zw2d ) … … 425 426 zw2d(:,:) = 0. 426 427 DO jk = 1, jpkm1 427 zw2d(:,:) = zw2d(:,:) + ( zprorcan(:,:,jk) + zprorcad(:,:,jk) ) * e3t _n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated pp428 zw2d(:,:) = zw2d(:,:) + ( zprorcan(:,:,jk) + zprorcad(:,:,jk) ) * e3t(:,:,jk,Kmm) * zfact * tmask(:,:,jk) ! vert. integrated pp 428 429 ENDDO 429 430 CALL iom_put( "INTPP" , zw2d ) … … 432 433 zw2d(:,:) = 0. 433 434 DO jk = 1, jpkm1 434 zw2d(:,:) = zw2d(:,:) + ( zpronewn(:,:,jk) + zpronewd(:,:,jk) ) * e3t _n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated new prod435 zw2d(:,:) = zw2d(:,:) + ( zpronewn(:,:,jk) + zpronewd(:,:,jk) ) * e3t(:,:,jk,Kmm) * zfact * tmask(:,:,jk) ! vert. integrated new prod 435 436 ENDDO 436 437 CALL iom_put( "INTPNEW" , zw2d ) … … 439 440 zw2d(:,:) = 0. 440 441 DO jk = 1, jpkm1 441 zw2d(:,:) = zw2d(:,:) + ( zprofen(:,:,jk) + zprofed(:,:,jk) ) * e3t _n(:,:,jk) * zfact * tmask(:,:,jk) ! vert integr. bfe prod442 zw2d(:,:) = zw2d(:,:) + ( zprofen(:,:,jk) + zprofed(:,:,jk) ) * e3t(:,:,jk,Kmm) * zfact * tmask(:,:,jk) ! vert integr. bfe prod 442 443 ENDDO 443 444 CALL iom_put( "INTPBFE" , zw2d ) … … 446 447 zw2d(:,:) = 0. 447 448 DO jk = 1, jpkm1 448 zw2d(:,:) = zw2d(:,:) + zprorcad(:,:,jk) * zysopt(:,:,jk) * e3t _n(:,:,jk) * zfact * tmask(:,:,jk) ! vert integr. bsi prod449 zw2d(:,:) = zw2d(:,:) + zprorcad(:,:,jk) * zysopt(:,:,jk) * e3t(:,:,jk,Kmm) * zfact * tmask(:,:,jk) ! vert integr. bsi prod 449 450 ENDDO 450 451 CALL iom_put( "INTPBSI" , zw2d ) … … 459 460 WRITE(charout, FMT="('prod')") 460 461 CALL prt_ctl_trc_info(charout) 461 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)462 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 462 463 ENDIF 463 464 !
Note: See TracChangeset
for help on using the changeset viewer.