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/p4zlim.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/p4zlim.F90

    r3443 r3446  
    1919   USE sms_pisces      ! PISCES variables 
    2020   USE p4zopt          ! Optical 
     21   USE iom             !  I/O manager 
    2122 
    2223   IMPLICIT NONE 
     
    3334   REAL(wp), PUBLIC ::  concnfer  = 1.e-9_wp      !:  Iron half saturation for nanophyto  
    3435   REAL(wp), PUBLIC ::  concdfer  = 2.e-9_wp      !:  Iron half saturation for diatoms   
     36   REAL(wp), PUBLIC ::  concbno3  = 2.5e-7_wp      !:  NO3 half saturation  for bacteria  
     37   REAL(wp), PUBLIC ::  concbnh4  = 2.5e-8_wp      !:  NH4 half saturation for bacteria 
    3538   REAL(wp), PUBLIC ::  xsizedia  = 5.e-7_wp      !:  Minimum size criteria for diatoms 
    3639   REAL(wp), PUBLIC ::  xsizephy  = 1.e-6_wp      !:  Minimum size criteria for nanophyto 
     
    5962CONTAINS 
    6063 
    61    SUBROUTINE p4z_lim( kt ) 
     64   SUBROUTINE p4z_lim( kt, jnt ) 
    6265      !!--------------------------------------------------------------------- 
    6366      !!                     ***  ROUTINE p4z_lim  *** 
     
    6972      !!--------------------------------------------------------------------- 
    7073      ! 
    71       INTEGER, INTENT(in)  :: kt 
     74      INTEGER, INTENT(in)  :: kt, jnt 
    7275      ! 
    7376      INTEGER  ::   ji, jj, jk 
     
    8992               zno3    = trn(ji,jj,jk,jpno3) / 40.e-6 
    9093               zferlim = MAX( 3e-11 * zno3 * zno3, 5e-12 ) 
    91                zferlim = MIN( zferlim, 3e-11 ) 
     94               zferlim = MIN( zferlim, 5e-11 ) 
    9295               trn(ji,jj,jk,jpfer) = MAX( trn(ji,jj,jk,jpfer), zferlim ) 
    9396 
     
    110113               zconc0nnh4        = MAX( concnnh4, ( zconcn2 * concnnh4 + concnnh4 * xsizern * zconcn ) * z1_trnphy ) 
    111114 
     115               ! Michaelis-Menten Limitation term for nutrients Small bacteria 
     116               ! ------------------------------------------------------------- 
     117               zdenom = 1. /  ( concbno3 * concbnh4 + concbnh4 * trn(ji,jj,jk,jpno3) + concbno3 * trn(ji,jj,jk,jpnh4) ) 
     118               xnanono3(ji,jj,jk) = trn(ji,jj,jk,jpno3) * concbnh4 * zdenom 
     119               xnanonh4(ji,jj,jk) = trn(ji,jj,jk,jpnh4) * concbno3 * zdenom 
     120               ! 
     121               zlim1    = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) 
     122               zlim2    = trn(ji,jj,jk,jppo4) / ( trn(ji,jj,jk,jppo4) + concbnh4 ) 
     123               zlim3    = trn(ji,jj,jk,jpfer) / ( concbfe + trn(ji,jj,jk,jpfer) ) 
     124               zlim4    = trn(ji,jj,jk,jpdoc) / ( xkdoc   + trn(ji,jj,jk,jpdoc) ) 
     125               xlimbacl(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) 
     126               xlimbac (ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) * zlim4 
     127 
    112128               ! Michaelis-Menten Limitation term for nutrients Small flagellates 
    113129               ! ----------------------------------------------- 
     
    124140               xlimphy(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) 
    125141               ! 
    126                zlim3    = trn(ji,jj,jk,jpfer) / ( concbfe + trn(ji,jj,jk,jpfer) ) 
    127                zlim4    = trn(ji,jj,jk,jpdoc) / ( xkdoc   + trn(ji,jj,jk,jpdoc) ) 
    128                xlimbac(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) * zlim4 
    129  
    130142               !   Michaelis-Menten Limitation term for nutrients Diatoms 
    131143               !   ---------------------------------------------- 
     
    137149               zlim2    = trn(ji,jj,jk,jppo4) / ( trn(ji,jj,jk,jppo4) + zconc1dnh4  ) 
    138150               zlim3    = trn(ji,jj,jk,jpsil) / ( trn(ji,jj,jk,jpsil) + xksi(ji,jj) ) 
    139                zratio   = trn(ji,jj,jk,jpdfe)/(trn(ji,jj,jk,jpdia)+rtrn) 
     151               zratio   = trn(ji,jj,jk,jpdfe) * z1_trndia 
    140152               zironmin = xcoef1 * trn(ji,jj,jk,jpdch) * z1_trndia + xcoef2 * zlim1 + xcoef3 * xdiatno3(ji,jj,jk) 
    141153               zlim4    = MAX( 0., ( zratio - zironmin ) / qdfelim ) 
     
    155167                  &   / ( concnno3 * concnnh4 + concnnh4 * trn(ji,jj,jk,jpno3) + concnno3 * trn(ji,jj,jk,jpnh4) )  
    156168               zlim2  = trn(ji,jj,jk,jppo4) / ( trn(ji,jj,jk,jppo4) + concnnh4 ) 
    157                zlim3  = trn(ji,jj,jk,jpfer) / ( trn(ji,jj,jk,jpfer) + concbfe  ) 
     169               zlim3  = trn(ji,jj,jk,jpfer) / ( trn(ji,jj,jk,jpfer) +  5.E-11   ) 
    158170               ztem1  = MAX( 0., tsn(ji,jj,jk,jp_tem) ) 
    159171               ztem2  = tsn(ji,jj,jk,jp_tem) - 10. 
    160172               zetot1 = MAX( 0., etot(ji,jj,jk) - 1.) / ( 4. + etot(ji,jj,jk) )  
    161                zetot2 = 1. / ( 30. + etot(ji,jj,jk) )  
     173               zetot2 = 30. / ( 30. + etot(ji,jj,jk) )  
    162174 
    163175               xfracal(ji,jj,jk) = caco3r * MIN( zlim1, zlim2, zlim3 )                  & 
    164176                  &                       * ztem1 / ( 0.1 + ztem1 )                     & 
    165177                  &                       * MAX( 1., trn(ji,jj,jk,jpphy) * 1.e6 / 2. )  & 
    166                   &                       * 2.325 * zetot1 * 30. * zetot2               & 
     178                  &                       * zetot1 * zetot2               & 
    167179                  &                       * ( 1. + EXP(-ztem2 * ztem2 / 25. ) )         & 
    168180                  &                       * MIN( 1., 50. / ( hmld(ji,jj) + rtrn ) ) 
     
    173185      END DO 
    174186      ! 
     187      IF( ln_diatrc .AND. lk_iomput .AND. jnt == nrdttrc ) THEN        ! save output diagnostics 
     188        ! 
     189        CALL iom_put( "xfracal", xfracal(:,:,:) * tmask(:,:,:) )  ! euphotic layer deptht 
     190        CALL iom_put( "LNnut"  , xlimphy(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term 
     191        CALL iom_put( "LDnut"  , xlimdia(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term 
     192        CALL iom_put( "LNFe"   , xlimnfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     193        CALL iom_put( "LDFe"   , xlimdfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     194        ! 
     195      ENDIF 
     196 
     197      ! 
    175198      IF( nn_timing == 1 )  CALL timing_stop('p4z_lim') 
    176199      ! 
     
    192215 
    193216      NAMELIST/nampislim/ concnno3, concdno3, concnnh4, concdnh4, concnfer, concdfer, concbfe,   & 
    194          &                xsizedia, xsizephy, xsizern, xsizerd, xksi1, xksi2, xkdoc,         &  
    195          &                qnfelim, qdfelim, caco3r 
     217         &                concbno3, concbnh4, xsizedia, xsizephy, xsizern, xsizerd,          &  
     218         &                xksi1, xksi2, xkdoc, qnfelim, qdfelim, caco3r 
    196219 
    197220      REWIND( numnatp )                     ! read numnat 
     
    203226         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
    204227         WRITE(numout,*) '    mean rainratio                           caco3r    = ', caco3r 
    205          WRITE(numout,*) '    NO3 half saturation of nanophyto         concnno3  =  ', concnno3 
    206          WRITE(numout,*) '    NO3 half saturation of diatoms           concdno3  =  ', concdno3 
     228         WRITE(numout,*) '    NO3 half saturation of nanophyto         concnno3  = ', concnno3 
     229         WRITE(numout,*) '    NO3 half saturation of diatoms           concdno3  = ', concdno3 
    207230         WRITE(numout,*) '    NH4 half saturation for phyto            concnnh4  = ', concnnh4 
    208231         WRITE(numout,*) '    NH4 half saturation for diatoms          concdnh4  = ', concdnh4 
     
    214237         WRITE(numout,*) '    size ratio for nanophytoplankton         xsizern   = ', xsizern 
    215238         WRITE(numout,*) '    size ratio for diatoms                   xsizerd   = ', xsizerd 
     239         WRITE(numout,*) '    NO3 half saturation of bacteria          concbno3  = ', concbno3 
     240         WRITE(numout,*) '    NH4 half saturation for bacteria         concbnh4  = ', concbnh4 
    216241         WRITE(numout,*) '    Minimum size criteria for diatoms        xsizedia  = ', xsizedia 
    217242         WRITE(numout,*) '    Minimum size criteria for nanophyto      xsizephy  = ', xsizephy 
Note: See TracChangeset for help on using the changeset viewer.