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 3856 for trunk – NEMO

Changeset 3856 for trunk


Ignore:
Timestamp:
2013-03-30T09:49:26+01:00 (11 years ago)
Author:
cetlod
Message:

trunk: take into account the proportion filter in mesozoo mortality, see ticket #1067

File:
1 edited

Legend:

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

    r3829 r3856  
    5454   !!---------------------------------------------------------------------- 
    5555   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
    56    !! $Id: p4zmeso.F90 3295 2012-01-30 15:49:07Z cetlod $  
     56   !! $Id: p4zmeso.F90 3160 2011-11-20 14:27:18Z cetlod $  
    5757   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    5858   !!---------------------------------------------------------------------- 
     
    7272      REAL(wp) :: zcompadi, zcompaph, zcompapoc, zcompaz, zcompam 
    7373      REAL(wp) :: zgraze2 , zdenom, zdenom2, zncratio 
    74       REAL(wp) :: zfact   , zstep, zfood, zfoodlim 
     74      REAL(wp) :: zfact   , zstep, zfood, zfoodlim, zproport 
     75      REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2 
    7576      REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotf 
    76       REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zmortzgoc, zgrasrat 
     77      REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zgrasrat 
    7778#if defined key_kriest 
    7879      REAL znumpoc 
     
    8081      REAL(wp) :: zrespz2, ztortz2, zgrazd, zgrazz, zgrazpof 
    8182      REAL(wp) :: zgrazn, zgrazpoc, zgraznf, zgrazf 
    82       REAL(wp) :: zgrazfff, zgrazffe 
     83      REAL(wp) :: zgrazfffp, zgrazfffg, zgrazffep, zgrazffeg 
     84      CHARACTER (len=25) :: charout 
    8385      REAL(wp) :: zrfact2 
    8486      REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing 
    85       CHARACTER (len=25) :: charout 
     87 
    8688      !!--------------------------------------------------------------------- 
    8789      ! 
    8890      IF( nn_timing == 1 )  CALL timing_start('p4z_meso') 
    8991      ! 
    90       IF( ln_diatrc .AND. lk_iomput )  CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 
    91       ! 
     92      IF( ln_diatrc .AND. lk_iomput ) THEN 
     93         CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 
     94         zgrazing(:,:,:) = 0._wp 
     95      ENDIF 
     96 
    9297      DO jk = 1, jpkm1 
    9398         DO jj = 1, jpj 
     
    118123 
    119124               zfood     = xprefc * zcompadi + xprefz * zcompaz + xprefp * zcompaph + xprefpoc * zcompapoc  
    120                zfoodlim  = MAX( 0., zfood - MIN( 0.5 * zfood , xthresh2 ) ) 
     125               zfoodlim  = MAX( 0., zfood - MIN( 0.5 * zfood, xthresh2 ) ) 
    121126               zdenom    = zfoodlim / ( xkgraz2 + zfoodlim ) 
    122127               zdenom2   = zdenom / ( zfood + rtrn ) 
     
    135140               !  ---------------------------------- 
    136141# if ! defined key_kriest 
    137                zgrazffe  = grazflux * zstep * wsbio4(ji,jj,jk)          & 
    138                  &                 * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) 
    139                zgrazfff  = zgrazffe * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 
     142               zgrazffeg = grazflux  * zstep * wsbio4(ji,jj,jk)      & 
     143!                 &                   * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) 
     144               &                     * 2. *  trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) 
     145               zgrazfffg = zgrazffeg * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 
     146# endif 
     147               zgrazffep = grazflux  * zstep *  wsbio3(ji,jj,jk)     & 
     148!                 &                   * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) 
     149               &                     * 2. * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) 
     150               zgrazfffp = zgrazffep * trn(ji,jj,jk,jpsfe) / (trn(ji,jj,jk,jppoc) + rtrn) 
     151              ! 
     152# if ! defined key_kriest 
     153              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 
     154              ! Compute the proportion of filter feeders 
     155              zproport  = (zgrazffep + zgrazffeg)/(rtrn + zgraztot) 
     156              zratio    = trn(ji,jj,jk,jpgsi) / ( trn(ji,jj,jk,jpgoc) + rtrn ) 
     157              zratio2   = zratio * zratio 
     158!              zfrac =  zproport * 0.15 * zstep *                     & 
     159!                       ( 0.2 + 0.8 * zratio2 / ( 1.5**2 + zratio2 ) )   & 
     160!                      *trn(ji,jj,jk,jpmes)/3E-7 *trn(ji,jj,jk,jpgoc) 
     161              zfrac     = zproport * grazflux  * zstep * wsbio4(ji,jj,jk)      & 
     162                 &       * ( 0.1 + 3.9 * zratio2 / ( 1.**2 + zratio2 ) )       & 
     163                 &       * 2. * trn(ji,jj,jk,jpmes) * trn(ji,jj,jk,jpgoc)  
     164 
     165              zfracfe   = zfrac * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 
     166 
     167              zgrazffep = zproport * zgrazffep 
     168              zgrazffeg = zproport * zgrazffeg 
     169              zgrazfffp = zproport * zgrazfffp 
     170              zgrazfffg = zproport * zgrazfffg 
     171              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 
     172              zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg 
    140173# else 
    141                zgrazffe = grazflux * zstep * wsbio3(ji,jj,jk)     & 
    142                  &                 * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) 
    143                zgrazfff   = zgrazffe * trn(ji,jj,jk,jpsfe) / (trn(ji,jj,jk,jppoc) + rtrn) 
     174              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep 
     175              ! Compute the proportion of filter feeders 
     176              zproport  = zgrazffep / ( zgraztot + rtrn ) 
     177              zgrazffep = zproport * zgrazffep 
     178              zgrazfffp = zproport * zgrazfffp 
     179              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep 
     180              zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp 
    144181# endif 
    145               ! 
    146               zgraztot   = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffe 
    147               zgraztotf  = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfff  
    148182 
    149183              ! Total grazing ( grazing by microzoo is already computed in p4zmicro ) 
     
    179213               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zgraztotf * unass2 
    180214#else 
    181                tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zgrapoc2 
    182                tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zgraztotf * unass2 
     215               tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zgrapoc2 - zfrac  
     216               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zfrac 
     217               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zgraztotf * unass2 - zfracfe 
     218               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zfracfe 
     219 
    183220#endif 
    184221               zmortz2 = ztortz2 + zrespz2 
     
    205242#if defined key_kriest 
    206243               znumpoc = trn(ji,jj,jk,jpnum) / ( trn(ji,jj,jk,jppoc) + rtrn ) 
    207                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffe 
     244               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffep 
    208245               tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc & 
    209                   &    + zmortzgoc  * xkr_dmeso - zgrazffe * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn ) 
    210                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz2 - zgrazfff - zgrazpof 
     246               &   + zmortzgoc * xkr_dmeso - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn ) 
     247               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz2 - zgrazfffp - zgrazpof 
    211248#else 
    212                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc 
    213                tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffe 
    214                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof 
    215                tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfff 
     249               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep 
     250               tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg 
     251               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp 
     252               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg 
    216253#endif 
    217254 
Note: See TracChangeset for help on using the changeset viewer.