Changeset 3446 for branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
- Timestamp:
- 2012-08-10T13:13:55+02:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
r3443 r3446 77 77 ! 78 78 INTEGER :: ji, jj, jk 79 REAL(wp) :: zsilfac, z fact, znanotot, zdiattot, zconctemp, zconctemp279 REAL(wp) :: zsilfac, znanotot, zdiattot, zconctemp, zconctemp2 80 80 REAL(wp) :: zratio, zmax, zsilim, ztn, zadap 81 81 REAL(wp) :: zlim, zsilfac2, zsiborn, zprod, zproreg, zproreg2 … … 135 135 DO ji = 1, jpi 136 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) * zval140 zprdia(ji,jj,jk) = zprbio(ji,jj,jk)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 141 ENDIF 142 142 END DO … … 156 156 !CDIR NOVERRCHK 157 157 DO ji = 1, jpi 158 159 158 ! Computation of the P-I slope for nanos and diatoms 160 159 IF( etot(ji,jj,jk) > 1.E-3 ) THEN 161 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 162 zadap = ztn / ( 2.+ ztn ) 163 160 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 161 zadap = ztn / ( 2.+ ztn ) 164 162 zconctemp = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - xsizedia ) 165 163 zconctemp2 = trn(ji,jj,jk,jpdia) - zconctemp 166 167 znanotot = enano(ji,jj,jk) * zstrn(ji,jj) 168 zdiattot = ediat(ji,jj,jk) * zstrn(ji,jj) 169 170 zfact = EXP( -0.21 * znanotot ) 171 zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * zfact ) & 164 znanotot = enano(ji,jj,jk) * zstrn(ji,jj) 165 zdiattot = ediat(ji,jj,jk) * zstrn(ji,jj) 166 ! 167 zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * EXP( -0.21 * znanotot ) ) & 172 168 & * trn(ji,jj,jk,jpnch) /( trn(ji,jj,jk,jpphy) * 12. + rtrn) 173 169 ! 174 170 zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) / ( trn(ji,jj,jk,jpdia) + rtrn ) & 175 171 & * trn(ji,jj,jk,jpdch) /( trn(ji,jj,jk,jpdia) * 12. + rtrn) … … 201 197 ! Computation of the P-I slope for nanos and diatoms 202 198 IF( etot(ji,jj,jk) > 1.E-3 ) THEN 203 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 204 zadap = ztn / ( 2.+ ztn ) 205 199 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 200 zadap = ztn / ( 2.+ ztn ) 206 201 zconctemp = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - xsizedia ) 207 202 zconctemp2 = trn(ji,jj,jk,jpdia) - zconctemp 208 209 zfact = EXP( -0.21 * enano(ji,jj,jk) ) 210 zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * zfact ) 203 ! 204 zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * EXP( -0.21 * enano(ji,jj,jk) ) ) 211 205 zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) 212 206 … … 264 258 zsilim = MIN( zprdia(ji,jj,jk) / ( prmax(ji,jj,jk) + rtrn ), xlimsi(ji,jj,jk) ) 265 259 zsilfac = 4.4 * EXP( -4.23 * zsilim ) * MAX( 0.e0, MIN( 1., 2.2 * ( zlim - 0.5 ) ) ) + 1.e0 266 zsiborn = MAX( 0.e0, ( trn(ji,jj,jk,jpsil) - 15.e-6 ) ) 267 zsilfac2 = 1.+ 2.* zsiborn / ( zsiborn + xksi2 ) 268 zsilfac = MIN( 5.4, zsilfac * zsilfac2) 269 zysopt(ji,jj,jk) = grosip * zlim * zsilfac 260 zsiborn = trn(ji,jj,jk,jpsil) * trn(ji,jj,jk,jpsil) * trn(ji,jj,jk,jpsil) 261 IF (gphit(ji,jj) < -30 ) THEN 262 zsilfac2 = 1. + 2. * zsiborn / ( zsiborn + xksi2**3 ) 263 ELSE 264 zsilfac2 = 1. + zsiborn / ( zsiborn + xksi2**3 ) 265 ENDIF 266 zysopt(ji,jj,jk) = grosip * zlim * zsilfac * zsilfac2 270 267 ENDIF 271 268 END DO … … 312 309 zprofen(ji,jj,jk) = fecnm * prmax(ji,jj,jk) & 313 310 & * ( 4. - 4.5 * xlimnfe(ji,jj,jk) / ( xlimnfe(ji,jj,jk) + 0.5 ) ) & 314 & * trn(ji,jj,jk,jpfer) / ( trn(ji,jj,jk,jpfer) + concnfe(ji,jj,jk) ) &311 & * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concnfe(ji,jj,jk) ) & 315 312 & * zmax * trn(ji,jj,jk,jpphy) * rfact2 316 313 ! production terms for diatomees … … 323 320 zprofed(ji,jj,jk) = fecdm * prmax(ji,jj,jk) & 324 321 & * ( 4. - 4.5 * xlimdfe(ji,jj,jk) / ( xlimdfe(ji,jj,jk) + 0.5 ) ) & 325 & * trn(ji,jj,jk,jpfer) / ( trn(ji,jj,jk,jpfer) + concdfe(ji,jj,jk) ) &322 & * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concdfe(ji,jj,jk) ) & 326 323 & * zmax * trn(ji,jj,jk,jpdia) * rfact2 327 324 ENDIF … … 426 423 IF( lk_iomput ) THEN 427 424 IF( jnt == nrdttrc ) THEN 428 CALL iom_put( "PPPHY" , zprorca (:,:,:) * zrfact2 * tmask(:,:,:) ) ! primary production by nanophyto429 CALL iom_put( "PPPHY2" , zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) ) ! primary production by diatom430 CALL iom_put( "PPNEWN" , zpronew (:,:,:) * zrfact2 * tmask(:,:,:) ) ! new primary production by nanophyto431 CALL iom_put( "PPNEWD" , zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) ) ! new primary production by diatom432 CALL iom_put( "PBSi" , zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:) ) ! biogenic silica production433 CALL iom_put( "PFeD" , zprofed (:,:,:) * zrfact2 * tmask(:,:,:) ) ! biogenic iron production by diatom434 CALL iom_put( "PFeN" , zprofen (:,:,:) * zrfact2 * tmask(:,:,:) ) ! biogenic iron production by nanophyto425 CALL iom_put( "PPPHY" , zprorca (:,:,:) * zrfact2 * tmask(:,:,:) ) ! primary production by nanophyto 426 CALL iom_put( "PPPHY2" , zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) ) ! primary production by diatom 427 CALL iom_put( "PPNEWN" , zpronew (:,:,:) * zrfact2 * tmask(:,:,:) ) ! new primary production by nanophyto 428 CALL iom_put( "PPNEWD" , zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) ) ! new primary production by diatom 429 CALL iom_put( "PBSi" , zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:) ) ! biogenic silica production 430 CALL iom_put( "PFeD" , zprofed (:,:,:) * zrfact2 * tmask(:,:,:) ) ! biogenic iron production by diatom 431 CALL iom_put( "PFeN" , zprofen (:,:,:) * zrfact2 * tmask(:,:,:) ) ! biogenic iron production by nanophyto 435 432 CALL iom_put( "Mumax" , prmax(:,:,:) * tmask(:,:,:) ) ! Maximum growth rate 436 CALL iom_put( "MuN" , zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for nanophyto 437 CALL iom_put( "MuD" , zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for diatoms 438 CALL iom_put( "LNnut" , xlimphy (:,:,:) * tmask(:,:,:) ) ! Nutrient limitation term 439 CALL iom_put( "LDnut" , xlimdia (:,:,:) * tmask(:,:,:) ) ! Nutrient limitation term 440 CALL iom_put( "LNFe" , xlimnfe (:,:,:) * tmask(:,:,:) ) ! Iron limitation term 441 CALL iom_put( "LDFe" , xlimdfe (:,:,:) * tmask(:,:,:) ) ! Iron limitation term 442 CALL iom_put( "LNlight" , zprbio (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) ) ! light limitation term 443 CALL iom_put( "LDlight" , zprdia (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) ) ! light limitation term 433 CALL iom_put( "MuN" , zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for nanophyto 434 CALL iom_put( "MuD" , zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for diatoms 435 CALL iom_put( "LNlight", zprbio (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) ) ! light limitation term 436 CALL iom_put( "LDlight", zprdia (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) ) ! light limitation term 444 437 ENDIF 445 438 ELSE
Note: See TracChangeset
for help on using the changeset viewer.