New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 3446 for branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90 – NEMO

Ignore:
Timestamp:
2012-08-10T13:13:55+02:00 (12 years ago)
Author:
cetlod
Message:

branch:2012/dev_r3438_LOCEAN15_PISLOB : 2nd step new PISCES updates from Olivier, see ticket #972

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90

    r3443 r3446  
    7777      ! 
    7878      INTEGER  ::   ji, jj, jk 
    79       REAL(wp) ::   zsilfac, zfact, znanotot, zdiattot, zconctemp, zconctemp2 
     79      REAL(wp) ::   zsilfac, znanotot, zdiattot, zconctemp, zconctemp2 
    8080      REAL(wp) ::   zratio, zmax, zsilim, ztn, zadap 
    8181      REAL(wp) ::   zlim, zsilfac2, zsiborn, zprod, zproreg, zproreg2 
     
    135135               DO ji = 1, jpi 
    136136                  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) 
     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) 
    141141                  ENDIF 
    142142               END DO 
     
    156156!CDIR NOVERRCHK 
    157157               DO ji = 1, jpi 
    158  
    159158                  ! Computation of the P-I slope for nanos and diatoms 
    160159                  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 ) 
    164162                      zconctemp   = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - xsizedia ) 
    165163                      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 ) )  & 
    172168                         &                   * trn(ji,jj,jk,jpnch) /( trn(ji,jj,jk,jpphy) * 12. + rtrn) 
    173  
     169                      ! 
    174170                      zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) / ( trn(ji,jj,jk,jpdia) + rtrn )   & 
    175171                         &                   * trn(ji,jj,jk,jpdch) /( trn(ji,jj,jk,jpdia) * 12. + rtrn) 
     
    201197                  ! Computation of the P-I slope for nanos and diatoms 
    202198                  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 ) 
    206201                      zconctemp   = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - xsizedia ) 
    207202                      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) ) ) 
    211205                      zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) 
    212206 
     
    264258                  zsilim = MIN( zprdia(ji,jj,jk) / ( prmax(ji,jj,jk) + rtrn ), xlimsi(ji,jj,jk) ) 
    265259                  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 
    270267              ENDIF 
    271268            END DO 
     
    312309                  zprofen(ji,jj,jk) = fecnm * prmax(ji,jj,jk)  & 
    313310                  &             * ( 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) )  & 
    315312                  &             * zmax * trn(ji,jj,jk,jpphy) * rfact2 
    316313                  !  production terms for diatomees 
     
    323320                  zprofed(ji,jj,jk) = fecdm * prmax(ji,jj,jk)  & 
    324321                  &             * ( 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) )  & 
    326323                  &             * zmax * trn(ji,jj,jk,jpdia) * rfact2 
    327324               ENDIF 
     
    426423         IF( lk_iomput ) THEN 
    427424           IF( jnt == nrdttrc ) THEN 
    428               CALL iom_put( "PPPHY" , zprorca (:,:,:) * zrfact2 * tmask(:,:,:) )  ! primary production by nanophyto 
    429               CALL iom_put( "PPPHY2", zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) )  ! primary production by diatom 
    430               CALL iom_put( "PPNEWN", zpronew (:,:,:) * zrfact2 * tmask(:,:,:) )  ! new primary production by nanophyto 
    431               CALL iom_put( "PPNEWD", zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) )  ! new primary production by diatom 
    432               CALL iom_put( "PBSi"  , zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:) ) ! biogenic silica production 
    433               CALL iom_put( "PFeD"  , zprofed (:,:,:) * zrfact2 * tmask(:,:,:) )  ! biogenic iron production by diatom 
    434               CALL iom_put( "PFeN"  , zprofen (:,:,:) * zrfact2 * tmask(:,:,:) )  ! biogenic iron production by nanophyto 
     425              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 
    435432              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 
    444437           ENDIF 
    445438         ELSE 
Note: See TracChangeset for help on using the changeset viewer.