Changeset 5901 for branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
- Timestamp:
- 2015-11-20T09:39:06+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
r5038 r5901 54 54 REAL(wp) :: texcret2 !: 1 - excret2 55 55 56 57 !!* Substitution 58 # include "top_substitute.h90" 56 !! * Substitutions 57 # include "domzgr_substitute.h90" 59 58 !!---------------------------------------------------------------------- 60 59 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 64 63 CONTAINS 65 64 66 SUBROUTINE p4z_prod( kt , jnt )65 SUBROUTINE p4z_prod( kt , knt ) 67 66 !!--------------------------------------------------------------------- 68 67 !! *** ROUTINE p4z_prod *** … … 74 73 !!--------------------------------------------------------------------- 75 74 ! 76 INTEGER, INTENT(in) :: kt, jnt75 INTEGER, INTENT(in) :: kt, knt 77 76 ! 78 77 INTEGER :: ji, jj, jk … … 129 128 END DO 130 129 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 130 ! Impact of the day duration on phytoplankton growth 131 DO jk = 1, jpkm1 132 DO jj = 1 ,jpj 133 DO ji = 1, jpi 134 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 135 zval = MAX( 1., zstrn(ji,jj) ) 136 zval = 1.5 * zval / ( 12. + zval ) 137 zprbio(ji,jj,jk) = prmax(ji,jj,jk) * zval 138 zprdia(ji,jj,jk) = zprbio(ji,jj,jk) 139 ENDIF 140 END DO 141 END DO 142 END DO 146 143 147 144 ! Maximum light intensity … … 150 147 151 148 IF( ln_newprod ) THEN 152 !CDIR NOVERRCHK153 149 DO jk = 1, jpkm1 154 !CDIR NOVERRCHK155 150 DO jj = 1, jpj 156 !CDIR NOVERRCHK157 151 DO ji = 1, jpi 158 152 ! Computation of the P-I slope for nanos and diatoms 159 IF( etot (ji,jj,jk) > 1.E-3 ) THEN153 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 160 154 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 161 155 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) - zconctemp156 zconctemp = MAX( 0.e0 , trb(ji,jj,jk,jpdia) - xsizedia ) 157 zconctemp2 = trb(ji,jj,jk,jpdia) - zconctemp 164 158 znanotot = enano(ji,jj,jk) * zstrn(ji,jj) 165 159 zdiattot = ediat(ji,jj,jk) * zstrn(ji,jj) 166 160 ! 167 161 zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * EXP( -znanotot ) ) & 168 & * tr n(ji,jj,jk,jpnch) /( trn(ji,jj,jk,jpphy) * 12. + rtrn)162 & * trb(ji,jj,jk,jpnch) /( trb(ji,jj,jk,jpphy) * 12. + rtrn) 169 163 ! 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)164 zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) / ( trb(ji,jj,jk,jpdia) + rtrn ) & 165 & * trb(ji,jj,jk,jpdch) /( trb(ji,jj,jk,jpdia) * 12. + rtrn) 172 166 173 167 ! Computation of production function for Carbon … … 188 182 END DO 189 183 ELSE 190 !CDIR NOVERRCHK191 184 DO jk = 1, jpkm1 192 !CDIR NOVERRCHK193 185 DO jj = 1, jpj 194 !CDIR NOVERRCHK195 186 DO ji = 1, jpi 196 187 197 188 ! Computation of the P-I slope for nanos and diatoms 198 IF( etot (ji,jj,jk) > 1.E-3 ) THEN189 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 199 190 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 200 191 zadap = ztn / ( 2.+ ztn ) 201 zconctemp = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - xsizedia ) 202 zconctemp2 = trn(ji,jj,jk,jpdia) - zconctemp 192 zconctemp = MAX( 0.e0 , trb(ji,jj,jk,jpdia) - xsizedia ) 193 zconctemp2 = trb(ji,jj,jk,jpdia) - zconctemp 194 znanotot = enano(ji,jj,jk) * zstrn(ji,jj) 195 zdiattot = ediat(ji,jj,jk) * zstrn(ji,jj) 203 196 ! 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 ) &197 zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * EXP( -znanotot ) ) 198 zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) / ( trb(ji,jj,jk,jpdia) + rtrn ) 199 200 zpislopen = zpislopead(ji,jj,jk) * trb(ji,jj,jk,jpnch) & 201 & / ( trb(ji,jj,jk,jpphy) * 12. + rtrn ) & 209 202 & / ( prmax(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn ) 210 203 211 zpislope2n = zpislopead2(ji,jj,jk) * tr n(ji,jj,jk,jpdch) &212 & / ( tr n(ji,jj,jk,jpdia) * 12. + rtrn ) &204 zpislope2n = zpislopead2(ji,jj,jk) * trb(ji,jj,jk,jpdch) & 205 & / ( trb(ji,jj,jk,jpdia) * 12. + rtrn ) & 213 206 & / ( prmax(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn ) 214 207 215 208 ! Computation of production function for Carbon 216 209 ! --------------------------------------------- 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)) )210 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * znanotot ) ) 211 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpislope2n * zdiattot ) ) 219 212 220 213 ! Computation of production function for Chlorophyll 221 214 !-------------------------------------------------- 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)) )215 zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 216 zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislope2n * ediat(ji,jj,jk) ) ) 224 217 ENDIF 225 218 END DO … … 231 224 ! Computation of a proxy of the N/C ratio 232 225 ! --------------------------------------- 233 !CDIR NOVERRCHK234 226 DO jk = 1, jpkm1 235 !CDIR NOVERRCHK236 227 DO jj = 1, jpj 237 !CDIR NOVERRCHK238 228 DO ji = 1, jpi 239 229 zval = MIN( xnanopo4(ji,jj,jk), ( xnanonh4(ji,jj,jk) + xnanono3(ji,jj,jk) ) ) & … … 252 242 DO ji = 1, jpi 253 243 254 IF( etot (ji,jj,jk) > 1.E-3 ) THEN244 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 255 245 ! Si/C of diatoms 256 246 ! ------------------------ … … 258 248 ! Si/C is arbitrariliy increased for very high Si concentrations 259 249 ! 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 )250 zlim = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi1 ) 261 251 zsilim = MIN( zprdia(ji,jj,jk) / ( prmax(ji,jj,jk) + rtrn ), xlimsi(ji,jj,jk) ) 262 252 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)253 zsiborn = trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) 264 254 IF (gphit(ji,jj) < -30 ) THEN 265 255 zsilfac2 = 1. + 2. * zsiborn / ( zsiborn + xksi2**3 ) … … 296 286 297 287 ! Computation of the various production terms 298 !CDIR NOVERRCHK299 288 DO jk = 1, jpkm1 300 !CDIR NOVERRCHK301 289 DO jj = 1, jpj 302 !CDIR NOVERRCHK303 290 DO ji = 1, jpi 304 IF( etot (ji,jj,jk) > 1.E-3 ) THEN291 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 305 292 ! production terms for nanophyto. 306 zprorca(ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * tr n(ji,jj,jk,jpphy) * rfact2293 zprorca(ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * trb(ji,jj,jk,jpphy) * rfact2 307 294 zpronew(ji,jj,jk) = zprorca(ji,jj,jk) * xnanono3(ji,jj,jk) / ( xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) + rtrn ) 308 295 ! 309 zratio = tr n(ji,jj,jk,jpnfe) / ( trn(ji,jj,jk,jpphy) + rtrn )296 zratio = trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) + rtrn ) 310 297 zratio = zratio / fecnm 311 298 zmax = MAX( 0., ( 1. - zratio ) / ABS( 1.05 - zratio ) ) … … 313 300 & * ( 4. - 4.5 * xlimnfe(ji,jj,jk) / ( xlimnfe(ji,jj,jk) + 0.5 ) ) & 314 301 & * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concnfe(ji,jj,jk) ) & 315 & * zmax * tr n(ji,jj,jk,jpphy) * rfact2302 & * zmax * trb(ji,jj,jk,jpphy) * rfact2 316 303 ! production terms for diatomees 317 zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * tr n(ji,jj,jk,jpdia) * rfact2304 zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * trb(ji,jj,jk,jpdia) * rfact2 318 305 zpronewd(ji,jj,jk) = zprorcad(ji,jj,jk) * xdiatno3(ji,jj,jk) / ( xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) + rtrn ) 319 306 ! 320 zratio = tr n(ji,jj,jk,jpdfe) / ( trn(ji,jj,jk,jpdia) + rtrn )307 zratio = trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) + rtrn ) 321 308 zratio = zratio / fecdm 322 309 zmax = MAX( 0., ( 1. - zratio ) / ABS( 1.05 - zratio ) ) … … 324 311 & * ( 4. - 4.5 * xlimdfe(ji,jj,jk) / ( xlimdfe(ji,jj,jk) + 0.5 ) ) & 325 312 & * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concdfe(ji,jj,jk) ) & 326 & * zmax * tr n(ji,jj,jk,jpdia) * rfact2313 & * zmax * trb(ji,jj,jk,jpdia) * rfact2 327 314 ENDIF 328 315 END DO … … 331 318 332 319 IF( ln_newprod ) THEN 333 !CDIR NOVERRCHK334 320 DO jk = 1, jpkm1 335 !CDIR NOVERRCHK336 321 DO jj = 1, jpj 337 !CDIR NOVERRCHK338 322 DO ji = 1, jpi 339 323 IF( fsdepw(ji,jj,jk+1) <= hmld(ji,jj) ) THEN … … 341 325 zprdch(ji,jj,jk) = zprdch(ji,jj,jk) * zmixdiat(ji,jj) 342 326 ENDIF 343 IF( etot (ji,jj,jk) > 1.E-3 ) THEN327 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 344 328 ! production terms for nanophyto. ( chlorophyll ) 345 329 znanotot = enano(ji,jj,jk) * zstrn(ji,jj) … … 359 343 END DO 360 344 ELSE 361 !CDIR NOVERRCHK362 345 DO jk = 1, jpkm1 363 !CDIR NOVERRCHK364 346 DO jj = 1, jpj 365 !CDIR NOVERRCHK366 347 DO ji = 1, jpi 367 IF( etot (ji,jj,jk) > 1.E-3 ) THEN348 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 368 349 ! 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)350 znanotot = enano(ji,jj,jk) 351 zprod = rday * zprorca(ji,jj,jk) * zprnch(ji,jj,jk) * trb(ji,jj,jk,jpphy) * xlimphy(ji,jj,jk) 371 352 zprochln(ji,jj,jk) = chlcmin * 12. * zprorca (ji,jj,jk) 372 353 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 )354 & / ( zpislopead(ji,jj,jk) * trb(ji,jj,jk,jpnch) * znanotot +rtrn ) 374 355 ! 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)356 zdiattot = ediat(ji,jj,jk) 357 zprod = rday * zprorcad(ji,jj,jk) * zprdch(ji,jj,jk) * trb(ji,jj,jk,jpdia) * xlimdia(ji,jj,jk) 377 358 zprochld(ji,jj,jk) = chlcmin * 12. * zprorcad(ji,jj,jk) 378 359 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 )360 & / ( zpislopead2(ji,jj,jk) * trb(ji,jj,jk,jpdch) * zdiattot +rtrn ) 380 361 ENDIF 381 362 END DO … … 414 395 415 396 ! Total primary production per year 416 IF( iom_use( "tintpp" ) .OR. ( ln_check_mass .AND. kt == nitend .AND. jnt == nrdttrc ) ) &397 IF( iom_use( "tintpp" ) .OR. ( ln_check_mass .AND. kt == nitend .AND. knt == nrdttrc ) ) & 417 398 & tpp = glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) ) 418 399 419 400 IF( lk_iomput ) THEN 420 IF( jnt == nrdttrc ) THEN401 IF( knt == nrdttrc ) THEN 421 402 CALL wrk_alloc( jpi, jpj, zw2d ) 422 403 CALL wrk_alloc( jpi, jpj, jpk, zw3d ) … … 629 610 630 611 !!====================================================================== 631 END MODULE 612 END MODULE p4zprod
Note: See TracChangeset
for help on using the changeset viewer.