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 2957 – NEMO

Changeset 2957


Ignore:
Timestamp:
2011-10-19T10:47:02+02:00 (13 years ago)
Author:
cetlod
Message:

dev_r2787_PISCES_improvment:keep the possiblity to switch between old and new parameterisation of production

Location:
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/namelist_pisces

    r2823 r2957  
    4848   conc3      =  2E-9     ! Iron half saturation for diatoms 
    4949   conc3m     =  8E-9     ! Maxi iron half saturation for diatoms 
     50   xsizedia   =  5.E-7    ! Minimum size criteria for diatoms 
     51   xsizephy   =  1.E-6    ! Minimum size criteria for phyto 
    5052   concnnh4   =  1.E-7    ! NH4 half saturation for phyto 
    5153   concdnh4   =  4.E-7    ! NH4 half saturation for diatoms 
     
    6567   excret     =  0.05     ! excretion ratio of phytoplankton 
    6668   excret2    =  0.05     ! excretion ratio of diatoms 
     69   ln_newprod =  .FALSE.  ! Enable new parame. of production (T/F)  
    6770   bresp      =  0.00333  ! Basal respiration rate 
    6871   chlcnm     =  0.033    ! Minimum Chl/C in nanophytoplankton 
     
    9396   xprefz     =  1.       ! zoo preference for zoo 
    9497   xprefpoc   =  0.3      ! zoo preference for poc 
    95    xthresh2   =  2E-7     ! Food threshold for grazing 
     98   xthresh2zoo = 1E-8     ! zoo feeding threshold for mesozooplankton  
     99   xthresh2dia = 1E-8     ! diatoms feeding threshold for mesozooplankton  
     100   xthresh2phy = 2E-7     ! nanophyto feeding threshold for mesozooplankton  
     101   xthresh2poc = 1E-8     ! poc feeding threshold for mesozooplankton  
     102   xthresh2   =  0.       ! Food threshold for grazing 
    96103   xkgraz2    =  20.E-6   ! half sturation constant for meso grazing 
    97104   epsher2    =  0.3      ! Efficicency of Mesozoo growth 
     
    103110&nampiszoo     !   parameters for microzooplankton 
    104111!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
    105    part       =  0.5     ! part of calcite not dissolved in microzoo gutsa 
     112   part       =  0.5      ! part of calcite not dissolved in microzoo gutsa 
    106113   grazrat    =  3.0      ! maximal zoo grazing rate 
    107114   resrat     =  0.03     ! exsudation rate of zooplankton 
     
    110117   xpref2p    =  1.       ! Microzoo preference for Nanophyto 
    111118   xpref2d    =  0.6      ! Microzoo preference for Diatoms 
    112    xthresh    =  2E-7     ! Food threshold for feeding 
     119   xthreshdia =  1.E-8    ! Diatoms feeding threshold for microzooplankton  
     120   xthreshphy =  2.E-7    ! Nanophyto feeding threshold for microzooplankton  
     121   xthreshpoc =  1.E-8    ! POC feeding threshold for microzooplankton  
     122   xthresh    =  0.       ! Food threshold for feeding 
    113123   xkgraz     =  20.E-6   ! half sturation constant for grazing 
    114124   epsher     =  0.3      ! Efficiency of microzoo growth 
     
    211221!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
    212222   ln_pisdmp    =  .true.     !  Relaxation fo some tracers to a mean value 
    213 / 
     223   nn_pisdmp    =  5475       !  Frequency of Relaxation  
     224/ 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_pisces

    r2823 r2957  
    4848   conc3      =  2E-9     ! Iron half saturation for diatoms 
    4949   conc3m     =  8E-9     ! Maxi iron half saturation for diatoms 
     50   xsizedia   =  5.E-7    ! Minimum size criteria for diatoms 
     51   xsizephy   =  1.E-6    ! Minimum size criteria for phyto 
    5052   concnnh4   =  1.E-7    ! NH4 half saturation for phyto 
    5153   concdnh4   =  4.E-7    ! NH4 half saturation for diatoms 
     
    6567   excret     =  0.05     ! excretion ratio of phytoplankton 
    6668   excret2    =  0.05     ! excretion ratio of diatoms 
     69   ln_newprod =  .FALSE.  ! Enable new parame. of production (T/F)  
    6770   bresp      =  0.00333  ! Basal respiration rate 
    6871   chlcnm     =  0.033    ! Minimum Chl/C in nanophytoplankton 
     
    9396   xprefz     =  1.       ! zoo preference for zoo 
    9497   xprefpoc   =  0.3      ! zoo preference for poc 
    95    xthresh2   =  2E-7     ! Food threshold for grazing 
     98   xthresh2zoo = 1E-8     ! zoo feeding threshold for mesozooplankton  
     99   xthresh2dia = 1E-8     ! diatoms feeding threshold for mesozooplankton  
     100   xthresh2phy = 2E-7     ! nanophyto feeding threshold for mesozooplankton  
     101   xthresh2poc = 1E-8     ! poc feeding threshold for mesozooplankton  
     102   xthresh2   =  0.       ! Food threshold for grazing 
    96103   xkgraz2    =  20.E-6   ! half sturation constant for meso grazing 
    97104   epsher2    =  0.3      ! Efficicency of Mesozoo growth 
     
    103110&nampiszoo     !   parameters for microzooplankton 
    104111!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
    105    part       =  0.5     ! part of calcite not dissolved in microzoo gutsa 
     112   part       =  0.5      ! part of calcite not dissolved in microzoo gutsa 
    106113   grazrat    =  3.0      ! maximal zoo grazing rate 
    107114   resrat     =  0.03     ! exsudation rate of zooplankton 
     
    110117   xpref2p    =  1.       ! Microzoo preference for Nanophyto 
    111118   xpref2d    =  0.6      ! Microzoo preference for Diatoms 
    112    xthresh    =  2E-7     ! Food threshold for feeding 
     119   xthreshdia =  1.E-8    ! Diatoms feeding threshold for microzooplankton  
     120   xthreshphy =  2.E-7    ! Nanophyto feeding threshold for microzooplankton  
     121   xthreshpoc =  1.E-8    ! POC feeding threshold for microzooplankton  
     122   xthresh    =  0.       ! Food threshold for feeding 
    113123   xkgraz     =  20.E-6   ! half sturation constant for grazing 
    114124   epsher     =  0.3      ! Efficiency of microzoo growth 
     
    179189&nampisdia     !   additional 2D/3D tracers diagnostics  
    180190!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
    181    nn_writedia  =  1460   !  time step frequency for tracers diagnostics 
     191   nn_writedia  =  5475   !  time step frequency for tracers diagnostics 
    182192!              !    name   !           title of the field          !     units      ! 
    183193!              !           !                                       !                !   
     
    211221!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
    212222   ln_pisdmp    =  .true.     !  Relaxation fo some tracers to a mean value 
    213 / 
     223   nn_pisdmp    =  1460       !  Frequency of Relaxation  
     224/ 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zlim.F90

    r2823 r2957  
    3333   REAL(wp), PUBLIC ::  conc3     = 2.e-9_wp      !:  Iron half saturation for diatoms   
    3434   REAL(wp), PUBLIC ::  conc3m    = 8.e-9_wp      !:  Max iron half saturation for diatoms  
     35   REAL(wp), PUBLIC ::  xsizedia  = 5.e-7_wp      !:  Minimum size criteria for diatoms 
     36   REAL(wp), PUBLIC ::  xsizephy  = 1.e-6_wp      !:  Minimum size criteria for nanophyto 
    3537   REAL(wp), PUBLIC ::  concnnh4  = 1.e-7_wp      !:  NH4 half saturation for phyto   
    3638   REAL(wp), PUBLIC ::  concdnh4  = 4.e-7_wp      !:  NH4 half saturation for diatoms 
     
    4446 
    4547   ! Coefficient for iron limitation 
    46 !   REAL(wp) ::  xcoef1   = 0.0016  
    47 !   REAL(wp) ::  xcoef2   = 1.21E-5 * 1.5  
    48 !   REAL(wp) ::  xcoef3   = 1.15E-4 / 7.625 /  55.85 
    4948   REAL(wp) ::  xcoef1   = 0.0016  / 55.85   
    5049   REAL(wp) ::  xcoef2   = 1.21E-5 * 14. / 55.85 / 7.625 * 0.5 * 1.5 
     
    9493               ! that increasing biomass is made of generally bigger cells 
    9594               !------------------------------------------------ 
    96                zconcd   = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - 5.e-7 ) 
     95               zconcd   = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - xsizedia ) 
    9796               zconcd2  = trn(ji,jj,jk,jpdia) - zconcd 
    98                zconcn   = MAX( 0.e0 , trn(ji,jj,jk,jpphy) - 1.e-6 ) 
     97               zconcn   = MAX( 0.e0 , trn(ji,jj,jk,jpphy) - xsizephy ) 
    9998               zconcn2  = trn(ji,jj,jk,jpphy) - zconcn 
    10099               z1_trnphy   = 1. / ( trn(ji,jj,jk,jpphy) + rtrn ) 
     
    190189 
    191190      NAMELIST/nampislim/ conc0, conc1, conc2, conc2m, conc3, conc3m,   & 
    192          &                concnnh4, concdnh4, xksi1, xksi2, xkdoc,      & 
    193          &                concfebac, qnfelim, qdfelim, caco3r 
     191         &                xsizedia, xsizephy, concnnh4, concdnh4,       & 
     192         &                xksi1, xksi2, xkdoc, concfebac, qnfelim, qdfelim, caco3r 
    194193 
    195194      REWIND( numnatp )                     ! read numnat 
     
    200199         WRITE(numout,*) ' Namelist parameters for nutrient limitations, nampislim' 
    201200         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
    202          WRITE(numout,*) '    mean rainratio                            caco3r    =', caco3r 
    203          WRITE(numout,*) '    NO3, PO4 half saturation                  conc0     =', conc0 
    204          WRITE(numout,*) '    half saturation constant for Si uptake    xksi1     =', xksi1 
    205          WRITE(numout,*) '    half saturation constant for Si/C         xksi2     =', xksi2 
    206          WRITE(numout,*) '    2nd half-sat. of DOC remineralization     xkdoc     =', xkdoc 
    207          WRITE(numout,*) '    Phosphate half saturation for diatoms     conc1     =', conc1 
    208          WRITE(numout,*) '    Iron half saturation for phyto            conc2     =', conc2 
    209          WRITE(numout,*) '    Max iron half saturation for phyto        conc2m    =', conc2m 
    210          WRITE(numout,*) '    Iron half saturation for diatoms          conc3     =', conc3 
    211          WRITE(numout,*) '    Maxi iron half saturation for diatoms     conc3m    =', conc3m 
    212          WRITE(numout,*) '    NH4 half saturation for phyto             concnnh4  =', concnnh4 
    213          WRITE(numout,*) '    NH4 half saturation for diatoms           concdnh4  =', concdnh4 
    214          WRITE(numout,*) '    Fe half saturation for bacteria           concfebac =', concfebac 
    215          WRITE(numout,*) '    optimal Fe quota for nano.                qnfelim   =', qnfelim 
    216          WRITE(numout,*) '    Optimal Fe quota for diatoms              qdfelim   =', qdfelim 
     201         WRITE(numout,*) '    mean rainratio                           caco3r    = ', caco3r 
     202         WRITE(numout,*) '    NO3, PO4 half saturation                 conc0     =  ', conc0 
     203         WRITE(numout,*) '    half saturation constant for Si uptake   xksi1     = ', xksi1 
     204         WRITE(numout,*) '    half saturation constant for Si/C        xksi2     = ', xksi2 
     205         WRITE(numout,*) '    2nd half-sat. of DOC remineralization    xkdoc     = ', xkdoc 
     206         WRITE(numout,*) '    Phosphate half saturation for diatoms    conc1     = ', conc1 
     207         WRITE(numout,*) '    Iron half saturation for phyto           conc2     = ', conc2 
     208         WRITE(numout,*) '    Max iron half saturation for phyto       conc2m    = ', conc2m 
     209         WRITE(numout,*) '    Iron half saturation for diatoms         conc3     = ', conc3 
     210         WRITE(numout,*) '    Maxi iron half saturation for diatoms    conc3m    = ', conc3m 
     211         WRITE(numout,*) '    Minimum size criteria for diatoms        xsizedia  = ', xsizedia 
     212         WRITE(numout,*) '    Minimum size criteria for nanophyto      xsizephy  = ', xsizephy 
     213         WRITE(numout,*) '    NH4 half saturation for phyto            concnnh4  = ', concnnh4 
     214         WRITE(numout,*) '    NH4 half saturation for diatoms          concdnh4  = ', concdnh4 
     215         WRITE(numout,*) '    Fe half saturation for bacteria          concfebac = ', concfebac 
     216         WRITE(numout,*) '    optimal Fe quota for nano.               qnfelim   = ', qnfelim 
     217         WRITE(numout,*) '    Optimal Fe quota for diatoms             qdfelim   = ', qdfelim 
    217218      ENDIF 
    218219 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zmeso.F90

    r2823 r2957  
    3131 
    3232   !! * Shared module variables 
    33    REAL(wp), PUBLIC ::  part2    = 0.5_wp     !: part of calcite not dissolved in mesozoo guts 
    34    REAL(wp), PUBLIC ::  xprefc   = 1.0_wp     !: mesozoo preference for POC  
    35    REAL(wp), PUBLIC ::  xprefp   = 0.3_wp     !: mesozoo preference for nanophyto 
    36    REAL(wp), PUBLIC ::  xprefz   = 1.0_wp     !: mesozoo preference for diatoms 
    37    REAL(wp), PUBLIC ::  xprefpoc = 0.3_wp     !: mesozoo preference for POC  
    38    REAL(wp), PUBLIC ::  xthresh2 = 2E-7_wp    !: feeding threshold for mesozooplankton  
    39    REAL(wp), PUBLIC ::  resrat2  = 0.005_wp   !: exsudation rate of mesozooplankton 
    40    REAL(wp), PUBLIC ::  mzrat2   = 0.04_wp    !: microzooplankton mortality rate  
    41    REAL(wp), PUBLIC ::  grazrat2 = 0.9_wp     !: maximal mesozoo grazing rate 
    42    REAL(wp), PUBLIC ::  xkgraz2  = 20E-6_wp   !: non assimilated fraction of P by mesozoo  
    43    REAL(wp), PUBLIC ::  unass2   = 0.3_wp     !: Efficicency of mesozoo growth  
    44    REAL(wp), PUBLIC ::  sigma2   = 0.6_wp     !: Fraction of mesozoo excretion as DOM  
    45    REAL(wp), PUBLIC ::  epsher2  = 0.3_wp     !: half sturation constant for grazing 2 
    46    REAL(wp), PUBLIC ::  grazflux = 3.E3_wp    !: mesozoo flux feeding rate 
     33   REAL(wp), PUBLIC ::  part2       = 0.5_wp     !: part of calcite not dissolved in mesozoo guts 
     34   REAL(wp), PUBLIC ::  xprefc      = 1.0_wp     !: mesozoo preference for POC  
     35   REAL(wp), PUBLIC ::  xprefp      = 0.3_wp     !: mesozoo preference for nanophyto 
     36   REAL(wp), PUBLIC ::  xprefz      = 1.0_wp     !: mesozoo preference for diatoms 
     37   REAL(wp), PUBLIC ::  xprefpoc    = 0.3_wp     !: mesozoo preference for POC  
     38   REAL(wp), PUBLIC ::  xthresh2zoo = 1E-8_wp    !: zoo feeding threshold for mesozooplankton  
     39   REAL(wp), PUBLIC ::  xthresh2dia = 1E-8_wp    !: diatoms feeding threshold for mesozooplankton  
     40   REAL(wp), PUBLIC ::  xthresh2phy = 2E-7_wp    !: nanophyto feeding threshold for mesozooplankton  
     41   REAL(wp), PUBLIC ::  xthresh2poc = 1E-8_wp    !: poc feeding threshold for mesozooplankton  
     42   REAL(wp), PUBLIC ::  xthresh2    = 0._wp      !: feeding threshold for mesozooplankton  
     43   REAL(wp), PUBLIC ::  resrat2     = 0.005_wp   !: exsudation rate of mesozooplankton 
     44   REAL(wp), PUBLIC ::  mzrat2      = 0.04_wp    !: microzooplankton mortality rate  
     45   REAL(wp), PUBLIC ::  grazrat2    = 0.9_wp     !: maximal mesozoo grazing rate 
     46   REAL(wp), PUBLIC ::  xkgraz2     = 20E-6_wp   !: non assimilated fraction of P by mesozoo  
     47   REAL(wp), PUBLIC ::  unass2      = 0.3_wp     !: Efficicency of mesozoo growth  
     48   REAL(wp), PUBLIC ::  sigma2      = 0.6_wp     !: Fraction of mesozoo excretion as DOM  
     49   REAL(wp), PUBLIC ::  epsher2     = 0.3_wp     !: half sturation constant for grazing 2 
     50   REAL(wp), PUBLIC ::  grazflux    = 3.E3_wp    !: mesozoo flux feeding rate 
    4751 
    4852   !!* Substitution 
     
    6771      INTEGER  :: ji, jj, jk 
    6872      REAL(wp) :: zcompadi, zcompaph, zcompapoc, zcompaz, zcompam 
    69       REAL(wp) :: zgraze2 , zdenom, zncratio 
     73      REAL(wp) :: zgraze2 , zdenom, zdenom2, zncratio 
    7074      REAL(wp) :: zfact   , zstep, zfood, zfoodlim 
    7175      REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotf 
     
    104108               ! 
    105109 
    106                zcompadi  = MAX( ( trn(ji,jj,jk,jpdia) - 1.e-8 ), 0.e0 ) 
    107                zcompaz   = MAX( ( trn(ji,jj,jk,jpzoo) - 1.e-8 ), 0.e0 ) 
    108                zcompaph  = MAX( ( trn(ji,jj,jk,jpphy) - 1.e-8 ), 0.e0 ) 
    109                zcompapoc = MAX( ( trn(ji,jj,jk,jppoc) - 1.e-8 ), 0.e0 ) 
    110  
    111                zfood     = xprefc * zcompadi + xprefz * zcompaz + xprefp * zcompaph + xprefpoc * zcompapoc + rtrn 
     110               zcompadi  = MAX( ( trn(ji,jj,jk,jpdia) - xthresh2dia ), 0.e0 ) 
     111               zcompaz   = MAX( ( trn(ji,jj,jk,jpzoo) - xthresh2zoo ), 0.e0 ) 
     112               zcompaph  = MAX( ( trn(ji,jj,jk,jpphy) - xthresh2phy ), 0.e0 ) 
     113               zcompapoc = MAX( ( trn(ji,jj,jk,jppoc) - xthresh2poc ), 0.e0 ) 
     114 
     115               zfood     = xprefc * zcompadi + xprefz * zcompaz + xprefp * zcompaph + xprefpoc * zcompapoc  
    112116               zfoodlim  = MAX( 0., zfood - xthresh2 ) 
    113                zdenom    = zfoodlim / zfood / (xkgraz2 + zfoodlim) 
    114  
    115                zgraze2   = grazrat2 * zstep * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jpmes) * zdenom 
    116                zgrazd    = zgraze2  * xprefc   * zcompadi 
    117                zgrazz    = zgraze2  * xprefz   * zcompaz 
    118                zgrazn    = zgraze2  * xprefp   * zcompaph 
    119                zgrazpoc  = zgraze2  * xprefpoc * zcompapoc 
    120  
    121                zgraznf   = zgrazn   * trn(ji,jj,jk,jpnfe) / (trn(ji,jj,jk,jpphy) + rtrn) 
    122                zgrazf    = zgrazd   * trn(ji,jj,jk,jpdfe) / (trn(ji,jj,jk,jpdia) + rtrn) 
    123                zgrazpof  = zgrazpoc * trn(ji,jj,jk,jpsfe) / (trn(ji,jj,jk,jppoc) + rtrn) 
     117               zdenom    = zfoodlim / ( xkgraz2 + zfoodlim ) 
     118               zdenom2   = zdenom / ( zfood + rtrn ) 
     119               zgraze2   = grazrat2 * zstep * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jpmes)  
     120 
     121               zgrazd    = zgraze2  * xprefc   * zcompadi  * zdenom2  
     122               zgrazz    = zgraze2  * xprefz   * zcompaz   * zdenom2  
     123               zgrazn    = zgraze2  * xprefp   * zcompaph  * zdenom2  
     124               zgrazpoc  = zgraze2  * xprefpoc * zcompapoc * zdenom2  
     125 
     126               zgraznf   = zgrazn   * trn(ji,jj,jk,jpnfe) / ( trn(ji,jj,jk,jpphy) + rtrn) 
     127               zgrazf    = zgrazd   * trn(ji,jj,jk,jpdfe) / ( trn(ji,jj,jk,jpdia) + rtrn) 
     128               zgrazpof  = zgrazpoc * trn(ji,jj,jk,jpsfe) / ( trn(ji,jj,jk,jppoc) + rtrn) 
    124129 
    125130               !  Mesozooplankton flux feeding on GOC 
     
    130135               zgrazfff  = zgrazffe * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 
    131136# else 
    132                !!--------------------------- KRIEST3 ------------------------------------------- 
    133                !!               zgrazffe = 0.5 * 1.3e-2 / 5.5e-7 * 0.3 * zstep * wsbio3(ji,jj,jk)     & 
    134                !!                  &     * tgfunc(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes)    & 
    135                !! #  if defined key_degrad 
    136                !!                  &     * facvol(ji,jj,jk)          & 
    137                !! #  endif 
    138                !!                  &     /  (trn(ji,jj,jk,jppoc) * 1.e7 + 0.1) 
    139                !!--------------------------- KRIEST3 ------------------------------------------- 
    140  
    141137              zgrazffe   = grazflux * zstep * wsbio3(ji,jj,jk)     & 
    142138                  &                * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) 
     
    156152                  &         + xprefp   * zcompaph * quotan(ji,jj,jk)  & 
    157153                  &         + xprefz   * zcompaz                      & 
    158                   &         + xprefpoc * zcompapoc   ) / zfood  
     154                  &         + xprefpoc * zcompapoc   ) / ( zfood + rtrn ) 
    159155               zepshert  = epsher2 * MIN( 1., zncratio ) 
    160156               zepsherv  = zepshert * MIN( 1., zgrasrat / ferat3 ) 
     
    250246 
    251247      NAMELIST/nampismes/ part2, grazrat2, resrat2, mzrat2, xprefc, xprefp, xprefz,   & 
    252          &                xprefpoc, xthresh2, xkgraz2, epsher2, sigma2, unass2, grazflux 
     248         &                xprefpoc, xthresh2dia, xthresh2phy, xthresh2zoo, xthresh2poc, & 
     249         &                xthresh2, xkgraz2, epsher2, sigma2, unass2, grazflux 
    253250 
    254251      REWIND( numnatp )                     ! read numnat 
     
    260257         WRITE(numout,*) ' Namelist parameters for mesozooplankton, nampismes' 
    261258         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
    262          WRITE(numout,*) '    part of calcite not dissolved in mesozoo guts  part2     =', part2 
    263          WRITE(numout,*) '    mesozoo preference for phyto                   xprefc    =', xprefc 
    264          WRITE(numout,*) '    mesozoo preference for POC                     xprefp    =', xprefp 
    265          WRITE(numout,*) '    mesozoo preference for zoo                     xprefz    =', xprefz 
    266          WRITE(numout,*) '    mesozoo preference for poc                     xprefpoc  =', xprefpoc 
    267          WRITE(numout,*) '    feeding threshold for mesozooplankton          xthresh2  =', xthresh2 
    268          WRITE(numout,*) '    exsudation rate of mesozooplankton             resrat2   =', resrat2 
    269          WRITE(numout,*) '    mesozooplankton mortality rate                 mzrat2    =', mzrat2 
    270          WRITE(numout,*) '    maximal mesozoo grazing rate                   grazrat2  =', grazrat2 
    271          WRITE(numout,*) '    mesozoo flux feeding rate                      grazflux  =', grazflux 
    272          WRITE(numout,*) '    non assimilated fraction of P by mesozoo       unass2    =', unass2 
    273          WRITE(numout,*) '    Efficicency of Mesozoo growth                  epsher2   =', epsher2 
    274          WRITE(numout,*) '    Fraction of mesozoo excretion as DOM           sigma2    =', sigma2 
    275          WRITE(numout,*) '    half sturation constant for grazing 2          xkgraz2   =', xkgraz2 
     259         WRITE(numout,*) '    part of calcite not dissolved in mesozoo guts  part2        =', part2 
     260         WRITE(numout,*) '    mesozoo preference for phyto                   xprefc       =', xprefc 
     261         WRITE(numout,*) '    mesozoo preference for POC                     xprefp       =', xprefp 
     262         WRITE(numout,*) '    mesozoo preference for zoo                     xprefz       =', xprefz 
     263         WRITE(numout,*) '    mesozoo preference for poc                     xprefpoc     =', xprefpoc 
     264         WRITE(numout,*) '    microzoo feeding threshold  for mesozoo        xthresh2zoo  =', xthresh2zoo 
     265         WRITE(numout,*) '    diatoms feeding threshold  for mesozoo         xthresh2dia  =', xthresh2dia 
     266         WRITE(numout,*) '    nanophyto feeding threshold for mesozoo        xthresh2phy  =', xthresh2phy 
     267         WRITE(numout,*) '    poc feeding threshold for mesozoo              xthresh2poc  =', xthresh2poc 
     268         WRITE(numout,*) '    feeding threshold for mesozooplankton          xthresh2     =', xthresh2 
     269         WRITE(numout,*) '    exsudation rate of mesozooplankton             resrat2      =', resrat2 
     270         WRITE(numout,*) '    mesozooplankton mortality rate                 mzrat2       =', mzrat2 
     271         WRITE(numout,*) '    maximal mesozoo grazing rate                   grazrat2     =', grazrat2 
     272         WRITE(numout,*) '    mesozoo flux feeding rate                      grazflux     =', grazflux 
     273         WRITE(numout,*) '    non assimilated fraction of P by mesozoo       unass2       =', unass2 
     274         WRITE(numout,*) '    Efficicency of Mesozoo growth                  epsher2      =', epsher2 
     275         WRITE(numout,*) '    Fraction of mesozoo excretion as DOM           sigma2       =', sigma2 
     276         WRITE(numout,*) '    half sturation constant for grazing 2          xkgraz2      =', xkgraz2 
    276277      ENDIF 
    277278 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zmicro.F90

    r2823 r2957  
    1818   USE trc             !  passive tracers common variables  
    1919   USE sms_pisces      !  PISCES Source Minus Sink variables 
     20   USE p4zlim          !  Co-limitations 
    2021   USE p4zsink         !  vertical flux of particulate matter due to sinking 
    2122   USE p4zint          !  interpolation and computation of various fields 
     
    3031 
    3132   !! * Shared module variables 
    32    REAL(wp), PUBLIC ::  part    = 0.5_wp     !: part of calcite not dissolved in microzoo guts 
    33    REAL(wp), PUBLIC ::  xpref2c = 0.2_wp     !: microzoo preference for POC  
    34    REAL(wp), PUBLIC ::  xpref2p = 1.0_wp     !: microzoo preference for nanophyto 
    35    REAL(wp), PUBLIC ::  xpref2d = 0.6_wp     !: microzoo preference for diatoms 
    36    REAL(wp), PUBLIC ::  xthresh = 2E-7_wp    !: feeding threshold for microzooplankton  
    37    REAL(wp), PUBLIC ::  resrat  = 0.03_wp    !: exsudation rate of microzooplankton 
    38    REAL(wp), PUBLIC ::  mzrat   = 0.0_wp     !: microzooplankton mortality rate  
    39    REAL(wp), PUBLIC ::  grazrat = 3.0_wp     !: maximal microzoo grazing rate 
    40    REAL(wp), PUBLIC ::  xkgraz  = 20E-6_wp   !: non assimilated fraction of P by microzoo  
    41    REAL(wp), PUBLIC ::  unass   = 0.3_wp     !: Efficicency of microzoo growth  
    42    REAL(wp), PUBLIC ::  sigma1  = 0.6_wp     !: Fraction of microzoo excretion as DOM  
    43    REAL(wp), PUBLIC ::  epsher  = 0.3_wp     !: half sturation constant for grazing 1  
     33   REAL(wp), PUBLIC ::  part       = 0.5_wp     !: part of calcite not dissolved in microzoo guts 
     34   REAL(wp), PUBLIC ::  xpref2c    = 0.2_wp     !: microzoo preference for POC  
     35   REAL(wp), PUBLIC ::  xpref2p    = 1.0_wp     !: microzoo preference for nanophyto 
     36   REAL(wp), PUBLIC ::  xpref2d    = 0.6_wp     !: microzoo preference for diatoms 
     37   REAL(wp), PUBLIC ::  xthreshdia = 1E-8_wp    !: diatoms feeding threshold for microzooplankton  
     38   REAL(wp), PUBLIC ::  xthreshphy = 2E-7_wp    !: nanophyto threshold for microzooplankton  
     39   REAL(wp), PUBLIC ::  xthreshpoc = 1E-8_wp    !: poc threshold for microzooplankton  
     40   REAL(wp), PUBLIC ::  xthresh    = 0._wp      !: feeding threshold for microzooplankton  
     41   REAL(wp), PUBLIC ::  resrat     = 0.03_wp    !: exsudation rate of microzooplankton 
     42   REAL(wp), PUBLIC ::  mzrat      = 0.0_wp     !: microzooplankton mortality rate  
     43   REAL(wp), PUBLIC ::  grazrat    = 3.0_wp     !: maximal microzoo grazing rate 
     44   REAL(wp), PUBLIC ::  xkgraz     = 20E-6_wp   !: non assimilated fraction of P by microzoo  
     45   REAL(wp), PUBLIC ::  unass      = 0.3_wp     !: Efficicency of microzoo growth  
     46   REAL(wp), PUBLIC ::  sigma1     = 0.6_wp     !: Fraction of microzoo excretion as DOM  
     47   REAL(wp), PUBLIC ::  epsher     = 0.3_wp     !: half sturation constant for grazing 1  
    4448 
    4549 
     
    6569      INTEGER  :: ji, jj, jk 
    6670      REAL(wp) :: zcompadi, zcompaz , zcompaph, zcompapoc 
    67       REAL(wp) :: zgraze  , zdenom, zncratio 
     71      REAL(wp) :: zgraze  , zdenom, zdenom2, zncratio 
    6872      REAL(wp) :: zfact   , zstep, zfood, zfoodlim 
    6973      REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotf 
     
    101105               ztortz = mzrat * 1.e6 * zfact * trn(ji,jj,jk,jpzoo) 
    102106 
    103                zcompadi  = MIN( MAX( ( trn(ji,jj,jk,jpdia) - 1.e-8 ), 0.e0 ), 5.e-7 ) 
    104                zcompaph  = MAX( ( trn(ji,jj,jk,jpphy) - 1.e-8 ), 0.e0 ) 
    105                zcompapoc = MAX( ( trn(ji,jj,jk,jppoc) - 1.e-8 ), 0.e0 ) 
     107               zcompadi  = MIN( MAX( ( trn(ji,jj,jk,jpdia) - xthreshdia ), 0.e0 ), xsizedia ) 
     108               zcompaph  = MAX( ( trn(ji,jj,jk,jpphy) - xthreshphy ), 0.e0 ) 
     109               zcompapoc = MAX( ( trn(ji,jj,jk,jppoc) - xthreshpoc ), 0.e0 ) 
    106110                
    107111               !     Microzooplankton grazing 
    108112               !     ------------------------ 
    109                zfood     = xpref2p * zcompaph + xpref2c * zcompapoc + xpref2d * zcompadi + rtrn 
     113               zfood     = xpref2p * zcompaph + xpref2c * zcompapoc + xpref2d * zcompadi 
    110114               zfoodlim  = MAX( 0. , zfood - xthresh ) 
    111                zdenom    = zfoodlim / zfood / ( xkgraz + zfoodlim ) 
    112                zgraze    = grazrat * zstep * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jpzoo) * zdenom 
    113                zgrazp    = zgraze  * xpref2p * zcompaph  
    114                zgrazm    = zgraze  * xpref2c * zcompapoc  
    115                zgrazsd   = zgraze  * xpref2d * zcompadi  
     115               zdenom    = zfoodlim / ( xkgraz + zfoodlim ) 
     116               zdenom2   = zdenom / ( zfood + rtrn ) 
     117               zgraze    = grazrat * zstep * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jpzoo)  
     118 
     119               zgrazp    = zgraze  * xpref2p * zcompaph  * zdenom2  
     120               zgrazm    = zgraze  * xpref2c * zcompapoc * zdenom2  
     121               zgrazsd   = zgraze  * xpref2d * zcompadi  * zdenom2  
    116122 
    117123               zgrazpf   = zgrazp  * trn(ji,jj,jk,jpnfe) / (trn(ji,jj,jk,jpphy) + rtrn) 
     
    130136               zgrasrat  = zgraztotf / ( zgraztot + rtrn ) 
    131137               zncratio  = ( xpref2p * zcompaph * quotan(ji,jj,jk) & 
    132                   &        + xpref2d * zcompadi * quotad(ji,jj,jk) + xpref2c * zcompapoc ) / zfood 
     138                  &        + xpref2d * zcompadi * quotad(ji,jj,jk) + xpref2c * zcompapoc ) / ( zfood + rtrn ) 
    133139               zepshert  = epsher * MIN( 1., zncratio ) 
    134140               zepsherv  = zepshert * MIN( 1., zgrasrat / ferat3 ) 
     
    199205      !! 
    200206      !! ** Method  :   Read the nampiszoo namelist and check the parameters 
    201       !!      called at the first timestep (nit000) 
     207      !!                called at the first timestep (nit000) 
    202208      !! 
    203209      !! ** input   :   Namelist nampiszoo 
     
    206212 
    207213      NAMELIST/nampiszoo/ part, grazrat, resrat, mzrat, xpref2c, xpref2p, & 
    208          &                xpref2d, xthresh, xkgraz, epsher, sigma1, unass 
     214         &                xpref2d,  xthreshdia,  xthreshphy,  xthreshpoc, & 
     215         &                xthresh, xkgraz, epsher, sigma1, unass 
    209216 
    210217      REWIND( numnatp )                     ! read numnat 
     
    215222         WRITE(numout,*) ' Namelist parameters for microzooplankton, nampiszoo' 
    216223         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
    217          WRITE(numout,*) '    part of calcite not dissolved in microzoo guts  part     =', part 
    218          WRITE(numout,*) '    microzoo preference for POC                     xpref2c  =', xpref2c 
    219          WRITE(numout,*) '    microzoo preference for nano                    xpref2p  =', xpref2p 
    220          WRITE(numout,*) '    microzoo preference for diatoms                 xpref2d  =', xpref2d 
    221          WRITE(numout,*) '    feeding threshold for microzooplankton          xthresh  =', xthresh 
    222          WRITE(numout,*) '    exsudation rate of microzooplankton             resrat   =', resrat 
    223          WRITE(numout,*) '    microzooplankton mortality rate                 mzrat    =', mzrat 
    224          WRITE(numout,*) '    maximal microzoo grazing rate                   grazrat  =', grazrat 
    225          WRITE(numout,*) '    non assimilated fraction of P by microzoo       unass    =', unass 
    226          WRITE(numout,*) '    Efficicency of microzoo growth                  epsher   =', epsher 
    227          WRITE(numout,*) '    Fraction of microzoo excretion as DOM           sigma1   =', sigma1 
    228          WRITE(numout,*) '    half sturation constant for grazing 1           xkgraz   =', xkgraz 
     224         WRITE(numout,*) '    part of calcite not dissolved in microzoo guts  part        =', part 
     225         WRITE(numout,*) '    microzoo preference for POC                     xpref2c     =', xpref2c 
     226         WRITE(numout,*) '    microzoo preference for nano                    xpref2p     =', xpref2p 
     227         WRITE(numout,*) '    microzoo preference for diatoms                 xpref2d     =', xpref2d 
     228         WRITE(numout,*) '    diatoms feeding threshold  for microzoo         xthreshdia  =', xthreshdia 
     229         WRITE(numout,*) '    nanophyto feeding threshold for microzoo        xthreshphy  =', xthreshphy 
     230         WRITE(numout,*) '    poc feeding threshold for microzoo              xthreshpoc  =', xthreshpoc 
     231         WRITE(numout,*) '    feeding threshold for microzooplankton          xthresh     =', xthresh 
     232         WRITE(numout,*) '    exsudation rate of microzooplankton             resrat      =', resrat 
     233         WRITE(numout,*) '    microzooplankton mortality rate                 mzrat       =', mzrat 
     234         WRITE(numout,*) '    maximal microzoo grazing rate                   grazrat     =', grazrat 
     235         WRITE(numout,*) '    non assimilated fraction of P by microzoo       unass       =', unass 
     236         WRITE(numout,*) '    Efficicency of microzoo growth                  epsher      =', epsher 
     237         WRITE(numout,*) '    Fraction of microzoo excretion as DOM           sigma1      =', sigma1 
     238         WRITE(numout,*) '    half sturation constant for grazing 1           xkgraz      =', xkgraz 
    229239      ENDIF 
    230240 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zprod.F90

    r2823 r2957  
    3333 
    3434   !! * Shared module variables 
    35    REAL(wp), PUBLIC ::  pislope   = 3.0_wp            !: 
    36    REAL(wp), PUBLIC ::  pislope2  = 3.0_wp            !: 
    37    REAL(wp), PUBLIC ::  excret    = 10.e-5_wp         !: 
    38    REAL(wp), PUBLIC ::  excret2   = 0.05_wp           !: 
    39    REAL(wp), PUBLIC ::  bresp     = 0.00333_wp        !: 
    40    REAL(wp), PUBLIC ::  chlcnm    = 0.033_wp          !: 
    41    REAL(wp), PUBLIC ::  chlcdm    = 0.05_wp           !: 
    42    REAL(wp), PUBLIC ::  chlcmin   = 0.00333_wp        !: 
    43    REAL(wp), PUBLIC ::  fecnm     = 10.E-6_wp         !: 
    44    REAL(wp), PUBLIC ::  fecdm     = 15.E-6_wp         !: 
    45    REAL(wp), PUBLIC ::  grosip    = 0.151_wp          !: 
    46  
    47    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prmax     !: optimal prduction = f(temperature) 
     35   LOGICAL , PUBLIC ::  ln_newprod = .FALSE. 
     36   REAL(wp), PUBLIC ::  pislope    = 3.0_wp            !: 
     37   REAL(wp), PUBLIC ::  pislope2   = 3.0_wp            !: 
     38   REAL(wp), PUBLIC ::  excret     = 10.e-5_wp         !: 
     39   REAL(wp), PUBLIC ::  excret2    = 0.05_wp           !: 
     40   REAL(wp), PUBLIC ::  bresp      = 0.00333_wp        !: 
     41   REAL(wp), PUBLIC ::  chlcnm     = 0.033_wp          !: 
     42   REAL(wp), PUBLIC ::  chlcdm     = 0.05_wp           !: 
     43   REAL(wp), PUBLIC ::  chlcmin    = 0.00333_wp        !: 
     44   REAL(wp), PUBLIC ::  fecnm      = 10.E-6_wp         !: 
     45   REAL(wp), PUBLIC ::  fecdm      = 15.E-6_wp         !: 
     46   REAL(wp), PUBLIC ::  grosip     = 0.151_wp          !: 
     47 
     48   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prmax    !: optimal production = f(temperature) 
    4849   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   quotan   !: proxy of N quota in Nanophyto 
    4950   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   quotad   !: proxy of N quota in diatomee 
    5051    
    5152   REAL(wp) :: r1_rday                !: 1 / rday 
    52    REAL(wp) :: r1_bresp               !: 1 / bresp  
    5353   REAL(wp) :: texcret                !: 1 - excret  
    5454   REAL(wp) :: texcret2               !: 1 - excret2         
     
    139139      END DO 
    140140 
    141      ! Impact of the day duration on phytoplankton growth 
    142       DO jk = 1, jpkm1 
    143          DO jj = 1 ,jpj 
    144             DO ji = 1, jpi 
    145                zval = MAX( 1., zstrn(ji,jj) ) 
    146                zval = 1.5 * zval / ( 12. + zval ) 
    147                zprbio(ji,jj,jk) = prmax(ji,jj,jk) * zval 
    148                zprdia(ji,jj,jk) = zprbio(ji,jj,jk) 
    149             END DO 
    150          END DO 
    151       END DO 
    152  
     141      IF( ln_newprod ) THEN 
     142         ! Impact of the day duration on phytoplankton growth 
     143         DO jk = 1, jpkm1 
     144            DO jj = 1 ,jpj 
     145               DO ji = 1, jpi 
     146                  zval = MAX( 1., zstrn(ji,jj) ) 
     147                  zval = 1.5 * zval / ( 12. + zval ) 
     148                  zprbio(ji,jj,jk) = prmax(ji,jj,jk) * zval 
     149                  zprdia(ji,jj,jk) = zprbio(ji,jj,jk) 
     150               END DO 
     151            END DO 
     152         END DO 
     153      ENDIF 
     154 
     155      ! Maximum light intensity 
    153156      WHERE( zstrn(:,:) < 1.e0 ) zstrn(:,:) = 24. 
    154157      zstrn(:,:) = 24. / zstrn(:,:) 
    155158 
    156 !CDIR NOVERRCHK 
    157       DO jk = 1, jpkm1 
    158 !CDIR NOVERRCHK 
    159          DO jj = 1, jpj 
    160 !CDIR NOVERRCHK 
    161             DO ji = 1, jpi 
    162  
    163                ! Computation of the P-I slope for nanos and diatoms 
    164                IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
    165                    ztn    = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 
    166                    zadap  = ztn / ( 2.+ ztn ) 
    167  
    168                    zconctemp   = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - 5e-7 ) 
    169                    zconctemp2  = trn(ji,jj,jk,jpdia) - zconctemp 
    170  
    171                    znanotot = enano(ji,jj,jk) * zstrn(ji,jj) 
    172                    zdiattot = ediat(ji,jj,jk) * zstrn(ji,jj) 
    173                    zfact  = EXP( -0.21 * znanotot ) 
    174  
    175                    zpislopead (ji,jj,jk) = pislope  * ( 1.+ zadap  * zfact )  & 
    176                    &                       * trn(ji,jj,jk,jpnch) /( trn(ji,jj,jk,jpphy) * 12. + rtrn) 
    177  
    178                    zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp)   & 
    179                      &                     / ( trn(ji,jj,jk,jpdia) + rtrn )   & 
    180                      &                     * trn(ji,jj,jk,jpdch) /( trn(ji,jj,jk,jpdia) * 12. + rtrn) 
    181  
    182                   !  Computation of production function for Chlorophyll 
    183                   !-------------------------------------------------- 
    184                    zpislopen  = zpislopead (ji,jj,jk) / ( prmax(ji,jj,jk) * rday + rtrn ) 
    185                    zpislope2n = zpislopead2(ji,jj,jk) / ( prmax(ji,jj,jk) * rday + rtrn ) 
    186                    zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen * znanotot ) ) 
    187                    zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislope2n * zdiattot ) ) 
    188  
    189                    ! Computation of production function for Carbon 
    190                    !  --------------------------------------------- 
    191                    zpislopen  = zpislopead (ji,jj,jk) / ( ( r1_rday + r1_bresp / chlcnm ) * rday + rtrn) 
    192                    zpislope2n = zpislopead2(ji,jj,jk) / ( ( r1_rday + r1_bresp / chlcdm ) * rday + rtrn) 
    193                    zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen  * znanotot )  ) 
    194                    zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpislope2n * zdiattot )  ) 
    195                ENDIF 
    196             END DO 
    197          END DO 
    198       END DO 
     159      IF( ln_newprod ) THEN 
     160!CDIR NOVERRCHK 
     161         DO jk = 1, jpkm1 
     162!CDIR NOVERRCHK 
     163            DO jj = 1, jpj 
     164!CDIR NOVERRCHK 
     165               DO ji = 1, jpi 
     166 
     167                  ! Computation of the P-I slope for nanos and diatoms 
     168                  IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     169                      ztn    = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 
     170                      zadap  = ztn / ( 2.+ ztn ) 
     171 
     172                      zconctemp   = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - 5e-7 ) 
     173                      zconctemp2  = trn(ji,jj,jk,jpdia) - zconctemp 
     174 
     175                      znanotot = enano(ji,jj,jk) * zstrn(ji,jj) 
     176                      zdiattot = ediat(ji,jj,jk) * zstrn(ji,jj) 
     177 
     178                      zfact  = EXP( -0.21 * znanotot ) 
     179                      zpislopead (ji,jj,jk) = pislope  * ( 1.+ zadap  * zfact )  & 
     180                         &                   * trn(ji,jj,jk,jpnch) /( trn(ji,jj,jk,jpphy) * 12. + rtrn) 
     181 
     182                      zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) / ( trn(ji,jj,jk,jpdia) + rtrn )   & 
     183                         &                   * trn(ji,jj,jk,jpdch) /( trn(ji,jj,jk,jpdia) * 12. + rtrn) 
     184 
     185                      ! Computation of production function for Carbon 
     186                      !  --------------------------------------------- 
     187                      zpislopen  = zpislopead (ji,jj,jk) / ( ( r1_rday + bresp * r1_day / chlcnm ) * rday + rtrn) 
     188                      zpislope2n = zpislopead2(ji,jj,jk) / ( ( r1_rday + bresp * r1_day / chlcdm ) * rday + rtrn) 
     189                      zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen  * znanotot )  ) 
     190                      zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpislope2n * zdiattot )  ) 
     191 
     192                      !  Computation of production function for Chlorophyll 
     193                      !-------------------------------------------------- 
     194                      zmaxday  = 1._wp / ( prmax(ji,jj,jk) * rday + rtrn ) 
     195                      zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopead (ji,jj,jk) * zmaxday * znanotot ) ) 
     196                      zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopead2(ji,jj,jk) * zmaxday * zdiattot ) ) 
     197                  ENDIF 
     198               END DO 
     199            END DO 
     200         END DO 
     201      ELSE 
     202!CDIR NOVERRCHK 
     203         DO jk = 1, jpkm1 
     204!CDIR NOVERRCHK 
     205            DO jj = 1, jpj 
     206!CDIR NOVERRCHK 
     207               DO ji = 1, jpi 
     208 
     209                  ! Computation of the P-I slope for nanos and diatoms 
     210                  IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     211                      ztn    = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 
     212                      zadap  = ztn / ( 2.+ ztn ) 
     213 
     214                      zfact  = EXP( -0.21 * enano(ji,jj,jk) ) 
     215                      zpislopead (ji,jj,jk) = pislope  * ( 1.+ zadap  * zfact ) 
     216                      zpislopead2(ji,jj,jk) = pislope2 
     217 
     218                      zpislopen =  zpislopead(ji,jj,jk) * trn(ji,jj,jk,jpnch)                & 
     219                        &          / ( trn(ji,jj,jk,jpphy) * 12.                  + rtrn )   & 
     220                        &          / ( prmax(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn ) 
     221 
     222                      zpislope2n = zpislopead2(ji,jj,jk) * trn(ji,jj,jk,jpdch)                & 
     223                        &          / ( trn(ji,jj,jk,jpdia) * 12.                  + rtrn )   & 
     224                        &          / ( prmax(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn ) 
     225 
     226                      ! Computation of production function for Carbon 
     227                      !  --------------------------------------------- 
     228                      zprbio(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen  * enano(ji,jj,jk) ) ) 
     229                      zprdia(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislope2n * ediat(ji,jj,jk) ) ) 
     230 
     231                      !  Computation of production function for Chlorophyll 
     232                      !-------------------------------------------------- 
     233                      zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen  * enano(ji,jj,jk) * zstrn(ji,jj) ) ) 
     234                      zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislope2n * ediat(ji,jj,jk) * zstrn(ji,jj) ) ) 
     235                  ENDIF 
     236               END DO 
     237            END DO 
     238         END DO 
     239      ENDIF 
    199240 
    200241      !  Computation of a proxy of the N/C ratio 
     
    237278      END DO 
    238279 
    239       !  Computation of the limitation term due to 
    240       !  A mixed layer deeper than the euphotic depth 
     280      !  Computation of the limitation term due to a mixed layer deeper than the euphotic depth 
    241281      DO jj = 1, jpj 
    242282         DO ji = 1, jpi 
     
    262302      END DO 
    263303 
     304     IF( ln_newprod ) THEN 
     305        zprochln(:,:,:) = chlcmin * 12. * zprorca (:,:,:) 
     306        zprochld(:,:,:) = chlcmin * 12. * zprorcad(:,:,:) 
     307     ELSE 
     308        zprochln(:,:,:) = 0._wp 
     309        zprochld(:,:,:) = 0._wp 
     310     ENDIF 
     311 
    264312!CDIR NOVERRCHK 
    265313      DO jk = 1, jpkm1 
     
    276324                  ! 
    277325                  zprod = rday * zprorca(ji,jj,jk) * zprnch(ji,jj,jk) * xlimphy(ji,jj,jk) 
    278                   zprochln(ji,jj,jk) = chlcmin * 12. * zprorca(ji,jj,jk) 
    279326                  zprochln(ji,jj,jk) = zprochln(ji,jj,jk) + chlcnm * 12. * zprod / (  zpislopead(ji,jj,jk) * zetot2 +rtrn) 
    280327                  ! 
     
    304351                  ! 
    305352                  zprod = rday * zprorcad(ji,jj,jk) * zprdch(ji,jj,jk) * xlimdia(ji,jj,jk) 
    306                   zprochld(ji,jj,jk) = chlcmin * 12. * zprorcad(ji,jj,jk) 
    307353                  zprochld(ji,jj,jk) = zprochld(ji,jj,jk) + chlcdm * 12. * zprod / ( zpislopead2(ji,jj,jk) * zetot2 +rtrn ) 
    308354                  ! 
     
    348394 
    349395     ! Total primary production per year 
    350      IF( lk_degrad )  THEN 
    351         tpp = tpp + glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) * facvol(:,:,:) ) 
    352      ELSE 
    353         tpp = tpp + glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) ) 
    354      ENDIF 
     396#if defined key_degrad 
     397     tpp = tpp + glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) * facvol(:,:,:) ) 
     398#else 
     399     tpp = tpp + glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) ) 
     400#endif 
    355401 
    356402     IF( kt == nitend .AND. jnt == nrdttrc .AND. lwp ) THEN 
     
    411457      !!---------------------------------------------------------------------- 
    412458      ! 
    413       NAMELIST/nampisprod/ pislope, pislope2, bresp, excret, excret2,  & 
     459      NAMELIST/nampisprod/ pislope, pislope2, ln_newprod, bresp, excret, excret2,  & 
    414460         &                 chlcnm, chlcdm, chlcmin, fecnm, fecdm, grosip 
    415461      !!---------------------------------------------------------------------- 
     
    422468         WRITE(numout,*) ' Namelist parameters for phytoplankton growth, nampisprod' 
    423469         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
    424          WRITE(numout,*) '    mean Si/C ratio                           grosip    =', grosip 
    425          WRITE(numout,*) '    P-I slope                                 pislope   =', pislope 
    426          WRITE(numout,*) '    excretion ratio of nanophytoplankton      excret    =', excret 
    427          WRITE(numout,*) '    excretion ratio of diatoms                excret2   =', excret2 
    428          WRITE(numout,*) '    basal respiration in phytoplankton        bresp     =', bresp 
    429          WRITE(numout,*) '    P-I slope  for diatoms                    pislope2  =', pislope2 
    430          WRITE(numout,*) '    Minimum Chl/C in nanophytoplankton        chlcnm    =', chlcnm 
    431          WRITE(numout,*) '    Minimum Chl/C in diatoms                  chlcdm    =', chlcdm 
    432          WRITE(numout,*) '    Maximum Chl/C in phytoplankton            chlcmin   =', chlcmin 
    433          WRITE(numout,*) '    Maximum Fe/C in nanophytoplankton         fecnm     =', fecnm 
    434          WRITE(numout,*) '    Minimum Fe/C in diatoms                   fecdm     =', fecdm 
     470         WRITE(numout,*) '    Enable new parame. of production (T/F)   ln_newprod   =', ln_newprod 
     471         WRITE(numout,*) '    mean Si/C ratio                           grosip       =', grosip 
     472         WRITE(numout,*) '    P-I slope                                 pislope      =', pislope 
     473         WRITE(numout,*) '    excretion ratio of nanophytoplankton      excret       =', excret 
     474         WRITE(numout,*) '    excretion ratio of diatoms                excret2      =', excret2 
     475         IF( ln_newprod ) 
     476            WRITE(numout,*) '    basal respiration in phytoplankton        bresp        =', bresp 
     477            WRITE(numout,*) '    Maximum Chl/C in phytoplankton            chlcmin      =', chlcmin 
     478         ENDIF 
     479         WRITE(numout,*) '    P-I slope  for diatoms                    pislope2     =', pislope2 
     480         WRITE(numout,*) '    Minimum Chl/C in nanophytoplankton        chlcnm       =', chlcnm 
     481         WRITE(numout,*) '    Minimum Chl/C in diatoms                  chlcdm       =', chlcdm 
     482         WRITE(numout,*) '    Maximum Fe/C in nanophytoplankton         fecnm        =', fecnm 
     483         WRITE(numout,*) '    Minimum Fe/C in diatoms                   fecdm        =', fecdm 
    435484      ENDIF 
    436485      ! 
    437486      r1_rday   = 1._wp / rday  
    438       r1_bresp  = bresp * r1_rday 
    439487      texcret   = 1._wp - excret 
    440488      texcret2  = 1._wp - excret2 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsed.F90

    r2852 r2957  
    250250      ! ------------------------------------------------------------- 
    251251 
    252       zdenitot = glob_sum(  ( denitr(:,:,:) * rdenit + denitnh4(:,:,:) * rdenita ) * cvol(:,:,:) * xnegtr(:,:,:) ) 
     252      zdenitot = glob_sum(  ( denitr(:,:,:) * rdenit + denitnh4(:,:,:) * rdenita ) *  & 
     253         &                   e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) * xnegtr(:,:,:) ) 
    253254 
    254255      ! Potential nitrogen fixation dependant on temperature and iron 
     
    275276      END DO 
    276277 
    277       znitrpottot = glob_sum( znitrpot(:,:,:) * cvol(:,:,:) ) 
     278      znitrpottot = glob_sum( znitrpot(:,:,:) * e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) ) 
    278279 
    279280      ! Nitrogen change due to nitrogen fixation 
     
    355356            DO jj = 1, jpj 
    356357               DO ji = 1, jpi 
    357                   zcoef = ryyss * cvol(ji,jj,1)  
     358                  zcoef = ryyss * e1e2t(ji,jj) * fse3t(ji,jj,1) * tmask(ji,jj,1)  
    358359                  cotdep(ji,jj) =   sf_riverdic(1)%fnow(ji,jj,1)                                  * 1E9 / ( 12. * zcoef + rtrn ) 
    359360                  rivinp(ji,jj) = ( sf_riverdic(1)%fnow(ji,jj,1) + sf_riverdoc(1)%fnow(ji,jj,1) ) * 1E9 / ( 31.6* zcoef + rtrn ) 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90

    r2823 r2957  
    3939   !!* Damping  
    4040   LOGICAL  ::   ln_pisdmp         !: relaxation or not of nutrients to a mean value 
     41   INTEGER  ::   nn_pisdmp         !: frequency of relaxation or not of nutrients to a mean value 
    4142   LOGICAL  ::   ln_pisclo         !: Restoring or not of nutrients to initial value 
    4243                                   !: on close seas 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/trcnam_pisces.F90

    r2823 r2957  
    6767      NAMELIST/nampisdia/ nn_writedia, pisdia3d, pisdia2d     ! additional diagnostics 
    6868#endif 
    69       NAMELIST/nampisdmp/ ln_pisdmp, ln_pisclo 
     69      NAMELIST/nampisdmp/ ln_pisdmp, nn_pisdmp, ln_pisclo 
    7070 
    7171      !!---------------------------------------------------------------------- 
     
    188188         WRITE(numout,*) 
    189189         WRITE(numout,*) ' Namelist : nampisdmp' 
    190          WRITE(numout,*) '    Relaxation of tracer to glodap mean value            ln_pisdmp      =', ln_pisdmp 
     190         WRITE(numout,*) '    Relaxation of tracer to glodap mean value             ln_pisdmp      =', ln_pisdmp 
     191         WRITE(numout,*) '    Frequency of Relaxation                               nn_pisdmp      =', nn_pisdmp 
    191192         WRITE(numout,*) '    Restoring of tracer to initial value  on closed seas  ln_pisclo      =', ln_pisclo 
    192193         WRITE(numout,*) ' ' 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/trcrst_pisces.F90

    r2823 r2957  
    4444      ! 
    4545      IF( ln_trcdta .AND. ln_pisclo ) CALL pis_dmp_clo  ! restoring of nutrients on close seas 
    46       IF( ln_pisdmp )                 CALL pis_dmp_ini  ! relaxation of some tracers 
    4746      ! 
    4847      IF(lwp) WRITE(numout,*) 
     
    9897 
    9998   END SUBROUTINE trc_rst_wri_pisces 
    100  
    101    SUBROUTINE pis_dmp_ini 
    102       !!---------------------------------------------------------------------- 
    103       !!                    ***  pis_dmp_ini  *** 
    104       !! 
    105       !! ** purpose  : Relaxation of some tracers 
    106       !!---------------------------------------------------------------------- 
    107       REAL(wp) ::  alkmean = 2426.     ! mean value of alkalinity ( Glodap ; for Goyet 2391. ) 
    108       REAL(wp) ::  po4mean = 2.165     ! mean value of phosphates 
    109       REAL(wp) ::  no3mean = 30.90     ! mean value of nitrate 
    110       REAL(wp) ::  silmean = 91.51     ! mean value of silicate 
    111  
    112       REAL(wp) :: zarea, zalksum, zpo4sum, zno3sum, zsilsum 
    113  
    114  
    115       IF(lwp)  WRITE(numout,*) 
    116  
    117       IF( cp_cfg == "orca" .AND. .NOT. lk_c1d ) THEN      ! ORCA condiguration (not 1D) ! 
    118          !                                                    ! --------------------------- ! 
    119          ! set total alkalinity, phosphate, nitrate & silicate 
    120  
    121          zarea   = 1. / areatot * 1.e6 
    122          IF( lk_degrad ) THEN 
    123             zalksum = glob_sum( trn(:,:,:,jptal) * cvol(:,:,:) * facvol(:,:,:) ) * zarea 
    124             zpo4sum = glob_sum( trn(:,:,:,jppo4) * cvol(:,:,:) * facvol(:,:,:) ) * zarea / 122. 
    125             zno3sum = glob_sum( trn(:,:,:,jpno3) * cvol(:,:,:) * facvol(:,:,:) ) * zarea / 7.6 
    126             zsilsum = glob_sum( trn(:,:,:,jpsil) * cvol(:,:,:) * facvol(:,:,:) ) * zarea 
    127          ELSE 
    128             zalksum = glob_sum( trn(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
    129             zpo4sum = glob_sum( trn(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea / 122. 
    130             zno3sum = glob_sum( trn(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea / 7.6 
    131             zsilsum = glob_sum( trn(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
    132          ENDIF 
    133  
    134          IF(lwp) WRITE(numout,*) '       TALK mean : ', zalksum 
    135          trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / zalksum 
    136              
    137          IF(lwp) WRITE(numout,*) '       PO4  mean : ', zpo4sum 
    138          trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / zpo4sum 
    139  
    140          IF(lwp) WRITE(numout,*) '       NO3  mean : ', zno3sum 
    141          trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / zno3sum 
    142  
    143          IF(lwp) WRITE(numout,*) '       SiO3 mean : ', zsilsum 
    144          trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * silmean / zsilsum ) 
    145          ! 
    146       ENDIF 
    147  
    148 !#if defined key_kriest 
    149 !     !! Initialize number of particles from a standart restart file 
    150 !     !! The name of big organic particles jpgoc has been only change 
    151 !     !! and replace by jpnum but the values here are concentration 
    152 !     trn(:,:,:,jppoc) = trn(:,:,:,jppoc) + trn(:,:,:,jpnum)  
    153 !     trn(:,:,:,jpnum) = trn(:,:,:,jppoc) / ( 6. * xkr_massp ) 
    154 !#endif 
    155  
    156    END SUBROUTINE pis_dmp_ini 
    15799 
    158100   SUBROUTINE pis_dmp_clo    
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90

    r2823 r2957  
    6868      !!--------------------------------------------------------------------- 
    6969 
    70       IF( kt == nit000 )   CALL trc_sms_pisces_init    ! Initialization (first time-step only) 
    71  
    7270      IF( wrk_in_use(3,1) )  THEN 
    7371        CALL ctl_stop('trc_sms_pisces : requested workspace array unavailable.')  ;  RETURN 
    7472      ENDIF 
     73 
     74      IF( kt == nit000 )                                                   CALL trc_sms_pisces_init       ! Initialization (first time-step only) 
     75      IF( ln_rsttr .AND. ln_pisdmp .AND. MOD( kt - 1, nn_pisdmp ) == 0 )   CALL trc_sms_pisces_dmp( kt )  ! Relaxation of some tracers 
     76 
    7577 
    7678      IF( ndayflxtr /= nday_year ) THEN      ! New days 
     
    127129 
    128130   END SUBROUTINE trc_sms_pisces 
     131 
     132   SUBROUTINE trc_sms_pisces_dmp( kt ) 
     133      !!---------------------------------------------------------------------- 
     134      !!                    ***  trc_sms_pisces_dmp  *** 
     135      !! 
     136      !! ** purpose  : Relaxation of some tracers 
     137      !!---------------------------------------------------------------------- 
     138      ! 
     139      INTEGER, INTENT( in )  ::     kt ! time step 
     140      ! 
     141      REAL(wp) ::  alkmean = 2426.     ! mean value of alkalinity ( Glodap ; for Goyet 2391. ) 
     142      REAL(wp) ::  po4mean = 2.165     ! mean value of phosphates 
     143      REAL(wp) ::  no3mean = 30.90     ! mean value of nitrate 
     144      REAL(wp) ::  silmean = 91.51     ! mean value of silicate 
     145 
     146      REAL(wp) :: zarea, zalksum, zpo4sum, zno3sum, zsilsum 
     147      REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zvolume     ! volume of ocean 
     148      !!--------------------------------------------------------------------- 
     149 
     150 
     151      IF(lwp)  WRITE(numout,*) 
     152      IF(lwp)  WRITE(numout,*) ' trc_sms_pisces_dmp : Relaxation of nutrients at time-step kt = ', kt 
     153      IF(lwp)  WRITE(numout,*) 
     154 
     155      IF( cp_cfg == "orca" .AND. .NOT. lk_c1d ) THEN      ! ORCA condiguration (not 1D) ! 
     156         !                                                    ! --------------------------- ! 
     157         ! set total alkalinity, phosphate, nitrate & silicate 
     158         ALLOCATE( zvolume(ji,jj,jk) ) 
     159         !                                                              ! masked grid volume 
     160         zvolume(:,:,:) = e1e2t(:,:)  * fse3t(:,:,jk) * tmask(:,:,jk)    
     161#if defined key_degrad 
     162         zvolume(:,:,:) = zvolume(:,:,:) * facvol(:,:,:) 
     163#endif 
     164         zarea          = 1._wp / glob_sum( zvolume(:,:,:) ) * 1e6               
     165 
     166         zalksum = glob_sum( trn(:,:,:,jptal) * zvolume(:,:,:)  ) * zarea 
     167         zpo4sum = glob_sum( trn(:,:,:,jppo4) * zvolume(:,:,:)  ) * zarea / 122. 
     168         zno3sum = glob_sum( trn(:,:,:,jpno3) * zvolume(:,:,:)  ) * zarea / 7.6 
     169         zsilsum = glob_sum( trn(:,:,:,jpsil) * zvolume(:,:,:)  ) * zarea 
     170  
     171         IF(lwp) WRITE(numout,*) '       TALK mean : ', zalksum 
     172         trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / zalksum 
     173 
     174         IF(lwp) WRITE(numout,*) '       PO4  mean : ', zpo4sum 
     175         trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / zpo4sum 
     176 
     177         IF(lwp) WRITE(numout,*) '       NO3  mean : ', zno3sum 
     178         trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / zno3sum 
     179 
     180         IF(lwp) WRITE(numout,*) '       SiO3 mean : ', zsilsum 
     181         trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * silmean / zsilsum ) 
     182         ! 
     183      ENDIF 
     184 
     185   END SUBROUTINE trc_sms_pisces_dmp 
    129186 
    130187   SUBROUTINE trc_sms_pisces_init 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90

    r2715 r2957  
    137137               DO jj = 1, jpj 
    138138                  DO ji = 1, jpi 
    139                      zvolk  = cvol(ji,jj,jk) 
     139                     zvolk  = e1e2t(ji,jj) * fse3t(ji,jj,jk) * tmask(ji,jj,jk) 
    140140# if defined key_degrad 
    141141                     zvolk  = zvolk * facvol(ji,jj,jk) 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/trc.F90

    r2715 r2957  
    3838   REAL(wp), PUBLIC ::   trai                          !: initial total tracer 
    3939   REAL(wp), PUBLIC ::   areatot                       !: total volume  
    40    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:)   ::   cvol   !: volume correction -degrad option-  
    4140   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:,:) ::   trn    !: traceur concentration for now time step 
    4241   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:,:) ::   tra    !: traceur concentration for next time step 
     
    113112      !!------------------------------------------------------------------- 
    114113      ! 
    115       ALLOCATE( cvol(jpi,jpj,jpk      ) ,                           & 
    116          &      trn (jpi,jpj,jpk,jptra) ,                           & 
     114      ALLOCATE( trn (jpi,jpj,jpk,jptra) ,                           & 
    117115         &      tra (jpi,jpj,jpk,jptra) ,                           & 
    118116         &      trb (jpi,jpj,jpk,jptra) ,                           & 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/trcini.F90

    r2715 r2957  
    5656      !!                or read data or analytical formulation 
    5757      !!--------------------------------------------------------------------- 
    58       INTEGER ::   jk, jn    ! dummy loop indices 
    59       CHARACTER (len=25) :: charout 
     58      ! 
     59      INTEGER                                       ::   jk, jn    ! dummy loop indices 
     60      REAL(wp)                                      :: zareatot 
     61      REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zvolume     ! volume of ocean 
     62      CHARACTER (len=25)                            :: charout 
    6063      !!--------------------------------------------------------------------- 
    6164 
     
    6669      CALL top_alloc()              ! allocate TOP arrays 
    6770 
    68       !                             ! masked grid volume 
    69       DO jk = 1, jpk 
    70          cvol(:,:,jk) = e1t(:,:) * e2t(:,:) * fse3t(:,:,jk) * tmask(:,:,jk)  
    71       END DO 
    72  
    73       !                             ! total volume of the ocean 
    74 #if ! defined key_degrad 
    75       areatot = glob_sum( cvol(:,:,:) ) 
    76 #else 
    77       areatot = glob_sum( cvol(:,:,:) * facvol(:,:,:) )  ! degrad option: reduction by facvol 
    78 #endif 
     71      ALLOCATE( zvolume(ji,jj,jk) ) 
    7972 
    8073      CALL trc_nam                  ! read passive tracers namelists 
     
    146139 
    147140 
    148       !            
    149       trai = 0._wp         ! Computation content of all tracers 
     141      !                                                              ! masked grid volume 
     142      zvolume(:,:,:) = e1e2t(:,:)  * fse3t(:,:,jk) * tmask(:,:,jk)    
     143#if defined key_degrad 
     144      zvolume(:,:,:) = zvolume(:,:,:) * facvol(:,:,:) 
     145#endif 
     146      zareatot       = glob_sum( zvolume(:,:,:) )                    ! total volume of ocean 
     147 
     148      trai = 0._wp                                                   ! initial content of all tracers 
    150149      DO jn = 1, jptra 
    151 #if ! defined key_degrad 
    152          trai = trai + glob_sum( trn(:,:,:,jn) * cvol(:,:,:) ) 
    153 #else 
    154          trai = trai + glob_sum( trn(:,:,:,jn) * cvol(:,:,:) * facvol(:,:,:) ) ! degrad option: reduction by facvol 
    155 #endif 
     150         trai = trai + glob_sum( trn(:,:,:,jn) * zvolume(:,:,:)   ) 
    156151      END DO       
    157152 
     
    160155         WRITE(numout,*) 
    161156         WRITE(numout,*) '          *** Total number of passive tracer jptra = ', jptra 
    162          WRITE(numout,*) '          *** Total volume of ocean                = ', areatot 
     157         WRITE(numout,*) '          *** Total volume of ocean                = ', zareatot 
    163158         WRITE(numout,*) '          *** Total inital content of all tracers  = ', trai 
    164159         WRITE(numout,*) 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/trcrst.F90

    r2715 r2957  
    299299      DO jn = 1, jptra 
    300300#  if defined key_degrad 
    301          zdiag_var = glob_sum( trn(:,:,:,jn) * cvol(:,:,:) * facvol(:,:,:) ) 
     301         zdiag_var = glob_sum( trn(:,:,:,jn) * e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) * facvol(:,:,:) ) 
    302302#  else 
    303          zdiag_var = glob_sum( trn(:,:,:,jn) * cvol(:,:,:)  ) 
     303         zdiag_var = glob_sum( trn(:,:,:,jn) * e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:)   ) 
    304304#  endif 
    305305         zdiag_varmin = MINVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) ) 
Note: See TracChangeset for help on using the changeset viewer.