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 5901 for branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90 – NEMO

Ignore:
Timestamp:
2015-11-20T09:39:06+01:00 (8 years ago)
Author:
jamesharle
Message:

merging branch with head of the trunk

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  
    5454   REAL(wp) :: texcret2               !: 1 - excret2         
    5555 
    56  
    57    !!* Substitution 
    58 #  include "top_substitute.h90" 
     56   !! * Substitutions 
     57#  include "domzgr_substitute.h90" 
    5958   !!---------------------------------------------------------------------- 
    6059   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
     
    6463CONTAINS 
    6564 
    66    SUBROUTINE p4z_prod( kt , jnt ) 
     65   SUBROUTINE p4z_prod( kt , knt ) 
    6766      !!--------------------------------------------------------------------- 
    6867      !!                     ***  ROUTINE p4z_prod  *** 
     
    7473      !!--------------------------------------------------------------------- 
    7574      ! 
    76       INTEGER, INTENT(in) :: kt, jnt 
     75      INTEGER, INTENT(in) :: kt, knt 
    7776      ! 
    7877      INTEGER  ::   ji, jj, jk 
     
    129128      END DO 
    130129 
    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 
    146143 
    147144      ! Maximum light intensity 
     
    150147 
    151148      IF( ln_newprod ) THEN 
    152 !CDIR NOVERRCHK 
    153149         DO jk = 1, jpkm1 
    154 !CDIR NOVERRCHK 
    155150            DO jj = 1, jpj 
    156 !CDIR NOVERRCHK 
    157151               DO ji = 1, jpi 
    158152                  ! Computation of the P-I slope for nanos and diatoms 
    159                   IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     153                  IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    160154                      ztn         = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 
    161155                      zadap       = xadap * ztn / ( 2.+ ztn ) 
    162                       zconctemp   = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - xsizedia ) 
    163                       zconctemp2  = trn(ji,jj,jk,jpdia) - zconctemp 
     156                      zconctemp   = MAX( 0.e0 , trb(ji,jj,jk,jpdia) - xsizedia ) 
     157                      zconctemp2  = trb(ji,jj,jk,jpdia) - zconctemp 
    164158                      znanotot    = enano(ji,jj,jk) * zstrn(ji,jj) 
    165159                      zdiattot    = ediat(ji,jj,jk) * zstrn(ji,jj) 
    166160                      ! 
    167161                      zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap  * EXP( -znanotot ) )  & 
    168                          &                   * trn(ji,jj,jk,jpnch) /( trn(ji,jj,jk,jpphy) * 12. + rtrn) 
     162                         &                   * trb(ji,jj,jk,jpnch) /( trb(ji,jj,jk,jpphy) * 12. + rtrn) 
    169163                      ! 
    170                       zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) / ( trn(ji,jj,jk,jpdia) + rtrn )   & 
    171                          &                   * trn(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) 
    172166 
    173167                      ! Computation of production function for Carbon 
     
    188182         END DO 
    189183      ELSE 
    190 !CDIR NOVERRCHK 
    191184         DO jk = 1, jpkm1 
    192 !CDIR NOVERRCHK 
    193185            DO jj = 1, jpj 
    194 !CDIR NOVERRCHK 
    195186               DO ji = 1, jpi 
    196187 
    197188                  ! Computation of the P-I slope for nanos and diatoms 
    198                   IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     189                  IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    199190                      ztn         = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 
    200191                      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) 
    203196                      ! 
    204                       zpislopead (ji,jj,jk) = pislope  * ( 1.+ zadap  * EXP( -0.21 * enano(ji,jj,jk) ) ) 
    205                       zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp)  / ( trn(ji,jj,jk,jpdia) + rtrn ) 
    206  
    207                       zpislopen =  zpislopead(ji,jj,jk) * trn(ji,jj,jk,jpnch)                & 
    208                         &          / ( trn(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 )   & 
    209202                        &          / ( prmax(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn ) 
    210203 
    211                       zpislope2n = zpislopead2(ji,jj,jk) * trn(ji,jj,jk,jpdch)                & 
    212                         &          / ( trn(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 )   & 
    213206                        &          / ( prmax(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn ) 
    214207 
    215208                      ! Computation of production function for Carbon 
    216209                      !  --------------------------------------------- 
    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 ) ) 
    219212 
    220213                      !  Computation of production function for Chlorophyll 
    221214                      !-------------------------------------------------- 
    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) ) ) 
    224217                  ENDIF 
    225218               END DO 
     
    231224      !  Computation of a proxy of the N/C ratio 
    232225      !  --------------------------------------- 
    233 !CDIR NOVERRCHK 
    234226      DO jk = 1, jpkm1 
    235 !CDIR NOVERRCHK 
    236227         DO jj = 1, jpj 
    237 !CDIR NOVERRCHK 
    238228            DO ji = 1, jpi 
    239229                zval = MIN( xnanopo4(ji,jj,jk), ( xnanonh4(ji,jj,jk) + xnanono3(ji,jj,jk) ) )   & 
     
    252242            DO ji = 1, jpi 
    253243 
    254                 IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     244                IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    255245                   !    Si/C of diatoms 
    256246                   !    ------------------------ 
     
    258248                   !    Si/C is arbitrariliy increased for very high Si concentrations 
    259249                   !    to mimic the very high ratios observed in the Southern Ocean (silpot2) 
    260                   zlim  = trn(ji,jj,jk,jpsil) / ( trn(ji,jj,jk,jpsil) + xksi1 ) 
     250                  zlim  = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi1 ) 
    261251                  zsilim = MIN( zprdia(ji,jj,jk) / ( prmax(ji,jj,jk) + rtrn ), xlimsi(ji,jj,jk) ) 
    262252                  zsilfac = 4.4 * EXP( -4.23 * zsilim ) * MAX( 0.e0, MIN( 1., 2.2 * ( zlim - 0.5 ) )  ) + 1.e0 
    263                   zsiborn = trn(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) 
    264254                  IF (gphit(ji,jj) < -30 ) THEN 
    265255                    zsilfac2 = 1. + 2. * zsiborn / ( zsiborn + xksi2**3 ) 
     
    296286 
    297287      ! Computation of the various production terms  
    298 !CDIR NOVERRCHK 
    299288      DO jk = 1, jpkm1 
    300 !CDIR NOVERRCHK 
    301289         DO jj = 1, jpj 
    302 !CDIR NOVERRCHK 
    303290            DO ji = 1, jpi 
    304                IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     291               IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    305292                  !  production terms for nanophyto. 
    306                   zprorca(ji,jj,jk) = zprbio(ji,jj,jk)  * xlimphy(ji,jj,jk) * trn(ji,jj,jk,jpphy) * rfact2 
     293                  zprorca(ji,jj,jk) = zprbio(ji,jj,jk)  * xlimphy(ji,jj,jk) * trb(ji,jj,jk,jpphy) * rfact2 
    307294                  zpronew(ji,jj,jk) = zprorca(ji,jj,jk) * xnanono3(ji,jj,jk) / ( xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) + rtrn ) 
    308295                  ! 
    309                   zratio = trn(ji,jj,jk,jpnfe) / ( trn(ji,jj,jk,jpphy) + rtrn ) 
     296                  zratio = trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) + rtrn ) 
    310297                  zratio = zratio / fecnm  
    311298                  zmax   = MAX( 0., ( 1. - zratio ) / ABS( 1.05 - zratio ) )  
     
    313300                  &             * ( 4. - 4.5 * xlimnfe(ji,jj,jk) / ( xlimnfe(ji,jj,jk) + 0.5 ) )    & 
    314301                  &             * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concnfe(ji,jj,jk) )  & 
    315                   &             * zmax * trn(ji,jj,jk,jpphy) * rfact2 
     302                  &             * zmax * trb(ji,jj,jk,jpphy) * rfact2 
    316303                  !  production terms for diatomees 
    317                   zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * trn(ji,jj,jk,jpdia) * rfact2 
     304                  zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * trb(ji,jj,jk,jpdia) * rfact2 
    318305                  zpronewd(ji,jj,jk) = zprorcad(ji,jj,jk) * xdiatno3(ji,jj,jk) / ( xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) + rtrn ) 
    319306                  ! 
    320                   zratio = trn(ji,jj,jk,jpdfe) / ( trn(ji,jj,jk,jpdia) + rtrn ) 
     307                  zratio = trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) + rtrn ) 
    321308                  zratio = zratio / fecdm  
    322309                  zmax   = MAX( 0., ( 1. - zratio ) / ABS( 1.05 - zratio ) )  
     
    324311                  &             * ( 4. - 4.5 * xlimdfe(ji,jj,jk) / ( xlimdfe(ji,jj,jk) + 0.5 ) )    & 
    325312                  &             * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concdfe(ji,jj,jk) )  & 
    326                   &             * zmax * trn(ji,jj,jk,jpdia) * rfact2 
     313                  &             * zmax * trb(ji,jj,jk,jpdia) * rfact2 
    327314               ENDIF 
    328315            END DO 
     
    331318 
    332319      IF( ln_newprod ) THEN 
    333 !CDIR NOVERRCHK 
    334320         DO jk = 1, jpkm1 
    335 !CDIR NOVERRCHK 
    336321            DO jj = 1, jpj 
    337 !CDIR NOVERRCHK 
    338322               DO ji = 1, jpi 
    339323                  IF( fsdepw(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 
     
    341325                     zprdch(ji,jj,jk) = zprdch(ji,jj,jk) * zmixdiat(ji,jj) 
    342326                  ENDIF 
    343                   IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     327                  IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    344328                     !  production terms for nanophyto. ( chlorophyll ) 
    345329                     znanotot = enano(ji,jj,jk) * zstrn(ji,jj) 
     
    359343         END DO 
    360344      ELSE 
    361 !CDIR NOVERRCHK 
    362345         DO jk = 1, jpkm1 
    363 !CDIR NOVERRCHK 
    364346            DO jj = 1, jpj 
    365 !CDIR NOVERRCHK 
    366347               DO ji = 1, jpi 
    367                   IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     348                  IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    368349                     !  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) * trn(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) 
    371352                     zprochln(ji,jj,jk) = chlcmin * 12. * zprorca (ji,jj,jk) 
    372353                     zprochln(ji,jj,jk) = zprochln(ji,jj,jk) + (chlcnm-chlcmin) * 144. * zprod            & 
    373                      &                    / ( zpislopead(ji,jj,jk) * trn(ji,jj,jk,jpnch) * znanotot +rtrn ) 
     354                     &                    / ( zpislopead(ji,jj,jk) * trb(ji,jj,jk,jpnch) * znanotot +rtrn ) 
    374355                     !  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) * trn(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) 
    377358                     zprochld(ji,jj,jk) = chlcmin * 12. * zprorcad(ji,jj,jk) 
    378359                     zprochld(ji,jj,jk) = zprochld(ji,jj,jk) + (chlcdm-chlcmin) * 144. * zprod             & 
    379                      &                    / ( zpislopead2(ji,jj,jk) * trn(ji,jj,jk,jpdch) * zdiattot +rtrn ) 
     360                     &                    / ( zpislopead2(ji,jj,jk) * trb(ji,jj,jk,jpdch) * zdiattot +rtrn ) 
    380361                  ENDIF 
    381362               END DO 
     
    414395 
    415396    ! 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 )  )  & 
    417398         & tpp = glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) ) 
    418399 
    419400    IF( lk_iomput ) THEN 
    420        IF( jnt == nrdttrc ) THEN 
     401       IF( knt == nrdttrc ) THEN 
    421402          CALL wrk_alloc( jpi, jpj,      zw2d ) 
    422403          CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 
     
    629610 
    630611   !!====================================================================== 
    631 END MODULE  p4zprod 
     612END MODULE p4zprod 
Note: See TracChangeset for help on using the changeset viewer.