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 4148 for branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90 – NEMO

Ignore:
Timestamp:
2013-11-04T13:54:28+01:00 (10 years ago)
Author:
cetlod
Message:

merge in trunk changes between r3853 and r3940 and commit the changes, see ticket #1169

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90

    r4147 r4148  
    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) * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) 
     143               zgrazfffg = zgrazffeg * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 
     144# endif 
     145               zgrazffep = grazflux  * zstep *  wsbio3(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) 
     146               zgrazfffp = zgrazffep * trn(ji,jj,jk,jpsfe) / (trn(ji,jj,jk,jppoc) + rtrn) 
     147              ! 
     148# if ! defined key_kriest 
     149              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 
     150              ! Compute the proportion of filter feeders 
     151              zproport  = (zgrazffep + zgrazffeg)/(rtrn + zgraztot) 
     152              ! Compute fractionation of aggregates. It is assumed that diatoms based aggregates are more prone to fractionation 
     153              ! since they are more porous (marine snow instead of fecal pellets) 
     154              zratio    = trn(ji,jj,jk,jpgsi) / ( trn(ji,jj,jk,jpgoc) + rtrn ) 
     155              zratio2   = zratio * zratio 
     156              zfrac     = zproport * zgrazffeg * ( 0.1 + 3.9 * zratio2 / ( 1.**2 + zratio2 ) ) 
     157 
     158              zfracfe   = zfrac * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 
     159 
     160              zgrazffep = zproport * zgrazffep 
     161              zgrazffeg = zproport * zgrazffeg 
     162              zgrazfffp = zproport * zgrazfffp 
     163              zgrazfffg = zproport * zgrazfffg 
     164              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 
     165              zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg 
    140166# 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) 
     167              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep 
     168              ! Compute the proportion of filter feeders 
     169              zproport  = zgrazffep / ( zgraztot + rtrn ) 
     170              zgrazffep = zproport * zgrazffep 
     171              zgrazfffp = zproport * zgrazfffp 
     172              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep 
     173              zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp 
    144174# endif 
    145               ! 
    146               zgraztot   = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffe 
    147               zgraztotf  = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfff  
    148175 
    149176              ! Total grazing ( grazing by microzoo is already computed in p4zmicro ) 
     
    159186               zepshert  = epsher2 * MIN( 1., zncratio ) 
    160187               zepsherv  = zepshert * MIN( 1., zgrasrat / ferat3 ) 
    161                zgrarem2  = zgraztot * ( 1. - zepsherv - unass2 ) + zrespz2  & 
    162                &    + ( 1. - zepsherv - unass2 ) /( 1. - zepsherv + rtrn) * ztortz2 
    163                zgrafer2  = zgraztot * MAX( 0. , ( 1. - unass2 ) * zgrasrat - ferat3 * zepsherv )    & 
    164                &    + ferat3 * ( zrespz2 + ( 1. - zepsherv - unass2 ) /( 1. - zepsherv + rtrn) * ztortz2 ) 
     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 ) 
    165192               zgrapoc2  = zgraztot * unass2 
    166193 
     
    174201               tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarsig 
    175202               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zgrarsig               
    176 #if defined key_kriest 
    177                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zgrapoc2 
    178                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zgrapoc2 * xkr_dmeso 
    179                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zgraztotf * unass2 
    180 #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 
    183 #endif 
     203 
    184204               zmortz2 = ztortz2 + zrespz2 
    185                zmortzgoc = unass2 / ( 1. - zepsherv + rtrn ) * ztortz2 
     205               zmortzgoc = unass2 / ( 1. - zepsherv ) * ztortz2 
    186206               tra(ji,jj,jk,jpmes) = tra(ji,jj,jk,jpmes) - zmortz2 + zepsherv * zgraztot  
    187207               tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zgrazd 
     
    205225#if defined key_kriest 
    206226               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 
    208                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 
     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 
    211231#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 
     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 
    216236#endif 
    217  
    218237            END DO 
    219238         END DO 
Note: See TracChangeset for help on using the changeset viewer.