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 12537 for NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zprod.F90 – NEMO

Ignore:
Timestamp:
2020-03-11T16:02:54+01:00 (4 years ago)
Author:
aumont
Message:

Comments in routines have been revised and significantly augmented

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zprod.F90

    r12496 r12537  
    238238      END DO 
    239239 
    240       ! Computation of the various production terms of nanophytoplankton  
     240      ! Computation of the various production and uptake terms of nanophytoplankton  
     241      ! Interactions between N and P are modeled according to the Chain Model  
     242      ! of Pahlow et al. (2009). Iron uptake is modeled following traditional 
     243      ! Droop kinetics. When the quota is approaching the maximum achievable 
     244      ! quota, uptake is downregulated according to a sigmoidal function  
     245      ! (power 2), as proposed by Flynn (2003) 
     246      ! --------------------------------------------------------------------------- 
    241247      DO jk = 1, jpkm1 
    242248         DO jj = 1, jpj 
     
    245251                  !  production terms for nanophyto. 
    246252                  zprorcan(ji,jj,jk) = zprbio(ji,jj,jk)  * xlimphy(ji,jj,jk) * trb(ji,jj,jk,jpphy) * rfact2 
    247                   ! size computation 
     253 
     254                  ! Size computation 
     255                  ! Size is made a function of the limitation of of phytoplankton growth 
     256                  ! Strongly limited cells are supposed to be smaller. sizena is the  
     257                  ! size at time step t+1 and is thus updated at the end of the  
     258                  ! current time step 
     259                  ! -------------------------------------------------------------------- 
    248260                  zlimfac = xlimphys(ji,jj,jk) * zprchln(ji,jj,jk) / ( zprmaxn(ji,jj,jk) + rtrn ) 
    249261                  zsizetmp = 1.0 + 1.3 * ( xsizern - 1.0 ) * zlimfac**3/(0.3 + zlimfac**3) 
    250262                  sizena(ji,jj,jk) = min(xsizern, max( sizena(ji,jj,jk), zsizetmp ) ) 
    251                   ! Nutrient uptake terms 
     263                  ! Maximum potential uptake rate 
    252264                  zration = trb(ji,jj,jk,jpnph) / ( trb(ji,jj,jk,jpphy) + rtrn ) 
    253265                  zratiop = trb(ji,jj,jk,jppph) / ( trb(ji,jj,jk,jpphy) + rtrn ) 
     
    261273                  zpronewn(ji,jj,jk) = zpronmax * xnanono3(ji,jj,jk) 
    262274                  zproregn(ji,jj,jk) = zpronmax * xnanonh4(ji,jj,jk) 
    263                   ! Uptake of phosphorus 
     275                  ! Uptake of phosphorus and DOP 
    264276                  zrat = 1.0 - MIN( 1., zratiop / (xqpnmax(ji,jj,jk) + rtrn) ) 
    265277                  zmax = MAX(0., MIN(1., zrat**2 / (0.05**2 + zrat**2) ) ) 
     
    279291      END DO 
    280292 
    281       ! Computation of the various production terms of picophytoplankton  
     293      ! Computation of the various production and uptake terms of picophytoplankton  
     294      ! Interactions between N and P are modeled according to the Chain Model  
     295      ! of Pahlow et al. (2009). Iron uptake is modeled following traditional 
     296      ! Droop kinetics. When the quota is approaching the maximum achievable 
     297      ! quota, uptake is downregulated according to a sigmoidal function  
     298      ! (power 2), as proposed by Flynn (2003) 
     299      ! --------------------------------------------------------------------------- 
    282300      DO jk = 1, jpkm1 
    283301         DO jj = 1, jpj 
     
    287305                  zprorcap(ji,jj,jk) = zprpic(ji,jj,jk)  * xlimpic(ji,jj,jk) * trb(ji,jj,jk,jppic) * rfact2 
    288306                  ! Size computation 
     307                  ! Size is made a function of the limitation of of phytoplankton growth 
     308                  ! Strongly limited cells are supposed to be smaller. sizepa is 
     309                  ! size at time step t+1 and is thus updated at the end of the  
     310                  ! current time step 
     311                  ! -------------------------------------------------------------------- 
    289312                  zlimfac = zprchlp(ji,jj,jk)  * xlimpics(ji,jj,jk) / ( zprmaxp(ji,jj,jk) + rtrn ) 
    290313                  zsizetmp = 1.0 + 1.3 * ( xsizerp - 1.0 ) * zlimfac**3/(0.3 + zlimfac**3) 
    291314                  sizepa(ji,jj,jk) = min(xsizerp, max( sizepa(ji,jj,jk), zsizetmp ) ) 
    292                   ! Nutrient uptake 
     315                  ! Maximum potential uptake rate of nutrients 
    293316                  zration = trb(ji,jj,jk,jpnpi) / ( trb(ji,jj,jk,jppic) + rtrn ) 
    294317                  zratiop = trb(ji,jj,jk,jpppi) / ( trb(ji,jj,jk,jppic) + rtrn ) 
     
    320343      END DO 
    321344 
    322       ! Computation of the various production terms of diatoms 
     345      ! Computation of the various production and uptake terms of diatoms 
     346      ! Interactions between N and P are modeled according to the Chain Model  
     347      ! of Pahlow et al. (2009). Iron uptake is modeled following traditional 
     348      ! Droop kinetics. When the quota is approaching the maximum achievable 
     349      ! quota, uptake is downregulated according to a sigmoidal function  
     350      ! (power 2), as proposed by Flynn (2003) 
     351      ! --------------------------------------------------------------------------- 
    323352      DO jk = 1, jpkm1 
    324353         DO jj = 1, jpj 
     
    327356                  !  production terms for diatomees 
    328357                  zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * trb(ji,jj,jk,jpdia) * rfact2 
    329                   ! size computation 
     358                  ! Size computation 
     359                  ! Size is made a function of the limitation of of phytoplankton growth 
     360                  ! Strongly limited cells are supposed to be smaller. sizeda is 
     361                  ! size at time step t+1 and is thus updated at the end of the  
     362                  ! current time step.  
     363                  ! -------------------------------------------------------------------- 
    330364                  zlimfac = zprchld(ji,jj,jk) * xlimdias(ji,jj,jk) / ( zprmaxd(ji,jj,jk) + rtrn ) 
    331365                  zsizetmp = 1.0 + 1.3 * ( xsizerd - 1.0 ) * zlimfac**3/(0.3 + zlimfac**3) 
    332366                  sizeda(ji,jj,jk) = min(xsizerd, max( sizeda(ji,jj,jk), zsizetmp ) ) 
    333                   ! Nutrient uptake 
     367                  ! Maximum potential uptake rate of nutrients 
    334368                  zration = trb(ji,jj,jk,jpndi) / ( trb(ji,jj,jk,jpdia) + rtrn ) 
    335369                  zratiop = trb(ji,jj,jk,jppdi) / ( trb(ji,jj,jk,jpdia) + rtrn ) 
     
    361395      END DO 
    362396 
     397      ! Production of Chlorophyll. The formulation proposed by Geider et al. 
     398      ! is adopted here. 
     399      ! -------------------------------------------------------------------- 
    363400      DO jk = 1, jpkm1 
    364401         DO jj = 1, jpj 
     
    375412                  zprochlp = thetanpm * zprod / ( zpislopeadp(ji,jj,jk) * zpicotot + rtrn ) 
    376413                  zprochlp = MAX(zprochlp, chlcmin * 12. * zprorcap(ji,jj,jk) ) 
    377                   !  production terms for diatomees ( chlorophyll ) 
     414                  !  production terms for diatoms ( chlorophyll ) 
    378415                  zdiattot = ediatm(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
    379416                  zprod = rday * (zpronewd(ji,jj,jk) + zproregd(ji,jj,jk)) * zprchld(ji,jj,jk) * xlimdia(ji,jj,jk) 
     
    454491        END DO 
    455492     END DO 
    456      ! 
     493      
     494     ! Production and uptake of ligands by phytoplankton. This part is activated  
     495     ! when ln_ligand is set to .true. in the namelist. Ligand uptake is small  
     496     ! and based on the FeL model by Morel et al. (2008) and on the study of 
     497     ! Shaked and Lis (2012) 
     498     ! ------------------------------------------------------------------------- 
    457499     IF( ln_ligand ) THEN 
    458500         zpligprod1(:,:,:) = 0._wp    ;    zpligprod2(:,:,:) = 0._wp 
     
    463505                 zfeup    = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) + texcretp * zprofep(ji,jj,jk) 
    464506                 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zdocprod * ldocp    & 
    465                  &       - zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) + 2.E3 * (1.0 - plig(ji,jj,jk) ) ) 
     507                 &       - zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) + 2.E3 * (1.0 - plig(ji,jj,jk) ) ) * lthet 
    466508                 zpligprod1(ji,jj,jk) = zdocprod * ldocp 
    467                  zpligprod2(ji,jj,jk) = zfeup * plig(ji,jj,jk) * lthet 
     509                 zpligprod2(ji,jj,jk) = zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) & 
     510                 &                      + 2.E3 * (1.0 - plig(ji,jj,jk) ) ) * lthet 
    468511              END DO 
    469512           END DO 
    470513        END DO 
    471514     ENDIF 
    472  
    473  
    474      ! Total primary production per year 
    475515 
    476516    ! Total primary production per year 
     
    490530              CALL iom_put( "PPPHYP"  , zw3d ) 
    491531              ! 
    492               zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:)  ! primary production by diatomes 
     532              zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:)  ! primary production by diatoms 
    493533              CALL iom_put( "PPPHYD"  , zw3d ) 
    494534          ENDIF 
     
    500540              CALL iom_put( "PPNEWP"  , zw3d ) 
    501541              ! 
    502               zw3d(:,:,:) = zpronewd(:,:,:) * zfact * tmask(:,:,:)  ! new primary production by diatomes 
     542              zw3d(:,:,:) = zpronewd(:,:,:) * zfact * tmask(:,:,:)  ! new primary production by diatoms 
    503543              CALL iom_put( "PPNEWD"  , zw3d ) 
    504544          ENDIF 
     
    508548          ENDIF 
    509549          IF( iom_use( "PFeN" ) .OR. iom_use( "PFeD" ) .OR. iom_use( "PFeP" ) )  THEN 
    510               zw3d(:,:,:) = zprofen(:,:,:) * zfact * tmask(:,:,:)  ! biogenic iron production by nanophyto 
     550              zw3d(:,:,:) = zprofen(:,:,:) * zfact * tmask(:,:,:)  ! biogenic iron uptake by nanophyto 
    511551              CALL iom_put( "PFeN"  , zw3d ) 
    512552              ! 
    513               zw3d(:,:,:) = zprofep(:,:,:) * zfact * tmask(:,:,:)  ! biogenic iron production by picophyto 
     553              zw3d(:,:,:) = zprofep(:,:,:) * zfact * tmask(:,:,:)  ! biogenic iron uptake by picophyto 
    514554              CALL iom_put( "PFeP"  , zw3d ) 
    515555              ! 
    516               zw3d(:,:,:) = zprofed(:,:,:) * zfact * tmask(:,:,:)  ! biogenic iron production by  diatomes 
     556              zw3d(:,:,:) = zprofed(:,:,:) * zfact * tmask(:,:,:)  ! biogenic iron uptake by  diatoms 
    517557              CALL iom_put( "PFeD"  , zw3d ) 
    518558          ENDIF 
    519559          IF( iom_use( "LPRODP" ) )  THEN 
    520560              zw3d(:,:,:) = zpligprod1(:,:,:) * 1e9 * zfact * tmask(:,:,:) 
    521               CALL iom_put( "LPRODP"  , zw3d ) 
     561              CALL iom_put( "LPRODP"  , zw3d )  ! Ligand production by phytoplankton 
    522562          ENDIF 
    523563          IF( iom_use( "LDETP" ) )  THEN 
    524564              zw3d(:,:,:) = zpligprod2(:,:,:) * 1e9 * zfact * tmask(:,:,:) 
    525               CALL iom_put( "LDETP"  , zw3d ) 
     565              CALL iom_put( "LDETP"  , zw3d )  ! Uptake of ligands by phytoplankton 
    526566          ENDIF 
    527567          IF( iom_use( "Mumax" ) )  THEN 
     
    540580          ENDIF 
    541581          IF( iom_use( "LNlight" ) .OR. iom_use( "LDlight" ) .OR. iom_use( "LPlight" ) )  THEN 
    542               zw3d(:,:,:) = zprbio (:,:,:) / (zprmaxn(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 
     582              zw3d(:,:,:) = zprbio (:,:,:) / (zprmaxn(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term of nanophytoplankton 
    543583              CALL iom_put( "LNlight"  , zw3d ) 
    544584              ! 
    545               zw3d(:,:,:) = zprpic (:,:,:) / (zprmaxp(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 
     585              zw3d(:,:,:) = zprpic (:,:,:) / (zprmaxp(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term of picophytoplankton 
    546586              CALL iom_put( "LPlight"  , zw3d ) 
    547587              ! 
    548               zw3d(:,:,:) =  zprdia (:,:,:) / (zprmaxd(:,:,:) + rtrn) * tmask(:,:,:)  ! light limitation term 
     588              zw3d(:,:,:) =  zprdia (:,:,:) / (zprmaxd(:,:,:) + rtrn) * tmask(:,:,:)  ! light limitation term of diatoms 
    549589              CALL iom_put( "LDlight"  , zw3d ) 
    550590          ENDIF 
     
    556596              CALL iom_put( "MunetP"  , zw3d ) 
    557597              ! 
    558               zw3d(:,:,:) = zcroissd(:,:,:) * tmask(:,:,:) ! ! Realized growth rate for diatomes 
     598              zw3d(:,:,:) = zcroissd(:,:,:) * tmask(:,:,:) ! ! Realized growth rate for diatoms 
    559599              CALL iom_put( "MunetD"  , zw3d ) 
    560600              ! 
     
    584624      !! ** Purpose :   Initialization of phytoplankton production parameters 
    585625      !! 
    586       !! ** Method  :   Read the nampisprod namelist and check the parameters 
     626      !! ** Method  :   Read the namp5zprod namelist and check the parameters 
    587627      !!      called at the first timestep (nittrc000) 
    588628      !! 
    589       !! ** input   :   Namelist nampisprod 
     629      !! ** input   :   Namelist namp5zprod 
    590630      !!---------------------------------------------------------------------- 
    591       INTEGER :: ios                 ! Local integer output status for namelist read 
     631      INTEGER :: ios    ! Local integer output status for namelist read 
    592632      !! 
    593633      NAMELIST/namp5zprod/ pislopen, pislopep, pisloped, excretn, excretp, excretd,     & 
     
    595635      !!---------------------------------------------------------------------- 
    596636 
    597       REWIND( numnatp_ref )              ! Namelist nampisprod in reference namelist : Pisces phytoplankton production 
     637      REWIND( numnatp_ref )              ! Namelist namp5zprod in reference namelist : Pisces phytoplankton production 
    598638      READ  ( numnatp_ref, namp5zprod, IOSTAT = ios, ERR = 901) 
    599639901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp5zprod in reference namelist' ) 
    600640 
    601       REWIND( numnatp_cfg )              ! Namelist nampisprod in configuration namelist : Pisces phytoplankton production 
     641      REWIND( numnatp_cfg )              ! Namelist namp5zprod in configuration namelist : Pisces phytoplankton production 
    602642      READ  ( numnatp_cfg, namp5zprod, IOSTAT = ios, ERR = 902 ) 
    603643902   IF( ios >  0 ) CALL ctl_nam ( ios , 'namp5zprod in configuration namelist' ) 
Note: See TracChangeset for help on using the changeset viewer.