Changeset 6225 for branches/2014/dev_r4704_NOC5_MPP_BDY_UPDATE/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
- Timestamp:
- 2016-01-08T10:35:19+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4704_NOC5_MPP_BDY_UPDATE/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
r4624 r6225 54 54 REAL(wp) :: texcret2 !: 1 - excret2 55 55 56 57 !!* Substitution58 # include "top_substitute.h90"59 56 !!---------------------------------------------------------------------- 60 57 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 64 61 CONTAINS 65 62 66 SUBROUTINE p4z_prod( kt , jnt )63 SUBROUTINE p4z_prod( kt , knt ) 67 64 !!--------------------------------------------------------------------- 68 65 !! *** ROUTINE p4z_prod *** … … 74 71 !!--------------------------------------------------------------------- 75 72 ! 76 INTEGER, INTENT(in) :: kt, jnt73 INTEGER, INTENT(in) :: kt, knt 77 74 ! 78 75 INTEGER :: ji, jj, jk … … 83 80 REAL(wp) :: zpislopen , zpislope2n 84 81 REAL(wp) :: zrum, zcodel, zargu, zval 85 REAL(wp) :: z rfact282 REAL(wp) :: zfact 86 83 CHARACTER (len=25) :: charout 87 REAL(wp), POINTER, DIMENSION(:,: ) :: zmixnano, zmixdiat, zstrn 88 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt 84 REAL(wp), POINTER, DIMENSION(:,: ) :: zmixnano, zmixdiat, zstrn, zw2d 85 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt, zw3d 89 86 REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd 90 87 !!--------------------------------------------------------------------- … … 129 126 END DO 130 127 131 IF( ln_newprod ) THEN 132 ! Impact of the day duration on phytoplankton growth 133 DO jk = 1, jpkm1 134 DO jj = 1 ,jpj 135 DO ji = 1, jpi 136 IF( etot(ji,jj,jk) > 1.E-3 ) THEN 137 zval = MAX( 1., zstrn(ji,jj) ) 138 zval = 1.5 * zval / ( 12. + zval ) 139 zprbio(ji,jj,jk) = prmax(ji,jj,jk) * zval 140 zprdia(ji,jj,jk) = zprbio(ji,jj,jk) 141 ENDIF 142 END DO 143 END DO 144 END DO 145 ENDIF 128 ! Impact of the day duration on phytoplankton growth 129 DO jk = 1, jpkm1 130 DO jj = 1 ,jpj 131 DO ji = 1, jpi 132 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 133 zval = MAX( 1., zstrn(ji,jj) ) 134 zval = 1.5 * zval / ( 12. + zval ) 135 zprbio(ji,jj,jk) = prmax(ji,jj,jk) * zval 136 zprdia(ji,jj,jk) = zprbio(ji,jj,jk) 137 ENDIF 138 END DO 139 END DO 140 END DO 146 141 147 142 ! Maximum light intensity … … 150 145 151 146 IF( ln_newprod ) THEN 152 !CDIR NOVERRCHK153 147 DO jk = 1, jpkm1 154 !CDIR NOVERRCHK155 148 DO jj = 1, jpj 156 !CDIR NOVERRCHK157 149 DO ji = 1, jpi 158 150 ! Computation of the P-I slope for nanos and diatoms 159 IF( etot (ji,jj,jk) > 1.E-3 ) THEN151 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 160 152 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 161 153 zadap = xadap * ztn / ( 2.+ ztn ) 162 zconctemp = MAX( 0.e0 , tr n(ji,jj,jk,jpdia) - xsizedia )163 zconctemp2 = tr n(ji,jj,jk,jpdia) - zconctemp154 zconctemp = MAX( 0.e0 , trb(ji,jj,jk,jpdia) - xsizedia ) 155 zconctemp2 = trb(ji,jj,jk,jpdia) - zconctemp 164 156 znanotot = enano(ji,jj,jk) * zstrn(ji,jj) 165 157 zdiattot = ediat(ji,jj,jk) * zstrn(ji,jj) 166 158 ! 167 159 zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * EXP( -znanotot ) ) & 168 & * tr n(ji,jj,jk,jpnch) /( trn(ji,jj,jk,jpphy) * 12. + rtrn)160 & * trb(ji,jj,jk,jpnch) /( trb(ji,jj,jk,jpphy) * 12. + rtrn) 169 161 ! 170 zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) / ( tr n(ji,jj,jk,jpdia) + rtrn ) &171 & * tr n(ji,jj,jk,jpdch) /( trn(ji,jj,jk,jpdia) * 12. + rtrn)162 zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) / ( trb(ji,jj,jk,jpdia) + rtrn ) & 163 & * trb(ji,jj,jk,jpdch) /( trb(ji,jj,jk,jpdia) * 12. + rtrn) 172 164 173 165 ! Computation of production function for Carbon … … 188 180 END DO 189 181 ELSE 190 !CDIR NOVERRCHK191 182 DO jk = 1, jpkm1 192 !CDIR NOVERRCHK193 183 DO jj = 1, jpj 194 !CDIR NOVERRCHK195 184 DO ji = 1, jpi 196 185 197 186 ! Computation of the P-I slope for nanos and diatoms 198 IF( etot (ji,jj,jk) > 1.E-3 ) THEN187 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 199 188 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 200 189 zadap = ztn / ( 2.+ ztn ) 201 zconctemp = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - xsizedia ) 202 zconctemp2 = trn(ji,jj,jk,jpdia) - zconctemp 190 zconctemp = MAX( 0.e0 , trb(ji,jj,jk,jpdia) - xsizedia ) 191 zconctemp2 = trb(ji,jj,jk,jpdia) - zconctemp 192 znanotot = enano(ji,jj,jk) * zstrn(ji,jj) 193 zdiattot = ediat(ji,jj,jk) * zstrn(ji,jj) 203 194 ! 204 zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * EXP( - 0.21 * enano(ji,jj,jk)) )205 zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) / ( tr n(ji,jj,jk,jpdia) + rtrn )206 207 zpislopen = zpislopead(ji,jj,jk) * tr n(ji,jj,jk,jpnch) &208 & / ( tr n(ji,jj,jk,jpphy) * 12. + rtrn ) &195 zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * EXP( -znanotot ) ) 196 zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) / ( trb(ji,jj,jk,jpdia) + rtrn ) 197 198 zpislopen = zpislopead(ji,jj,jk) * trb(ji,jj,jk,jpnch) & 199 & / ( trb(ji,jj,jk,jpphy) * 12. + rtrn ) & 209 200 & / ( prmax(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn ) 210 201 211 zpislope2n = zpislopead2(ji,jj,jk) * tr n(ji,jj,jk,jpdch) &212 & / ( tr n(ji,jj,jk,jpdia) * 12. + rtrn ) &202 zpislope2n = zpislopead2(ji,jj,jk) * trb(ji,jj,jk,jpdch) & 203 & / ( trb(ji,jj,jk,jpdia) * 12. + rtrn ) & 213 204 & / ( prmax(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn ) 214 205 215 206 ! Computation of production function for Carbon 216 207 ! --------------------------------------------- 217 zprbio(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk)) )218 zprdia(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislope2n * ediat(ji,jj,jk)) )208 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * znanotot ) ) 209 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpislope2n * zdiattot ) ) 219 210 220 211 ! Computation of production function for Chlorophyll 221 212 !-------------------------------------------------- 222 zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) * zstrn(ji,jj)) )223 zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislope2n * ediat(ji,jj,jk) * zstrn(ji,jj)) )213 zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 214 zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislope2n * ediat(ji,jj,jk) ) ) 224 215 ENDIF 225 216 END DO … … 231 222 ! Computation of a proxy of the N/C ratio 232 223 ! --------------------------------------- 233 !CDIR NOVERRCHK234 224 DO jk = 1, jpkm1 235 !CDIR NOVERRCHK236 225 DO jj = 1, jpj 237 !CDIR NOVERRCHK238 226 DO ji = 1, jpi 239 227 zval = MIN( xnanopo4(ji,jj,jk), ( xnanonh4(ji,jj,jk) + xnanono3(ji,jj,jk) ) ) & … … 252 240 DO ji = 1, jpi 253 241 254 IF( etot (ji,jj,jk) > 1.E-3 ) THEN242 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 255 243 ! Si/C of diatoms 256 244 ! ------------------------ … … 258 246 ! Si/C is arbitrariliy increased for very high Si concentrations 259 247 ! to mimic the very high ratios observed in the Southern Ocean (silpot2) 260 zlim = tr n(ji,jj,jk,jpsil) / ( trn(ji,jj,jk,jpsil) + xksi1 )248 zlim = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi1 ) 261 249 zsilim = MIN( zprdia(ji,jj,jk) / ( prmax(ji,jj,jk) + rtrn ), xlimsi(ji,jj,jk) ) 262 250 zsilfac = 4.4 * EXP( -4.23 * zsilim ) * MAX( 0.e0, MIN( 1., 2.2 * ( zlim - 0.5 ) ) ) + 1.e0 263 zsiborn = tr n(ji,jj,jk,jpsil) * trn(ji,jj,jk,jpsil) * trn(ji,jj,jk,jpsil)251 zsiborn = trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) 264 252 IF (gphit(ji,jj) < -30 ) THEN 265 253 zsilfac2 = 1. + 2. * zsiborn / ( zsiborn + xksi2**3 ) … … 287 275 DO jj = 1, jpj 288 276 DO ji = 1, jpi 289 IF( fsdepw(ji,jj,jk+1) <= hmld(ji,jj) ) THEN277 IF( gdepw_n(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 290 278 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * zmixnano(ji,jj) 291 279 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * zmixdiat(ji,jj) … … 296 284 297 285 ! Computation of the various production terms 298 !CDIR NOVERRCHK299 286 DO jk = 1, jpkm1 300 !CDIR NOVERRCHK301 287 DO jj = 1, jpj 302 !CDIR NOVERRCHK303 288 DO ji = 1, jpi 304 IF( etot (ji,jj,jk) > 1.E-3 ) THEN289 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 305 290 ! production terms for nanophyto. 306 zprorca(ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * tr n(ji,jj,jk,jpphy) * rfact2291 zprorca(ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * trb(ji,jj,jk,jpphy) * rfact2 307 292 zpronew(ji,jj,jk) = zprorca(ji,jj,jk) * xnanono3(ji,jj,jk) / ( xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) + rtrn ) 308 293 ! 309 zratio = tr n(ji,jj,jk,jpnfe) / ( trn(ji,jj,jk,jpphy) + rtrn )294 zratio = trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) + rtrn ) 310 295 zratio = zratio / fecnm 311 296 zmax = MAX( 0., ( 1. - zratio ) / ABS( 1.05 - zratio ) ) … … 313 298 & * ( 4. - 4.5 * xlimnfe(ji,jj,jk) / ( xlimnfe(ji,jj,jk) + 0.5 ) ) & 314 299 & * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concnfe(ji,jj,jk) ) & 315 & * zmax * tr n(ji,jj,jk,jpphy) * rfact2300 & * zmax * trb(ji,jj,jk,jpphy) * rfact2 316 301 ! production terms for diatomees 317 zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * tr n(ji,jj,jk,jpdia) * rfact2302 zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * trb(ji,jj,jk,jpdia) * rfact2 318 303 zpronewd(ji,jj,jk) = zprorcad(ji,jj,jk) * xdiatno3(ji,jj,jk) / ( xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) + rtrn ) 319 304 ! 320 zratio = tr n(ji,jj,jk,jpdfe) / ( trn(ji,jj,jk,jpdia) + rtrn )305 zratio = trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) + rtrn ) 321 306 zratio = zratio / fecdm 322 307 zmax = MAX( 0., ( 1. - zratio ) / ABS( 1.05 - zratio ) ) … … 324 309 & * ( 4. - 4.5 * xlimdfe(ji,jj,jk) / ( xlimdfe(ji,jj,jk) + 0.5 ) ) & 325 310 & * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concdfe(ji,jj,jk) ) & 326 & * zmax * tr n(ji,jj,jk,jpdia) * rfact2311 & * zmax * trb(ji,jj,jk,jpdia) * rfact2 327 312 ENDIF 328 313 END DO … … 331 316 332 317 IF( ln_newprod ) THEN 333 !CDIR NOVERRCHK334 318 DO jk = 1, jpkm1 335 !CDIR NOVERRCHK336 319 DO jj = 1, jpj 337 !CDIR NOVERRCHK338 320 DO ji = 1, jpi 339 IF( fsdepw(ji,jj,jk+1) <= hmld(ji,jj) ) THEN321 IF( gdepw_n(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 340 322 zprnch(ji,jj,jk) = zprnch(ji,jj,jk) * zmixnano(ji,jj) 341 323 zprdch(ji,jj,jk) = zprdch(ji,jj,jk) * zmixdiat(ji,jj) 342 324 ENDIF 343 IF( etot (ji,jj,jk) > 1.E-3 ) THEN325 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 344 326 ! production terms for nanophyto. ( chlorophyll ) 345 327 znanotot = enano(ji,jj,jk) * zstrn(ji,jj) … … 359 341 END DO 360 342 ELSE 361 !CDIR NOVERRCHK362 343 DO jk = 1, jpkm1 363 !CDIR NOVERRCHK364 344 DO jj = 1, jpj 365 !CDIR NOVERRCHK366 345 DO ji = 1, jpi 367 IF( etot (ji,jj,jk) > 1.E-3 ) THEN346 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 368 347 ! production terms for nanophyto. ( chlorophyll ) 369 znanotot = enano(ji,jj,jk) * zstrn(ji,jj)370 zprod = rday * zprorca(ji,jj,jk) * zprnch(ji,jj,jk) * tr n(ji,jj,jk,jpphy) * xlimphy(ji,jj,jk)348 znanotot = enano(ji,jj,jk) 349 zprod = rday * zprorca(ji,jj,jk) * zprnch(ji,jj,jk) * trb(ji,jj,jk,jpphy) * xlimphy(ji,jj,jk) 371 350 zprochln(ji,jj,jk) = chlcmin * 12. * zprorca (ji,jj,jk) 372 351 zprochln(ji,jj,jk) = zprochln(ji,jj,jk) + (chlcnm-chlcmin) * 144. * zprod & 373 & / ( zpislopead(ji,jj,jk) * tr n(ji,jj,jk,jpnch) * znanotot +rtrn )352 & / ( zpislopead(ji,jj,jk) * trb(ji,jj,jk,jpnch) * znanotot +rtrn ) 374 353 ! production terms for diatomees ( chlorophyll ) 375 zdiattot = ediat(ji,jj,jk) * zstrn(ji,jj)376 zprod = rday * zprorcad(ji,jj,jk) * zprdch(ji,jj,jk) * tr n(ji,jj,jk,jpdia) * xlimdia(ji,jj,jk)354 zdiattot = ediat(ji,jj,jk) 355 zprod = rday * zprorcad(ji,jj,jk) * zprdch(ji,jj,jk) * trb(ji,jj,jk,jpdia) * xlimdia(ji,jj,jk) 377 356 zprochld(ji,jj,jk) = chlcmin * 12. * zprorcad(ji,jj,jk) 378 357 zprochld(ji,jj,jk) = zprochld(ji,jj,jk) + (chlcdm-chlcmin) * 144. * zprod & 379 & / ( zpislopead2(ji,jj,jk) * tr n(ji,jj,jk,jpdch) * zdiattot +rtrn )358 & / ( zpislopead2(ji,jj,jk) * trb(ji,jj,jk,jpdch) * zdiattot +rtrn ) 380 359 ENDIF 381 360 END DO … … 412 391 END DO 413 392 414 ! Total primary production per year 415 tpp = tpp + glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) ) 416 417 IF( ln_diatrc ) THEN 418 ! 419 zrfact2 = 1.e3 * rfact2r ! conversion from mol/L/timestep into mol/m3/s 420 IF( lk_iomput ) THEN 421 IF( jnt == nrdttrc ) THEN 422 CALL iom_put( "PPPHY" , zprorca (:,:,:) * zrfact2 * tmask(:,:,:) ) ! primary production by nanophyto 423 CALL iom_put( "PPPHY2" , zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) ) ! primary production by diatom 424 CALL iom_put( "PPNEWN" , zpronew (:,:,:) * zrfact2 * tmask(:,:,:) ) ! new primary production by nanophyto 425 CALL iom_put( "PPNEWD" , zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) ) ! new primary production by diatom 426 CALL iom_put( "PBSi" , zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:) ) ! biogenic silica production 427 CALL iom_put( "PFeD" , zprofed (:,:,:) * zrfact2 * tmask(:,:,:) ) ! biogenic iron production by diatom 428 CALL iom_put( "PFeN" , zprofen (:,:,:) * zrfact2 * tmask(:,:,:) ) ! biogenic iron production by nanophyto 429 CALL iom_put( "Mumax" , prmax(:,:,:) * tmask(:,:,:) ) ! Maximum growth rate 430 CALL iom_put( "MuN" , zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for nanophyto 431 CALL iom_put( "MuD" , zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for diatoms 432 CALL iom_put( "LNlight", zprbio (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) ) ! light limitation term 433 CALL iom_put( "LDlight", zprdia (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) ) ! light limitation term 434 ENDIF 435 ELSE 436 trc3d(:,:,:,jp_pcs0_3d + 4) = zprorca (:,:,:) * zrfact2 * tmask(:,:,:) 437 trc3d(:,:,:,jp_pcs0_3d + 5) = zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) 438 trc3d(:,:,:,jp_pcs0_3d + 6) = zpronew (:,:,:) * zrfact2 * tmask(:,:,:) 439 trc3d(:,:,:,jp_pcs0_3d + 7) = zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) 440 trc3d(:,:,:,jp_pcs0_3d + 8) = zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:) 441 trc3d(:,:,:,jp_pcs0_3d + 9) = zprofed (:,:,:) * zrfact2 * tmask(:,:,:) 393 394 ! Total primary production per year 395 IF( iom_use( "tintpp" ) .OR. ( ln_check_mass .AND. kt == nitend .AND. knt == nrdttrc ) ) & 396 & tpp = glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) ) 397 398 IF( lk_iomput ) THEN 399 IF( knt == nrdttrc ) THEN 400 CALL wrk_alloc( jpi, jpj, zw2d ) 401 CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 402 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 403 ! 404 IF( iom_use( "PPPHY" ) .OR. iom_use( "PPPHY2" ) ) THEN 405 zw3d(:,:,:) = zprorca (:,:,:) * zfact * tmask(:,:,:) ! primary production by nanophyto 406 CALL iom_put( "PPPHY" , zw3d ) 407 ! 408 zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) ! primary production by diatomes 409 CALL iom_put( "PPPHY2" , zw3d ) 410 ENDIF 411 IF( iom_use( "PPNEWN" ) .OR. iom_use( "PPNEWD" ) ) THEN 412 zw3d(:,:,:) = zpronew (:,:,:) * zfact * tmask(:,:,:) ! new primary production by nanophyto 413 CALL iom_put( "PPNEWN" , zw3d ) 414 ! 415 zw3d(:,:,:) = zpronewd(:,:,:) * zfact * tmask(:,:,:) ! new primary production by diatomes 416 CALL iom_put( "PPNEWD" , zw3d ) 417 ENDIF 418 IF( iom_use( "PBSi" ) ) THEN 419 zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) ! biogenic silica production 420 CALL iom_put( "PBSi" , zw3d ) 421 ENDIF 422 IF( iom_use( "PFeN" ) .OR. iom_use( "PFeD" ) ) THEN 423 zw3d(:,:,:) = zprofen(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron production by nanophyto 424 CALL iom_put( "PFeN" , zw3d ) 425 ! 426 zw3d(:,:,:) = zprofed(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron production by diatomes 427 CALL iom_put( "PFeD" , zw3d ) 428 ENDIF 429 IF( iom_use( "Mumax" ) ) THEN 430 zw3d(:,:,:) = prmax(:,:,:) * tmask(:,:,:) ! Maximum growth rate 431 CALL iom_put( "Mumax" , zw3d ) 432 ENDIF 433 IF( iom_use( "MuN" ) .OR. iom_use( "MuD" ) ) THEN 434 zw3d(:,:,:) = zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:) ! Realized growth rate for nanophyto 435 CALL iom_put( "MuN" , zw3d ) 436 ! 437 zw3d(:,:,:) = zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:) ! Realized growth rate for diatoms 438 CALL iom_put( "MuD" , zw3d ) 439 ENDIF 440 IF( iom_use( "LNlight" ) .OR. iom_use( "LDlight" ) ) THEN 441 zw3d(:,:,:) = zprbio (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 442 CALL iom_put( "LNlight" , zw3d ) 443 ! 444 zw3d(:,:,:) = zprdia (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 445 CALL iom_put( "LDlight" , zw3d ) 446 ENDIF 447 IF( iom_use( "TPP" ) ) THEN 448 zw3d(:,:,:) = ( zprorca(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:) ! total primary production 449 CALL iom_put( "TPP" , zw3d ) 450 ENDIF 451 IF( iom_use( "TPNEW" ) ) THEN 452 zw3d(:,:,:) = ( zpronew(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:) ! total new production 453 CALL iom_put( "TPNEW" , zw3d ) 454 ENDIF 455 IF( iom_use( "TPBFE" ) ) THEN 456 zw3d(:,:,:) = ( zprofen(:,:,:) + zprofed(:,:,:) ) * zfact * tmask(:,:,:) ! total biogenic iron production 457 CALL iom_put( "TPBFE" , zw3d ) 458 ENDIF 459 IF( iom_use( "INTPPPHY" ) .OR. iom_use( "INTPPPHY2" ) ) THEN 460 zw2d(:,:) = 0. 461 DO jk = 1, jpkm1 462 zw2d(:,:) = zw2d(:,:) + zprorca (:,:,jk) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated primary produc. by nano 463 ENDDO 464 CALL iom_put( "INTPPPHY" , zw2d ) 465 ! 466 zw2d(:,:) = 0. 467 DO jk = 1, jpkm1 468 zw2d(:,:) = zw2d(:,:) + zprorcad(:,:,jk) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated primary produc. by diatom 469 ENDDO 470 CALL iom_put( "INTPPPHY2" , zw2d ) 471 ENDIF 472 IF( iom_use( "INTPP" ) ) THEN 473 zw2d(:,:) = 0. 474 DO jk = 1, jpkm1 475 zw2d(:,:) = zw2d(:,:) + ( zprorca(:,:,jk) + zprorcad(:,:,jk) ) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated pp 476 ENDDO 477 CALL iom_put( "INTPP" , zw2d ) 478 ENDIF 479 IF( iom_use( "INTPNEW" ) ) THEN 480 zw2d(:,:) = 0. 481 DO jk = 1, jpkm1 482 zw2d(:,:) = zw2d(:,:) + ( zpronew(:,:,jk) + zpronewd(:,:,jk) ) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated new prod 483 ENDDO 484 CALL iom_put( "INTPNEW" , zw2d ) 485 ENDIF 486 IF( iom_use( "INTPBFE" ) ) THEN ! total biogenic iron production ( vertically integrated ) 487 zw2d(:,:) = 0. 488 DO jk = 1, jpkm1 489 zw2d(:,:) = zw2d(:,:) + ( zprofen(:,:,jk) + zprofed(:,:,jk) ) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert integr. bfe prod 490 ENDDO 491 CALL iom_put( "INTPBFE" , zw2d ) 492 ENDIF 493 IF( iom_use( "INTPBSI" ) ) THEN ! total biogenic silica production ( vertically integrated ) 494 zw2d(:,:) = 0. 495 DO jk = 1, jpkm1 496 zw2d(:,:) = zw2d(:,:) + zprorcad(:,:,jk) * zysopt(:,:,jk) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert integr. bsi prod 497 ENDDO 498 CALL iom_put( "INTPBSI" , zw2d ) 499 ENDIF 500 IF( iom_use( "tintpp" ) ) CALL iom_put( "tintpp" , tpp * zfact ) ! global total integrated primary production molC/s 501 ! 502 CALL wrk_dealloc( jpi, jpj, zw2d ) 503 CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 504 ENDIF 505 ELSE 506 IF( ln_diatrc ) THEN 507 zfact = 1.e+3 * rfact2r 508 trc3d(:,:,:,jp_pcs0_3d + 4) = zprorca (:,:,:) * zfact * tmask(:,:,:) 509 trc3d(:,:,:,jp_pcs0_3d + 5) = zprorcad(:,:,:) * zfact * tmask(:,:,:) 510 trc3d(:,:,:,jp_pcs0_3d + 6) = zpronew (:,:,:) * zfact * tmask(:,:,:) 511 trc3d(:,:,:,jp_pcs0_3d + 7) = zpronewd(:,:,:) * zfact * tmask(:,:,:) 512 trc3d(:,:,:,jp_pcs0_3d + 8) = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) 513 trc3d(:,:,:,jp_pcs0_3d + 9) = zprofed (:,:,:) * zfact * tmask(:,:,:) 442 514 # if ! defined key_kriest 443 trc3d(:,:,:,jp_pcs0_3d + 10) = zprofen (:,:,:) * zrfact2* tmask(:,:,:)515 trc3d(:,:,:,jp_pcs0_3d + 10) = zprofen (:,:,:) * zfact * tmask(:,:,:) 444 516 # endif 445 ENDIF 446 ! 447 ENDIF 448 449 IF(ln_ctl) THEN ! print mean trends (used for debugging) 517 ENDIF 518 ENDIF 519 520 IF(ln_ctl) THEN ! print mean trends (used for debugging) 450 521 WRITE(charout, FMT="('prod')") 451 522 CALL prt_ctl_trc_info(charout) 452 523 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 453 454 455 456 457 458 459 460 524 ENDIF 525 ! 526 CALL wrk_dealloc( jpi, jpj, zmixnano, zmixdiat, zstrn ) 527 CALL wrk_dealloc( jpi, jpj, jpk, zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt ) 528 CALL wrk_dealloc( jpi, jpj, jpk, zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd ) 529 ! 530 IF( nn_timing == 1 ) CALL timing_stop('p4z_prod') 531 ! 461 532 END SUBROUTINE p4z_prod 462 533 … … 537 608 538 609 !!====================================================================== 539 END MODULE 610 END MODULE p4zprod
Note: See TracChangeset
for help on using the changeset viewer.