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 4529 for trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90 – NEMO

Ignore:
Timestamp:
2014-03-15T12:00:04+01:00 (10 years ago)
Author:
cetlod
Message:

Bugfix and minor improvment on PISCES, see ticket #1258

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90

    r4521 r4529  
    7171      INTEGER  :: ji, jj, jk 
    7272      REAL(wp) :: zcompadi, zcompaph, zcompapoc, zcompaz, zcompam 
    73       REAL(wp) :: zgraze2 , zdenom, zdenom2, zncratio 
     73      REAL(wp) :: zgraze2 , zdenom, zdenom2 
    7474      REAL(wp) :: zfact   , zstep, zfood, zfoodlim, zproport 
    7575      REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2 
    76       REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotf 
    77       REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zgrasrat 
     76      REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotn, zgraztotf 
     77      REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zgrasrat, zgrasratn 
    7878#if defined key_kriest 
    7979      REAL znumpoc 
     
    9898         DO jj = 1, jpj 
    9999            DO ji = 1, jpi 
    100                zcompam   = MAX( ( trn(ji,jj,jk,jpmes) - 1.e-8 ), 0.e0 ) 
     100               zcompam   = MAX( ( trn(ji,jj,jk,jpmes) - 1.e-9 ), 0.e0 ) 
    101101# if defined key_degrad 
    102102               zstep     = xstep * facvol(ji,jj,jk) 
     
    116116               ztortz2   = mzrat2 * 1.e6 * zfact * trn(ji,jj,jk,jpmes) 
    117117               ! 
    118  
    119118               zcompadi  = MAX( ( trn(ji,jj,jk,jpdia) - xthresh2dia ), 0.e0 ) 
    120119               zcompaz   = MAX( ( trn(ji,jj,jk,jpzoo) - xthresh2zoo ), 0.e0 ) 
    121                zcompaph  = MAX( ( trn(ji,jj,jk,jpphy) - xthresh2phy ), 0.e0 ) 
     120               ! Size effect of nanophytoplankton on grazing : the smaller it is, the less prone 
     121               ! it is to predation by mesozooplankton 
     122               ! ------------------------------------------------------------------------------- 
     123               zcompaph  = MAX( ( trn(ji,jj,jk,jpphy) - xthresh2phy ), 0.e0 ) & 
     124                  &      * MIN(1., MAX( 0., ( quotan(ji,jj,jk) - 0.2) / 0.3 ) ) 
    122125               zcompapoc = MAX( ( trn(ji,jj,jk,jppoc) - xthresh2poc ), 0.e0 ) 
    123126 
     
    139142               !  Mesozooplankton flux feeding on GOC 
    140143               !  ---------------------------------- 
     144               !  ---------------------------------- 
    141145# if ! defined key_kriest 
    142                zgrazffeg = grazflux  * zstep * wsbio4(ji,jj,jk) * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) 
     146               zgrazffeg = grazflux  * zstep * wsbio4(ji,jj,jk)      & 
     147               &           * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) 
    143148               zgrazfffg = zgrazffeg * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 
    144149# endif 
    145                zgrazffep = grazflux  * zstep *  wsbio3(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) 
     150               zgrazffep = grazflux  * zstep *  wsbio3(ji,jj,jk)     & 
     151               &           * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) 
    146152               zgrazfffp = zgrazffep * trn(ji,jj,jk,jpsfe) / (trn(ji,jj,jk,jppoc) + rtrn) 
    147153              ! 
     
    150156              ! Compute the proportion of filter feeders 
    151157              zproport  = (zgrazffep + zgrazffeg)/(rtrn + zgraztot) 
    152               ! Compute fractionation of aggregates. It is assumed that diatoms based aggregates are more prone to fractionation 
     158              ! Compute fractionation of aggregates. It is assumed that  
     159              ! diatoms based aggregates are more prone to fractionation 
    153160              ! since they are more porous (marine snow instead of fecal pellets) 
    154161              zratio    = trn(ji,jj,jk,jpgsi) / ( trn(ji,jj,jk,jpgoc) + rtrn ) 
    155162              zratio2   = zratio * zratio 
    156               zfrac     = zproport * zgrazffeg * ( 0.1 + 3.9 * zratio2 / ( 1.**2 + zratio2 ) ) 
    157  
     163              zfrac     = zproport * grazflux  * zstep * wsbio4(ji,jj,jk)      & 
     164               &          * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes)          & 
     165               &          * ( 0.1 + 3.9 * zratio2 / ( 1.**2 + zratio2 ) ) 
    158166              zfracfe   = zfrac * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 
    159167 
     
    163171              zgrazfffg = zproport * zgrazfffg 
    164172              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 
     173              zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk)   & 
     174              &   + zgrazpoc + zgrazffep + zgrazffeg 
    165175              zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg 
    166176# else 
     
    171181              zgrazfffp = zproport * zgrazfffp 
    172182              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep 
     183              zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk) + zgrazpoc + zgrazffep 
    173184              zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp 
    174185# endif 
     
    179190              !    Mesozooplankton efficiency 
    180191              !    -------------------------- 
    181               zgrasrat   =  zgraztotf / ( zgraztot + rtrn ) 
    182               zncratio   = (  xprefc   * zcompadi * quotad(ji,jj,jk)  & 
    183                   &         + xprefp   * zcompaph * quotan(ji,jj,jk)  & 
    184                   &         + xprefz   * zcompaz                      & 
    185                   &         + xprefpoc * zcompapoc   ) / ( zfood + rtrn ) 
    186                zepshert  = epsher2 * MIN( 1., zncratio ) 
    187                zepsherv  = zepshert * MIN( 1., zgrasrat / ferat3 ) 
    188                zgrarem2  =  zgraztot * ( 1. - zepsherv - unass2 ) + zrespz2  & 
    189                   &       + ( 1. - zepsherv - unass2 ) /( 1. - zepsherv ) * ztortz2 
    190                zgrafer2  =  zgraztot * MAX( 0. , ( 1. - unass2 ) * zgrasrat - ferat3 * zepsherv )    & 
    191                   &       + ferat3 * ( zrespz2 + ( 1. - zepsherv - unass2 ) /( 1. - zepsherv ) * ztortz2 ) 
     192               zgrasrat  =  ( zgraztotf +rtrn )/ ( zgraztot + rtrn ) 
     193               zgrasratn =  ( zgraztotn +rtrn )/ ( zgraztot + rtrn ) 
     194               zepshert  = MIN( 1., zgrasratn, zgrasrat / ferat3) 
     195               zepsherv  = zepshert * MIN( epsher2, (1. - unass2) * zgrasrat / ferat3, (1. - unass2) * zgrasratn ) 
     196               zgrarem2  = zgraztot * ( 1. - zepsherv - unass2 ) & 
     197                &       + ( 1. - epsher2 - unass2 ) / ( 1. - epsher2 ) * ztortz2 
     198               zgrafer2  = zgraztot * MAX( 0. , ( 1. - unass2 ) * zgrasrat - ferat3 * zepsherv )    & 
     199                &       + ferat3 * ( ( 1. - epsher2 - unass2 ) /( 1. - epsher2 ) * ztortz2 ) 
    192200               zgrapoc2  = zgraztot * unass2 
    193201 
     
    215223               tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazf 
    216224 
     225               ! calcite production 
    217226               zprcaca = xfracal(ji,jj,jk) * zgrazn 
    218                ! calcite production 
    219227               prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca  ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo) 
    220228               ! 
     
    224232               tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 
    225233#if defined key_kriest 
    226                znumpoc = trn(ji,jj,jk,jpnum) / ( trn(ji,jj,jk,jppoc) + rtrn ) 
    227                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffep + zgrapoc2 
    228                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc + zgrapoc2 * xkr_dmeso      & 
    229                &                   + zmortzgoc * xkr_dmeso - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn ) 
    230                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz2 - zgrazfffp - zgrazpof + zgraztotf * unass2 
     234              znumpoc = trn(ji,jj,jk,jpnum) / ( trn(ji,jj,jk,jppoc) + rtrn ) 
     235              tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffep + zgrapoc2 
     236              tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc + zgrapoc2 * xkr_dmeso      & 
     237                 &   + zmortzgoc * xkr_dmeso - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn ) 
     238              tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortzgoc - zgrazfffp - zgrazpof    & 
     239                 &                 + zgraztotf * unass2 
    231240#else 
    232                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac 
    233                tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac 
    234                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe 
    235                tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg + zgraztotf * unass2 - zfracfe 
     241              tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac 
     242              tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac 
     243              tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe 
     244              tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg     & 
     245                 &                + zgraztotf * unass2 - zfracfe 
    236246#endif 
    237247            END DO 
Note: See TracChangeset for help on using the changeset viewer.