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

Ignore:
Timestamp:
2017-02-06T10:25:03+01:00 (7 years ago)
Author:
timgraham
Message:

Merge of dev_merge_2016 into trunk. UPDATE TO ARCHFILES NEEDED for XIOS2.
LIM_SRC_s/limrhg.F90 to follow in next commit due to change of kind (I'm unable to do it in this commit).
Merged using the following steps:

1) svn merge --reintegrate svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk .
2) Resolve minor conflicts in sette.sh and namelist_cfg for ORCA2LIM3 (due to a change in trunk after branch was created)
3) svn commit
4) svn switch svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk
5) svn merge svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/2016/dev_merge_2016 .
6) At this stage I checked out a clean copy of the branch to compare against what is about to be committed to the trunk.
6) svn commit #Commit code to the trunk

In this commit I have also reverted a change to Fcheck_archfile.sh which was causing problems on the Paris machine.

File:
1 edited

Legend:

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

    r5836 r7646  
    88   !!             3.4  !  2011-06  (O. Aumont, C. Ethe) Quota model for iron 
    99   !!---------------------------------------------------------------------- 
    10 #if defined key_pisces 
    11    !!---------------------------------------------------------------------- 
    12    !!   'key_pisces'                                       PISCES bio-model 
    13    !!---------------------------------------------------------------------- 
    1410   !!   p4z_meso       :   Compute the sources/sinks for mesozooplankton 
    1511   !!   p4z_meso_init  :   Initialization of the parameters for mesozooplankton 
     
    1814   USE trc             !  passive tracers common variables  
    1915   USE sms_pisces      !  PISCES Source Minus Sink variables 
    20    USE p4zsink         !  vertical flux of particulate matter due to sinking 
    21    USE p4zint          !  interpolation and computation of various fields 
    2216   USE p4zprod         !  production 
    2317   USE prtctl_trc      !  print control for debugging 
     
    7064      REAL(wp) :: zcompadi, zcompaph, zcompapoc, zcompaz, zcompam 
    7165      REAL(wp) :: zgraze2 , zdenom, zdenom2 
    72       REAL(wp) :: zfact   , zstep, zfood, zfoodlim, zproport 
    73       REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2 
     66      REAL(wp) :: zfact   , zfood, zfoodlim, zproport 
     67      REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2, zfracal, zgrazcal 
    7468      REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotn, zgraztotf 
    7569      REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zgrasrat, zgrasratn 
    76 #if defined key_kriest 
    77       REAL znumpoc 
    78 #endif 
    7970      REAL(wp) :: zrespz2, ztortz2, zgrazd, zgrazz, zgrazpof 
    8071      REAL(wp) :: zgrazn, zgrazpoc, zgraznf, zgrazf 
     
    8778      IF( nn_timing == 1 )  CALL timing_start('p4z_meso') 
    8879      ! 
    89       IF( lk_iomput ) THEN 
    90          CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 
    91          zgrazing(:,:,:) = 0._wp 
    92       ENDIF 
     80      CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 
     81      zgrazing(:,:,:) = 0._wp 
    9382 
    9483      DO jk = 1, jpkm1 
     
    9685            DO ji = 1, jpi 
    9786               zcompam   = MAX( ( trb(ji,jj,jk,jpmes) - 1.e-9 ), 0.e0 ) 
    98 # if defined key_degrad 
    99                zstep     = xstep * facvol(ji,jj,jk) 
    100 # else 
    101                zstep     = xstep 
    102 # endif 
    103                zfact     = zstep * tgfunc2(ji,jj,jk) * zcompam 
     87               zfact     = xstep * tgfunc2(ji,jj,jk) * zcompam 
    10488 
    10589               !  Respiration rates of both zooplankton 
     
    126110               zdenom    = zfoodlim / ( xkgraz2 + zfoodlim ) 
    127111               zdenom2   = zdenom / ( zfood + rtrn ) 
    128                zgraze2   = grazrat2 * zstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes)  
     112               zgraze2   = grazrat2 * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes)  
    129113 
    130114               zgrazd    = zgraze2  * xprefc   * zcompadi  * zdenom2  
     
    140124               !  ---------------------------------- 
    141125               !  ---------------------------------- 
    142 # if ! defined key_kriest 
    143                zgrazffeg = grazflux  * zstep * wsbio4(ji,jj,jk)      & 
     126               zgrazffeg = grazflux  * xstep * wsbio4(ji,jj,jk)      & 
    144127               &           * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes) 
    145128               zgrazfffg = zgrazffeg * trb(ji,jj,jk,jpbfe) / (trb(ji,jj,jk,jpgoc) + rtrn) 
    146 # endif 
    147                zgrazffep = grazflux  * zstep *  wsbio3(ji,jj,jk)     & 
     129               zgrazffep = grazflux  * xstep *  wsbio3(ji,jj,jk)     & 
    148130               &           * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpmes) 
    149131               zgrazfffp = zgrazffep * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 
    150132              ! 
    151 # if ! defined key_kriest 
    152133              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 
    153134              ! Compute the proportion of filter feeders 
     
    158139              zratio    = trb(ji,jj,jk,jpgsi) / ( trb(ji,jj,jk,jpgoc) + rtrn ) 
    159140              zratio2   = zratio * zratio 
    160               zfrac     = zproport * grazflux  * zstep * wsbio4(ji,jj,jk)      & 
     141              zfrac     = zproport * grazflux  * xstep * wsbio4(ji,jj,jk)      & 
    161142               &          * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes)          & 
    162143               &          * ( 0.2 + 3.8 * zratio2 / ( 1.**2 + zratio2 ) ) 
     
    171152              &   + zgrazpoc + zgrazffep + zgrazffeg 
    172153              zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg 
    173 # else 
    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               zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk) + zgrazpoc + zgrazffep 
    181               zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp 
    182 # endif 
    183154 
    184155              ! Total grazing ( grazing by microzoo is already computed in p4zmicro ) 
    185               IF( lk_iomput )  zgrazing(ji,jj,jk) = zgraztot 
     156              zgrazing(ji,jj,jk) = zgraztot 
    186157 
    187158              !    Mesozooplankton efficiency 
     
    202173               tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zgrarsig 
    203174               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zgrarem2 - zgrarsig 
     175               ! 
     176               IF( ln_ligand ) tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + (zgrarem2 - zgrarsig) * ldocz 
     177               ! 
    204178               tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarsig 
    205179               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgrafer2 
     
    220194               tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazf 
    221195 
    222                ! calcite production 
    223                zprcaca = xfracal(ji,jj,jk) * zgrazn 
    224                prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca  ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo) 
    225                ! 
    226                zprcaca = part2 * zprcaca 
    227                tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprcaca 
    228                tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca 
    229                tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 
    230 #if defined key_kriest 
    231               znumpoc = trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
    232               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffep + zgrapoc2 
    233               tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc + zgrapoc2 * xkr_dmeso      & 
    234                  &   + zmortzgoc * xkr_dmeso - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn ) 
    235               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortzgoc - zgrazfffp - zgrazpof    & 
    236                  &                 + zgraztotf * unass2 
    237 #else 
    238196              tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac 
     197              prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zfrac 
     198              conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zgrazpoc - zgrazffep 
    239199              tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac 
     200              prodgoc(ji,jj,jk) = prodgoc(ji,jj,jk) + zmortzgoc + zgrapoc2 
     201              consgoc(ji,jj,jk) = consgoc(ji,jj,jk) - zgrazffeg - zfrac 
    240202              tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe 
    241203              tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg     & 
    242204                 &                + zgraztotf * unass2 - zfracfe 
    243 #endif 
     205              zfracal = trb(ji,jj,jk,jpcal) / (trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + rtrn ) 
     206              zgrazcal = (zgrazffeg + zgrazpoc) * (1. - part2) * zfracal 
     207              ! calcite production 
     208              zprcaca = xfracal(ji,jj,jk) * zgrazn 
     209              prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca  ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo) 
     210              ! 
     211              zprcaca = part2 * zprcaca 
     212              tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrazcal - zprcaca 
     213              tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * ( zgrazcal + zprcaca ) 
     214              tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) - zgrazcal + zprcaca 
    244215            END DO 
    245216         END DO 
     
    265236      ENDIF 
    266237      ! 
    267       IF( lk_iomput )  CALL wrk_dealloc( jpi, jpj, jpk, zgrazing ) 
     238      CALL wrk_dealloc( jpi, jpj, jpk, zgrazing ) 
    268239      ! 
    269240      IF( nn_timing == 1 )  CALL timing_stop('p4z_meso') 
     
    285256      !!---------------------------------------------------------------------- 
    286257 
    287       NAMELIST/nampismes/ part2, grazrat2, resrat2, mzrat2, xprefc, xprefp, xprefz,   & 
     258      NAMELIST/namp4zmes/ part2, grazrat2, resrat2, mzrat2, xprefc, xprefp, xprefz,   & 
    288259         &                xprefpoc, xthresh2dia, xthresh2phy, xthresh2zoo, xthresh2poc, & 
    289260         &                xthresh2, xkgraz2, epsher2, sigma2, unass2, grazflux 
     
    291262 
    292263      REWIND( numnatp_ref )              ! Namelist nampismes in reference namelist : Pisces mesozooplankton 
    293       READ  ( numnatp_ref, nampismes, IOSTAT = ios, ERR = 901) 
    294 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampismes in reference namelist', lwp ) 
     264      READ  ( numnatp_ref, namp4zmes, IOSTAT = ios, ERR = 901) 
     265901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zmes in reference namelist', lwp ) 
    295266 
    296267      REWIND( numnatp_cfg )              ! Namelist nampismes in configuration namelist : Pisces mesozooplankton 
    297       READ  ( numnatp_cfg, nampismes, IOSTAT = ios, ERR = 902 ) 
    298 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampismes in configuration namelist', lwp ) 
    299       IF(lwm) WRITE ( numonp, nampismes ) 
     268      READ  ( numnatp_cfg, namp4zmes, IOSTAT = ios, ERR = 902 ) 
     269902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zmes in configuration namelist', lwp ) 
     270      IF(lwm) WRITE ( numonp, namp4zmes ) 
    300271 
    301272 
    302273      IF(lwp) THEN                         ! control print 
    303274         WRITE(numout,*) ' '  
    304          WRITE(numout,*) ' Namelist parameters for mesozooplankton, nampismes' 
     275         WRITE(numout,*) ' Namelist parameters for mesozooplankton, namp4zmes' 
    305276         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
    306277         WRITE(numout,*) '    part of calcite not dissolved in mesozoo guts  part2        =', part2 
     
    327298   END SUBROUTINE p4z_meso_init 
    328299 
    329  
    330 #else 
    331    !!====================================================================== 
    332    !!  Dummy module :                                   No PISCES bio-model 
    333    !!====================================================================== 
    334 CONTAINS 
    335    SUBROUTINE p4z_meso                    ! Empty routine 
    336    END SUBROUTINE p4z_meso 
    337 #endif  
    338  
    339300   !!====================================================================== 
    340301END MODULE p4zmeso 
Note: See TracChangeset for help on using the changeset viewer.