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

Changeset 14276


Ignore:
Timestamp:
2021-01-07T23:09:56+01:00 (3 years ago)
Author:
aumont
Message:

numerous updates to PISCES, PISCES-QUOTA and the sediment module

Location:
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA
Files:
32 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/cfgs/SHARED/field_def_nemo-pisces.xml

    r11536 r14276  
    112112       <field id="DOM_e3t"     long_name="DOM * e3t"                                unit="mmol-N/m2"  > DOM * e3t </field > 
    113113 
     114 
    114115     </field_group> 
    115116 
     
    136137       <field id="SedpH"           long_name="PH"                                       unit="1"          /> 
    137138       <field id="SedCO3por"       long_name="Bicarbonates"                             unit="mol/m3" /> 
     139       <field id="Sedligand"       long_name="Ligands Concentration"                    unit="mol/m3" /> 
    138140     </field_group> 
    139141 
     
    150152       <field id="FlxSO4"      long_name="SO4 sediment flux"                       unit="mol/cm2/s"     /> 
    151153       <field id="FlxFe2"      long_name="Fe2+ sediment flux"                      unit="mol/cm2/s"     /> 
    152        <field id="Flxtot"      long_name="Sediment net burial rate"                unit="cm/s"     /> 
    153154       <field id="dzdep"       long_name="Sedimentation rate"                      unit="cm/s"     /> 
    154155       <field id="sflxclay"    long_name="Clay sedimentation rate"                 unit="g/m2/s"     /> 
     
    157158       <field id="sflxpoc"     long_name="POC Sedimentation rate"                  unit="mol/m2/s"     /> 
    158159       <field id="sflxfeo"     long_name="Fe(OH)3 Sedimentation rate"              unit="mol/m2/s"     /> 
     160       <field id="FlxBSi"      long_name="BSi burial flux"                         unit="g/cm2/s"     /> 
     161       <field id="FlxClay"     long_name="Clay burial flux"                        unit="g/cm2/s"     /> 
     162       <field id="FlxPOC"      long_name="POC burial flux"                         unit="g/cm2/s"     /> 
     163       <field id="FlxCaCO3"    long_name="Calcite burial flux"                     unit="g/cm2/s"     /> 
     164       <field id="FlxPOS"      long_name="POS burial flux"                         unit="g/cm2/s"     /> 
     165       <field id="FlxPOR"      long_name="POR burial flux"                         unit="g/cm2/s"     /> 
     166       <field id="FlxFeO"      long_name="FeO burial flux"                         unit="g/cm2/s"     /> 
     167       <field id="FlxFeS"      long_name="FeS burial flux"                         unit="g/cm2/s"     /> 
    159168</field_group> 
    160169 
     
    206215       <field id="SIZEP"       long_name="Mean relative size of picophyto."        unit="-"          grid_ref="grid_T_3D" /> 
    207216       <field id="SIZED"       long_name="Mean relative size of diatoms"           unit="-"          grid_ref="grid_T_3D" /> 
     217       <field id="RASSD"       long_name="Mean relative size of diatoms"           unit="-"          grid_ref="grid_T_3D" /> 
     218       <field id="RASSN"       long_name="Mean relative size of diatoms"           unit="-"          grid_ref="grid_T_3D" /> 
     219       <field id="RASSP"       long_name="Mean relative size of diatoms"           unit="-"          grid_ref="grid_T_3D" /> 
    208220       <field id="Fe3"         long_name="Iron III concentration"                  unit="nmol/m3"    grid_ref="grid_T_3D" /> 
    209221       <field id="FeL1"        long_name="Complexed Iron concentration with L1"    unit="nmol/m3"    grid_ref="grid_T_3D" /> 
     
    240252       <field id="BACT"        long_name="Bacterial Biomass"                       unit="mmol/m3"  grid_ref="grid_T_3D" /> 
    241253       <field id="FEBACT"      long_name="Bacterial uptake of Fe"                  unit="molFe/m3/s"  grid_ref="grid_T_3D" /> 
     254       <field id="FEPREC"      long_name="precipitation of Fe"                     unit="molFe/m3/s"  grid_ref="grid_T_3D" /> 
    242255       <field id="LPRODR"      long_name="OM remineralisation ligand production rate" unit="nmol-L/m3/s"  grid_ref="grid_T_3D" /> 
    243256       <field id="LPRODP"      long_name="phytoplankton ligand production rate"    unit="nmol-L/m3/s"  grid_ref="grid_T_3D" /> 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/cfgs/SHARED/namelist_pisces_ref

    r13234 r14276  
    1414!----------------------------------------------------------------------- 
    1515  ln_p2z    = .false.        !  LOBSTER model used 
    16   ln_p4z    = .true.         !  PISCES model used 
    17   ln_p5z    = .false.        !  PISCES QUOTA model used 
     16  ln_p4z    = .false.        !  PISCES model used 
     17  ln_p5z    = .true.         !  PISCES QUOTA model used 
    1818  ln_ligand = .false.        !  Enable  organic ligands 
    1919  ln_sediment = .false.      !  Enable sediment module 
     
    4444&nampisbio     !   biological parameters 
    4545!----------------------------------------------------------------------- 
    46    nrdttrc    =  1        ! time step frequency for biology 
    47    wsbio      =  2.       ! POC sinking speed 
    48    xkmort     =  2.E-7    ! half saturation constant for mortality 
    49    ferat3     =  10.E-6   ! Fe/C in zooplankton  
    50    wsbio2     =  50.      ! Big particles sinking speed 
    51    wsbio2max  =  50.      ! Big particles maximum sinking speed 
    52    wsbio2scale =  5000.    ! Big particles length scale of sinking 
     46   nrdttrc     =  1       ! time step frequency for biology 
     47   wsbio       =  2.      ! POC sinking speed 
     48   xkmort      =  2.E-7   ! half saturation constant for mortality 
     49   feratz      =  10.E-6  ! Fe/C in zooplankton  
     50   feratm      =  15.E-6  ! Fe/C in mesozooplankton 
     51   wsbio2      =  50.     ! Big particles sinking speed 
     52   wsbio2max   =  50.     ! Big particles maximum sinking speed 
     53   wsbio2scale =  5000.   ! Big particles length scale of sinking 
    5354!                         !  ln_ligand enabled 
    54    ldocp      =  1.E-4    ! Phyto ligand production per unit doc  
    55    ldocz      =  1.E-4    ! Zoo ligand production per unit doc  
    56    lthet      =  1.0      ! Proportional loss of ligands due to Fe uptake  
     55   ldocp       =  1.E-4   ! Phyto ligand production per unit doc  
     56   ldocz       =  1.E-4   ! Zoo ligand production per unit doc  
     57   lthet       =  1.0     ! Proportional loss of ligands due to Fe uptake  
    5758!                         !  ln_p5z enabled 
    58    no3rat3    =  0.151    ! N/C ratio in zooplankton 
    59    po4rat3    =  0.00943 ! P/C ratio in zooplankton 
     59   no3rat3     =  0.151   ! N/C ratio in zooplankton 
     60   po4rat3     =  0.00944 ! P/C ratio in zooplankton 
    6061/ 
    6162!----------------------------------------------------------------------- 
     
    6465   concnno3   =  1.e-6    ! Nitrate half saturation of nanophytoplankton 
    6566   concdno3   =  3.E-6    ! Nitrate half saturation for diatoms 
    66    concnnh4   =  1.E-7    ! NH4 half saturation for phyto 
    67    concdnh4   =  3.E-7    ! NH4 half saturation for diatoms 
    68    concnfer   =  1.E-9    ! Iron half saturation for phyto 
    69    concdfer   =  3.E-9    ! Iron half saturation for diatoms 
    70    concbfe    =  1.E-11   ! Iron half-saturation for DOC remin. 
    71    concbnh4   =  6.E-8    ! NH4 half saturation for DOC remin. 
    72    concbno3   =  2.E-7    ! Nitrate half saturation for DOC remin. 
     67   concnnh4   =  1.E-6    ! NH4 half saturation for phyto 
     68   concdnh4   =  3.E-6    ! NH4 half saturation for diatoms 
     69   concnfer   =  3.E-9    ! Iron half saturation for phyto 
     70   concdfer   =  9.E-9    ! Iron half saturation for diatoms 
     71   concbfe    =  3.E-11   ! Iron half-saturation for DOC remin. 
     72   concbnh4   =  3.E-7    ! NH4 half saturation for DOC remin. 
     73   concbno3   =  3.E-7    ! Nitrate half saturation for DOC remin. 
    7374   xsizedia   =  1.E-6    ! Minimum size criteria for diatoms 
    7475   xsizephy   =  1.E-6    ! Minimum size criteria for phyto 
     
    7879   xksi2      =  20E-6    ! half saturation constant for Si/C 
    7980   xkdoc      =  417.E-6  ! half-saturation constant of DOC remineralization 
    80    qnfelim    =  7.E-6    ! Optimal quota of phyto 
    81    qdfelim    =  7.E-6    ! Optimal quota of diatoms 
    82    caco3r     =  0.3      ! mean rain ratio 
     81   qnfelim    =  10.E-6   ! Optimal quota of phyto 
     82   qdfelim    =  10.E-6   ! Optimal quota of diatoms 
     83   caco3r     =  0.28     ! mean rain ratio 
    8384   oxymin     =  1.E-6    ! Half-saturation constant for anoxia 
    8485/ 
     
    8687&namp5zlim     !   parameters for nutrient limitations PISCES QUOTA    - ln_p5z 
    8788!----------------------------------------------------------------------- 
    88    concnno3   =  3e-6     ! Nitrate half saturation of nanophytoplankton 
    89    concpno3   =  8e-7     ! Nitrate half saturation of picophytoplankton 
    90    concdno3   =  5E-6     ! Phosphate half saturation for diatoms 
    91    concnnh4   =  1E-6     ! NH4 half saturation for phyto 
    92    concpnh4   =  2.3E-7   ! NH4 half saturation for picophytoplankton 
    93    concdnh4   =  1.7E-6   ! NH4 half saturation for diatoms 
    94    concnpo4   =  3E-6     ! PO4 half saturation for phyto 
    95    concppo4   =  8E-7     ! PO4 half saturation for picophytoplankton 
    96    concdpo4   =  5E-6     ! PO4 half saturation for diatoms 
    97    concnfer   =  3E-9     ! Iron half saturation for phyto 
    98    concpfer   =  8E-10    ! Iron half saturation for picophytoplankton 
    99    concdfer   =  5E-9     ! Iron half saturation for diatoms 
    100    concbfe    =  1.E-11   ! Half-saturation for Fe limitation of Bacteria 
    101    concbnh4   =  1.E-7    ! NH4 half saturation for phyto 
    102    concbno3   =  5.E-7    ! Phosphate half saturation for diatoms 
    103    concbpo4   =  1E-7     ! Phosphate half saturation for bacteria 
     89   concnno3   =  2e-6     ! Nitrate half saturation of nanophytoplankton 
     90   concpno3   =  7e-7     ! Nitrate half saturation of picophytoplankton 
     91   concdno3   =  3E-6     ! Phosphate half saturation for diatoms 
     92   concnnh4   =  2E-6     ! NH4 half saturation for phyto 
     93   concpnh4   =  7E-7     ! NH4 half saturation for picophytoplankton 
     94   concdnh4   =  3E-6     ! NH4 half saturation for diatoms 
     95   concnpo4   =  2E-6     ! PO4 half saturation for phyto 
     96   concppo4   =  7E-7     ! PO4 half saturation for picophytoplankton 
     97   concdpo4   =  3E-6     ! PO4 half saturation for diatoms 
     98   concnfer   =  6E-9     ! Iron half saturation for phyto 
     99   concpfer   =  2E-9     ! Iron half saturation for picophytoplankton 
     100   concdfer   =  9E-9     ! Iron half saturation for diatoms 
     101   concbfe    =  3E-11    ! Half-saturation for Fe limitation of Bacteria 
     102   concbnh4   =  4.E-7    ! NH4 half saturation for phyto 
     103   concbno3   =  4.E-7    ! Phosphate half saturation for diatoms 
     104   concbpo4   =  4.E-7    ! Phosphate half saturation for bacteria 
    104105   xsizedia   =  1.E-6    ! Minimum size criteria for diatoms 
    105106   xsizephy   =  1.E-6    ! Minimum size criteria for phyto 
     
    117118&namp5zquota   !   parameters for nutrient limitations PISCES quota    - ln_p5z 
    118119!----------------------------------------------------------------------- 
    119    qfnopt     =  7.E-6    ! Optimal Fe quota of nanophyto 
    120    qfpopt     =  7.E-6    ! Optimal Fe quota of picophyto 
    121    qfdopt     =  7.E-6    ! Optimal quota of diatoms 
     120   qfnopt     =  10.E-6   ! Optimal Fe quota of nanophyto 
     121   qfpopt     =  10.E-6   ! Optimal Fe quota of picophyto 
     122   qfdopt     =  10.E-6   ! Optimal quota of diatoms 
    122123   qnnmin     =  0.61     ! Minimal N quota for nano 
    123124   qnnmax     =  1.25     ! Maximal N quota for nano 
    124125   qpnmin     =  0.24     ! Minimal P quota for nano 
    125126   qpnmax     =  1.35     ! Maximal P quota for nano 
    126    qnpmin     =  1.04     ! Minimal N quota for pico 
    127    qnpmax     =  1.525    ! Maximal N quota for pico 
     127   qnpmin     =  1.02     ! Minimal N quota for pico 
     128   qnpmax     =  1.39     ! Maximal N quota for pico 
    128129   qppmin     =  0.19     ! Minimal P quota for pico 
    129130   qppmax     =  1.15     ! Maximal P quota for pico 
    130    qndmin     =  0.53     ! Minimal N quota for diatoms 
     131   qndmin     =  0.51     ! Minimal N quota for diatoms 
    131132   qndmax     =  1.25     ! Maximal N quota for diatoms 
    132133   qpdmin     =  0.24     ! Minimal P quota for diatoms 
    133134   qpdmax     =  1.525    ! Maximal P quota for diatoms 
    134    qfnmax     =  80E-6    ! Maximal Fe quota for nano 
    135    qfpmax     =  80E-6    ! Maximal Fe quota for pico 
    136    qfdmax     =  80E-6    ! Maximal Fe quota for diatoms 
     135   qfnmax     =  60E-6    ! Maximal Fe quota for nano 
     136   qfpmax     =  60E-6    ! Maximal Fe quota for pico 
     137   qfdmax     =  60E-6    ! Maximal Fe quota for diatoms 
    137138/ 
    138139!----------------------------------------------------------------------- 
     
    149150&namp4zprod    !   parameters for phytoplankton growth for PISCES std  - ln_p4z 
    150151!----------------------------------------------------------------------- 
    151    pislopen   =  2.       ! P-I slope 
    152    pisloped   =  2.       ! P-I slope  for diatoms 
     152   pislopen   =  2.5      ! P-I slope 
     153   pisloped   =  2.5      ! P-I slope  for diatoms 
    153154   xadap      =  0.       ! Adaptation factor to low light 
    154155   excretn    =  0.05     ! excretion ratio of phytoplankton 
     
    157158   chlcnm     =  0.033    ! Maximum Chl/C in nanophytoplankton 
    158159   chlcdm     =  0.05     ! Maximum Chl/C in diatoms 
    159    chlcmin    =  0.004    ! Minimum Chl/c in phytoplankton 
    160    fecnm      =  40E-6    ! Maximum Fe/C in nanophytoplankton 
    161    fecdm      =  40E-6    ! Maximum Fe/C in diatoms 
    162    grosip     =  0.11     ! mean Si/C ratio 
     160   chlcmin    =  0.003    ! Minimum Chl/c in phytoplankton 
     161   fecnm      =  60E-6    ! Maximum Fe/C in nanophytoplankton 
     162   fecdm      =  60E-6    ! Maximum Fe/C in diatoms 
     163   grosip     =  0.13     ! mean Si/C ratio 
    163164/ 
    164165!----------------------------------------------------------------------- 
    165166&namp5zprod    !   parameters for phytoplankton growth for PISCES quota- ln_p5z 
    166167!----------------------------------------------------------------------- 
    167    pislopen   =  4.       ! P-I slope of nanophytoplankton 
    168    pislopep   =  4.       ! P-I slope for picophytoplankton 
    169    pisloped   =  4.       ! P-I slope  for diatoms 
     168   pislopen   =  5        ! P-I slope of nanophytoplankton 
     169   pislopep   =  5        ! P-I slope for picophytoplankton 
     170   pisloped   =  5        ! P-I slope  for diatoms 
    170171   excretn    =  0.05     ! excretion ratio of phytoplankton 
    171172   excretp    =  0.05     ! excretion ratio of picophytoplankton 
     
    176177   thetanpm   =  0.3      ! Maximum Chl/N in picophytoplankton 
    177178   thetandm   =  0.4      ! Maximum Chl/N in diatoms 
    178    chlcmin    =  0.004    ! Minimum Chl/c in phytoplankton 
    179    grosip     =  0.11     ! mean Si/C ratio 
     179   chlcmin    =  0.003    ! Minimum Chl/c in phytoplankton 
     180   grosip     =  0.12     ! mean Si/C ratio 
    180181/ 
    181182!----------------------------------------------------------------------- 
     
    183184!----------------------------------------------------------------------- 
    184185   wchln      =  0.01     ! quadratic mortality of phytoplankton 
    185    wchld      =  0.01     ! maximum quadratic mortality of diatoms 
    186    wchldm     =  0.03     ! maximum quadratic mortality of diatoms 
     186   wchld      =  0.03     ! maximum quadratic mortality of diatoms 
    187187   mpratn     =  0.01     ! phytoplankton mortality rate 
    188188   mpratd     =  0.01     ! Diatoms mortality rate 
     
    193193   wchln      =  0.01     ! quadratic mortality of nanophytoplankton 
    194194   wchlp      =  0.01     ! quadratic mortality of picophytoplankton 
    195    wchld      =  0.01     ! maximum quadratic mortality of diatoms 
    196    wchldm     =  0.03     ! maximum quadratic mortality of diatoms 
     195   wchld      =  0.03     ! maximum quadratic mortality of diatoms 
    197196   mpratn     =  0.01     ! nanophytoplankton mortality rate 
    198197   mpratp     =  0.01     ! picophytoplankton mortality rate 
     
    205204   grazrat2    =  0.5      ! maximal mesozoo grazing rate 
    206205   resrat2     =  0.005    ! exsudation rate of mesozooplankton 
    207    mzrat2      =  0.02     ! mesozooplankton mortality rate 
     206   mzrat2      =  0.01     ! mesozooplankton mortality rate 
    208207   xpref2d     =  1.       ! mesozoo preference for diatoms 
    209208   xpref2n     =  0.3      ! mesozoo preference for nanophyto. 
    210209   xpref2z     =  1.       ! mesozoo preference for microzoo. 
    211210   xpref2c     =  0.3      ! mesozoo preference for poc 
    212    xthresh2zoo = 1E-8      ! zoo feeding threshold for mesozooplankton  
    213    xthresh2dia = 1E-8      ! diatoms feeding threshold for mesozooplankton  
    214    xthresh2phy = 1E-8      ! nanophyto feeding threshold for mesozooplankton  
    215    xthresh2poc = 1E-8      ! poc feeding threshold for mesozooplankton  
     211   xthresh2zoo =  1E-8     ! zoo feeding threshold for mesozooplankton  
     212   xthresh2dia =  1E-8     ! diatoms feeding threshold for mesozooplankton  
     213   xthresh2phy =  1E-8     ! nanophyto feeding threshold for mesozooplankton  
     214   xthresh2poc =  1E-8     ! poc feeding threshold for mesozooplankton  
    216215   xthresh2    =  3E-7     ! Food threshold for grazing 
    217216   xkgraz2     =  20.E-6   ! half saturation constant for meso grazing 
    218    epsher2     =  0.35     ! Efficicency of Mesozoo growth 
    219    epsher2min  =  0.35     ! Minimum efficiency of mesozoo growth 
     217   epsher2     =  0.4      ! Efficicency of Mesozoo growth 
     218   epsher2min  =  0.4      ! Minimum efficiency of mesozoo growth 
    220219   sigma2      =  0.6      ! Fraction of mesozoo excretion as DOM 
    221220   unass2      =  0.3      ! non assimilated fraction of P by mesozoo 
    222    grazflux    =  3.e3     ! flux-feeding rate 
    223    ln_dvm_meso = .false.   ! Activates DVM for mesozooplankton 
    224    xfracmig    = 0.3       ! Fraction of mesozooplankton performing DVM 
     221   grazflux    =  2.e3     ! flux-feeding rate 
     222   xsigma2     =  0.5      ! Predation window size 
     223   xsigma2del  =  1.0      ! Predation window size scaling 
     224   ln_dvm_meso =  .false.  ! Activates DVM for mesozooplankton 
     225   xfracmig    =  0.3      ! Fraction of mesozooplankton performing DVM 
    225226/ 
    226227!----------------------------------------------------------------------- 
    227228&namp5zmes     !   parameters for mesozooplankton 
    228229!----------------------------------------------------------------------- 
    229    part2      =  0.75     ! part of calcite not dissolved in mesozoo guts 
    230    grazrat2   =  0.75     ! maximal mesozoo grazing rate 
    231    bmetexc2   =  .true.   ! Metabolic use of excess carbon  
    232    resrat2    =  0.005    ! exsudation rate of mesozooplankton 
    233    mzrat2     =  0.03     ! mesozooplankton mortality rate 
    234    xpref2d    =  1.       ! meso preference for diatoms 
    235    xpref2n    =  0.3      ! meso preference for nano 
    236    xpref2z    =  1.       ! meso preference for zoo 
    237    xpref2m    =  0.1      ! meso preference for zoo 
    238    xpref2c    =  0.3      ! meso preference for poc 
    239    xthresh2zoo = 1E-8     ! zoo feeding threshold for mesozooplankton 
    240    xthresh2dia = 1E-8     ! diatoms feeding threshold for mesozooplankton 
    241    xthresh2phy = 1E-8     ! nanophyto feeding threshold for mesozooplankton 
    242    xthresh2mes = 1E-8     ! meso feeding threshold for mesozooplankton 
    243    xthresh2poc = 1E-8     ! poc feeding threshold for mesozooplankton 
    244    xthresh2    =  3E-7    ! Food threshold for grazing 
    245    xkgraz2     =  20.E-6  ! half sturation constant for meso grazing 
    246    epsher2     =  0.5     ! Efficicency of Mesozoo growth 
    247    epsher2min  =  0.5     ! Minimum efficiency of mesozoo growth 
    248    ssigma2     =  0.5     ! Fraction excreted as semi-labile DOM 
    249    srespir2    =  0.2     ! Active respiration 
    250    unass2c     =  0.3     ! non assimilated fraction of C by mesozoo 
    251    unass2n     =  0.3     ! non assimilated fraction of N by mesozoo 
    252    unass2p     =  0.3     ! non assimilated fraction of P by mesozoo 
    253    grazflux   =  3.e3     ! flux-feeding rate 
     230   part2       =  0.75     ! part of calcite not dissolved in mesozoo guts 
     231   grazrat2    =  0.5      ! maximal mesozoo grazing rate 
     232   bmetexc2    =  .true.   ! Metabolic use of excess carbon  
     233   resrat2     =  0.005    ! exsudation rate of mesozooplankton 
     234   mzrat2      =  0.01     ! mesozooplankton mortality rate 
     235   xpref2d     =  1.       ! meso preference for diatoms 
     236   xpref2n     =  0.3      ! meso preference for nano 
     237   xpref2z     =  1.       ! meso preference for zoo 
     238   xpref2m     =  0.       ! meso preference for zoo 
     239   xpref2c     =  0.3      ! meso preference for poc 
     240   xthresh2zoo =  1E-8     ! zoo feeding threshold for mesozooplankton 
     241   xthresh2dia =  1E-8     ! diatoms feeding threshold for mesozooplankton 
     242   xthresh2phy =  1E-8     ! nanophyto feeding threshold for mesozooplankton 
     243   xthresh2mes =  1E-8     ! meso feeding threshold for mesozooplankton 
     244   xthresh2poc =  1E-8     ! poc feeding threshold for mesozooplankton 
     245   xthresh2    =  3E-7     ! Food threshold for grazing 
     246   xkgraz2     =  20.E-6   ! half sturation constant for meso grazing 
     247   epsher2     =  0.5      ! Efficicency of Mesozoo growth 
     248   epsher2min  =  0.5      ! Minimum efficiency of mesozoo growth 
     249   ssigma2     =  0.5      ! Fraction excreted as semi-labile DOM 
     250   srespir2    =  0.2      ! Active respiration 
     251   unass2c     =  0.3      ! non assimilated fraction of C by mesozoo 
     252   unass2n     =  0.3      ! non assimilated fraction of N by mesozoo 
     253   unass2p     =  0.3      ! non assimilated fraction of P by mesozoo 
     254   xsigma2     =  0.5      ! Predation window size 
     255   xsigma2del  =  1.0      ! Predation window size scaling 
     256   grazflux    =  2.e3     ! flux-feeding rate 
     257   ln_dvm_meso =  .false.  ! Activates DVM for mesozooplankton 
     258   xfracmig    =  0.25     ! Fraction of mesozooplankton performing DVM 
    254259/ 
    255260!----------------------------------------------------------------------- 
    256261&namp4zzoo     !   parameters for microzooplankton for PISCES std      - ln_p4z 
    257262!----------------------------------------------------------------------- 
    258    part       =  0.5      ! part of calcite not dissolved in microzoo guts 
     263   part       =  0.75     ! part of calcite not dissolved in microzoo guts 
    259264   grazrat    =  2.0      ! maximal zoo grazing rate 
    260    resrat     =  0.03     ! Linear mortality rate of zooplankton 
     265   resrat     =  0.02     ! Linear mortality rate of zooplankton 
    261266   mzrat      =  0.005    ! zooplankton mortality rate 
    262267   xprefc     =  0.1      ! Microzoo preference for POM 
     
    268273   xthresh    =  3.E-7    ! Food threshold for feeding 
    269274   xkgraz     =  20.E-6   ! half sturation constant for grazing 
    270    epsher     =  0.35     ! Efficiency of microzoo growth 
    271    epshermin  =  0.35     ! Minimum efficiency of microzoo growth 
     275   epsher     =  0.4     ! Efficiency of microzoo growth 
     276   epshermin  =  0.4     ! Minimum efficiency of microzoo growth 
    272277   sigma1     =  0.6      ! Fraction of microzoo excretion as DOM 
    273278   unass      =  0.3      ! non assimilated fraction of phyto by zoo 
     279   xsigma     =  0.5      ! Predation window size 
     280   xsigmadel  =  1.0      ! Predation window size scaling 
    274281/ 
    275282!----------------------------------------------------------------------- 
    276283&namp5zzoo     !   parameters for microzooplankton 
    277284!----------------------------------------------------------------------- 
    278    part       =  0.5      ! part of calcite not dissolved in microzoo gutsa 
    279    grazrat    =  3.0      ! maximal zoo grazing rate 
     285   part       =  0.75     ! part of calcite not dissolved in microzoo gutsa 
     286   grazrat    =  2.0      ! maximal zoo grazing rate 
    280287   bmetexc    =  .true.   ! Metabolic use of excess carbon 
    281    resrat     =  0.03     ! exsudation rate of zooplankton 
    282    mzrat      =  0.004    ! zooplankton mortality rate 
     288   resrat     =  0.02     ! exsudation rate of zooplankton 
     289   mzrat      =  0.005    ! zooplankton mortality rate 
    283290   xprefc     =  0.1      ! Microzoo preference for POM 
    284291   xprefn     =  1.0      ! Microzoo preference for Nanophyto 
    285292   xprefp     =  1.0      ! Microzoo preference for picophyto 
    286293   xprefd     =  0.8      ! Microzoo preference for Diatoms 
    287    xprefz     =  0.1      ! Microzoo preference for microzooplankton 
     294   xprefz     =  0.       ! Microzoo preference for microzooplankton 
    288295   xthreshdia =  1.E-8    ! Diatoms feeding threshold for microzooplankton 
    289296   xthreshphy =  1.E-8    ! Nanophyto feeding threshold for microzooplankton 
     
    300307   unassn     =  0.3      ! non assimilated fraction of N by zoo 
    301308   unassp     =  0.3      ! non assimilated fraction of P by zoo 
     309   xsigma     =  0.5      ! Predation window size 
     310   xsigmadel  =  1.0      ! Predation window size scaling 
    302311/ 
    303312!----------------------------------------------------------------------- 
     
    305314!----------------------------------------------------------------------- 
    306315   ln_ligvar =  .false.   ! variable ligand concentration 
    307    xlam1     =  0.005      ! scavenging rate of Iron by biogenic particles 
     316   xlam1     =  0.05      ! scavenging rate of Iron by biogenic particles 
    308317   xlamdust  =  150.0     ! Scavenging rate of Iron by dust 
    309    ligand    =  7E-10     ! Ligands concentration  
     318   ligand    =  1E-9     ! Ligands concentration  
    310319   kfep      =  0.01      ! Nanoparticle formation rate constant 
     320   scaveff   =  1.0       ! Fraction of scavenged Fe that goes to POFe 
    311321/ 
    312322!-----------------------------------------------------------------------   
    313323&nampisrem     !   parameters for remineralization 
    314324!----------------------------------------------------------------------- 
    315    xremik    =  0.3       ! remineralization rate of DOC 
    316325   nitrif    =  0.05      ! NH4 nitrification rate 
    317326   xsirem    =  0.003     ! remineralization rate of Si 
    318327   xsiremlab =  0.03      ! fast remineralization rate of Si 
    319328   xsilab    =  0.5       ! Fraction of labile biogenic silica 
    320    feratb    =  10.E-6    ! Fe/C quota in bacteria 
     329   feratb    =  30.E-6    ! Fe/C quota in bacteria 
    321330   xkferb    =  3E-10     ! Half-saturation constant for bacteria Fe/C 
    322331!                         ! ln_p5z 
    323    xremikc   =  0.25      ! remineralization rate of DOC 
    324    xremikn   =  0.3       ! remineralization rate of DON 
    325    xremikp   =  0.4       ! remineralization rate of DOP 
    326 !   feratb    =  20E-6     ! Bacterial Fe/C ratio 
    327 !   xkferb    =  3E-10     ! Half-saturation constant for bact. Fe/C 
     332   xremikc   =  0.4       ! remineralization rate of DOC 
     333   xremikn   =  0.4       ! remineralization rate of DON 
     334   xremikp   =  0.5       ! remineralization rate of DOP 
    328335/ 
    329336!----------------------------------------------------------------------- 
    330337&nampispoc     !   parameters for organic particles 
    331338!----------------------------------------------------------------------- 
    332    xremip    =  0.03      ! remineralisation rate of POC 
     339   xremip    =  0.035     ! remineralisation rate of POC 
    333340   jcpoc     =  15        ! Number of lability classes 
    334341   rshape    =  1.0       ! Shape of the gamma function 
     
    341348&nampiscal     !   parameters for Calcite chemistry 
    342349!----------------------------------------------------------------------- 
    343    kdca       =  6.       ! calcite dissolution rate constant (1/time) 
    344    nca        =  1.       ! order of dissolution reaction (dimensionless) 
     350   kdca       =  3.       ! calcite dissolution rate constant (1/time) 
     351   nca        =  2.       ! order of dissolution reaction (dimensionless) 
    345352/ 
    346353!----------------------------------------------------------------------- 
     
    377384   icefeinput  =  15.e-9   ! Iron concentration in sea ice 
    378385   nitrfix     =  1.e-7    ! Nitrogen fixation rate 
    379    diazolight  =  50.      ! Diazotrophs sensitivity to light (W/m2) 
     386   diazolight  =  30.      ! Diazotrophs sensitivity to light (W/m2) 
    380387   concfediaz  =  1.e-10   ! Diazotrophs half-saturation Cste for Iron 
    381388   hratio      =  1.e+7    ! Fe to 3He ratio assumed for vent iron supply  
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/cfgs/SHARED/namelist_sediment_ref

    r12361 r14276  
    1818&nam_geom     !  Characteristics of the sediment columns 
    1919!----------------------------------------------------------------------- 
    20   jpksed    = 11       ! Number of vertical layers 
    21   sedzmin = 0.3        ! Minimum vertical spacing 
    22   sedhmax = 10.0       ! Maximum depth of the sediment 
    23   sedkth  = 7.0        ! Default parameters 
     20  jpksed  = 18         ! Number of vertical layers 
     21  sedzmin = 0.1        ! Minimum vertical spacing 
     22  sedhmax = 15.0       ! Maximum depth of the sediment 
     23  sedkth  = 9.0        ! Default parameters 
    2424  sedacr  = 2.0        ! Default parameters 
    25   porsurf   = 0.9      ! Sediment porosity at the surface 
    26   porinf    = 0.75     ! Sediment porosity at infinite depth 
    27   rhox      = 0.33     ! Length scale of porosity variation (cm) 
     25  porsurf = 0.9        ! Sediment porosity at the surface 
     26  porinf  = 0.75       ! Sediment porosity at infinite depth 
     27  rhox    = 0.33       ! Length scale of porosity variation (cm) 
    2828/ 
    2929!----------------------------------------------------------------------- 
     
    5757! 
    5858   seddiag3d(1)   = 'SedpH      ' , 'pH                                     ',  '-      ' 
    59    seddiag3d(2)   = 'SedCO3por  ' , 'Dissolved CO3 cocnentration            ',  'mol/L' 
     59   seddiag3d(2)   = 'SedCO3por  ' , 'Dissolved CO3 concentration            ',  'mol/L' 
     60   seddiag3d(3)   = 'Sedligand'   , 'ligand concentration                   ',  'mol/L' 
    6061   seddiag2d(1)   = 'FlxSi      ' , 'Silicate flux                          ',  'mol/cm2/s' 
    6162   seddiag2d(2)   = 'FlxO2      ' , 'Dissolved Oxygen Flux                  ',  'mol/L' 
     
    6768   seddiag2d(8)   = 'FlxH2S     ' , 'Total H2S flux                         ',  'mol/cm2/s' 
    6869   seddiag2d(9)   = 'FlxSO4     ' , 'Total SO4 flux                         ',  'mol/cm2/s' 
    69    seddiag2d(10)   = 'FlxFe2     ' , 'Total Fe2+ flux                        ',  'mol/cm2/s' 
    70    seddiag2d(11)  = 'Flxtot     ' , 'Total net sediment burial rate         ',  'cm/s' 
    71    seddiag2d(12)  = 'dzdep      ' , 'Sedimentation rate                     ',  'cm/s' 
     70   seddiag2d(10)  = 'FlxFe2     ' , 'Total Fe2+ flux                        ',  'mol/cm2/s' 
     71   seddiag2d(11)  = 'FlxBSi     ' , 'Total net BSi burial rate              ',  'g/cm2/s' 
     72   seddiag2d(12)  = 'FlxClay    ' , 'Total net CLay burial rate             ',  'g/cm2/s' 
     73   seddiag2d(13)  = 'FlxPOC     ' , 'Total net POC burial rate              ',  'g/cm2/s' 
     74   seddiag2d(14)  = 'FlxCaCO3   ' , 'Total net CaCO3 burial rate            ',  'g/cm2/s' 
     75   seddiag2d(15)  = 'FlxPOS     ' , 'Total net POS burial rate              ',  'g/cm2/s' 
     76   seddiag2d(16)  = 'FlxPOR     ' , 'Total net POR burial rate              ',  'g/cm2/s' 
     77   seddiag2d(17)  = 'FlxFeO     ' , 'Total net FeO burial rate              ',  'g/cm2/s' 
     78   seddiag2d(18)  = 'FlxFeS     ' , 'Total net FeS burial rate              ',  'g/cm2/s' 
     79   seddiag2d(19)  = 'Flxtot     ' , 'Total burial flux                      ',  'mol/cm2/s' 
     80   seddiag2d(20)  = 'dzdep      ' , 'Sedimentation rate                     ',  'cm/s' 
    7281/ 
    7382!----------------------------------------------------------------------- 
     
    7685   rcopal   =  0.1      ! Reactivity for clay  [l.mol-1.an-1] 
    7786   dcoef    =  8.0E-6   ! Diffusion coefficient in sediments (in cm**2/s) 
    78    rccal    =  0.014    ! Dissolution rate of calcite [in yr-1] 
     87   rccal    =  1.4      ! Dissolution rate of calcite [in yr-1] 
    7988   rcligc   =  0.1      ! Degradation rate of ligands [in yr-1] 
    8089   ratligc  =  1.E-4    ! L/C ratio in POC 
     
    92101   rcorgr   =  1.E-4   ! Reactivity for refractory POC [an-1] 
    93102   rcnh4    =  1E7     ! Reactivity for O2/NH4 [l.mol-1.an-1] 
    94    rch2s    =  1E5     ! Reactivity for O2/H2S [l.mol-1.an-1] 
     103   rch2s    =  1.6E5   ! Reactivity for O2/H2S [l.mol-1.an-1] 
    95104   rcfe2    =  1E8     ! Reactivity for O2/Fe2+ [l.mol-1.an-1] 
    96    rcfeh2s  =  1E4     ! Reactivity for FEOH/H2S [l.mol-1.an-1] 
    97    rcfes    =  1E5     ! Reactivity for FE2+/H2S [l.mol-1.an-1] 
     105   rcfeh2s  =  8E3     ! Reactivity for FEOH/H2S [l.mol-1.an-1] 
     106   rcfes    =  1E6     ! Reactivity for FE2+/H2S [l.mol-1.an-1] 
    98107   rcfeso   =  3E5     ! Reactivity for FES/O2 [l.mol-1.an-1] 
    99108   xksedo2  =  1.E-6   ! Half-saturation constant for oxic remin [mol/l] 
     
    105114&nam_btb     !   parameters for bioturbation and bioirrigation 
    106115!----------------------------------------------------------------------- 
    107    dbiot       =  5.        ! Bioturbation coefficient (in cm2/yr) 
    108    ln_btbz     =  .false.   ! Depth varying bioturbation  
    109    dbtbzsc     =  10.0      ! coefficient for btb attenuation. If no variation, depth of the mixed layer 
     116   dbiot       =  10.       ! Bioturbation coefficient (in cm2/yr) 
     117   ln_btbz     =  .true.    ! Depth varying bioturbation  
     118   dbtbzsc     =  6.0       ! coefficient for btb attenuation. If no variation, depth of the mixed layer 
    110119   adsnh4      =  1.3       ! Adsorption coefficient of NH4 
    111    ln_irrig    =  .true.   ! Bioirrigation in sediment 
     120   ln_irrig    =  .true.    ! Bioirrigation in sediment 
    112121   xirrzsc     =  1.5       ! Vertical scale of the attentuation of bioirrigation [cm] 
    113122/  
     
    115124&nam_rst     !   parameters for restarting the sediment module 
    116125!----------------------------------------------------------------------- 
    117    ln_rst_sed   =  .false.       !  restart flag 
     126   ln_rst_sed   =  .false.         !  restart flag 
    118127   cn_sedrst_in  = "restart_sed"   !  name of the input restart file name of the sediment module 
    119128   cn_sedrst_indir = "."           !  directory from which to read input sediment restarts 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zagg.F90

    r13233 r14276  
    7575                  ! Part I : Coagulation dependent on turbulence 
    7676                  ! The stickiness has been assumed to be 0.1 
    77                   zagg1 = 25.9  * zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc) 
    78                   zagg2 = 4452. * zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc) 
     77                  zagg1 = 12.5  * zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc) 
     78                  zagg2 = 169.7 * zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc) 
    7979 
    8080                  ! Part II : Differential settling 
    8181                  ! Aggregation of small into large particles 
    8282                  ! The stickiness has been assumed to be 0.1 
    83                   zagg3 =  47.1 * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc) 
    84                   zagg4 =  3.3  * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc) 
     83                  zagg3 =  8.63  * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc) 
     84                  zagg4 =  132.8 * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc) 
    8585 
    8686                  zagg   = zagg1 + zagg2 + zagg3 + zagg4 
     
    9292                  ! 3rd term is differential settling of DOC-POC 
    9393                  ! 1/3 of DOC is supposed to experience aggregation (HMW) 
    94                   zaggdoc  = ( ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * zfact       & 
    95                   &            + 2.4 * xstep * trb(ji,jj,jk,jppoc) ) * 0.3 * trb(ji,jj,jk,jpdoc) 
     94                  zaggdoc  = ( ( 12.0 * 0.3 * trb(ji,jj,jk,jpdoc) + 9.05 * trb(ji,jj,jk,jppoc) ) * zfact       & 
     95                  &            + 2.49 * xstep * trb(ji,jj,jk,jppoc) ) * 0.3 * trb(ji,jj,jk,jpdoc) 
    9696                  ! transfer of DOC to GOC :  
    9797                  ! 1st term is shear aggregation 
    98                   ! 2nd term is differential settling  
    99                   ! 1/3 of DOC is supposed to experience aggregation (HMW) 
    100                   zaggdoc2 = ( 3.53E3 * zfact + 0.1 * xstep ) * trb(ji,jj,jk,jpgoc) * 0.3 * trb(ji,jj,jk,jpdoc) 
     98                  ! 1/3 of DOC is supposed to experience aggregation (HMW) 
     99                  zaggdoc2 = ( 1.94 * zfact + 1.37 * xstep ) * trb(ji,jj,jk,jpgoc) * 0.3 * trb(ji,jj,jk,jpdoc) 
    101100                  ! tranfer of DOC to POC due to brownian motion 
    102101                  ! The temperature dependency has been omitted. 
    103                   zaggdoc3 =  114. * 0.3 * trb(ji,jj,jk,jpdoc) *xstep * 0.3 * trb(ji,jj,jk,jpdoc) 
     102                  zaggdoc3 =  ( 127.8 * 0.3 * trb(ji,jj,jk,jpdoc) + 725.7 * trb(ji,jj,jk,jppoc) ) * xstep * 0.3 * trb(ji,jj,jk,jpdoc) 
    104103 
    105104                  !  Update the trends 
     
    150149                  ! 3rd term is differential settling of DOC-POC 
    151150                  ! 1/3 of DOC is supposed to experience aggregation (HMW) 
    152                   zaggtmp = ( ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * zfact       & 
    153                   &            + 2.4 * xstep * trb(ji,jj,jk,jppoc) ) 
     151                  zaggtmp = ( ( 0.37 * 0.3 * trb(ji,jj,jk,jpdoc) + 20.5 * trb(ji,jj,jk,jppoc) ) * zfact       & 
     152                  &            + 0.15 * xstep * trb(ji,jj,jk,jppoc) ) 
    154153                  zaggdoc  = zaggtmp * 0.3 * trb(ji,jj,jk,jpdoc) 
    155154                  zaggdon  = zaggtmp * 0.3 * trb(ji,jj,jk,jpdon) 
     
    160159                  ! 2nd term is differential settling  
    161160                  ! 1/3 of DOC is supposed to experience aggregation (HMW) 
    162                   zaggtmp = ( 3.53E3 * zfact + 0.1 * xstep ) * trb(ji,jj,jk,jpgoc) 
     161                  zaggtmp = 655.4 * zfact * trb(ji,jj,jk,jpgoc) 
    163162                  zaggdoc2 = zaggtmp * 0.3 * trb(ji,jj,jk,jpdoc) 
    164163                  zaggdon2 = zaggtmp * 0.3 * trb(ji,jj,jk,jpdon) 
     
    167166                  ! tranfer of DOC to POC due to brownian motion 
    168167                  ! 1/3 of DOC is supposed to experience aggregation (HMW) 
    169                   zaggtmp = ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) * xstep 
     168                  zaggtmp = ( 260.2 * 0.3 * trb(ji,jj,jk,jpdoc) +  418.5 * trb(ji,jj,jk,jppoc) ) * xstep 
    170169                  zaggdoc3 =  zaggtmp * 0.3 * trb(ji,jj,jk,jpdoc) 
    171170                  zaggdon3 =  zaggtmp * 0.3 * trb(ji,jj,jk,jpdon) 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zbio.F90

    r13233 r14276  
    110110 
    111111      ! Update of the size of the different phytoplankton groups 
    112       sized(:,:,:) = sizeda(:,:,:) 
    113       sizen(:,:,:) = sizena(:,:,:) 
     112      sized(:,:,:) = MAX(1.0, sizeda(:,:,:) ) 
     113      sizen(:,:,:) = MAX(1.0, sizena(:,:,:) ) 
    114114      IF (ln_p5z) THEN 
    115          sizep(:,:,:) = sizepa(:,:,:) 
     115         sizep(:,:,:) = MAX(1.0, sizepa(:,:,:) ) 
    116116      ENDIF 
    117117      !                                                             ! 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zfechem.F90

    r13200 r14276  
    3030   REAL(wp), PUBLIC ::   ligand       !: ligand concentration in the ocean  
    3131   REAL(wp), PUBLIC ::   kfep         !: rate constant for nanoparticle formation 
     32   REAL(wp), PUBLIC ::   scaveff      !: Fraction of scavenged iron that is considered as being subject to solubilization 
    3233 
    3334   !!---------------------------------------------------------------------- 
     
    5051      ! 
    5152      INTEGER  ::   ji, jj, jk, jic, jn 
    52       REAL(wp) ::   zdep, zlam1a, zlam1b, zlamfac 
    53       REAL(wp) ::   zkeq, zfeequi, zfesatur, zfecoll, fe3sol, zligco 
    54       REAL(wp) ::   zdenom1, zscave, zaggdfea, zaggdfeb, zcoag, ztrc, zdust 
    55       REAL(wp) ::   zdenom2, ztfe, zhplus, zxlam, zaggliga, zaggligb 
     53      REAL(wp) ::   zlam1a, zlam1b 
     54      REAL(wp) ::   zkeq, zfesatur, zfecoll, fe3sol, zligco 
     55      REAL(wp) ::   zscave, zaggdfea, zaggdfeb, ztrc, zdust, zklight 
     56      REAL(wp) ::   ztfe, zhplus, zxlam, zaggliga, zaggligb 
    5657      REAL(wp) ::   zrfact2 
    5758      CHARACTER (len=25) :: charout 
    58       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zTL1, zFe3, ztotlig, precip, zFeL1 
    59       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zcoll3d, zscav3d, zlcoll3d 
     59      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zTL1, zFe3, ztotlig, precip, precipno3, zFeL1 
     60      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zcoll3d, zscav3d, zlcoll3d, zprecip3d 
    6061      !!--------------------------------------------------------------------- 
    6162      ! 
     
    6667 
    6768      ! Total ligand concentration : Ligands can be chosen to be constant or variable 
    68       ! Parameterization from Tagliabue and Voelker (2011) 
     69      ! Parameterization from Pham and Ito (2018) 
    6970      ! ------------------------------------------------- 
    7071      IF( ln_ligvar ) THEN 
    71          ztotlig(:,:,:) =  0.09 * trb(:,:,:,jpdoc) * 1E6 + ligand * 1E9 
     72         ztotlig(:,:,:) =  0.09 * 0.667 * trb(:,:,:,jpdoc) * 1E6 + ligand * 1E9 + MAX(0., chemo2(:,:,:) - trb(:,:,:,jpoxy) ) / 400.E-6 
    7273         ztotlig(:,:,:) =  MIN( ztotlig(:,:,:), 10. ) 
    7374      ELSE 
    7475        IF( ln_ligand ) THEN  ;   ztotlig(:,:,:) = trb(:,:,:,jplgw) * 1E9 
    75         ELSE                  ;   ztotlig(:,:,:) = ligand * 1E9 
     76        ELSE                  ;   ztotlig(:,:,:) = ligand * 1E9  
    7677        ENDIF 
    7778      ENDIF 
     
    7980      ! ------------------------------------------------------------ 
    8081      !  from Aumont and Bopp (2006) 
    81       ! This model is based on one ligand and Fe'  
     82      ! This model is based on one ligand, Fe2+ and Fe3+  
    8283      ! Chemistry is supposed to be fast enough to be at equilibrium 
    8384      ! ------------------------------------------------------------ 
     
    8788               zTL1(ji,jj,jk)  = ztotlig(ji,jj,jk) 
    8889               zkeq            = fekeq(ji,jj,jk) 
     90               zklight         = 4.77E-7 * etot(ji,jj,jk) * 0.5 / 10**-6.3 
    8991               zfesatur        = zTL1(ji,jj,jk) * 1E-9 
    90                ztfe            = trb(ji,jj,jk,jpfer)  
     92               ztfe            = (1.0 + zklight) * trb(ji,jj,jk,jpfer)  
    9193               ! Fe' is the root of a 2nd order polynom 
    92                zFe3 (ji,jj,jk) = ( -( 1. + zfesatur * zkeq - zkeq * ztfe )               & 
    93                   &              + SQRT( ( 1. + zfesatur * zkeq - zkeq * ztfe )**2       & 
     94               zFe3 (ji,jj,jk) = ( -( 1. + zfesatur * zkeq + zklight + consfe3(ji,jj,jk)/10**-6.3 - zkeq * trb(ji,jj,jk,jpfer) )               & 
     95                  &              + SQRT( ( 1. + zfesatur * zkeq + zklight + consfe3(ji,jj,jk)/10**-6.3 - zkeq * trb(ji,jj,jk,jpfer) )**2       & 
    9496                  &              + 4. * ztfe * zkeq) ) / ( 2. * zkeq ) 
    95                zFe3 (ji,jj,jk) = zFe3(ji,jj,jk) * 1E9 
    96                zFeL1(ji,jj,jk) = MAX( 0., trb(ji,jj,jk,jpfer) * 1E9 - zFe3(ji,jj,jk) ) 
     97               zFeL1(ji,jj,jk) = MAX( 0., trb(ji,jj,jk,jpfer) - zFe3(ji,jj,jk) ) 
    9798           END DO 
    9899         END DO 
    99100      END DO 
    100          ! 
    101  
     101      ! 
     102      plig(:,:,:) =  MAX( 0., ( zFeL1(:,:,:) / ( trb(:,:,:,jpfer) + rtrn ) ) ) 
     103      ! 
    102104      zdust = 0.         ! if no dust available 
    103105      DO jk = 1, jpkm1 
     
    113115               &         + fesol(ji,jj,jk,5) / zhplus ) 
    114116               ! 
    115                zfeequi = zFe3(ji,jj,jk) * 1E-9 
    116                zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9 
     117               zfecoll = 0.5 * zFeL1(ji,jj,jk) 
    117118               ! precipitation of Fe3+, creation of nanoparticles 
    118                precip(ji,jj,jk) = MAX( 0., ( zFe3(ji,jj,jk) * 1E-9 - fe3sol ) ) * kfep * xstep 
     119               precip(ji,jj,jk) = MAX( 0., ( zFe3(ji,jj,jk) - fe3sol ) ) * kfep * xstep * ( 1.0 - nitrfac(ji,jj,jk) )  
     120               ! Precipitation of Fe2+ due to oxidation by NO3 (Croot et al., 2019) 
     121               ! This occurs in anoxic waters only 
     122               precipno3(ji,jj,jk) = 2.0 * 130.0 * trb(ji,jj,jk,jpno3) * nitrfac(ji,jj,jk) * xstep * zFe3(ji,jj,jk) 
    119123               ! 
    120124               ztrc   = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6  
     125               ztrc = MAX( rtrn, ztrc ) 
    121126               IF( ln_dust )  zdust  = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) 
    122                IF (ln_ligand) THEN 
    123                   zxlam  = xlam1 * MAX( 1.E-3, EXP(-2 * etot(ji,jj,jk) / 10. ) * (1. - EXP(-2 * trb(ji,jj,jk,jpoxy) / 100.E-6 ) )) 
    124                ELSE 
    125                   zxlam  = xlam1 * 1.0 
    126                ENDIF 
    127                zlam1b = 3.e-5 + xlamdust * zdust + zxlam * ztrc 
    128                zscave = zfeequi * zlam1b * xstep 
    129  
    130                ! Compute the different ratios for scavenging of iron 
    131                ! to later allocate scavenged iron to the different organic pools 
    132                ! --------------------------------------------------------- 
    133                zdenom1 = zxlam * trb(ji,jj,jk,jppoc) / zlam1b 
    134                zdenom2 = zxlam * trb(ji,jj,jk,jpgoc) / zlam1b 
    135  
    136                ! Increased scavenging for very high iron concentrations found near the coasts  
    137                ! due to increased lithogenic particles and let say it is unknown processes (precipitation, ...) 
    138                !  ----------------------------------------------------------- 
    139                zlamfac = MAX( 0.e0, ( gphit(ji,jj) + 55.) / 30. ) 
    140                zlamfac = MIN( 1.  , zlamfac ) 
    141                zdep    = MIN( 1., 1000. / gdept_n(ji,jj,jk) ) 
    142                zcoag   = 1E-4 * ( 1. - zlamfac ) * zdep * xstep * trb(ji,jj,jk,jpfer) 
     127               zxlam  = MAX( 1.E-3, (1. - EXP(-2 * trb(ji,jj,jk,jpoxy) / 100.E-6 ) )) 
     128               zlam1b = 3.e-5 + ( xlamdust * zdust + xlam1 * ztrc ) * zxlam 
     129               zscave = zFe3(ji,jj,jk) * zlam1b * xstep 
    143130 
    144131               ! Compute the coagulation of colloidal iron. This parameterization  
     
    146133               ! It requires certainly some more work as it is very poorly constrained. 
    147134               ! ---------------------------------------------------------------- 
    148                zlam1a   = ( 0.369  * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4  * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk)    & 
    149                    &    + ( 114.   * 0.3 * trb(ji,jj,jk,jpdoc) ) 
     135               zlam1a   = ( 12.0  * 0.3 * trb(ji,jj,jk,jpdoc) + 9.05  * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk)    & 
     136                   &    + ( 2.49  * trb(ji,jj,jk,jppoc) )     & 
     137                   &    + ( 127.8 * 0.3 * trb(ji,jj,jk,jpdoc) + 725.7 * trb(ji,jj,jk,jppoc) ) 
    150138               zaggdfea = zlam1a * xstep * zfecoll 
    151139               ! 
    152                zlam1b   = 3.53E3 * trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 
     140               zlam1b   = ( 1.94 * xdiss(ji,jj,jk) + 1.37 ) * trb(ji,jj,jk,jpgoc) 
    153141               zaggdfeb = zlam1b * xstep * zfecoll 
    154142               ! 
    155143               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb & 
    156                &                     - zcoag - precip(ji,jj,jk) 
    157                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea 
    158                tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * zdenom2 + zaggdfeb 
    159                zscav3d(ji,jj,jk)   = zscave 
     144               &                     - precip(ji,jj,jk) - precipno3(ji,jj,jk) 
     145               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * scaveff * trb(ji,jj,jk,jppoc) / ztrc 
     146               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * scaveff * trb(ji,jj,jk,jpgoc) / ztrc 
     147 
     148               ! Precipitated iron is supposed to be permanently lost. 
     149               ! Scavenged iron is supposed to be released back to seawater 
     150               ! when POM is solubilized. This is highly uncertain as probably 
     151               ! a significant part of it may be rescavenged back onto  
     152               ! the particles. An efficiency factor is applied that is read 
     153               ! in the namelist.  
     154               ! See for instance Tagliabue et al. (2019). 
     155               ! Aggregated FeL is considered as biogenic Fe as it  
     156               ! probably remains  complexed when the particle is solubilized. 
     157               ! ------------------------------------------------------------- 
     158               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zaggdfea 
     159               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zaggdfeb 
     160               zscav3d(ji,jj,jk)   = zscave  
    160161               zcoll3d(ji,jj,jk)   = zaggdfea + zaggdfeb 
     162               zprecip3d(ji,jj,jk) = precip(ji,jj,jk) + precipno3(ji,jj,jk) 
    161163               ! 
    162164            END DO 
     
    175177 
    176178                  ! Coagulation of ligands due to various processes (Brownian, shear, diff. sedimentation 
    177                   ! Coefficients are taken from the p4zagg 
     179                  ! Coefficients are taken from p4zagg 
    178180                  ! ------------------------------------------------------------------------------------- 
    179                   zlam1a   = ( 0.369  * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4  * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk)    & 
    180                       &    + ( 114.   * 0.3 * trb(ji,jj,jk,jpdoc) ) 
     181                  zlam1a   = ( 12.0  * 0.3 * trb(ji,jj,jk,jpdoc) + 9.05  * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk)    & 
     182                      &    + ( 2.49  * trb(ji,jj,jk,jppoc) )     & 
     183                      &    + ( 127.8 * 0.3 * trb(ji,jj,jk,jpdoc) + 725.7 * trb(ji,jj,jk,jppoc) ) 
    181184                  ! 
    182                   zlam1b   = 3.53E3 *   trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 
    183  
     185                  zlam1b   = ( 1.94 * xdiss(ji,jj,jk) + 1.37 ) * trb(ji,jj,jk,jpgoc) 
    184186                  ! 50% of the ligands are supposed to be in the colloidal size fraction 
    185                   zligco   = 0.5 * trn(ji,jj,jk,jplgw) 
    186                   zaggliga = zlam1a * xstep * zligco 
     187                  ! as for FeL 
     188                  zligco   = 0.5 * trb(ji,jj,jk,jplgw) 
     189                  zaggliga = zlam1a * xstep * zligco  
    187190                  zaggligb = zlam1b * xstep * zligco 
    188191                  tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) - zaggliga - zaggligb 
     
    191194            END DO 
    192195         END DO 
    193          ! 
    194          plig(:,:,:) =  MAX( 0., ( ( zFeL1(:,:,:) * 1E-9 ) / ( trb(:,:,:,jpfer) +rtrn ) ) ) 
    195196         ! 
    196197      ENDIF 
     
    206207         IF( iom_use("FESCAV") )  CALL iom_put("FESCAV" , zscav3d(:,:,:)  * 1e9 * tmask(:,:,:) * zrfact2 ) 
    207208         IF( iom_use("FECOLL") )  CALL iom_put("FECOLL" , zcoll3d(:,:,:)  * 1e9 * tmask(:,:,:) * zrfact2 ) 
     209         IF( iom_use("FEPREC") )  CALL iom_put("FEPREC" , zprecip3d(:,:,:)  * 1e9 * tmask(:,:,:) * zrfact2 ) 
    208210         IF( iom_use("LGWCOLL"))  CALL iom_put("LGWCOLL", zlcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 
    209211      ENDIF 
     
    234236      INTEGER ::   ios   ! Local integer  
    235237      !! 
    236       NAMELIST/nampisfer/ ln_ligvar, xlam1, xlamdust, ligand, kfep  
     238      NAMELIST/nampisfer/ ln_ligvar, xlam1, xlamdust, ligand, kfep, scaveff  
    237239      !!---------------------------------------------------------------------- 
    238240      ! 
     
    258260         WRITE(numout,*) '      ligand concentration in the ocean         ligand       =', ligand 
    259261         WRITE(numout,*) '      rate constant for nanoparticle formation  kfep         =', kfep 
     262         WRITE(numout,*) '      Scavenged iron that is added to POFe      scaveff      =', scaveff 
    260263      ENDIF 
    261264      !  
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zflx.F90

    r11536 r14276  
    359359      IF( ln_presatm ) THEN 
    360360         CALL fld_read( kt, 1, sf_patm )               !* input Patm provided at kt + 1/2 
    361          patm(:,:) = sf_patm(1)%fnow(:,:,1)                        ! atmospheric pressure 
     361         patm(:,:) = sf_patm(1)%fnow(:,:,1)/101325.0     ! atmospheric pressure 
    362362      ENDIF 
    363363      ! 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zint.F90

    r12537 r14276  
    3636      ! 
    3737      INTEGER  :: ji, jj                 ! dummy loop indices 
    38       REAL(wp) :: zvar                   ! local variable 
     38      REAL(wp) :: zrum, zcodel, zargu, zvar 
    3939      !!--------------------------------------------------------------------- 
    4040      ! 
     
    4444      ! ------------------------------------------- 
    4545      ! Generic temperature dependence (Eppley, 1972) 
    46       tgfunc (:,:,:) = EXP( 0.063913 * tsn(:,:,:,jp_tem) ) 
     46      tgfunc (:,:,:) = EXP( 0.0631 * tsn(:,:,:,jp_tem) ) 
    4747      ! Temperature dependence of mesozooplankton (Buitenhuis et al. (2005)) 
    48       tgfunc2(:,:,:) = EXP( 0.07608  * tsn(:,:,:,jp_tem) ) 
    49       ! Temperature dependence of picophytoplankton (Stawiarsky et al., 2016) 
    50       tgfunc3(:,:,:) = EXP( 0.0825   * tsn(:,:,:,jp_tem) ) 
     48      tgfunc2(:,:,:) = EXP( 0.0761  * tsn(:,:,:,jp_tem) ) 
    5149 
    5250      ! Computation of the silicon dependant half saturation  constant for silica uptake 
     
    6967      ENDIF 
    7068      ! 
     69      ! compute the day length depending on latitude and the day 
     70      ! Astronomical parameterization taken from HAMOCC3 
     71      zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp ) 
     72      zcodel = ASIN(  SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp )  ) 
     73 
     74      ! day length in hours 
     75      strn(:,:) = 0. 
     76      DO jj = 1, jpj 
     77         DO ji = 1, jpi 
     78            zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 
     79            zargu = MAX( -1., MIN(  1., zargu ) ) 
     80            strn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. ) 
     81         END DO 
     82      END DO 
     83      ! 
    7184      IF( ln_timing )   CALL timing_stop('p4z_int') 
    7285      ! 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zlim.F90

    r13233 r14276  
    6363   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanofer   !: Limitation of Fe uptake by nanophyto 
    6464   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatfer   !: Limitation of Fe uptake by diatoms 
     65   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xqfuncfecd, xqfuncfecn 
    6566 
    6667   ! Coefficient for iron limitation following Flynn and Hipkin (1999) 
     
    9091      ! 
    9192      INTEGER  ::   ji, jj, jk 
    92       REAL(wp) ::   zlim1, zlim2, zlim3, zlim4, zno3, zferlim, zcoef 
     93      REAL(wp) ::   zlim1, zlim2, zlim3, zlim4, zcoef 
    9394      REAL(wp) ::   z1_trbdia, z1_trbphy, ztem1, ztem2, zetot1, zetot2 
    94       REAL(wp) ::   zdenom, zratio, zironmin 
     95      REAL(wp) ::   zdenom, zratio, zironmin, zbactno3, zbactnh4 
    9596      REAL(wp) ::   zconc1d, zconc1dnh4, zconc0n, zconc0nnh4    
    9697      REAL(wp) ::   fananof, fadiatf, znutlim, zfalim 
     98      REAL(wp) ::   znutlimtot, zlimno3, zlimnh4, zbiron 
    9799      !!--------------------------------------------------------------------- 
    98100      ! 
    99101      IF( ln_timing )   CALL timing_start('p4z_lim') 
    100102      ! 
    101       sizena(:,:,:) = 0.0  ;  sizeda(:,:,:) = 0.0 
     103      sizena(:,:,:) = 1.0  ;  sizeda(:,:,:) = 1.0 
    102104      ! 
    103105      DO jk = 1, jpkm1 
    104106         DO jj = 1, jpj 
    105107            DO ji = 1, jpi 
    106                 
    107                ! Tuning of the iron concentration to a minimum level that  
    108                ! is set to the detection limit 
    109                ! -------------------------------------------------------- 
    110                zno3    = trb(ji,jj,jk,jpno3) / 40.e-6 
    111                zferlim = MAX( 3e-11 * zno3 * zno3, 5e-12 ) 
    112                zferlim = MIN( zferlim, 7e-11 ) 
    113                trb(ji,jj,jk,jpfer) = MAX( trb(ji,jj,jk,jpfer), zferlim ) 
    114  
    115108               ! Computation of a variable Ks of diatoms taking into account 
    116109               ! that increasing biomass is made of generally bigger cells 
     
    134127 
    135128               ! Nanophytoplankton 
    136                znutlim = biron(ji,jj,jk) / concnfe(ji,jj,jk) 
     129               zbiron = ( 75.0 * ( 1.0 - plig(ji,jj,jk) ) + plig(ji,jj,jk) ) * biron(ji,jj,jk) 
     130               znutlim = zbiron / concnfe(ji,jj,jk) 
    137131               fananof = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    138132 
    139133               ! Diatoms 
    140                znutlim = biron(ji,jj,jk) / concdfe(ji,jj,jk) 
     134               znutlim = zbiron / concdfe(ji,jj,jk) 
    141135               fadiatf = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    142136 
     
    144138               ! heterotrophic bacteria 
    145139               ! ------------------------------------------------- 
    146                zdenom = 1. /  ( concbno3 * concbnh4 + concbnh4 * trb(ji,jj,jk,jpno3) + concbno3 * trb(ji,jj,jk,jpnh4) ) 
    147                xnanono3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * concbnh4 * zdenom 
    148                xnanonh4(ji,jj,jk) = trb(ji,jj,jk,jpnh4) * concbno3 * zdenom 
     140               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( concbno3 + trb(ji,jj,jk,jpnh4) ) 
     141               zlimno3 = trb(ji,jj,jk,jpno3) / ( concbno3 + trb(ji,jj,jk,jpno3) ) 
     142               znutlimtot = ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) / ( concbno3 + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 
     143               zbactnh4 = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
     144               zbactno3 = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
    149145               ! 
    150                zlim1    = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) 
     146               zlim1    = zbactno3 + zbactnh4 
    151147               zlim2    = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + concbnh4 ) 
    152148               zlim3    = trb(ji,jj,jk,jpfer) / ( concbfe + trb(ji,jj,jk,jpfer) ) 
     
    166162               ! Limitation of Fe uptake (Quota formalism) 
    167163               zfalim = (1.-fananof) / fananof 
    168                xnanofer(ji,jj,jk) = (1. - fananof) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * concnfe(ji,jj,jk) ) 
     164               xnanofer(ji,jj,jk) = (1. - fananof) * zbiron / ( zbiron + zfalim * concnfe(ji,jj,jk) ) 
    169165 
    170166               ! Limitation of nanophytoplankton growth 
    171                zdenom = 1. /  ( zconc0n * zconc0nnh4 + zconc0nnh4 * trb(ji,jj,jk,jpno3) + zconc0n * trb(ji,jj,jk,jpnh4) ) 
    172                xnanono3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * zconc0nnh4 * zdenom 
    173                xnanonh4(ji,jj,jk) = trb(ji,jj,jk,jpnh4) * zconc0n    * zdenom 
     167               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( zconc0n + trb(ji,jj,jk,jpnh4) ) 
     168               zlimno3 = trb(ji,jj,jk,jpno3) / ( zconc0n + trb(ji,jj,jk,jpno3) ) 
     169               znutlimtot = ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) / ( zconc0n + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 
     170               xnanonh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
     171               xnanono3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
    174172               ! 
    175173               zlim1    = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) 
     
    181179               ! proposed by Flynn and Hipkin (1999) 
    182180               zironmin = xcoef1 * trb(ji,jj,jk,jpnch) * z1_trbphy + xcoef2 * zlim1 + xcoef3 * xnanono3(ji,jj,jk) 
     181               xqfuncfecn(ji,jj,jk) = zironmin + qnfelim 
    183182               zlim3    = MAX( 0.,( zratio - zironmin ) / qnfelim ) 
    184183               xnanopo4(ji,jj,jk) = zlim2 
     
    190189               ! Limitation of Fe uptake (Quota formalism) 
    191190               zfalim = (1.-fadiatf) / fadiatf 
    192                xdiatfer(ji,jj,jk) = (1. - fadiatf) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * concdfe(ji,jj,jk) ) 
     191               xdiatfer(ji,jj,jk) = (1. - fadiatf) * zbiron / ( zbiron + zfalim * concdfe(ji,jj,jk) ) 
    193192 
    194193               ! Limitation of diatoms growth 
    195                zdenom   = 1. / ( zconc1d * zconc1dnh4 + zconc1dnh4 * trb(ji,jj,jk,jpno3) + zconc1d * trb(ji,jj,jk,jpnh4) ) 
    196                xdiatno3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * zconc1dnh4 * zdenom 
    197                xdiatnh4(ji,jj,jk) = trb(ji,jj,jk,jpnh4) * zconc1d    * zdenom 
     194               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( zconc1d + trb(ji,jj,jk,jpnh4) ) 
     195               zlimno3 = trb(ji,jj,jk,jpno3) / ( zconc1d + trb(ji,jj,jk,jpno3) ) 
     196               znutlimtot = ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) / ( zconc1d + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 
     197               xdiatnh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn )  
     198               xdiatno3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
    198199               ! 
    199200               zlim1    = xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) 
     
    206207               ! proposed by Flynn and Hipkin (1999) 
    207208               zironmin = xcoef1 * trb(ji,jj,jk,jpdch) * z1_trbdia + xcoef2 * zlim1 + xcoef3 * xdiatno3(ji,jj,jk) 
     209               xqfuncfecd(ji,jj,jk) = zironmin + qdfelim 
    208210               zlim4    = MAX( 0., ( zratio - zironmin ) / qdfelim ) 
    209211               xdiatpo4(ji,jj,jk) = zlim2 
     
    238240         DO jj = 1, jpj 
    239241            DO ji = 1, jpi 
    240                zlim1 =  ( trb(ji,jj,jk,jpno3) * concnnh4 + trb(ji,jj,jk,jpnh4) * concnno3 )    & 
    241                   &   / ( concnno3 * concnnh4 + concnnh4 * trb(ji,jj,jk,jpno3) + concnno3 * trb(ji,jj,jk,jpnh4) )  
     242               zlim1  = xnanonh4(ji,jj,jk) + xnanono3(ji,jj,jk)  
    242243               zlim2  = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + concnnh4 ) 
    243                zlim3  = trb(ji,jj,jk,jpfer) / ( trb(ji,jj,jk,jpfer) +  5.E-11   ) 
    244                ztem1  = MAX( 0., tsn(ji,jj,jk,jp_tem) ) 
     244               zlim3  = trb(ji,jj,jk,jpfer) / ( trb(ji,jj,jk,jpfer) +  6.E-11   ) 
     245               ztem1  = MAX( 0., tsn(ji,jj,jk,jp_tem) + 1.8) 
    245246               ztem2  = tsn(ji,jj,jk,jp_tem) - 10. 
    246247               zetot1 = MAX( 0., etot_ndcy(ji,jj,jk) - 1.) / ( 4. + etot_ndcy(ji,jj,jk) )  
    247                zetot2 = 30. / ( 30. + etot_ndcy(ji,jj,jk) )  
     248               zetot2 = 30. / ( 30.0 + etot_ndcy(ji,jj,jk) ) 
    248249 
    249250               xfracal(ji,jj,jk) = caco3r * MIN( zlim1, zlim2, zlim3 )                  & 
     
    375376         &      xlimbac (jpi,jpj,jpk), xlimbacl(jpi,jpj,jpk),       & 
    376377         &      concnfe (jpi,jpj,jpk), concdfe (jpi,jpj,jpk),       & 
     378         &      xqfuncfecn(jpi,jpj,jpk), xqfuncfecd(jpi,jpj,jpk),   & 
    377379         &      xlimsi  (jpi,jpj,jpk), STAT=p4z_lim_alloc ) 
    378380      ! 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zlys.F90

    r13233 r14276  
    5757      ! 
    5858      INTEGER  ::   ji, jj, jk, jn 
    59       REAL(wp) ::   zdispot, zfact, zcalcon 
     59      REAL(wp) ::   zdispot, zfact, zcalcon, zkd 
    6060      REAL(wp) ::   zomegaca, zexcess, zexcess0 
    6161      CHARACTER (len=25) ::   charout 
     
    6565      IF( ln_timing )  CALL timing_start('p4z_lys') 
    6666      ! 
    67       zco3    (:,:,:) = 0. 
    68       zcaldiss(:,:,:) = 0. 
     67      zco3    (:,:,:) = 0._wp 
     68      zcaldiss(:,:,:) = 0._wp     ;     zco3sat(:,:,:) = 0._wp 
    6969      zhinit  (:,:,:) = hi(:,:,:) * 1000. / ( rhop(:,:,:) + rtrn ) 
    7070      ! 
     
    106106               excess(ji,jj,jk) = 1._wp - zomegaca 
    107107               zexcess0 = MAX( 0., excess(ji,jj,jk) ) 
    108                zexcess  = zexcess0**nca 
     108               IF (zomegaca < 0.8) THEN 
     109                  zexcess  = zexcess0**nca 
     110                 ! AMOUNT CACO3 THAT RE-ENTERS SOLUTION 
     111                  zdispot = kdca * zexcess * trb(ji,jj,jk,jpcal) 
     112               ELSE 
     113                  zkd = kdca * 0.1**(nca - 0.4) 
     114                  zexcess  = zexcess0**0.4 
     115                  zdispot = zkd * zexcess * trb(ji,jj,jk,jpcal) 
     116               ENDIF 
    109117 
    110                ! AMOUNT CACO3 THAT RE-ENTERS SOLUTION 
    111                zdispot = kdca * zexcess * trb(ji,jj,jk,jpcal) 
    112118               ! CHANGE OF [CO3--] , [ALK], PARTICULATE [CACO3], 
    113119               ! AND [SUM(CO2)] DUE TO CACO3 DISSOLUTION/PRECIPITATION 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zmeso.F90

    r13234 r14276  
    8989      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrarem, zgraref, zgrapoc, zgrapof, zgrabsi 
    9090      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zgramigrem, zgramigref, zgramigpoc, zgramigpof 
    91       REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zstrn, zgramigbsi 
     91      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zgramigbsi 
    9292      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   zw3d, zz2ligprod 
    9393      !!--------------------------------------------------------------------- 
     
    236236               zgraztotn = zgrazdc * quotad(ji,jj,jk) + zgrazz + zgraznc * quotan(ji,jj,jk)   & 
    237237               &   + zgrazpoc + zgrazffep + zgrazffeg 
    238                zgraztotf = zgrazdf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg 
     238               zgraztotf = zgrazdf + zgraznf + zgrazz * feratz + zgrazpof + zgrazfffp + zgrazfffg 
    239239 
    240240               ! Total grazing ( grazing by microzoo is already computed in p4zmicro ) 
     
    251251               zgrasratf =  ( zgraztotf + rtrn )/ ( zgraztotc + rtrn ) 
    252252               zgrasratn =  ( zgraztotn + rtrn )/ ( zgraztotc + rtrn ) 
    253                zepshert  = MIN( 1., zgrasratn, zgrasratf / ferat3) 
     253               zepshert  = MIN( 1., zgrasratn, zgrasratf / feratm) 
    254254               zbeta     = MAX(0., (epsher2 - epsher2min) ) 
    255255               ! Food quantity deprivation of GGE 
     
    298298               zprcaca = part2 * zprcaca 
    299299               tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrazcal - zprcaca 
    300                tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * ( zgrazcal + zprcaca ) 
     300               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + 2. * ( zgrazcal - zprcaca ) 
    301301               tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) - zgrazcal + zprcaca 
    302302  
     
    305305               zgrarem(ji,jj,jk) = zgraztotc * ( 1. - zepsherv - unass2 ) & 
    306306               &         + ( 1. - epsher2 - unass2 ) / ( 1. - epsher2 ) * ztortz 
    307                zgraref(ji,jj,jk) = zgraztotc * MAX( 0. , ( 1. - unass2 ) * zgrasratf - ferat3 * zepsherv )    & 
    308                &         + ferat3 * ( ( 1. - epsher2 - unass2 ) /( 1. - epsher2 ) * ztortz ) 
     307               zgraref(ji,jj,jk) = zgraztotc * MAX( 0. , ( 1. - unass2 ) * zgrasratf - feratm * zepsherv )    & 
     308               &         + feratm * ( ( 1. - epsher2 - unass2 ) /( 1. - epsher2 ) * ztortz ) 
    309309               zgrapoc(ji,jj,jk) = zgraztotc * unass2 + zmortzgoc 
    310                zgrapof(ji,jj,jk) = zgraztotf * unass2 + ferat3 * zmortzgoc 
     310               zgrapof(ji,jj,jk) = zgraztotf * unass2 + feratm * zmortzgoc 
    311311            END DO  
    312312         END DO 
     
    320320         ALLOCATE( zgramigrem(jpi,jpj), zgramigref(jpi,jpj), zgramigpoc(jpi,jpj), zgramigpof(jpi,jpj) ) 
    321321         ALLOCATE( zgramigbsi(jpi,jpj) ) 
    322          ALLOCATE( zstrn(jpi,jpj) ) 
    323322         zgramigrem(:,:) = 0.0    ;   zgramigref(:,:) = 0.0 
    324323         zgramigpoc(:,:) = 0.0    ;   zgramigpof(:,:) = 0.0 
    325324         zgramigbsi(:,:) = 0.0 
    326  
    327          ! compute the day length depending on latitude and the day 
    328          zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp ) 
    329          zcodel = ASIN(  SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp )  ) 
    330  
    331          ! day length in hours 
    332          zstrn(:,:) = 0. 
    333          DO jj = 1, jpj 
    334             DO ji = 1, jpi 
    335                zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 
    336                zargu = MAX( -1., MIN(  1., zargu ) ) 
    337                zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. ) 
    338                zstrn(ji,jj) = MIN(0.75, MAX( 0.25, zstrn(ji,jj) / 24.) ) 
    339             END DO 
    340          END DO 
    341325 
    342326        ! Compute the amount of materials that will go into vertical migration 
     
    347331            DO jj = 1, jpj 
    348332               DO ji = 1, jpi 
    349                   zmigreltime = (1. - zstrn(ji,jj)) 
     333                  zmigreltime = (1. - strn(ji,jj)) 
    350334                  IF ( gdept_n(ji,jj,jk) <= heup(ji,jj) ) THEN 
    351335                     zgramigrem(ji,jj) = zgramigrem(ji,jj) + xfracmig * zgrarem(ji,jj,jk) * (1. - zmigreltime )    & 
     
    389373         ! ------------------------------ 
    390374         DEALLOCATE( zgramigrem, zgramigref, zgramigpoc, zgramigpof, zgramigbsi ) 
    391          DEALLOCATE( zstrn ) 
    392  
    393375      ! End of the ln_dvm_meso part 
    394376      ENDIF 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zmicro.F90

    r13234 r14276  
    187187               zgrasratf = ( zgraztotf + rtrn ) / ( zgraztotc + rtrn ) 
    188188               zgrasratn = ( zgraztotn + rtrn ) / ( zgraztotc + rtrn ) 
    189                zepshert  =  MIN( 1., zgrasratn, zgrasratf / ferat3) 
     189               zepshert  =  MIN( 1., zgrasratn, zgrasratf / feratz) 
    190190               zbeta     = MAX(0., (epsher - epshermin) ) 
    191191               ! Food quantity deprivation of the GGE 
     
    196196               zepsherv  = zepsherf * zepshert * zepsherq 
    197197               ! Excretion of Fe 
    198                zgrafer   = zgraztotc * MAX( 0. , ( 1. - unass ) * zgrasratf - ferat3 * zepsherv )  
     198               zgrafer   = zgraztotc * MAX( 0. , ( 1. - unass ) * zgrasratf - feratz * zepsherv )  
    199199               ! Excretion of C, N, P 
    200200               zgrarem   = zgraztotc * ( 1. - zepsherv - unass ) 
     
    236236               prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zmortz 
    237237               conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zgrazpoc 
    238                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz - zgrazpof 
     238               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + feratz * zmortz - zgrazpof 
    239239               ! 
    240240               ! Calcite remineralization due to zooplankton activity 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zmort.F90

    r13233 r14276  
    2525   REAL(wp), PUBLIC ::   wchln    !: Quadratic mortality rate of nanophytoplankton 
    2626   REAL(wp), PUBLIC ::   wchld    !: Quadratic mortality rate of diatoms 
    27    REAL(wp), PUBLIC ::   wchldm   !: Maximum quadratic mortality rate of diatoms 
    2827   REAL(wp), PUBLIC ::   mpratn   !: Linear mortality rate of nanophytoplankton 
    2928   REAL(wp), PUBLIC ::   mpratd   !: Linear mortality rate of diatoms 
     
    6362      !!--------------------------------------------------------------------- 
    6463      INTEGER  ::   ji, jj, jk 
    65       REAL(wp) ::   zsizerat, zcompaph 
     64      REAL(wp) ::   zcompaph 
    6665      REAL(wp) ::   zfactfe, zfactch, zprcaca, zfracal 
    67       REAL(wp) ::   ztortp , zrespp , zmortp  
     66      REAL(wp) ::   ztortp , zrespp , zmortp, zlim1, zlim2  
    6867      CHARACTER (len=25) ::   charout 
    6968      !!--------------------------------------------------------------------- 
     
    7675            DO ji = 1, jpi 
    7776               zcompaph = MAX( ( trb(ji,jj,jk,jpphy) - 1e-8 ), 0.e0 ) 
    78                !     When highly limited by macronutrients, very small cells  
    79                !     dominate the community. As a consequence, aggregation 
    80                !     due to turbulence is negligible. Mortality is also set 
    81                !     to 0 
    82                zsizerat = MIN(1., MAX( 0., (quotan(ji,jj,jk) - 0.2) / 0.3) ) * trb(ji,jj,jk,jpphy) 
    83  
    8477               ! Quadratic mortality of nano due to aggregation during 
    8578               ! blooms (Doney et al. 1996) 
    8679               ! ----------------------------------------------------- 
    87                zrespp = wchln * 1.e6 * xstep * xdiss(ji,jj,jk) * zcompaph * zsizerat  
     80               zlim2   = xlimphy(ji,jj,jk) * xlimphy(ji,jj,jk) 
     81               zlim1   = 0.25 * ( 1. - zlim2 ) / ( 0.25 + zlim2 ) * trb(ji,jj,jk,jpphy) 
     82               zrespp  = wchln * 1.e6 * xstep * zlim1 * xdiss(ji,jj,jk) * zcompaph 
    8883 
    8984               ! Phytoplankton linear mortality 
     
    9186               ! extinction of nanophyto in highly limited areas 
    9287               ! ---------------------------------------------------- 
    93                ztortp = mpratn * xstep * zcompaph / ( xkmort + trb(ji,jj,jk,jpphy) ) * zsizerat 
     88               ztortp = mpratn * xstep * zcompaph / ( xkmort + trb(ji,jj,jk,jpphy) ) * trb(ji,jj,jk,jpphy) 
    9489 
    9590               zmortp = zrespp + ztortp 
     
    170165               zlim2   = xlimdia(ji,jj,jk) * xlimdia(ji,jj,jk) 
    171166               zlim1   = 0.25 * ( 1. - zlim2 ) / ( 0.25 + zlim2 )  
    172                zrespp2 = 1.e6 * xstep * (  wchld + wchldm * zlim1 ) * xdiss(ji,jj,jk) * zcompadi * trb(ji,jj,jk,jpdia) 
     167               zrespp2 = 1.e6 * xstep * wchld * zlim1 * xdiss(ji,jj,jk) * zcompadi * trb(ji,jj,jk,jpdia) 
    173168 
    174169               ! Phytoplankton linear mortality 
     
    228223      INTEGER ::   ios   ! Local integer 
    229224      ! 
    230       NAMELIST/namp4zmort/ wchln, wchld, wchldm, mpratn, mpratd 
     225      NAMELIST/namp4zmort/ wchln, wchld, mpratn, mpratd 
    231226      !!---------------------------------------------------------------------- 
    232227      ! 
     
    249244         WRITE(numout,*) '      quadratic mortality of phytoplankton        wchln  =', wchln 
    250245         WRITE(numout,*) '      maximum quadratic mortality of diatoms      wchld  =', wchld 
    251          WRITE(numout,*) '      maximum quadratic mortality of diatoms      wchldm =', wchldm 
    252246         WRITE(numout,*) '      phytoplankton mortality rate                mpratn =', mpratn 
    253247         WRITE(numout,*) '      Diatoms mortality rate                      mpratd =', mpratd 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zopt.F90

    r13233 r14276  
    6767      REAL(wp), DIMENSION(jpi,jpj    ) :: zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4 
    6868      REAL(wp), DIMENSION(jpi,jpj    ) :: zqsr100, zqsr_corr 
    69       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpar, ze0, ze1, ze2, ze3, zchl3d 
     69      REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze0, ze1, ze2, ze3, zchl3d 
    7070      !!--------------------------------------------------------------------- 
    7171      ! 
     
    206206                 heup(ji,jj) = gdepw_n(ji,jj,jk+1)     ! Euphotic layer depth 
    207207              ENDIF 
    208               IF( etot_ndcy(ji,jj,jk) * tmask(ji,jj,jk) >= 0.50 )  THEN 
     208              IF( etot_ndcy(ji,jj,jk) * tmask(ji,jj,jk) >= 0.10 )  THEN 
    209209                 heup_01(ji,jj) = gdepw_n(ji,jj,jk+1)  ! Euphotic layer depth (light level definition) 
    210210              ENDIF 
     
    235235      END DO 
    236236      ! 
    237       emoy(:,:,:) = etot(:,:,:)       ! PAR 
    238       zpar(:,:,:) = etot_ndcy(:,:,:)  ! diagnostic : PAR with no diurnal cycle  
     237      emoy(:,:,:)  = etot(:,:,:)       ! PAR 
     238      etotm(:,:,:) = etot_ndcy(:,:,:)  ! diagnostic : PAR with no diurnal cycle  
    239239      ! 
    240240      DO jk = 1, nksrp 
     
    244244                  z1_dep = 1. / ( zdepmoy(ji,jj) + rtrn ) 
    245245                  emoy (ji,jj,jk) = zetmp1(ji,jj) * z1_dep 
    246                   zpar (ji,jj,jk) = zetmp2(ji,jj) * z1_dep 
     246                  etotm(ji,jj,jk) = zetmp2(ji,jj) * z1_dep 
    247247               ENDIF 
    248248            END DO 
     
    313313        IF( knt == nrdttrc ) THEN 
    314314           IF( iom_use( "Heup"  ) ) CALL iom_put( "Heup" , heup(:,:  ) * tmask(:,:,1) )  ! euphotic layer deptht 
    315            IF( iom_use( "PARDM" ) ) CALL iom_put( "PARDM", zpar(:,:,:) * tmask(:,:,:) )  ! Photosynthetically Available Radiation 
     315           IF( iom_use( "PARDM" ) ) CALL iom_put( "PARDM", etotm(:,:,:) * tmask(:,:,:) )  ! Photosynthetically Available Radiation 
    316316           IF( iom_use( "PAR"   ) ) CALL iom_put( "PAR"  , emoy(:,:,:) * tmask(:,:,:) )  ! Photosynthetically Available Radiation 
    317317        ENDIF 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zprod.F90

    r13233 r14276  
    6767      INTEGER  ::   ji, jj, jk 
    6868      REAL(wp) ::   zsilfac, znanotot, zdiattot, zconctemp, zconctemp2 
    69       REAL(wp) ::   zratio, zmax, zsilim, ztn, zadap, zlim, zsilfac2, zsiborn 
     69      REAL(wp) ::   zratio, zmax, zsilim, ztn, zadap, zlim, zsiborn 
    7070      REAL(wp) ::   zprod, zproreg, zproreg2, zprochln, zprochld 
    7171      REAL(wp) ::   zdocprod, zpislopen, zpisloped, zfact 
    72       REAL(wp) ::   zratiosi, zmaxsi, zlimfac, zsizetmp 
    73       REAL(wp) ::   zrum, zcodel, zargu, zval, zfeup, chlcnm_n, chlcdm_n 
     72      REAL(wp) ::   zratiosi, zmaxsi, zlimfac, zsizetmp, zfecnm, zfecdm 
     73      REAL(wp) ::   zrum, zcodel, zargu, zval, zfeup 
    7474      CHARACTER (len=25) :: charout 
    7575      REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zw2d 
    7676      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d 
    77       REAL(wp), DIMENSION(jpi,jpj    ) :: zstrn 
    7877      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprmaxn,zprmaxd 
    7978      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpislopeadn, zpislopeadd, zysopt   
     
    9493      zprbio  (:,:,:) = 0._wp ; zprchld (:,:,:) = 0._wp ; zprchln (:,:,:) = 0._wp  
    9594      zmxl_fac(:,:,:) = 0._wp ; zmxl_chl(:,:,:) = 0._wp  
     95      consfe3 (:,:,:) = 0._wp 
    9696 
    9797      ! Computation of the maximimum production. Based on a Q10 description 
     
    100100      zprmaxn(:,:,:) = 0.8_wp * r1_rday * tgfunc(:,:,:) 
    101101      zprmaxd(:,:,:) = zprmaxn(:,:,:) 
    102  
    103       ! compute the day length depending on latitude and the day 
    104       ! Astronomical parameterization taken from HAMOCC3 
    105       zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp ) 
    106       zcodel = ASIN(  SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp )  ) 
    107  
    108       ! day length in hours 
    109       zstrn(:,:) = 0. 
    110       DO jj = 1, jpj 
    111          DO ji = 1, jpi 
    112             zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 
    113             zargu = MAX( -1., MIN(  1., zargu ) ) 
    114             zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. ) 
    115          END DO 
    116       END DO 
    117102 
    118103      ! Impact of the day duration and light intermittency on phytoplankton growth 
     
    127112            DO ji = 1, jpi 
    128113               IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    129                   zval = MAX( 1., zstrn(ji,jj) ) 
     114                  zval = MAX( 1., strn(ji,jj) ) 
    130115                  IF( gdepw_n(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 
    131116                     zval = zval * MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) 
     
    225210                   ! Si/C of diatoms 
    226211                   ! ------------------------ 
    227                    ! Si/C increases with iron stress and silicate availability (zsilfac) 
     212                   ! Si/C increases with iron stress and silicate availability 
    228213                   ! Si/C is arbitrariliy increased for very high Si concentrations 
    229                    ! to mimic the very high ratios observed in the Southern Ocean (zsilfac2) 
     214                   ! to mimic the very high ratios observed in the Southern Ocean (zsilfac) 
    230215                   ! A parameterization derived from Flynn (2003) is used for the control 
    231216                   ! when Si is not limiting which is similar to the parameterisation 
     
    236221                 zsiborn = trb(ji,jj,1,jpsil)**3 
    237222                 IF (gphit(ji,jj) < -30.0 ) THEN 
    238                    zsilfac2 = 1. + 2. * zsiborn / ( zsiborn + xksi2**3 ) 
     223                   zsilfac = 1. + 2. * zsiborn / ( zsiborn + xksi2**3 ) 
    239224                 ELSE 
    240                    zsilfac2 = 1. +      zsiborn / ( zsiborn + xksi2**3 ) 
     225                   zsilfac = 1. +      zsiborn / ( zsiborn + xksi2**3 ) 
    241226                 ENDIF 
    242                  zratiosi = 1.0 - trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn ) / ( zsilfac2 * grosip * 3.0 + rtrn ) 
     227                 zratiosi = 1.0 - trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn ) / ( zsilfac * grosip * 3.0 + rtrn ) 
    243228                 zratiosi = MAX(0., MIN(1.0, zratiosi) ) 
    244229                 zmaxsi  = (1.0 + 0.1**4) * zratiosi**4 / ( zratiosi**4 + 0.1**4 ) 
    245230                 IF ( xlimsi(ji,jj,jk) /= xlimdia(ji,jj,jk) ) THEN 
    246                     zysopt(ji,jj,jk) = zlim * zsilfac2 * grosip * 1.0 * zmaxsi 
     231                    zysopt(ji,jj,jk) = zlim * zsilfac * grosip * 1.0 * zmaxsi 
    247232                 ELSE 
    248                     zysopt(ji,jj,jk) = zlim * zsilfac2 * grosip * 1.0 * zsilim**0.7 * zmaxsi 
     233                    zysopt(ji,jj,jk) = zlim * zsilfac * grosip * 1.0 * zsilim**0.7 * zmaxsi 
    249234                 ENDIF 
    250235              ENDIF 
     
    291276                  ! do not suggest it for accimated cells. Uptake is 
    292277                  ! downregulated when the quota is close to the maximum quota 
    293                   zratio = 1.0 - MIN(1.0,trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) * fecnm + rtrn ) ) 
     278                  zfecnm = xqfuncfecn(ji,jj,jk) + ( fecnm - xqfuncfecn(ji,jj,jk) ) * ( xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) ) 
     279                  zratio = 1.0 - MIN(1.0,trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) * zfecnm + rtrn ) ) 
    294280                  zmax   = MAX( 0., MIN( 1.0, zratio**2/ (0.05**2+zratio**2) ) )  
    295                   zprofen(ji,jj,jk) = fecnm * zprmaxn(ji,jj,jk) * ( 1.0 - fr_i(ji,jj) )  & 
     281                  zprofen(ji,jj,jk) = zfecnm * zprmaxn(ji,jj,jk) * ( 1.0 - fr_i(ji,jj) )  & 
    296282                  &          * (1. + 0.8 * xnanono3(ji,jj,jk) / ( rtrn + xnanono3(ji,jj,jk)  & 
    297283                  &          + xnanonh4(ji,jj,jk) ) * (1. - xnanofer(ji,jj,jk) ) )   & 
     
    317303                  ! do not suggest it for accimated cells. Uptake is 
    318304                  ! downregulated when the quota is close to the maximum quota 
    319                   zratio = 1.0 - MIN(1.0, trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) * fecdm + rtrn ) ) 
     305                  zfecdm = xqfuncfecd(ji,jj,jk) + ( fecdm - xqfuncfecd(ji,jj,jk) ) * ( xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) ) 
     306                  zratio = 1.0 - MIN(1.0, trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) * zfecdm + rtrn ) ) 
    320307                  zmax   = MAX( 0., MIN( 1.0, zratio**2/ (0.05**2+zratio**2) ) )  
    321                   zprofed(ji,jj,jk) = fecdm * zprmaxd(ji,jj,jk) * (1.0 - fr_i(ji,jj) )  & 
     308                  zprofed(ji,jj,jk) = zfecdm * zprmaxd(ji,jj,jk) * (1.0 - fr_i(ji,jj) )  & 
    322309                  &          * (1. + 0.8 * xdiatno3(ji,jj,jk) / ( rtrn + xdiatno3(ji,jj,jk)  & 
    323310                  &          + xdiatnh4(ji,jj,jk) ) * (1. - xdiatfer(ji,jj,jk) ) )   & 
     
    339326                  zprod    = rday * zprorcan(ji,jj,jk) * zprchln(ji,jj,jk) * xlimphy(ji,jj,jk) 
    340327                  zprochln = chlcmin * 12. * zprorcan (ji,jj,jk) 
    341  
    342                   ! The maximum reachable Chl quota is modulated by temperature 
    343                   ! following Geider (1987) 
    344                   chlcnm_n   = MIN ( chlcnm, ( chlcnm / (1. - 1.14 / 43.4 *tsn(ji,jj,jk,jp_tem))) * (1. - 1.14 / 43.4 * 20.)) 
    345                   zprochln = zprochln + (chlcnm_n-chlcmin) * 12. * zprod / & 
     328                  zprochln = zprochln + (chlcnm - chlcmin) * 12. * zprod / & 
    346329                                        & (  zpislopeadn(ji,jj,jk) * znanotot +rtrn) 
    347330 
     
    350333                  zprod    = rday * zprorcad(ji,jj,jk) * zprchld(ji,jj,jk) * xlimdia(ji,jj,jk) 
    351334                  zprochld = chlcmin * 12. * zprorcad(ji,jj,jk) 
    352  
    353                   ! The maximum reachable Chl quota is modulated by temperature 
    354                   ! following Geider (1987) 
    355                   chlcdm_n   = MIN ( chlcdm, ( chlcdm / (1. - 1.14 / 43.4 * tsn(ji,jj,jk,jp_tem))) * (1. - 1.14 / 43.4 * 20.)) 
    356                   zprochld = zprochld + (chlcdm_n-chlcmin) * 12. * zprod / & 
     335                  zprochld = zprochld + (chlcdm - chlcmin) * 12. * zprod / & 
    357336                                        & ( zpislopeadd(ji,jj,jk) * zdiattot +rtrn ) 
    358337 
     
    386365                 &                   + ( o2ut + o2nit ) * ( zpronewn(ji,jj,jk) + zpronewd(ji,jj,jk) ) 
    387366                 ! 
    388                  zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) 
    389                  tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zfeup 
     367                 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - ( texcretn * zprofen(ji,jj,jk)    & 
     368                 &                   + texcretd * zprofed(ji,jj,jk) ) 
     369                 consfe3(ji,jj,jk) = ( texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) )     & 
     370                 &                    * 75.0 / ( rtrn + ( plig(ji,jj,jk) + 75.0 * (1.0 - plig(ji,jj,jk) ) ) * trb(ji,jj,jk,jpfer) ) / rfact2 
    390371                 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - zprmaxd(ji,jj,jk) * zysopt(ji,jj,jk)   & 
    391372                 &                   * rfact2 * trb(ji,jj,jk,jpdia) 
     
    401382     ! when ln_ligand is set to .true. in the namelist. Ligand uptake is small  
    402383     ! and based on the FeL model by Morel et al. (2008) and on the study of 
    403      ! Shaked and Lis (2012) 
     384     ! Shaked et al. (2020) 
    404385     ! ------------------------------------------------------------------------- 
    405386     IF( ln_ligand ) THEN 
     
    412393                    zfeup    = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) 
    413394                    tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zdocprod * ldocp    & 
    414                     &       - zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) + 2.E3 * (1.0 - plig(ji,jj,jk) ) ) * lthet 
     395                    &       - zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) + 75.0 * (1.0 - plig(ji,jj,jk) ) ) * lthet 
    415396                    zpligprod1(ji,jj,jk) = zdocprod * ldocp 
    416397                    zpligprod2(ji,jj,jk) = zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) & 
    417                     &                      + 2.E3 * (1.0 - plig(ji,jj,jk) ) ) * lthet 
     398                    &                      + 75.0 * (1.0 - plig(ji,jj,jk) ) ) * lthet 
    418399                 ENDIF 
    419400              END DO 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zrem.F90

    r13233 r14276  
    3535   REAL(wp), PUBLIC ::   xremikn    !: remineralisation rate of DON (p5z)  
    3636   REAL(wp), PUBLIC ::   xremikp    !: remineralisation rate of DOP (p5z)  
    37    REAL(wp), PUBLIC ::   xremik     !: remineralisation rate of DOC (p4z)  
    3837   REAL(wp), PUBLIC ::   nitrif     !: NH4 nitrification rate  
    3938   REAL(wp), PUBLIC ::   xsirem     !: remineralisation rate of biogenic silica 
     
    7170      REAL(wp) ::   zremik, zremikc, zremikn, zremikp, zsiremin, zfact  
    7271      REAL(wp) ::   zsatur, zsatur2, znusil, znusil2, zdep, zdepmin, zfactdep 
    73       REAL(wp) ::   zbactfer, zolimit, zonitr, zrfact2 
    74       REAL(wp) ::   zammonic, zoxyremc, zoxyremn, zoxyremp 
    75       REAL(wp) ::   zosil, ztem, zdenitnh4, zolimic, zolimin, zolimip, zdenitrn, zdenitrp 
     72      REAL(wp) ::   zbactfer, zonitr 
     73      REAL(wp) ::   zammonic, zoxyremc, zosil, ztem, zdenitnh4, zolimic 
    7674      CHARACTER (len=25) :: charout 
    77       REAL(wp), DIMENSION(jpi,jpj    ) :: ztempbac 
    78       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepbac, zolimi, zdepprod, zfacsi, zfacsib, zdepeff, zfebact 
     75      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepbac, zolimi, zfacsi, zfacsib, zdepeff, zfebact 
    7976      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d 
    8077      !!--------------------------------------------------------------------- 
     
    8380      ! 
    8481      ! Initialisation of arrays 
    85       zdepprod(:,:,:) = 1._wp 
    8682      zdepeff (:,:,:) = 0.3_wp 
    87       ztempbac(:,:)   = 0._wp 
    8883      zfacsib(:,:,:)  = xsilab / ( 1.0 - xsilab ) 
    8984      zfebact(:,:,:)  = 0._wp 
     
    9994         DO jj = 1, jpj 
    10095            DO ji = 1, jpi 
    101                zdep = MAX( hmld(ji,jj), heup(ji,jj) ) 
    102                IF( gdept_n(ji,jj,jk) < zdep ) THEN 
    103                   zdepbac(ji,jj,jk) = MIN( 0.7 * ( trb(ji,jj,jk,jpzoo) + 2.* trb(ji,jj,jk,jpmes) ), 4.e-6 ) 
    104                   ztempbac(ji,jj)   = zdepbac(ji,jj,jk) 
    105                ELSE 
     96               zdep = MAX( hmld(ji,jj), heup_01(ji,jj) ) 
     97               zdepbac(ji,jj,jk) = 0.6 * ( MAX(0.0, trb(ji,jj,jk,jpzoo) + trb(ji,jj,jk,jpmes) ) * 1.0E6 )**0.6 * 1.E-6 
     98               IF( gdept_n(ji,jj,jk) >= zdep ) THEN 
    10699                  zdepmin = MIN( 1., zdep / gdept_n(ji,jj,jk) ) 
    107                   zdepbac (ji,jj,jk) = zdepmin**0.683 * ztempbac(ji,jj) 
    108                   zdepprod(ji,jj,jk) = zdepmin**0.273 
    109100                  zdepeff (ji,jj,jk) = zdepeff(ji,jj,jk) * zdepmin**0.3 
    110101               ENDIF 
     
    113104      END DO 
    114105 
    115       IF( ln_p4z ) THEN ! Standard PISCES code 
    116          DO jk = 1, jpkm1 
    117             DO jj = 1, jpj 
    118                DO ji = 1, jpi 
    119                   ! DOC ammonification. Depends on a limitation term of the bacterial activity 
    120                   ! and on the implicit bacteria concentration 
    121                   ! -------------------------------------------------------------------------- 
    122                   zremik = xremik * xstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk)  
    123                   zremik = MAX( zremik, 2.74e-4 * xstep ) 
    124  
    125                   ! Ammonification in oxic waters with oxygen consumption 
    126                   ! ----------------------------------------------------- 
    127                   zolimit = zremik * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc)  
    128                   zolimi(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit )  
    129  
    130                   ! Ammonification in suboxic waters with denitrification 
    131                   ! ----------------------------------------------------- 
    132                   zammonic = zremik * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) 
    133                   denitr(ji,jj,jk)  = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 
    134                   denitr(ji,jj,jk)  = MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, denitr(ji,jj,jk) ) 
    135  
    136                   ! Ammonification in waters depleted in O2 and NO3 based on  
    137                   ! other redox processes 
    138                   ! -------------------------------------------------------- 
    139                   zoxyremc          = zammonic - denitr(ji,jj,jk) 
    140                   ! 
    141                   zolimi (ji,jj,jk) = MAX( 0.e0, zolimi (ji,jj,jk) ) 
    142                   denitr (ji,jj,jk) = MAX( 0.e0, denitr (ji,jj,jk) ) 
    143                   zoxyremc          = MAX( 0.e0, zoxyremc ) 
    144                   ! Update of the TRA arrays 
    145                   tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 
    146                   tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 
    147                   tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr (ji,jj,jk) * rdenit 
    148                   tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zolimi (ji,jj,jk) - denitr(ji,jj,jk) - zoxyremc 
    149                   tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimi (ji,jj,jk) * o2ut 
    150                   tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 
    151                   tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimi(ji,jj,jk) + zoxyremc    & 
    152                   &                     + ( rdenit + 1.) * denitr(ji,jj,jk) ) 
    153                END DO 
    154             END DO 
    155          END DO 
    156       ELSE ! PISCES-QUOTA 
    157          DO jk = 1, jpkm1 
    158             DO jj = 1, jpj 
    159                DO ji = 1, jpi 
    160                   ! DOC ammonification. Depends on a limitation term of the bacterial activity 
    161                   ! and on the implicit bacteria concentration 
    162                   ! --------------------------------------------------------------- 
    163                   zremik = xstep / 1.e-6 * MAX(0.01, xlimbac(ji,jj,jk)) * zdepbac(ji,jj,jk)  
    164                   zremik = MAX( zremik, 2.74e-4 * xstep / xremikc ) 
    165  
    166                   zremikc = xremikc * zremik 
    167                   zremikn = xremikn / xremikc 
    168                   zremikp = xremikp / xremikc 
    169  
    170                   ! Ammonification in oxic waters with oxygen consumption 
    171                   ! ----------------------------------------------------- 
    172                   zolimit = zremikc * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc)  
    173                   zolimic = MAX( 0.e0, MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit ) )  
    174                   zolimi(ji,jj,jk) = zolimic 
    175                   zolimin = zremikn * zolimic * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 
    176                   zolimip = zremikp * zolimic * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn )  
    177  
    178                   ! Ammonification in suboxic waters with denitrification 
    179                   ! ------------------------------------------------------- 
    180                   zammonic = zremikc * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) 
    181                   denitr(ji,jj,jk)  = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 
    182                   denitr(ji,jj,jk)  = MAX(0., MIN(  ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, denitr(ji,jj,jk) ) ) 
    183                   zoxyremc          = MAX(0., zammonic - denitr(ji,jj,jk)) 
    184                   zdenitrn  = zremikn * denitr(ji,jj,jk) * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 
    185                   zdenitrp  = zremikp * denitr(ji,jj,jk) * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 
    186                   zoxyremn  = zremikn * zoxyremc * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 
    187                   zoxyremp  = zremikp * zoxyremc * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 
    188                   ! Update of the TRA arrays 
    189                   tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimip + zdenitrp + zoxyremp 
    190                   tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimin + zdenitrn + zoxyremn 
    191                   tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr(ji,jj,jk) * rdenit 
    192                   tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zolimic - denitr(ji,jj,jk) - zoxyremc 
    193                   tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) - zolimin - zdenitrn - zoxyremn 
    194                   tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) - zolimip - zdenitrp - zoxyremp 
    195                   tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimic * o2ut 
    196                   tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimic + denitr(ji,jj,jk) + zoxyremc 
    197                   tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimin + zoxyremn + ( rdenit + 1.) * zdenitrn ) 
    198                END DO 
    199             END DO 
    200          END DO 
    201          ! 
    202       ENDIF 
     106      DO jk = 1, jpkm1 
     107         DO jj = 1, jpj 
     108            DO ji = 1, jpi 
     109               ! DOC ammonification. Depends on a limitation term of the bacterial activity 
     110               ! and on the implicit bacteria concentration 
     111               ! -------------------------------------------------------------------------- 
     112               zremik = xstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk)  
     113               zremik = MAX( zremik, 2.74e-4 * xstep / xremikc ) 
     114               zremikc = xremikc * zremik 
     115 
     116               ! Ammonification in oxic waters with oxygen consumption 
     117               ! ----------------------------------------------------- 
     118               zolimic = zremikc * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc) 
     119               zolimic = MAX( 0.e0, MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimic ) ) 
     120               zolimi(ji,jj,jk) = zolimic 
     121 
     122               ! Ammonification in suboxic waters with denitrification 
     123               ! ----------------------------------------------------- 
     124               zammonic = zremikc * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) 
     125               denitr(ji,jj,jk)  = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 
     126               denitr(ji,jj,jk)  = MAX(0., MIN(  ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, denitr(ji,jj,jk) ) ) 
     127 
     128               ! Ammonification in waters depleted in O2 and NO3 based on  
     129               ! other redox processes 
     130               ! -------------------------------------------------------- 
     131               zoxyremc          = MAX(0., zammonic - denitr(ji,jj,jk) ) 
     132 
     133               ! Update of the TRA arrays 
     134               tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr(ji,jj,jk) * rdenit 
     135               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - ( zolimic + denitr(ji,jj,jk) + zoxyremc ) 
     136               tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimic * o2ut 
     137               tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimic + denitr(ji,jj,jk) + zoxyremc 
     138               IF ( ln_p4z ) THEN ! PISCES-std 
     139                  tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimic + denitr(ji,jj,jk) + zoxyremc 
     140                  tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimic + denitr(ji,jj,jk) + zoxyremc 
     141                  tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimic + zoxyremc + ( rdenit + 1.) * denitr(ji,jj,jk) ) 
     142               ELSE  ! PISCES-QUOTA (p5z) 
     143                  zremikn = xremikn / xremikc * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 
     144                  zremikp = xremikp / xremikc * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 
     145                  tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zremikp * ( zolimic + denitr(ji,jj,jk) + zoxyremc ) 
     146                  tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zremikn * ( zolimic + denitr(ji,jj,jk) + zoxyremc ) 
     147                  tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) - zremikn * ( zolimic + denitr(ji,jj,jk) + zoxyremc ) 
     148                  tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) - zremikp * ( zolimic + denitr(ji,jj,jk) + zoxyremc ) 
     149                  tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zremikn * ( zolimic + zoxyremc + ( rdenit + 1.) * denitr(ji,jj,jk) ) 
     150               ENDIF 
     151            END DO 
     152         END DO 
     153      END DO 
    203154 
    204155      DO jk = 1, jpkm1 
     
    211162               &         / ( 1.+ emoy(ji,jj,jk) ) * ( 1. + fr_i(ji,jj) * emoy(ji,jj,jk) )  
    212163               zdenitnh4 = nitrif * xstep * trb(ji,jj,jk,jpnh4) * nitrfac(ji,jj,jk) 
    213                zdenitnh4 = MIN(  ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenita, zdenitnh4 )  
     164               zdenitnh4 = MAX(0., MIN(  ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenita, zdenitnh4 ) )  
    214165               ! Update of the tracers trends 
    215166               ! ---------------------------- 
     
    217168               tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr - rdenita * zdenitnh4 
    218169               tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr 
    219                tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * zdenitnh4 
     170               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * rno3 * zonitr + rno3 * ( rdenita - 1. ) * zdenitnh4 
    220171            END DO 
    221172         END DO 
     
    236187               ! studies (especially at Papa) have shown this uptake to be significant 
    237188               ! --------------------------------------------------------------------- 
    238                zbactfer = feratb *  rfact2 * 0.6_wp / rday * tgfunc(ji,jj,jk) * xlimbacl(ji,jj,jk)     & 
    239                   &              * trb(ji,jj,jk,jpfer) / ( xkferb + trb(ji,jj,jk,jpfer) )    & 
    240                   &              * zdepeff(ji,jj,jk) * zdepbac(ji,jj,jk) 
     189               zbactfer = feratb * 0.6_wp * xstep * tgfunc(ji,jj,jk) * xlimbacl(ji,jj,jk) * trb(ji,jj,jk,jpfer)    & 
     190                  &       / ( xkferb + trb(ji,jj,jk,jpfer) ) * zdepeff(ji,jj,jk) * zdepbac(ji,jj,jk) 
    241191 
    242192               ! Only the transfer of iron from its dissolved form to particles 
    243193               ! is treated here. The GGE of bacteria supposed to be equal to  
    244194               ! 0.33. This is hard-coded.  
    245                tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.33 
    246                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.25 
    247                tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer*0.08 
    248                zfebact(ji,jj,jk)   = zbactfer * 0.33 
     195               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.18 
     196               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.15 
     197               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer*0.03 
     198               zfebact(ji,jj,jk)   = zbactfer * 0.18 
    249199               blim(ji,jj,jk)      = xlimbacl(ji,jj,jk)  * zdepbac(ji,jj,jk) / 1.e-6 
    250200            END DO 
     
    304254 
    305255      IF( knt == nrdttrc ) THEN 
    306           zrfact2 = 1.e3 * rfact2r 
    307256          ALLOCATE( zw3d(jpi,jpj,jpk) ) 
    308257          zfact = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s 
     
    321270          ENDIF 
    322271          IF( iom_use( "FEBACT" ) )  THEN 
    323                zw3d(:,:,:) = zfebact(:,:,:) * 1E9 * tmask(:,:,:) * zrfact2   ! Bacterial iron consumption 
     272               zw3d(:,:,:) = zfebact(:,:,:) * 1E9 * tmask(:,:,:) * zfact   ! Bacterial iron consumption 
    324273               CALL iom_put( "FEBACT" , zw3d ) 
    325274          ENDIF 
     
    345294      !! 
    346295      !!---------------------------------------------------------------------- 
    347       NAMELIST/nampisrem/ xremik, nitrif, xsirem, xsiremlab, xsilab, feratb, xkferb, &  
     296      NAMELIST/nampisrem/ nitrif, xsirem, xsiremlab, xsilab, feratb, xkferb, &  
    348297         &                xremikc, xremikn, xremikp 
    349298      INTEGER :: ios                 ! Local integer output status for namelist read 
     
    367316         WRITE(numout,*) '   Namelist parameters for remineralization, nampisrem' 
    368317         IF( ln_p4z ) THEN 
    369             WRITE(numout,*) '      remineralization rate of DOC              xremik    =', xremik 
     318            WRITE(numout,*) '      remineralization rate of DOC              xremikc   =', xremikc 
    370319         ELSE 
    371320            WRITE(numout,*) '      remineralization rate of DOC              xremikc   =', xremikc 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zsbc.F90

    r12526 r14276  
    483483      ! 
    484484      sedsilfrac = 0.03     ! percentage of silica loss in the sediments 
    485       sedcalfrac = 0.6      ! percentage of calcite loss in the sediments 
     485      sedcalfrac = 0.99     ! percentage of calcite loss in the sediments 
    486486      ! 
    487487   END SUBROUTINE p4z_sbc_init 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zsed.F90

    r13233 r14276  
    6666      REAL(wp) ::  zsiloss, zcaloss, zws3, zws4, zwsc, zdep 
    6767      REAL(wp) ::  zwstpoc, zwstpon, zwstpop 
    68       REAL(wp) ::  ztrfer, ztrpo4s, ztrdp, zwdust, zmudia, ztemp 
     68      REAL(wp) ::  ztrpo4s, ztrdp, zwdust, zmudia, ztemp 
    6969      REAL(wp) ::  xdiano3, xdianh4 
    7070      ! 
     
    7373      REAL(wp), DIMENSION(jpi,jpj    ) :: zwsbio3, zwsbio4 
    7474      REAL(wp), DIMENSION(jpi,jpj    ) :: zsedcal, zsedsi, zsedc 
    75       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zsoufer, zlight 
    76       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrpo4, ztrdop, zirondep, zpdep 
    77       REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: zsidep, zironice 
     75      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zsoufer, zlight, ztrfer 
     76      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrpo4, ztrdop, zirondep, zpdep, zsidep 
     77      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: zironice 
    7878      !!--------------------------------------------------------------------- 
    7979      ! 
     
    137137      IF( ln_dust ) THEN 
    138138         !                                               
    139          ALLOCATE( zsidep(jpi,jpj), zpdep(jpi,jpj,jpk), zirondep(jpi,jpj,jpk) ) 
     139         ALLOCATE( zsidep(jpi,jpj,jpk), zpdep(jpi,jpj,jpk), zirondep(jpi,jpj,jpk) ) 
    140140 
    141141         ! Iron, P and Si deposition at the surface 
     
    154154         ! and the solubility are hard coded 
    155155         ! ---------------------------------------------------------------- 
    156          zsidep(:,:)   = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 28.1  
    157          zpdep (:,:,1) = 0.1 * 0.021 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 31. / po4r  
     156         ! Si crustal abundance is about 26.9% by mass and 7.5% is soluble 
     157         ! (see for instance, Tegen and Kohfeld, 2006). 
     158         zsidep(:,:,1) = 0.269 * 0.075 * dust(:,:) * rfact2 / e3t_n(:,:,1) / 28.1  
     159         ! P Crustal abundance is about 0.1% by mass and about 10% of it soluble 
     160         ! (Paytan and McLaughlin, 2007). 
     161         zpdep (:,:,1) = 0.1 * 1.e-3 * dust(:,:) * rfact2 / e3t_n(:,:,1) / 31. / po4r  
    158162 
    159163         ! Iron solubilization of particles in the water column 
     
    168172         DO jk = 2, jpkm1 
    169173            zirondep(:,:,jk) = dust(:,:) * mfrac * zwdust * rfact2 * EXP( -gdept_n(:,:,jk) / (250. * wdust) ) 
    170             zpdep   (:,:,jk) = zirondep(:,:,jk) * 0.38 / po4r 
     174            zpdep   (:,:,jk) = zirondep(:,:,jk) * 1.e-3 / mfrac * 55.85 / 31. 
     175            zsidep  (:,:,jk) = zirondep(:,:,jk) * 0.269 / mfrac * 55.85 / 28.1 
    171176         END DO 
    172177 
    173178         ! Solubilization of particles in the water column (Si, P, Fe) 
    174          tra(:,:,1,jpsil) = tra(:,:,1,jpsil) + zsidep  (:,:) 
    175179         DO jk = 1, jpkm1 
    176180            tra(:,:,jk,jppo4) = tra(:,:,jk,jppo4) + zpdep   (:,:,jk) 
    177181            tra(:,:,jk,jpfer) = tra(:,:,jk,jpfer) + zirondep(:,:,jk)  
     182            tra(:,:,jk,jpsil) = tra(:,:,jk,jpsil) + zsidep  (:,:,jk) 
    178183         ENDDO 
    179184         !  
     
    299304                 zflx = (  trb(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj)   & 
    300305                   &     + trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) ) * 1E6 
    301                  zbureff(ji,jj) = 0.013 + 0.53 * zflx**2 / ( 7.0 + zflx )**2 
     306                 zbureff(ji,jj) = 0.013 + 0.13 * zflx**2 / ( 7.0 + zflx )**2 
    302307              ENDIF 
    303308            END DO 
     
    306311      ENDIF 
    307312 
    308       ! Fraction of dSi that is remineralized in the sediments. This is  
    309       ! set so that the burial in sediments equals the total input of Si 
    310       ! by rivers and dust (sedsilfrac) 
    311       ! ---------------------------------------------------------------- 
     313      ! Fraction of dSi that is dissolved in the sediments. This fraction is   
     314      ! set to a constant value in p4zsbc 
     315      ! -------------------------------------------------------------------- 
    312316      IF( .NOT.lk_sed )  zrivsil = 1._wp - sedsilfrac 
    313317 
     
    331335         ! modeled. The amount of CaCO3 that dissolves in the sediments 
    332336         ! is computed using a metamodel constructed from Archer (1996) 
    333          ! ------------------------------------------------------------ 
     337         ! A minimum set to sedcalfrac is preserved. This value is defined 
     338         ! in p4zsbc 
     339         ! --------------------------------------------------------------- 
    334340         DO jj = 1, jpj 
    335341            DO ji = 1, jpi 
     
    341347               tra(ji,jj,ikt,jpsil) = tra(ji,jj,ikt,jpsil) + zsiloss * zrivsil  
    342348               ! 
    343                zfactcal = MIN( excess(ji,jj,ikt), 0.2 ) 
    344                zfactcal = MIN( 1., 1.3 * ( 0.2 - zfactcal ) / ( 0.4 - zfactcal ) ) 
     349               zfactcal = MAX(-0.1, MIN( excess(ji,jj,ikt), 0.2 ) ) 
     350               zfactcal = 0.3 + 0.7 * MIN( 1., (0.1 + zfactcal) / ( 0.5 - zfactcal ) ) 
    345351               zrivalk  = sedcalfrac * zfactcal 
    346352               tra(ji,jj,ikt,jptal) =  tra(ji,jj,ikt,jptal) + zcaloss * zrivalk * 2.0 
     
    394400               zws4 = zwsbio4(ji,jj) * zdep 
    395401               zws3 = zwsbio3(ji,jj) * zdep 
     402               ! Fraction that is permanently buried in the sediments 
    396403               zrivno3 = 1. - zbureff(ji,jj) 
    397404               zwstpoc = trb(ji,jj,ikt,jpgoc) * zws4 + trb(ji,jj,ikt,jppoc) * zws3 
     405               ! Denitrification in the sediments 
    398406               zpdenit  = MIN( 0.5 * ( trb(ji,jj,ikt,jpno3) - rtrn ) / rdenit, zdenit2d(ji,jj) * zwstpoc * zrivno3 ) 
     407               ! Fraction that is not denitrified 
    399408               z1pdenit = zwstpoc * zrivno3 - zpdenit 
     409               ! Oxic remineralization of organic matter in the sediments 
    400410               zolimit = MIN( ( trb(ji,jj,ikt,jpoxy) - rtrn ) / o2ut, z1pdenit * ( 1.- nitrfac(ji,jj,ikt) ) ) 
     411               ! The fraction that cannot be denitrified nor oxidized by O2 
     412               ! is released back to the water column as DOC 
    401413               tra(ji,jj,ikt,jpdoc) = tra(ji,jj,ikt,jpdoc) + z1pdenit - zolimit 
     414               ! Update of the tracers concentrations 
    402415               tra(ji,jj,ikt,jppo4) = tra(ji,jj,ikt,jppo4) + zpdenit + zolimit 
    403416               tra(ji,jj,ikt,jpnh4) = tra(ji,jj,ikt,jpnh4) + zpdenit + zolimit 
     
    408421               sdenit(ji,jj) = rdenit * zpdenit * e3t_n(ji,jj,ikt) 
    409422               zsedc(ji,jj)   = (1. - zrivno3) * zwstpoc * e3t_n(ji,jj,ikt) 
     423               ! PISCES-QUOTA (p5z) 
    410424               IF( ln_p5z ) THEN 
    411425                  zwstpop              = trb(ji,jj,ikt,jpgop) * zws4 + trb(ji,jj,ikt,jppop) * zws3 
     
    421435      ! Nitrogen fixation process : light limitation of diazotrophy 
    422436      ! Small source of iron from particulate inorganic iron (photochemistry) 
     437      ! This is a purely adhoc param. 
    423438      !---------------------------------------------------------------------- 
    424439      DO jk = 1, jpkm1 
    425440         zlight (:,:,jk) =  ( 1.- EXP( -etot_ndcy(:,:,jk) / diazolight ) ) * ( 1. - fr_i(:,:) )  
    426          zsoufer(:,:,jk) = zlight(:,:,jk) * 2E-11 / ( 2E-11 + biron(:,:,jk) ) 
     441         zsoufer(:,:,jk) = zlight(:,:,jk) * 1E-10 / ( 1E-10 + biron(:,:,jk) ) 
    427442      ENDDO 
    428443 
     
    438453            DO jj = 1, jpj 
    439454               DO ji = 1, jpi 
    440                   ! Potential nitrogen fixation dependant on temperature and iron 
     455                  ! Potential nitrogen fixation dependant on temperature 
    441456                  ztemp = tsn(ji,jj,jk,jp_tem) 
    442                   zmudia = MAX( 0.,-0.001096*ztemp**2 + 0.057*ztemp -0.637 ) * 7.625 
    443                   xdianh4 = trb(ji,jj,jk,jpnh4) / ( concnnh4 + trb(ji,jj,jk,jpnh4) ) 
    444                   xdiano3 = trb(ji,jj,jk,jpno3) / ( concnno3 + trb(ji,jj,jk,jpno3) ) * (1. - xdianh4) 
    445                   zlim = ( 1.- xdiano3 - xdianh4 ) 
    446                   ! Nitrogen fixation is almost fully halted when the N  
    447                   ! limitation term (xdiano3+xdianh4) is > 0.9 
    448                   IF( zlim <= 0.1 )   zlim = 0.01 
     457                  zmudia = MAX( 0.,-0.001096*ztemp**2 + 0.057*ztemp -0.637 ) / rno3 
     458                  ! Nitrogen fixation is inhibited when enough NO3 and/or NH4 
     459                  zlim = ( 1.- xnanonh4(ji,jj,jk) - xnanono3(ji,jj,jk) ) 
    449460                  zfact = zlim * rfact2 
    450                   ztrfer = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 
    451                   ztrpo4(ji,jj,jk) = trb(ji,jj,jk,jppo4) / ( 1E-6 + trb(ji,jj,jk,jppo4) ) 
     461                  ! Nitrogen fixation limitation by PO4 and Fe 
     462                  ztrfer(ji,jj,jk) = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 
     463                  ztrpo4(ji,jj,jk) = trb(ji,jj,jk,jppo4) / ( concnnh4 + trb(ji,jj,jk,jppo4) ) 
    452464                  ztrdp = ztrpo4(ji,jj,jk) 
    453                   nitrpot(ji,jj,jk) =  zmudia * r1_rday * zfact * MIN( ztrfer, ztrdp ) * zlight(ji,jj,jk) 
     465                  nitrpot(ji,jj,jk) =  zmudia * r1_rday * zfact * MIN( ztrfer(ji,jj,jk), ztrdp ) * zlight(ji,jj,jk) 
    454466               END DO 
    455467            END DO 
     
    460472            DO jj = 1, jpj 
    461473               DO ji = 1, jpi 
    462                   ! Potential nitrogen fixation dependant on temperature and iron 
     474                  ! Potential nitrogen fixation dependant on temperature 
    463475                  ztemp = tsn(ji,jj,jk,jp_tem) 
    464476                  zmudia = MAX( 0.,-0.001096*ztemp**2 + 0.057*ztemp -0.637 ) * 7.625 
     477                  ! Nitrogen fixation is inhibited when enough NO3 and/or NH4 
    465478                  xdianh4 = trb(ji,jj,jk,jpnh4) / ( concnnh4 + trb(ji,jj,jk,jpnh4) ) 
    466479                  xdiano3 = trb(ji,jj,jk,jpno3) / ( concnno3 + trb(ji,jj,jk,jpno3) ) * (1. - xdianh4) 
    467480                  zlim = ( 1.- xdiano3 - xdianh4 ) 
    468  
    469                   ! Nitrogen fixation is almost fully halted when the N  
    470                   ! limitation term (xdiano3+xdianh4) is > 0.9 
    471                   IF( zlim <= 0.1 )   zlim = 0.01 
    472481                  zfact = zlim * rfact2 
    473                   ztrfer = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 
     482                  ! Nitrogen fixation limitation by PO4/DOP and Fe 
     483                  ztrfer(ji,jj,jk) = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 
    474484                  ztrpo4(ji,jj,jk) = trb(ji,jj,jk,jppo4) / ( 1E-6 + trb(ji,jj,jk,jppo4) ) 
    475485                  ztrdop(ji,jj,jk) = trb(ji,jj,jk,jpdop) / ( 1E-6 + trb(ji,jj,jk,jpdop) ) * (1. - ztrpo4(ji,jj,jk)) 
    476486                  ztrdp = ztrpo4(ji,jj,jk) + ztrdop(ji,jj,jk) 
    477                   nitrpot(ji,jj,jk) =  zmudia * r1_rday * zfact * MIN( ztrfer, ztrdp ) * zlight(ji,jj,jk) 
     487                  nitrpot(ji,jj,jk) =  zmudia * r1_rday * zfact * MIN( ztrfer(ji,jj,jk), ztrdp ) * zlight(ji,jj,jk) 
    478488               END DO 
    479489            END DO 
     
    490500                  zfact = nitrpot(ji,jj,jk) * nitrfix 
    491501                  ! 1/3 of the diazotrophs growth is supposed to be excreted 
    492                   ! as NH4. 1/3 as DOC and the rest is routed POC and GOC as  
     502                  ! as NH4. 1/3 as DOC and the rest is routed to POC/GOC as  
    493503                  ! a result of mortality by predation. Completely adhoc param  
    494504                  tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zfact / 3.0 
     
    499509                  tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zfact * 1.0 / 3.0 * 1.0 / 3.0 
    500510                  tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + ( o2ut + o2nit ) * zfact * 2.0 / 3.0 + o2nit * zfact / 3.0 
    501                   ! Fe/c of diazotrophs is assumed to be 30umol Fe/mol C 
    502                   tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - 30E-6 * zfact * 1.0 / 3.0 
    503                   tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 30E-6 * zfact * 1.0 / 3.0 * 2.0 / 3.0 
    504                   tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + 30E-6 * zfact * 1.0 / 3.0 * 1.0 / 3.0 
    505                   tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday 
     511                  ! Fe/c of diazotrophs is assumed to be 30umol Fe/mol C at max 
     512                  tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0 
     513                  tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0 * 2.0 / 3.0 
     514                  tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0 * 1.0 / 3.0 
     515                  tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + 0.005 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday 
     516                  tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + concdnh4 / ( concdnh4 + trb(ji,jj,jk,jppo4) ) & 
     517                  &                     * 0.001 * trb(ji,jj,jk,jpdoc) * xstep 
    506518              END DO 
    507519            END DO  
     
    533545                  tra(ji,jj,jk,jpgop) = tra(ji,jj,jk,jpgop) + 16.0 / 46.0 * zfact * 1.0 / 3.0 * 1.0 /3.0 
    534546                  tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + ( o2ut + o2nit ) * zfact * 2.0 / 3.0 + o2nit * zfact / 3.0 
    535                   ! Fe/c of diazotrophs is assumed to be 30umol Fe/mol C 
    536                   tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - 30E-6 * zfact * 1.0 / 3.0  
    537                   tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 30E-6 * zfact * 1.0 / 3.0 * 2.0 / 3.0 
    538                   tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + 30E-6 * zfact * 1.0 / 3.0 * 1.0 / 3.0 
     547                  ! Fe/c of diazotrophs is assumed to be 30umol Fe/mol C at max 
     548                  tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0  
     549                  tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0 * 2.0 / 3.0 
     550                  tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0 * 1.0 / 3.0 
    539551                  tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday 
    540552              END DO 
     
    558570            IF( iom_use("SedSi" ) )  CALL iom_put( "SedSi",  zsedsi (:,:) * zfact ) ! Permanent burial of bSi in sediments 
    559571            IF( iom_use("SedC" ) )   CALL iom_put( "SedC",   zsedc  (:,:) * zfact ) ! Permanent burial of OC in sediments 
    560             IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", sdenit (:,:) * zfact * rno3 ) ! Denitrification in the sediments 
     572!            IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", sdenit (:,:) * zfact * rno3 ) ! Denitrification in the sediments 
     573            IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", zdenit2d(:,:) ) ! Denitrification in the sediments 
    561574         ENDIF 
    562575      ENDIF 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zsms.F90

    r13233 r14276  
    6464      REAL(wp) ::  ztra 
    6565      CHARACTER (len=25) :: charout 
     66      REAL(wp), DIMENSION(jpi,jpj,jpk,jp_pisces) :: ztrbbio 
    6667      !!--------------------------------------------------------------------- 
    6768      ! 
     
    102103         END DO 
    103104      ENDIF 
     105 
     106      DO jn = jp_pcs0, jp_pcs1              !   Store the tracer concentrations before entering PISCES 
     107         ztrbbio(:,:,:,jn) = trb(:,:,:,jn) 
     108      END DO 
    104109      ! 
    105110      IF( ll_sbc ) CALL p4z_sbc( kt )   ! external sources of nutrients  
     
    147152            tra(:,:,:,jn) = 0._wp 
    148153         END DO 
    149          ! Euler-forward temporal scheme 
    150          IF( ln_top_euler ) THEN 
    151             DO jn = jp_pcs0, jp_pcs1 
    152                trn(:,:,:,jn) = trb(:,:,:,jn) 
    153             END DO 
    154          ENDIF 
     154         ! 
    155155      END DO 
    156  
     156      ! 
     157#endif 
     158      ! 
     159      ! If ln_sediment is set to .true. then the sediment module is called 
     160      IF( ln_sediment ) THEN  
     161         ! 
     162         CALL sed_model( kt )     !  Main program of Sediment model 
     163         ! 
     164      ENDIF 
     165      ! 
     166      ! 
     167      DO jn = jp_pcs0, jp_pcs1 
     168         tra(:,:,:,jn) = ( trb(:,:,:,jn) - ztrbbio(:,:,:,jn) ) * rfactr 
     169         trb(:,:,:,jn) = ztrbbio(:,:,:,jn) 
     170         ztrbbio(:,:,:,jn) = 0._wp 
     171      END DO 
    157172      ! 
    158173      IF( l_trdtrc ) THEN 
     
    161176         END DO 
    162177      END IF 
    163 #endif 
    164       ! 
    165       ! If ln_sediment is set to .true. then the sediment module is called 
    166       IF( ln_sediment ) THEN  
    167          ! 
    168          CALL sed_model( kt )     !  Main program of Sediment model 
    169          ! Eulor forward temporal scheme 
    170          IF( ln_top_euler ) THEN 
    171             DO jn = jp_pcs0, jp_pcs1 
    172                trn(:,:,:,jn) = trb(:,:,:,jn) 
    173             END DO 
    174          ENDIF 
    175          ! 
    176       ENDIF 
    177178      ! 
    178179      IF( lrst_trc )  CALL p4z_rst( kt, 'WRITE' )  !* Write PISCES informations in restart file  
     
    199200      INTEGER :: ios                 ! Local integer output status for namelist read 
    200201      !! 
    201       NAMELIST/nampisbio/ nrdttrc, wsbio, xkmort, ferat3, wsbio2, wsbio2max, wsbio2scale,    & 
    202          &                  ldocp, ldocz, lthet, no3rat3, po4rat3 
     202      NAMELIST/nampisbio/ nrdttrc, wsbio, xkmort, feratz, feratm, wsbio2, wsbio2max,    & 
     203         &                wsbio2scale, ldocp, ldocz, lthet, no3rat3, po4rat3 
    203204         ! 
    204205      NAMELIST/nampisdmp/ ln_pisdmp, nn_pisdmp 
     
    226227         WRITE(numout,*) '      half saturation constant for mortality    xkmort      =', xkmort  
    227228         IF( ln_p5z ) THEN 
    228             WRITE(numout,*) '      N/C in zooplankton                        no3rat3     =', no3rat3 
    229             WRITE(numout,*) '      P/C in zooplankton                        po4rat3     =', po4rat3 
    230          ENDIF 
    231          WRITE(numout,*) '      Fe/C in zooplankton                       ferat3      =', ferat3 
     229            WRITE(numout,*) '      N/C in zooplankton                     no3rat3     =', no3rat3 
     230            WRITE(numout,*) '      P/C in zooplankton                     po4rat3     =', po4rat3 
     231         ENDIF 
     232         WRITE(numout,*) '      Fe/C in microzooplankton                  feratz      =', feratz 
     233         WRITE(numout,*) '      Fe/C in microzooplankton                  feratz      =', feratm 
    232234         WRITE(numout,*) '      Big particles sinking speed               wsbio2      =', wsbio2 
    233235         WRITE(numout,*) '      Big particles maximum sinking speed       wsbio2max   =', wsbio2max 
     
    313315         ENDIF 
    314316 
     317         ! Read the Fe3 consumption term by phytoplankton 
     318         IF( iom_varid( numrtr, 'Consfe3', ldstop = .FALSE. ) > 0 ) THEN 
     319            CALL iom_get( numrtr, jpdom_autoglo, 'Consfe3' , consfe3(:,:,:)  ) 
     320         ELSE 
     321            consfe3(:,:,:) = 0._wp 
     322         ENDIF 
     323 
     324 
    315325         ! Read the cumulative total flux. If not in the restart file, it is set to 0           
    316326         IF( iom_varid( numrtr, 'tcflxcum', ldstop = .FALSE. ) > 0 ) THEN  ! cumulative total flux of carbon 
     
    326336            sized(:,:,:) = 1. 
    327337         ENDIF 
     338         sized(:,:,:) = MAX( 1.0, sized(:,:,:) ) 
    328339         IF( iom_varid( numrtr, 'sizen', ldstop = .FALSE. ) > 0 ) THEN 
    329340            CALL iom_get( numrtr, jpdom_autoglo, 'sizen' , sizen(:,:,:)  ) 
     
    331342            sizen(:,:,:) = 1. 
    332343         ENDIF 
     344         sizen(:,:,:) = MAX( 1.0, sizen(:,:,:) ) 
    333345 
    334346         ! PISCES-QUOTA specific part 
     
    338350            IF( iom_varid( numrtr, 'sizep', ldstop = .FALSE. ) > 0 ) THEN 
    339351               CALL iom_get( numrtr, jpdom_autoglo, 'sizep' , sizep(:,:,:)  ) 
     352               sizep(:,:,:) = MAX( 1.0, sizep(:,:,:) ) 
    340353            ELSE 
    341354               sizep(:,:,:) = 1. 
     
    353366         CALL iom_rstput( kt, nitrst, numrtw, 'Silicalim', xksi(:,:) )    ! Si 1/2 saturation constant 
    354367         CALL iom_rstput( kt, nitrst, numrtw, 'Silicamax', xksimax(:,:) ) ! Si max concentration 
     368         CALL iom_rstput( kt, nitrst, numrtw, 'Consfe3', consfe3(:,:,:) ) ! Si max concentration 
    355369         CALL iom_rstput( kt, nitrst, numrtw, 'tcflxcum', t_oce_co2_flx_cum ) ! Cumulative CO2 flux 
    356370         CALL iom_rstput( kt, nitrst, numrtw, 'sizen', sizen(:,:,:) )  ! Size of nanophytoplankton 
     
    377391      ! 
    378392      REAL(wp) ::  alkmean = 2426.     ! mean value of alkalinity ( Glodap ; for Goyet 2391. ) 
    379       REAL(wp) ::  po4mean = 2.165     ! mean value of phosphate 
    380       REAL(wp) ::  no3mean = 30.90     ! mean value of nitrate 
    381       REAL(wp) ::  silmean = 91.51     ! mean value of silicate 
     393      REAL(wp) ::  po4mean = 2.174     ! mean value of phosphate 
     394      REAL(wp) ::  no3mean = 31.00     ! mean value of nitrate 
     395      REAL(wp) ::  silmean = 90.33     ! mean value of silicate 
    382396      ! 
    383397      REAL(wp) :: zarea, zalksumn, zpo4sumn, zno3sumn, zsilsumn 
     
    534548         zwork(:,:,:) =   trn(:,:,:,jpfer) + trn(:,:,:,jpnfe) + trn(:,:,:,jpdfe)   & 
    535549            &         +   trn(:,:,:,jpbfe) + trn(:,:,:,jpsfe)                      & 
    536             &         + ( trn(:,:,:,jpzoo) + trn(:,:,:,jpmes) )  * ferat3     
     550            &         + trn(:,:,:,jpzoo) * feratz + trn(:,:,:,jpmes) * feratm 
    537551         ! 
    538552         ferbudget = glob_sum( 'p4zsms', zwork(:,:,:) * cvol(:,:,:)  )   
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zlim.F90

    r13233 r14276  
    8888   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   fvpuptk    !: Maximum potential uptake rate of picophyto 
    8989   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   fvduptk    !: Maximum potential uptake rate of diatoms 
     90   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xqfuncfecp !:  
     91   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimnpn, xlimnpp, xlimnpd 
    9092 
    9193   ! Coefficient for iron limitation following Flynn and Hipkin (1999) 
     
    127129      REAL(wp) ::   zconc0p, zconc0pnh4, zconc0ppo4, zconcpfe, zconcnfe, zconcdfe 
    128130      REAL(wp) ::   fanano, fananop, fananof, fadiat, fadiatp, fadiatf 
    129       REAL(wp) ::   fapico, fapicop, fapicof 
     131      REAL(wp) ::   fapico, fapicop, fapicof, zlimpo4, zlimdop 
    130132      REAL(wp) ::   zrpho, zrass, zcoef, zfuptk, zratchl 
    131133      REAL(wp) ::   zfvn, zfvp, zfvf, zsizen, zsizep, zsized, znanochl, zpicochl, zdiatchl 
    132       REAL(wp) ::   zqfemn, zqfemp, zqfemd, zbactno3, zbactnh4 
    133       REAL(wp) ::   zlim1f, zsizetmp 
    134       REAL(wp), DIMENSION(jpi,jpj,jpk) :: xlimnpn, xlimnpp, xlimnpd 
     134      REAL(wp) ::   zqfemn, zqfemp, zqfemd, zbactno3, zbactnh4, zbiron 
     135      REAL(wp) ::   znutlimtot, zlimno3, zlimnh4, zlim1f, zsizetmp 
     136      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zrassn, zrassp, zrassd 
    135137      !!--------------------------------------------------------------------- 
    136138      ! 
     
    143145         DO jj = 1, jpj 
    144146            DO ji = 1, jpi 
    145                !  
    146                ! Tuning of the iron concentration to a minimum level that 
    147                ! is set to the detection limit 
    148                ! -------------------------------------------------------- 
    149                zno3    = trb(ji,jj,jk,jpno3) / 40.e-6 
    150                zferlim = MAX( 3e-11 * zno3 * zno3, 5e-12 ) 
    151                zferlim = MIN( zferlim, 7e-11 ) 
    152                trb(ji,jj,jk,jpfer) = MAX( trb(ji,jj,jk,jpfer), zferlim ) 
    153  
    154147               ! Computation of the Chl/C ratio of each phytoplankton group 
    155148               ! ---------------------------------------------------------- 
     
    190183               ! From Talmy et al. (2014) and Maranon et al. (2013) 
    191184               ! ------------------------------------------------------- 
    192                xqnnmin(ji,jj,jk) = qnnmin * sizen(ji,jj,jk)**(-0.3) 
     185               xqnnmin(ji,jj,jk) = qnnmin * sizen(ji,jj,jk)**(-0.36) 
    193186               xqnnmax(ji,jj,jk) = qnnmax 
    194                xqndmin(ji,jj,jk) = qndmin * sized(ji,jj,jk)**(-0.3) 
     187               xqndmin(ji,jj,jk) = qndmin * sized(ji,jj,jk)**(-0.36) 
    195188               xqndmax(ji,jj,jk) = qndmax 
    196                xqnpmin(ji,jj,jk) = qnpmin * sizep(ji,jj,jk)**(-0.48) 
    197                xqnpmax(ji,jj,jk) = qnpmax * sizep(ji,jj,jk)**(-0.21) 
     189               xqnpmin(ji,jj,jk) = qnpmin * sizep(ji,jj,jk)**(-0.36) 
     190               xqnpmax(ji,jj,jk) = qnpmax 
    198191 
    199192               ! Computation of the optimal allocation parameters 
     
    201194               ! Smith et al. 
    202195               ! --------------------------------------------------- 
    203  
     196               zbiron = ( 75.0 * ( 1.0 - plig(ji,jj,jk) ) + plig(ji,jj,jk) ) * biron(ji,jj,jk) 
    204197               ! Nanophytoplankton 
    205198               znutlim = MAX( trb(ji,jj,jk,jpnh4) / zconc0nnh4,    & 
     
    208201               znutlim = trb(ji,jj,jk,jppo4) / zconc0npo4 
    209202               fananop = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    210                znutlim = biron(ji,jj,jk) / zconcnfe 
     203               znutlim = zbiron / zconcnfe 
    211204               fananof = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    212205 
     
    217210               znutlim = trb(ji,jj,jk,jppo4) / zconc0ppo4 
    218211               fapicop = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    219                znutlim = biron(ji,jj,jk) / zconcpfe 
     212               znutlim = zbiron / zconcpfe 
    220213               fapicof = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    221214 
     
    226219               znutlim = trb(ji,jj,jk,jppo4) / zconc0dpo4 
    227220               fadiatp = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    228                znutlim = biron(ji,jj,jk) / zconcdfe 
     221               znutlim = zbiron / zconcdfe 
    229222               fadiatf = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    230223 
     
    232225               ! heterotrophic bacteria 
    233226               ! ------------------------------------------------- 
    234                zbactnh4 = trb(ji,jj,jk,jpnh4) / ( concbnh4 + trb(ji,jj,jk,jpnh4) ) 
    235                zbactno3 = trb(ji,jj,jk,jpno3) / ( concbno3 + trb(ji,jj,jk,jpno3) ) * (1. - zbactnh4) 
     227               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( concbno3 + trb(ji,jj,jk,jpnh4) ) 
     228               zlimno3 = trb(ji,jj,jk,jpno3) / ( concbno3 + trb(ji,jj,jk,jpno3) ) 
     229               znutlimtot = ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) / ( concbno3 + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 
     230               zbactnh4 = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
     231               zbactno3 = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
    236232               ! 
    237233               zlim1    = zbactno3 + zbactnh4 
     
    250246               ! Limitation of N based nutrients uptake (NO3 and NH4) 
    251247               zfalim = (1.-fanano) / fanano 
    252                xnanonh4(ji,jj,jk) = (1. - fanano) * trb(ji,jj,jk,jpnh4) / ( zfalim * zconc0nnh4 + trb(ji,jj,jk,jpnh4) ) 
    253                xnanono3(ji,jj,jk) = (1. - fanano) * trb(ji,jj,jk,jpno3) / ( zfalim * zconc0n + trb(ji,jj,jk,jpno3) )  & 
    254                &                    * (1. - xnanonh4(ji,jj,jk)) 
     248               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( zconc0n + trb(ji,jj,jk,jpnh4) ) 
     249               zlimno3 = trb(ji,jj,jk,jpno3) / ( zconc0n + trb(ji,jj,jk,jpno3) ) 
     250               znutlimtot = (1. - fanano) * ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) / ( zfalim * zconc0n + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 
     251               xnanonh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
     252               xnanono3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
    255253               ! 
    256254               ! Limitation of P based nutrients (PO4 and DOP) 
    257255               zfalim = (1.-fananop) / fananop 
    258                xnanopo4(ji,jj,jk) = (1. - fananop) * trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zfalim * zconc0npo4 ) 
    259                xnanodop(ji,jj,jk) = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + xkdoc )   & 
    260                &                    * ( 1.0 - xnanopo4(ji,jj,jk) ) 
    261                xnanodop(ji,jj,jk) = 0. 
     256               zlimpo4 = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc0npo4 ) 
     257               zlimdop = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + zconc0npo4 ) 
     258               znutlimtot = (1. - fananop) * ( trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) / ( zfalim * zconc0npo4 + trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) 
     259               xnanopo4(ji,jj,jk) = znutlimtot * 100.0 * zlimpo4 / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 
     260               xnanodop(ji,jj,jk) = znutlimtot * zlimdop / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 
    262261               ! 
    263262               ! Limitation of Fe uptake 
    264263               zfalim = (1.-fananof) / fananof 
    265                xnanofer(ji,jj,jk) = (1. - fananof) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * zconcnfe ) 
     264               xnanofer(ji,jj,jk) = (1. - fananof) * zbiron / ( zbiron + zfalim * zconcnfe ) 
    266265               ! 
    267266               ! The minimum iron quota depends on the size of PSU, respiration 
     
    270269               zratiof   = trb(ji,jj,jk,jpnfe) * z1_trnphy 
    271270               zqfemn = xcoef1 * znanochl + xcoef2 + xcoef3 * xnanono3(ji,jj,jk) 
     271               xqfuncfecn(ji,jj,jk) = zqfemn + qfnopt 
    272272               ! 
    273273               zration = trb(ji,jj,jk,jpnph) * z1_trnphy 
    274274               zration = MIN(xqnnmax(ji,jj,jk), MAX( xqnnmin(ji,jj,jk), zration )) 
    275                zzpsiuptk = xqnnmin(ji,jj,jk) * rno3 / zpsiuptk**2 
    276                fvnuptk(ji,jj,jk) = 1. / zzpsiuptk * xqnnmin(ji,jj,jk) / (zration + rtrn)  & 
     275               fvnuptk(ji,jj,jk) = 2.5 * zpsiuptk * xqnnmin(ji,jj,jk) / (zration + rtrn)  & 
    277276               &                   * MAX(0., (1. - zratchl * znanochl / 12. ) ) 
    278277               ! 
     
    282281               ! The value of the optimal quota in the formulation below 
    283282               ! has been found by solving a non linear equation 
    284                zlim1f = max(0., ( 1.086 - xqnnmin(ji,jj,jk) )  & 
     283               zlim1f = max(0., ( 1.13 - xqnnmin(ji,jj,jk) )  & 
    285284               &          / (xqnnmax(ji,jj,jk) - xqnnmin(ji,jj,jk) ) ) * xqnnmax(ji,jj,jk) 
    286285               zlim3  = MAX( 0.,( zratiof - zqfemn ) / qfnopt ) 
     
    297296               ! Limitation of N based nutrients uptake (NO3 and NH4)  
    298297               zfalim = (1.-fapico) / fapico  
    299                xpiconh4(ji,jj,jk) = (1. - fapico) * trb(ji,jj,jk,jpnh4) / ( zfalim * zconc0pnh4 + trb(ji,jj,jk,jpnh4) ) 
    300                xpicono3(ji,jj,jk) = (1. - fapico) * trb(ji,jj,jk,jpno3) / ( zfalim * zconc0p + trb(ji,jj,jk,jpno3) )  & 
    301                &                    * (1. - xpiconh4(ji,jj,jk)) 
     298               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( zconc0p + trb(ji,jj,jk,jpnh4) ) 
     299               zlimno3 = trb(ji,jj,jk,jpno3) / ( zconc0p + trb(ji,jj,jk,jpno3) ) 
     300               znutlimtot = (1. - fapico) * ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) )   & 
     301               &            / ( zfalim * zconc0p + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 
     302               xpiconh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
     303               xpicono3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
    302304               ! 
    303305               ! Limitation of P based nutrients uptake (PO4 and DOP) 
    304306               zfalim = (1.-fapicop) / fapicop  
    305                xpicopo4(ji,jj,jk) = (1. - fapicop) * trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zfalim * zconc0ppo4 ) 
    306                xpicodop(ji,jj,jk) = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + xkdoc )   & 
    307                &                    * ( 1.0 - xpicopo4(ji,jj,jk) ) 
    308                xpicodop(ji,jj,jk) = 0. 
     307               zlimpo4 = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc0ppo4 ) 
     308               zlimdop = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + zconc0ppo4 ) 
     309               znutlimtot = (1. - fapicop) * ( trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) / ( zfalim * zconc0ppo4 + trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) 
     310               xpicopo4(ji,jj,jk) = znutlimtot * 100.0 * zlimpo4 / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 
     311               xpicodop(ji,jj,jk) = znutlimtot * zlimdop / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 
    309312               ! 
    310313               zfalim = (1.-fapicof) / fapicof 
    311                xpicofer(ji,jj,jk) = (1. - fapicof) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * zconcpfe ) 
     314               xpicofer(ji,jj,jk) = (1. - fapicof) * zbiron / ( zbiron + zfalim * zconcpfe ) 
    312315               ! 
    313316               ! The minimum iron quota depends on the size of PSU, respiration 
    314317               ! and the reduction of nitrate following the parameterization  
    315318               ! proposed by Flynn and Hipkin (1999) 
    316                zratiof   = trb(ji,jj,jk,jppfe) * z1_trnpic 
     319               zratiof = trb(ji,jj,jk,jppfe) * z1_trnpic 
    317320               zqfemp = xcoef1 * zpicochl + xcoef2 + xcoef3 * xpicono3(ji,jj,jk) 
     321               xqfuncfecp(ji,jj,jk) = zqfemp + qfpopt 
    318322               ! 
    319323               zration   = trb(ji,jj,jk,jpnpi) * z1_trnpic 
    320324               zration = MIN(xqnpmax(ji,jj,jk), MAX( xqnpmin(ji,jj,jk), zration )) 
    321                zzpsiuptk = xqnpmin(ji,jj,jk) * rno3 / zpsiuptk**2 
    322                fvpuptk(ji,jj,jk) = 1. / zzpsiuptk * xqnpmin(ji,jj,jk) / (zration + rtrn)  & 
     325               fvpuptk(ji,jj,jk) = 2.5 * zpsiuptk * xqnpmin(ji,jj,jk) / (zration + rtrn)  & 
    323326               &                   * MAX(0., (1. - zratchl * zpicochl / 12. ) )  
    324327               ! 
     
    328331               ! The value of the optimal quota in the formulation below 
    329332               ! has been found by solving a non linear equation 
    330                zlim1f   = max(0., (1.367 - xqnpmin(ji,jj,jk) )  & 
     333               zlim1f   = max(0., (1.29 - xqnpmin(ji,jj,jk) )  & 
    331334               &          / (xqnpmax(ji,jj,jk) - xqnpmin(ji,jj,jk) ) ) * xqnpmax(ji,jj,jk) 
    332335               zlim3    = MAX( 0.,( zratiof - zqfemp ) / qfpopt ) 
     
    344347               ! Limitation of N based nutrients uptake (NO3 and NH4) 
    345348               zfalim = (1.-fadiat) / fadiat  
    346                xdiatnh4(ji,jj,jk) = (1. - fadiat) * trb(ji,jj,jk,jpnh4) / ( zfalim * zconc1dnh4 + trb(ji,jj,jk,jpnh4) ) 
    347                xdiatno3(ji,jj,jk) = (1. - fadiat) * trb(ji,jj,jk,jpno3) / ( zfalim * zconc1d + trb(ji,jj,jk,jpno3) )  & 
    348                &                    * (1. - xdiatnh4(ji,jj,jk)) 
     349               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( zconc1d + trb(ji,jj,jk,jpnh4) ) 
     350               zlimno3 = trb(ji,jj,jk,jpno3) / ( zconc1d + trb(ji,jj,jk,jpno3) ) 
     351               znutlimtot = (1.0 - fadiat) * ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) )    & 
     352               &            / ( zfalim * zconc1d + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 
     353               xdiatnh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
     354               xdiatno3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
    349355               ! 
    350356               ! Limitation of P based nutrients uptake (PO4 and DOP) 
    351357               zfalim = (1.-fadiatp) / fadiatp 
    352                xdiatpo4(ji,jj,jk) = (1. - fadiatp) * trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zfalim * zconc0dpo4 ) 
    353                xdiatdop(ji,jj,jk) = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + xkdoc )  & 
    354                &                    * ( 1.0 - xdiatpo4(ji,jj,jk) ) 
    355                xdiatdop(ji,jj,jk) = 0. 
     358               zlimpo4 = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc0dpo4 ) 
     359               zlimdop = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + zconc0dpo4 ) 
     360               znutlimtot = (1. - fadiatp) * ( trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) / ( zfalim * zconc0dpo4 + trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) 
     361               xdiatpo4(ji,jj,jk) = znutlimtot * 100.0 * zlimpo4 / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 
     362               xdiatdop(ji,jj,jk) = znutlimtot * zlimdop / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 
    356363               ! 
    357364               ! Limitation of Fe uptake 
    358365               zfalim = (1.-fadiatf) / fadiatf 
    359                xdiatfer(ji,jj,jk) = (1. - fadiatf) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * zconcdfe ) 
     366               xdiatfer(ji,jj,jk) = (1. - fadiatf) * zbiron / ( zbiron + zfalim * zconcdfe ) 
    360367               ! 
    361368               ! The minimum iron quota depends on the size of PSU, respiration 
     
    364371               zratiof   = trb(ji,jj,jk,jpdfe) * z1_trndia 
    365372               zqfemd = xcoef1 * zdiatchl + xcoef2 + xcoef3 * xdiatno3(ji,jj,jk) 
     373               xqfuncfecd(ji,jj,jk) = zqfemd + qfdopt 
    366374               ! 
    367375               zration   = trb(ji,jj,jk,jpndi) * z1_trndia 
    368376               zration   = MIN(xqndmax(ji,jj,jk), MAX( xqndmin(ji,jj,jk), zration )) 
    369                zzpsiuptk = xqndmin(ji,jj,jk) * rno3 / zpsiuptk**2 
    370                fvduptk(ji,jj,jk) = 1. / zzpsiuptk * xqndmin(ji,jj,jk) / (zration + rtrn)   & 
     377               fvduptk(ji,jj,jk) = 2.5 * zpsiuptk * xqndmin(ji,jj,jk) / (zration + rtrn)   & 
    371378               &                   * MAX(0., (1. - zratchl * zdiatchl / 12. ) )  
    372379               ! 
     
    376383               ! The value of the optimal quota in the formulation below 
    377384               ! has been found by solving a non linear equation 
    378                zlim1f   = max(0., (1.077 - xqndmin(ji,jj,jk) )    & 
     38565             zlim1f   = max(0., (1.13 - xqndmin(ji,jj,jk) )    & 
    379386               &          / (xqndmax(ji,jj,jk) - xqndmin(ji,jj,jk) ) )   & 
    380387               &          * xqndmax(ji,jj,jk) 
     
    408415               ! ------------------------------ 
    409416               zfuptk = 0.2 + 0.12 / ( 3.0 * sizen(ji,jj,jk) + rtrn ) 
    410                zrpho  = 1.54 * trb(ji,jj,jk,jpnch) / ( trb(ji,jj,jk,jpnph) * rno3 * 14. + rtrn ) 
     417               ! Computed from Inomura et al. (2020) using Pavlova Lutheri 
     418               zrpho  = 11.55 * trb(ji,jj,jk,jpnch) / ( trb(ji,jj,jk,jpphy) * 12. + rtrn ) 
    411419               zrass = MAX(0.62/4., ( 1. - zrpho - zfuptk ) * xlimnpn(ji,jj,jk) ) 
    412                xqpnmin(ji,jj,jk) = ( 0.0 + 0.0078 + 0.62/4. * 0.0783 * xqnnmin(ji,jj,jk) ) * 16. 
    413                xqpnmax(ji,jj,jk) = ( zrpho * 0.0128 + zrass * 0.0783 ) * 16. 
    414                xqpnmax(ji,jj,jk) = xqpnmax(ji,jj,jk) * trb(ji,jj,jk,jpnph) / ( trb(ji,jj,jk,jpphy) + rtrn )  & 
    415                &      + (0.033 + 0.0078 ) * 16. 
     420               zrassn(ji,jj,jk) = zrass 
     421               xqpnmin(ji,jj,jk) = ( 0.0 + 0.0078 + 0.62/4. * 0.0783 ) * 16. 
     422               xqpnmax(ji,jj,jk) = ( zrpho * 0.0089 + zrass * 0.0783 ) * 16. 
     423               xqpnmax(ji,jj,jk) = xqpnmax(ji,jj,jk) + (0.033 + 0.0078 ) * 16. 
    416424               xqpnmax(ji,jj,jk) = MIN( qpnmax, xqpnmax(ji,jj,jk) ) 
    417  
    418425 
    419426               ! Size estimation of picophytoplankton based on total biomass 
     
    425432               ! N/P ratio of picophytoplankton 
    426433               ! ------------------------------ 
    427                zfuptk = 0.2 + 0.12 / ( 0.5 * sizep(ji,jj,jk) + rtrn ) 
    428                zrpho = 1.54 * trb(ji,jj,jk,jppch) / ( trb(ji,jj,jk,jpnpi) * rno3 * 14. + rtrn ) 
     434               zfuptk = 0.2 + 0.12 / ( 0.8 * sizep(ji,jj,jk) + rtrn ) 
     435               ! Computed from Inomura et al. (2020) using a synechococcus 
     436               zrpho = 13.4 * trb(ji,jj,jk,jppch) / ( trb(ji,jj,jk,jppic) * 12. + rtrn ) 
    429437               zrass = MAX(0.4/4., ( 1. - zrpho - zfuptk ) * xlimnpp(ji,jj,jk) ) 
    430                xqppmin(ji,jj,jk) = ( (0.0 + 0.0078 ) + 0.4/4. * 0.0517 * xqnpmin(ji,jj,jk) ) * 16. 
    431                xqppmax(ji,jj,jk) = ( zrpho * 0.0128 + zrass * 0.0517 ) * 16. 
    432                xqppmax(ji,jj,jk) = xqppmax(ji,jj,jk) * trb(ji,jj,jk,jpnpi) / ( trb(ji,jj,jk,jppic) + rtrn ) & 
    433                &      +  (0.033 + 0.0078 ) * 16 
     438               zrassp(ji,jj,jk) = zrass 
     439               xqppmin(ji,jj,jk) = ( (0.0 + 0.0078 ) + 0.4/4. * 0.0517 ) * 16. 
     440               xqppmax(ji,jj,jk) = ( zrpho * 0.0076 + zrass * 0.0517 ) * 16. 
     441               xqppmax(ji,jj,jk) = xqppmax(ji,jj,jk) +  (0.033 + 0.0078 ) * 16 
    434442               xqppmax(ji,jj,jk) = MIN( qppmax, xqppmax(ji,jj,jk) ) 
    435443 
     
    443451               ! -------------------- 
    444452               zfuptk = 0.2 + 0.12 / ( 5.0 * sized(ji,jj,jk) + rtrn ) 
    445                zrpho = 1.54 * trb(ji,jj,jk,jpdch) / ( trb(ji,jj,jk,jpndi) * rno3 * 14. + rtrn ) 
     453               ! Computed from Inomura et al. (2020) using a synechococcus 
     454               zrpho = 8.08 * trb(ji,jj,jk,jpdch) / ( trb(ji,jj,jk,jpndi) * 12. + rtrn ) 
    446455               zrass = MAX(0.66/4., ( 1. - zrpho - zfuptk ) * xlimnpd(ji,jj,jk) ) 
    447  
    448                xqpdmin(ji,jj,jk) = ( ( 0.0 + 0.0078 ) + 0.66/4. * 0.0783 *  xqndmin(ji,jj,jk) ) * 16. 
    449                xqpdmax(ji,jj,jk) = ( zrpho * 0.0128 + zrass * 0.0783 ) * 16. 
    450                xqpdmax(ji,jj,jk) = xqpdmax(ji,jj,jk) * trb(ji,jj,jk,jpndi) / ( trb(ji,jj,jk,jpdia) + rtrn ) & 
    451                &      + ( 0.0078 + 0.033 ) * 16. 
     456               zrassd(ji,jj,jk)=zrass 
     457               xqpdmin(ji,jj,jk) = ( ( 0.0 + 0.0078 ) + 0.66/4. * 0.0783 ) * 16. 
     458               xqpdmax(ji,jj,jk) = ( zrpho * 0.0135 + zrass * 0.0783 ) * 16. 
     459               xqpdmax(ji,jj,jk) = xqpdmax(ji,jj,jk) + ( 0.0078 + 0.033 ) * 16. 
    452460               xqpdmax(ji,jj,jk) = MIN(qpdmax, xqpdmax(ji,jj,jk) ) 
    453461 
     
    467475               &        / ( trb(ji,jj,jk,jpnh4) + concnnh4 ) ) 
    468476               zlim2  = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + concnpo4 ) 
    469                zlim3  = trb(ji,jj,jk,jpfer) / ( trb(ji,jj,jk,jpfer) +  5.E-11 )  
    470                ztem1  = MAX( 0., tsn(ji,jj,jk,jp_tem) ) 
     477               zlim3  = trb(ji,jj,jk,jpfer) / ( trb(ji,jj,jk,jpfer) +  6.E-11 )  
     478               ztem1  = MAX( 0., tsn(ji,jj,jk,jp_tem) + 1.8 ) 
    471479               ztem2  = tsn(ji,jj,jk,jp_tem) - 10. 
    472                zetot1 = MAX( 0., etot(ji,jj,jk) - 1.) / ( 4. + etot(ji,jj,jk) ) * 20. / ( 20. + etot(ji,jj,jk) )  
    473  
    474                xfracal(ji,jj,jk) = caco3r * MIN( zlim1, zlim2, zlim3 )    & 
    475                &                   * ztem1 / ( 1. + ztem1 ) * MAX( 1., trb(ji,jj,jk,jpphy)*1E6 )   & 
     480               zetot1 = MAX( 0., etot_ndcy(ji,jj,jk) - 1.) / ( 4. + etot_ndcy(ji,jj,jk) ) * 30. / ( 30. + etot_ndcy(ji,jj,jk) )  
     481 
     482               xfracal(ji,jj,jk) = caco3r * xlimphy(ji,jj,jk)     & 
     483               &                   * ztem1 / ( 0.1 + ztem1 ) * MAX( 1., trb(ji,jj,jk,jpphy)*1E6 )   & 
    476484                  &                * ( 1. + EXP(-ztem2 * ztem2 / 25. ) )         & 
    477485                  &                * zetot1 * MIN( 1., 50. / ( hmld(ji,jj) + rtrn ) ) 
     
    508516        IF( iom_use( "SIZEP"   ) ) CALL iom_put( "SIZEP"  , sizep(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
    509517        IF( iom_use( "SIZED"   ) ) CALL iom_put( "SIZED"  , sized(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     518        IF( iom_use( "RASSN"   ) ) CALL iom_put( "RASSN"  , zrassn(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     519        IF( iom_use( "RASSP"   ) ) CALL iom_put( "RASSP"  , zrassp(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     520        IF( iom_use( "RASSD"   ) ) CALL iom_put( "RASSD"  , zrassd(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
    510521      ENDIF 
    511522      ! 
     
    640651         &      fvnuptk (jpi,jpj,jpk), fvduptk (jpi,jpj,jpk),       & 
    641652         &      xlimphys(jpi,jpj,jpk), xlimdias(jpi,jpj,jpk),       & 
    642          &      xlimpics(jpi,jpj,jpk),                              & 
     653         &      xlimnpp (jpi,jpj,jpk), xlimnpn (jpi,jpj,jpk),       & 
     654         &      xlimnpd (jpi,jpj,jpk),                              & 
     655         &      xlimpics(jpi,jpj,jpk), xqfuncfecp(jpi,jpj,jpk),     & 
    643656         &      fvpuptk (jpi,jpj,jpk), xlimpic (jpi,jpj,jpk),    STAT=ierr(1) ) 
    644657         ! 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zmeso.F90

    r13234 r14276  
    8888      REAL(wp) :: zepsherf, zepshert, zepsherq, zepsherv, zrespirc, zrespirn, zrespirp, zbasresb, zbasresi 
    8989      REAL(wp) :: zgraztotc, zgraztotn, zgraztotp, zgraztotf, zbasresn, zbasresp, zbasresf 
    90       REAL(wp) :: zgratmp, zgradoct, zgradont, zgrareft, zgradopt 
     90      REAL(wp) :: zgradoct, zgradont, zgrareft, zgradopt 
    9191      REAL(wp) :: zprcaca, zmortz, zexcess 
    9292      REAL(wp) :: zbeta, zrespz, ztortz, zgrasratp, zgrasratn, zgrasratf 
     
    104104      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrarep, zgraren, zgrapon, zgrapop 
    105105      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgradoc, zgradon, zgradop 
    106       REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zgramigrem, zgramigref, zgramigpoc, zgramigpof, zstrn 
     106      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zgramigrem, zgramigref, zgramigpoc, zgramigpof 
    107107      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zgramigrep, zgramigren, zgramigpop, zgramigpon 
    108108      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zgramigdoc, zgramigdop, zgramigdon 
     
    190190               ! to avoid starvation. 
    191191               ! ---------------------------------------------------------- 
    192                zsigma = 1.0 - zdenom**2/(0.05**2+zdenom**2) 
     192               zsigma = 1.0 - zdenom**3/(0.1**3+zdenom**3) 
    193193               zsigma = xsigma2 + xsigma2del * zsigma 
    194194               ! Nanophytoplankton and diatoms are the only preys considered 
     
    267267 
    268268               zgraztotc  = zgrazdc + zgrazz + zgraznc + zgrazm + zgrazpoc + zgrazffep + zgrazffeg 
    269                zgraztotf  = zgrazdf + zgraznf + ( zgrazz + zgrazm ) * ferat3 + zgrazpof & 
     269               zgraztotf  = zgrazdf + zgraznf + zgrazz * feratz + zgrazm * feratm + zgrazpof & 
    270270               &            + zgrazfffp + zgrazfffg 
    271271               zgraztotn  = zgrazdn + (zgrazm + zgrazz) * no3rat3 + zgraznn + zgrazpon  & 
     
    291291               ! Fulton, 2012) 
    292292               ! ----------------------------------------------------------------------------------- 
    293                zepshert  = MIN( 1., zgrasratn/ no3rat3, zgrasratp/ po4rat3, zgrasratf / ferat3) 
     293               zepshert  = MIN( 1., zgrasratn/ no3rat3, zgrasratp/ po4rat3, zgrasratf / feratm) 
    294294               zbeta     = MAX(0., (epsher2 - epsher2min) ) 
    295295               zepsherf  = epsher2min + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta ) 
     
    312312               zexcess  = ( zgrasratp/ po4rat3 - zepshert ) / ( 1.0 - zepshert + rtrn) 
    313313               zbasresp = zbasresi * zexcess * zgrasratp 
    314                zexcess  = ( zgrasratf/ ferat3 - zepshert ) / ( 1.0 - zepshert + rtrn) 
     314               zexcess  = ( zgrasratf/ feratm - zepshert ) / ( 1.0 - zepshert + rtrn) 
    315315               zbasresf = zbasresi * zexcess * zgrasratf 
    316316 
     
    320320               zgradont = (1. - unass2n) * zgraztotn - zepsherv * no3rat3 * zgraztotc - zbasresn 
    321321               zgradopt = (1. - unass2p) * zgraztotp - zepsherv * po4rat3 * zgraztotc - zbasresp 
    322                zgrareft = (1. - unass2c) * zgraztotf - zepsherv * ferat3 * zgraztotc - zbasresf 
    323                ztmp1   = ( 1. - epsher2 - unass2c ) /( 1. - 0.8 * epsher2 ) * ztortz 
     322               zgrareft = (1. - unass2c) * zgraztotf - zepsherv * feratm * zgraztotc - zbasresf 
     323               ztmp1    = (1. - epsher2 - unass2c) /( 1. - epsher2 ) * ztortz 
    324324               zgradoc(ji,jj,jk) = (zgradoct + ztmp1) * ssigma2 
    325325               zgradon(ji,jj,jk) = (zgradont + no3rat3 * ztmp1) * ssigma2 
    326326               zgradop(ji,jj,jk) = (zgradopt + po4rat3 * ztmp1) * ssigma2 
    327                zgratmp = 0.2 * epsher2 /( 1. - 0.8 * epsher2 ) * ztortz 
    328327 
    329328               !  Since only semilabile DOM is represented in PISCES 
     
    331330               !  as dissolved inorganic compounds (ssigma2) 
    332331               !  -------------------------------------------------- 
    333                zgrarem(ji,jj,jk) = zgratmp + ( zgradoct + ztmp1 ) * (1.0 - ssigma2) 
    334                zgraren(ji,jj,jk) = no3rat3 * zgratmp + ( zgradont + no3rat3 * ztmp1 ) * (1.0 - ssigma2) 
    335                zgrarep(ji,jj,jk) = po4rat3 * zgratmp + ( zgradopt + po4rat3 * ztmp1 ) * (1.0 - ssigma2) 
    336                zgraref(ji,jj,jk) = zgrareft + ferat3 * ( ztmp1 + zgratmp ) 
     332               zgrarem(ji,jj,jk) = ( zgradoct + ztmp1 ) * (1.0 - ssigma2) 
     333               zgraren(ji,jj,jk) = ( zgradont + no3rat3 * ztmp1 ) * (1.0 - ssigma2) 
     334               zgrarep(ji,jj,jk) = ( zgradopt + po4rat3 * ztmp1 ) * (1.0 - ssigma2) 
     335               zgraref(ji,jj,jk) = zgrareft + feratm * ztmp1 
    337336 
    338337               !   Defecation as a result of non assimilated products 
    339338               !   -------------------------------------------------- 
    340                zgrapoc(ji,jj,jk)  = zgraztotc * unass2c + unass2c / ( 1. - 0.8 * epsher2 ) * ztortz 
    341                zgrapon(ji,jj,jk)  = zgraztotn * unass2n + no3rat3 * unass2n / ( 1. - 0.8 * epsher2 ) * ztortz 
    342                zgrapop(ji,jj,jk)  = zgraztotp * unass2p + po4rat3 * unass2p / ( 1. - 0.8 * epsher2 ) * ztortz 
    343                zgrapof(ji,jj,jk)  = zgraztotf * unass2c + ferat3  * unass2c / ( 1. - 0.8 * epsher2 ) * ztortz 
     339               zgrapoc(ji,jj,jk)  = zgraztotc * unass2c + unass2c / ( 1. - epsher2 ) * ztortz 
     340               zgrapon(ji,jj,jk)  = zgraztotn * unass2n + no3rat3 * unass2n / ( 1. - epsher2 ) * ztortz 
     341               zgrapop(ji,jj,jk)  = zgraztotp * unass2p + po4rat3 * unass2p / ( 1. - epsher2 ) * ztortz 
     342               zgrapof(ji,jj,jk)  = zgraztotf * unass2c + feratm  * unass2c / ( 1. - epsher2 ) * ztortz 
    344343 
    345344               !  Addition of respiration to the release of inorganic nutrients 
     
    348347               zgraren(ji,jj,jk) = zgraren(ji,jj,jk) + zbasresn + zrespirc * no3rat3 
    349348               zgrarep(ji,jj,jk) = zgrarep(ji,jj,jk) + zbasresp + zrespirc * po4rat3 
    350                zgraref(ji,jj,jk) = zgraref(ji,jj,jk) + zbasresf + zrespirc * ferat3 
     349               zgraref(ji,jj,jk) = zgraref(ji,jj,jk) + zbasresf + zrespirc * feratm 
    351350 
    352351               !   Update the arrays TRA which contain the biological sources and 
     
    404403         ALLOCATE( zgramigrep(jpi,jpj), zgramigren(jpi,jpj), zgramigpop(jpi,jpj), zgramigpon(jpi,jpj) ) 
    405404         ALLOCATE( zgramigdoc(jpi,jpj), zgramigdon(jpi,jpj), zgramigdop(jpi,jpj) ) 
    406          ALLOCATE( zstrn(jpi,jpj) ) 
    407405         zgramigrem(:,:)  = 0.0   ;   zgramigref(:,:) = 0.0 
    408406         zgramigrep(:,:)  = 0.0   ;   zgramigren(:,:) = 0.0 
     
    411409         zgramigdoc(:,:)  = 0.0   ;   zgramigdon(:,:) = 0.0 
    412410         zgramigdop(:,:)  = 0.0    
    413  
    414          ! compute the day length depending on latitude and the day 
    415          zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp ) 
    416          zcodel = ASIN(  SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp )  ) 
    417  
    418          ! day length in hours 
    419          zstrn(:,:) = 0. 
    420          DO jj = 1, jpj 
    421             DO ji = 1, jpi 
    422                zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 
    423                zargu = MAX( -1., MIN(  1., zargu ) ) 
    424                zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. ) 
    425                zstrn(ji,jj) = MIN(0.75, MAX( 0.25, zstrn(ji,jj) / 24.) ) 
    426             END DO 
    427          END DO 
    428  
    429411 
    430412        ! Compute the amount of materials that will go into vertical migration 
     
    435417            DO jj = 1, jpj 
    436418               DO ji = 1, jpi 
    437                   zmigreltime = (1. - zstrn(ji,jj)) 
     419                  zmigreltime = (1. - strn(ji,jj)) 
    438420                  IF ( gdept_n(ji,jj,jk) <= heup(ji,jj) ) THEN 
    439421                     zgramigrem(ji,jj) = zgramigrem(ji,jj) + xfracmig * zgrarem(ji,jj,jk) * (1. - zmigreltime )    & 
     
    441423                     zgramigrep(ji,jj) = zgramigrep(ji,jj) + xfracmig * zgrarep(ji,jj,jk) * (1. - zmigreltime )    & 
    442424                     &                   * e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 
    443                      zgramigrep(ji,jj) = zgramigren(ji,jj) + xfracmig * zgrarep(ji,jj,jk) * (1. - zmigreltime )    & 
     425                     zgramigren(ji,jj) = zgramigren(ji,jj) + xfracmig * zgraren(ji,jj,jk) * (1. - zmigreltime )    & 
    444426                     &                   * e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 
    445427                     zgramigref(ji,jj) = zgramigref(ji,jj) + xfracmig * zgraref(ji,jj,jk) * (1. - zmigreltime )   & 
     
    503485         DEALLOCATE( zgramigrep, zgramigren, zgramigpop, zgramigpon ) 
    504486         DEALLOCATE( zgramigdoc, zgramigdon, zgramigdop ) 
    505          DEALLOCATE( zstrn ) 
    506487      ! End of the ln_dvm_meso part 
    507488      ENDIF 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zmicro.F90

    r13233 r14276  
    110110               ! Proportion of nano and diatoms that are within the size range 
    111111               ! accessible to microzooplankton.  
    112                zproport  = min(1.0, exp(-1.1 * MAX(0., ( sized(ji,jj,jk) - 1.8 ))**0.8 )) 
    113                zproport2 = sizen(ji,jj,jk)**(-0.54) 
     112               zproport  = min(sized(ji,jj,jk),1.8)**(-0.48)*min(1.0, exp(-1.1 * MAX(0., ( sized(ji,jj,jk) - 1.8 ))**0.8 )) 
     113               zproport2 = sizen(ji,jj,jk)**(-0.48) 
     114               zproport2 = 1.0 
    114115               !  linear mortality of mesozooplankton 
    115116               !  A michaelis menten modulation term is used to avoid extinction of  
     
    162163               ! to avoid starvation. 
    163164               ! ---------------------------------------------------------- 
    164                zsigma = 1.0 - zdenom**2/(0.05**2+zdenom**2) 
     165               zsigma = 1.0 - zdenom**3/(0.1**3+zdenom**3) 
    165166               zsigma = xsigma + xsigmadel * zsigma 
    166                zdiffpn = exp( -ABS(log(0.5 * sizep(ji,jj,jk) / (3.0 * sizen(ji,jj,jk) + rtrn )) )**2 / zsigma**2 ) 
     167               zdiffpn = exp( -ABS(log(0.7 * sizep(ji,jj,jk) / (3.0 * sizen(ji,jj,jk) + rtrn )) )**2 / zsigma**2 ) 
    167168               zdiffdn = exp( -ABS(log(3.0 * sizen(ji,jj,jk) / (5.0 * sized(ji,jj,jk) + rtrn )) )**2 / zsigma**2) 
    168                zdiffdp = exp( -ABS(log(0.5 * sizep(ji,jj,jk) / (5.0 * sized(ji,jj,jk) + rtrn )) )**2 / zsigma**2) 
     169               zdiffdp = exp( -ABS(log(0.7 * sizep(ji,jj,jk) / (5.0 * sized(ji,jj,jk) + rtrn )) )**2 / zsigma**2) 
    169170               ztmp1 = xprefn * zcompaph * ( zcompaph + zdiffdn * zcompadi + zdiffpn * zcompapi ) / ( 1.0 + zdiffdn + zdiffpn ) 
    170171               ztmp2 = xprefp * zcompapi * ( zcompapi + zdiffpn * zcompaph + zdiffdp * zcompadi ) / ( 1.0 + zdiffpn + zdiffdp ) 
     
    211212               zgraztotn = zgraznn + zgrazpn + zgrazpon + zgrazdn + zgrazz * no3rat3 
    212213               zgraztotp = zgraznp + zgrazpp + zgrazpop + zgrazdp + zgrazz * po4rat3 
    213                zgraztotf = zgraznf + zgrazpf + zgrazpof + zgrazdf + zgrazz * ferat3 
     214               zgraztotf = zgraznf + zgrazpf + zgrazpof + zgrazdf + zgrazz * feratz 
    214215               ! 
    215216               ! Grazing by microzooplankton 
     
    230231               ! Fulton, 2012) 
    231232               ! ----------------------------------------------------------------------------------- 
    232                zepshert  = MIN( 1., zgrasratn/ no3rat3, zgrasratp/ po4rat3, zgrasratf / ferat3) 
     233               zepshert  = MIN( 1., zgrasratn/ no3rat3, zgrasratp/ po4rat3, zgrasratf / feratz) 
    233234               zbeta     = MAX( 0., (epsher - epshermin) ) 
    234235               ! Food density deprivation of GGE 
     
    255256               zexcess  = ( zgrasratp/ po4rat3 - zepshert ) / ( 1.0 - zepshert + rtrn) 
    256257               zbasresp = zbasresi * zexcess * zgrasratp 
    257                zexcess  = ( zgrasratf/ ferat3 - zepshert ) / ( 1.0 - zepshert + rtrn) 
     258               zexcess  = ( zgrasratf/ feratz - zepshert ) / ( 1.0 - zepshert + rtrn) 
    258259               zbasresf = zbasresi * zexcess * zgrasratf 
    259260 
     
    263264               zgradont   = (1. - unassn) * zgraztotn - zepsherv * no3rat3 * zgraztotc - zbasresn 
    264265               zgradopt   = (1. - unassp) * zgraztotp - zepsherv * po4rat3 * zgraztotc - zbasresp 
    265                zgrareft   = (1. - unassc) * zgraztotf - zepsherv * ferat3 * zgraztotc - zbasresf 
     266               zgrareft   = (1. - unassc) * zgraztotf - zepsherv * feratz * zgraztotc - zbasresf 
    266267 
    267268               ! Since only semilabile DOM is represented in PISCES 
     
    289290               zgraren = zgraren + zbasresn + zrespirc * no3rat3 
    290291               zgrarep = zgrarep + zbasresp + zrespirc * po4rat3 
    291                zgraref = zgraref + zbasresf + zrespirc * ferat3 
     292               zgraref = zgraref + zbasresf + zrespirc * feratz 
    292293 
    293294               ! Update of the TRA arrays 
     
    330331               tra(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) + no3rat3 * ztortz + zgrapon - zgrazpon 
    331332               tra(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) + po4rat3 * ztortz + zgrapop - zgrazpop 
    332                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * ztortz  + zgrapof - zgrazpof 
     333               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + feratz * ztortz  + zgrapof - zgrazpof 
    333334               ! 
    334335               ! Calcite production 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zmort.F90

    r13233 r14276  
    2828   REAL(wp), PUBLIC :: wchlp   !: Quadratic mortality rate of picophytoplankton 
    2929   REAL(wp), PUBLIC :: wchld   !: Quadratic mortality rate of diatoms 
    30    REAL(wp), PUBLIC :: wchldm  !: Maximum quadratic mortality rate of diatoms 
    3130   REAL(wp), PUBLIC :: mpratn  !: Linear mortality rate of nanophytoplankton 
    3231   REAL(wp), PUBLIC :: mpratp  !: Linear mortality rate of picophytoplankton 
     
    6968      !!--------------------------------------------------------------------- 
    7069      INTEGER  :: ji, jj, jk 
    71       REAL(wp) :: zcompaph 
     70      REAL(wp) :: zcompaph, zlim1, zlim2 
    7271      REAL(wp) :: zfactfe, zfactch, zfactn, zfactp, zprcaca 
    7372      REAL(wp) :: ztortp , zrespp , zmortp 
     
    8685               ! blooms (Doney et al. 1996) 
    8786               ! ----------------------------------------------------- 
    88                zrespp = wchln * 1.e6 * xstep * xdiss(ji,jj,jk) * zcompaph * trb(ji,jj,jk,jpphy) 
     87               zlim2   = xlimphy(ji,jj,jk) * xlimphy(ji,jj,jk) 
     88               zlim1   = 0.25 * ( 1. - zlim2 ) / ( 0.25 + zlim2 ) * trb(ji,jj,jk,jpphy) 
     89               zrespp = wchln * 1.e6 * xstep * zlim1 * xdiss(ji,jj,jk) * zcompaph 
    8990 
    9091               ! Phytoplankton linear mortality 
     
    142143      !!--------------------------------------------------------------------- 
    143144      INTEGER  :: ji, jj, jk 
    144       REAL(wp) :: zcompaph 
     145      REAL(wp) :: zcompaph, zlim1, zlim2 
    145146      REAL(wp) :: zfactfe, zfactch, zfactn, zfactp 
    146147      REAL(wp) :: ztortp , zrespp , zmortp  
     
    158159               ! blooms (Doney et al. 1996) 
    159160               ! ----------------------------------------------------- 
    160                zrespp = wchlp * 1.e6 * xstep * xdiss(ji,jj,jk) * zcompaph * trb(ji,jj,jk,jppic) 
     161               zlim2   = xlimpic(ji,jj,jk) * xlimpic(ji,jj,jk) 
     162               zlim1   = 0.25 * ( 1. - zlim2 ) / ( 0.25 + zlim2 ) * trb(ji,jj,jk,jppic) 
     163               zrespp = wchlp * 1.e6 * xstep * zlim1 * xdiss(ji,jj,jk) * zcompaph 
    161164 
    162165               ! Phytoplankton linear mortality 
     
    229232               zlim2   = xlimdia(ji,jj,jk) * xlimdia(ji,jj,jk) 
    230233               zlim1   = 0.25 * ( 1. - zlim2 ) / ( 0.25 + zlim2 )  
    231                zrespp2 = 1.e6 * xstep * (  wchld + wchldm * zlim1 ) * xdiss(ji,jj,jk) * zcompadi * trb(ji,jj,jk,jpdia) 
     234               zrespp2 = 1.e6 * xstep * wchld * zlim1 * xdiss(ji,jj,jk) * zcompadi * trb(ji,jj,jk,jpdia) 
    232235 
    233236               ! Phytoplankton linear mortality 
     
    291294      INTEGER :: ios   ! Local integer output status for namelist read 
    292295      !! 
    293       NAMELIST/namp5zmort/ wchln, wchlp, wchld, wchldm, mpratn, mpratp, mpratd 
     296      NAMELIST/namp5zmort/ wchln, wchlp, wchld, mpratn, mpratp, mpratd 
    294297      !!---------------------------------------------------------------------- 
    295298 
     
    310313         WRITE(numout,*) '    quadratic mortality of picophyto.         wchlp     =', wchlp 
    311314         WRITE(numout,*) '    quadratic mortality of diatoms            wchld     =', wchld 
    312          WRITE(numout,*) '    Additional quadratic mortality of diatoms wchldm    =', wchldm 
    313315         WRITE(numout,*) '    nanophyto. mortality rate                 mpratn    =', mpratn 
    314316         WRITE(numout,*) '    picophyto. mortality rate                 mpratp    =', mpratp 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zprod.F90

    r13233 r14276  
    7272      INTEGER  ::   ji, jj, jk 
    7373      REAL(wp) ::   zsilfac, znanotot, zpicotot, zdiattot, zconctemp, zconctemp2 
    74       REAL(wp) ::   zration, zratiop, zratiof, zmax, zsilim, ztn, zadap 
    75       REAL(wp) ::   zpronmax, zpropmax, zprofmax, zrat 
     74      REAL(wp) ::   zration, zratiop, zratiof, zmax, ztn, zadap 
     75      REAL(wp) ::   zpronmax, zpropmax, zprofmax, zratio 
    7676      REAL(wp) ::   zlim, zsilfac2, zsiborn, zprod, zprontot, zproptot, zprodtot 
    7777      REAL(wp) ::   zprnutmax, zdocprod, zprochln, zprochld, zprochlp 
    7878      REAL(wp) ::   zpislopen, zpislopep, zpisloped 
    7979      REAL(wp) ::   zrum, zcodel, zargu, zval, zfeup 
    80       REAL(wp) ::   zfact, zrfact2, zmaxsi, zratiosi, zsizetmp, zlimfac 
     80      REAL(wp) ::   zqfpmax, zqfnmax, zqfdmax 
     81      REAL(wp) ::   zfact, zrfact2, zmaxsi, zratiosi, zsizetmp, zlimfac, zsilim 
    8182      CHARACTER (len=25) :: charout 
    82       REAL(wp), DIMENSION(jpi,jpj    ) :: zmixnano, zmixpico, zmixdiat, zstrn 
     83      REAL(wp), DIMENSION(jpi,jpj    ) :: zmixnano, zmixpico, zmixdiat 
    8384      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpislopeadn, zpislopeadp, zpislopeadd 
    84       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprnut, zprnutp, zprmaxp, zprmaxn, zprmaxd 
     85      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprnut, zprmaxp, zprmaxn, zprmaxd 
    8586      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprbio, zprpic, zprdia, zysopt 
    8687      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprchln, zprchlp, zprchld 
     
    111112      zysopt  (:,:,:) = 0._wp 
    112113      zrespn  (:,:,:) = 0._wp ; zrespp  (:,:,:) = 0._wp ; zrespd  (:,:,:) = 0._wp  
     114      zmxl_fac(:,:,:) = 0._wp ; zmxl_chl(:,:,:) = 0._wp 
     115      consfe3 (:,:,:) = 0._wp 
    113116 
    114117      ! Computation of the optimal production rates and nutrient uptake 
    115118      ! rates. Based on a Q10 description of the thermal dependency. 
    116       zprnut (:,:,:) = 0.6_wp * (1.0 + zpsino3 * qnnmax ) * r1_rday * tgfunc(:,:,:) 
    117       zprnutp(:,:,:) =  0.6_wp * (1. + zpsino3 * qnpmax ) * r1_rday * tgfunc3(:,:,:) 
    118       zprmaxn(:,:,:) = ( 0.6_wp * (1. + zpsino3 * qnnmax ) ) * r1_rday * tgfunc(:,:,:) 
    119       zprmaxd(:,:,:) = ( 0.6_wp * (1. + zpsino3 * qndmax ) ) * r1_rday * tgfunc(:,:,:) 
    120       zprmaxp(:,:,:) = ( 0.4_wp * (1. + zpsino3 * qnpmax ) ) * r1_rday * tgfunc3(:,:,:) 
    121  
    122       ! compute the day length depending on latitude and the day 
    123       ! Astronomical parameterization taken from HAMOCC3 
    124       zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp ) 
    125       zcodel = ASIN(  SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp )  ) 
    126  
    127       ! day length in hours 
    128       zstrn(:,:) = 0. 
    129       DO jj = 1, jpj 
    130          DO ji = 1, jpi 
    131             zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 
    132             zargu = MAX( -1., MIN(  1., zargu ) ) 
    133             zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. ) 
    134          END DO 
    135       END DO 
     119      zprnut (:,:,:) =  0.8_wp * r1_rday * tgfunc(:,:,:) 
     120      zprmaxn(:,:,:) =  0.8_wp * (1. + zpsino3 * qnnmax ) * r1_rday * tgfunc(:,:,:) 
     121      zprmaxd(:,:,:) =  0.8_wp * (1. + zpsino3 * qndmax ) * r1_rday * tgfunc(:,:,:) 
     122      zprmaxp(:,:,:) =  0.6_wp * (1. + zpsino3 * qnpmax ) * r1_rday * tgfunc(:,:,:) 
    136123 
    137124      ! Impact of the day duration and light intermittency on phytoplankton growth 
     
    146133            DO ji = 1, jpi 
    147134               IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    148                   zval = MAX( 1., zstrn(ji,jj) ) 
     135                  zval = MAX( 1., strn(ji,jj) ) 
    149136                  IF( gdepw_n(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 
    150137                     zval = zval * MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) 
     
    161148      zprpic(:,:,:) = zprmaxp(:,:,:) * zmxl_fac(:,:,:) 
    162149 
    163  
    164150      ! Maximum light intensity 
    165       zdaylen(:,:) = MAX(1., zstrn(:,:)) / 24. 
     151      zdaylen(:,:) = MAX(1., strn(:,:)) / 24. 
    166152 
    167153      ! Computation of the P-I slope for nanos, picos and diatoms 
     
    192178                  ! Actual light levels are used here  
    193179                  !  --------------------------------------------- 
    194                   zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) / zmxl_chl(ji,jj,jk) )  ) 
    195                   zprpic(ji,jj,jk) = zprpic(ji,jj,jk) * ( 1.- EXP( -zpislopep * epico(ji,jj,jk) / zmxl_chl(ji,jj,jk))  ) 
    196                   zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) / zmxl_chl(ji,jj,jk))  ) 
     180                  zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) / zmxl_fac(ji,jj,jk) )  ) 
     181                  zprpic(ji,jj,jk) = zprpic(ji,jj,jk) * ( 1.- EXP( -zpislopep * epico(ji,jj,jk) / zmxl_fac(ji,jj,jk) )  ) 
     182                  zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) / zmxl_fac(ji,jj,jk) )  ) 
    197183 
    198184                  !  Computation of production function for Chlorophyll 
     
    227213                  ! ----------------------------------------------------------------------- 
    228214                  zlim  = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi1 ) 
    229                   zsilim = MIN( zprdia(ji,jj,jk) / ( zprmaxd(ji,jj,jk) + rtrn ), xlimsi(ji,jj,jk) ) 
     215                  zsilim = xlimdia(ji,jj,jk) * zprdia(ji,jj,jk) / ( zprmaxd(ji,jj,jk) + rtrn ) 
    230216                  zsiborn = trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) 
    231217                  IF (gphit(ji,jj) < -30 ) THEN 
     
    240226                     zysopt(ji,jj,jk) = zlim * zsilfac2 * grosip * 1.0 * zmaxsi 
    241227                  ELSE 
    242                      zysopt(ji,jj,jk) = zlim * zsilfac2 * grosip * 1.0 * zsilim**0.75 * zmaxsi 
     228                     zysopt(ji,jj,jk) = zlim * zsilfac2 * grosip * 1.0 * zsilim**0.7 * zmaxsi 
    243229                  ENDIF 
    244230               ENDIF 
     
    257243               zprdia(ji,jj,jk)  = zprdia(ji,jj,jk) * ( 1. - fr_i(ji,jj) )  
    258244               zprnut(ji,jj,jk)  = zprnut(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 
    259                zprnutp(ji,jj,jk) = zprnutp(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 
    260245            END DO 
    261246         END DO 
     
    284269                  zlimfac = xlimphys(ji,jj,jk) * zprchln(ji,jj,jk) / ( zprmaxn(ji,jj,jk) + rtrn ) 
    285270                  zsizetmp = 1.0 + 1.3 * ( xsizern - 1.0 ) * zlimfac**3/(0.3 + zlimfac**3) 
    286                   sizena(ji,jj,jk) = min(xsizern, max( sizena(ji,jj,jk), zsizetmp ) ) 
     271                  sizena(ji,jj,jk) = MIN(xsizern, MAX( sizena(ji,jj,jk), zsizetmp ) ) 
    287272                  ! Maximum potential uptake rate 
    288273                  zration = trb(ji,jj,jk,jpnph) / ( trb(ji,jj,jk,jpphy) + rtrn ) 
     
    291276                  zprnutmax = zprnut(ji,jj,jk) * fvnuptk(ji,jj,jk) / rno3 * trb(ji,jj,jk,jpphy) * rfact2 
    292277                  ! Uptake of nitrogen 
    293                   zrat = 1.0 - MIN( 1., zration / (xqnnmax(ji,jj,jk) + rtrn) ) 
    294                   zmax = MAX(0., MIN(1., zrat**2 / (0.05**2 + zrat**2) ) ) 
     278                  zratio = 1.0 - MIN( 1., zration / (xqnnmax(ji,jj,jk) + rtrn) ) 
     279                  zmax = MAX(0., MIN(1., zratio**2 / (0.05**2 + zratio**2) ) ) 
    295280                  zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqpnmin(ji,jj,jk) )   & 
    296281                  &          / ( xqpnmax(ji,jj,jk) - xqpnmin(ji,jj,jk) + rtrn ), xlimnfe(ji,jj,jk) ) ) 
     282                  zpronmax = zpronmax * xqnnmin(ji,jj,jk) / qnnmin 
    297283                  zpronewn(ji,jj,jk) = zpronmax * xnanono3(ji,jj,jk) 
    298284                  zproregn(ji,jj,jk) = zpronmax * xnanonh4(ji,jj,jk) 
    299285                  ! Uptake of phosphorus and DOP 
    300                   zrat = 1.0 - MIN( 1., zratiop / (xqpnmax(ji,jj,jk) + rtrn) ) 
    301                   zmax = MAX(0., MIN(1., zrat**2 / (0.05**2 + zrat**2) ) ) 
    302                   zpropmax = zprnutmax * zmax * xlimnfe(ji,jj,jk) * 16. / 10. 
     286                  zratio = 1.0 - MIN( 1., zratiop / (xqpnmax(ji,jj,jk) + rtrn) ) 
     287                  zmax = MAX(0., MIN(1., zratio**2 / (0.05**2 + zratio**2) ) ) 
     288                  zpropmax = zprnutmax * zmax * xlimnfe(ji,jj,jk) 
    303289                  zpropo4n(ji,jj,jk) = zpropmax * xnanopo4(ji,jj,jk) 
    304290                  zprodopn(ji,jj,jk) = zpropmax * xnanodop(ji,jj,jk) 
    305291                  ! Uptake of iron 
    306                   zrat = 1.0 - MIN( 1., zratiof / qfnmax ) 
    307                   zmax = MAX(0., MIN(1., zrat**2/ (0.05**2 + zrat**2) ) ) 
    308                   zprofmax = zprnutmax * qfnmax * zmax  
     292                  zqfnmax = xqfuncfecn(ji,jj,jk) + ( qfnmax - xqfuncfecn(ji,jj,jk) ) * xlimnpn(ji,jj,jk) 
     293                  zratio = 1.0 - MIN( 1., zratiof / zqfnmax ) 
     294                  zmax = MAX(0., MIN(1., zratio**2/ (0.05**2 + zratio**2) ) ) 
     295                  zprofmax = zprnutmax * zqfnmax * zmax  
    309296                  zprofen(ji,jj,jk) = zprofmax * xnanofer(ji,jj,jk)    & 
    310297                  &          * (1. + 0.8 * xnanono3(ji,jj,jk) / ( rtrn  & 
     
    341328                  zratiop = trb(ji,jj,jk,jpppi) / ( trb(ji,jj,jk,jppic) + rtrn ) 
    342329                  zratiof = trb(ji,jj,jk,jppfe) / ( trb(ji,jj,jk,jppic) + rtrn ) 
    343                   zprnutmax = zprnutp(ji,jj,jk) * fvpuptk(ji,jj,jk) / rno3 * trb(ji,jj,jk,jppic) * rfact2 
     330                  zprnutmax = zprnut(ji,jj,jk) * fvpuptk(ji,jj,jk) / rno3 * trb(ji,jj,jk,jppic) * rfact2 
    344331                  ! Uptake of nitrogen 
    345                   zrat = 1.0 - MIN( 1., zration / (xqnpmax(ji,jj,jk) + rtrn) ) 
    346                   zmax = MAX(0., MIN(1., zrat**2/ (0.05**2 + zrat**2) ) ) 
     332                  zratio = 1.0 - MIN( 1., zration / (xqnpmax(ji,jj,jk) + rtrn) ) 
     333                  zmax = MAX(0., MIN(1., zratio**2/ (0.05**2 + zratio**2) ) ) 
    347334                  zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqppmin(ji,jj,jk) )   & 
    348335                  &          / ( xqppmax(ji,jj,jk) - xqppmin(ji,jj,jk) + rtrn ), xlimpfe(ji,jj,jk) ) ) 
     336                  zpronmax = zpronmax * xqnpmin(ji,jj,jk) / qnnmin 
    349337                  zpronewp(ji,jj,jk) = zpronmax * xpicono3(ji,jj,jk)  
    350338                  zproregp(ji,jj,jk) = zpronmax * xpiconh4(ji,jj,jk) 
    351339                  ! Uptake of phosphorus 
    352                   zrat = 1.0 - MIN( 1., zratiop / (xqppmax(ji,jj,jk) + rtrn) ) 
    353                   zmax = MAX(0., MIN(1., zrat**2 / (0.05**2 + zrat**2) ) ) 
    354                   zpropmax = zprnutmax * zmax * xlimpfe(ji,jj,jk) * 16./10. 
     340                  zratio = 1.0 - MIN( 1., zratiop / (xqppmax(ji,jj,jk) + rtrn) ) 
     341                  zmax = MAX(0., MIN(1., zratio**2 / (0.05**2 + zratio**2) ) ) 
     342                  zpropmax = zprnutmax * zmax * xlimpfe(ji,jj,jk)  
    355343                  zpropo4p(ji,jj,jk) = zpropmax * xpicopo4(ji,jj,jk) 
    356344                  zprodopp(ji,jj,jk) = zpropmax * xpicodop(ji,jj,jk) 
    357345                  ! Uptake of iron 
    358                   zrat = 1.0 - MIN( 1., zratiof / qfpmax ) 
    359                   zmax = MAX(0., MIN(1., zrat**2 / (0.05**2 + zrat**2) ) ) 
    360                   zprofmax = zprnutmax * qfpmax * zmax 
     346                  zqfpmax = xqfuncfecp(ji,jj,jk) + ( qfpmax - xqfuncfecp(ji,jj,jk) ) * xlimnpp(ji,jj,jk) 
     347                  zratio = 1.0 - MIN( 1., zratiof / zqfpmax ) 
     348                  zmax = MAX(0., MIN(1., zratio**2 / (0.05**2 + zratio**2) ) ) 
     349                  zprofmax = zprnutmax * zqfpmax * zmax 
    361350                  zprofep(ji,jj,jk) = zprofmax * xpicofer(ji,jj,jk)  & 
    362351                  &          * (1. + 0.8 * xpicono3(ji,jj,jk) / ( rtrn   & 
     
    395384                  zprnutmax = zprnut(ji,jj,jk) * fvduptk(ji,jj,jk) / rno3 * trb(ji,jj,jk,jpdia) * rfact2 
    396385                  ! Uptake of nitrogen 
    397                   zrat = 1.0 - MIN( 1., zration / (xqndmax(ji,jj,jk) + rtrn) ) 
    398                   zmax = MAX(0., MIN(1., zrat**2 / (0.05**2 + zrat**2) ) ) 
     386                  zratio = 1.0 - MIN( 1., zration / (xqndmax(ji,jj,jk) + rtrn) ) 
     387                  zmax = MAX(0., MIN(1., zratio**2 / (0.05**2 + zratio**2) ) ) 
    399388                  zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqpdmin(ji,jj,jk) )   & 
    400389                  &          / ( xqpdmax(ji,jj,jk) - xqpdmin(ji,jj,jk) + rtrn ), xlimdfe(ji,jj,jk) ) ) 
     390                  zpronmax = zpronmax * xqndmin(ji,jj,jk) / qnnmin 
    401391                  zpronewd(ji,jj,jk) = zpronmax * xdiatno3(ji,jj,jk) 
    402392                  zproregd(ji,jj,jk) = zpronmax * xdiatnh4(ji,jj,jk) 
    403393                  ! Uptake of phosphorus 
    404                   zrat = 1.0 - MIN( 1., zratiop / (xqpdmax(ji,jj,jk) + rtrn) ) 
    405                   zmax = MAX(0., MIN(1., zrat**2/ (0.05**2 + zrat**2) ) ) 
    406                   zpropmax = zprnutmax * zmax * xlimdfe(ji,jj,jk) * 16./10. 
     394                  zratio = 1.0 - MIN( 1., zratiop / (xqpdmax(ji,jj,jk) + rtrn) ) 
     395                  zmax = MAX(0., MIN(1., zratio**2/ (0.05**2 + zratio**2) ) ) 
     396                  zpropmax = zprnutmax * zmax * xlimdfe(ji,jj,jk) 
    407397                  zpropo4d(ji,jj,jk) = zpropmax * xdiatpo4(ji,jj,jk) 
    408398                  zprodopd(ji,jj,jk) = zpropmax * xdiatdop(ji,jj,jk) 
    409399                  ! Uptake of iron 
    410                   zrat = 1.0 - MIN( 1., zratiof / qfdmax ) 
    411                   zmax = MAX(0., MIN(1., zrat**2 / (0.05**2 + zrat**2) ) ) 
    412                   zprofmax = zprnutmax * qfdmax * zmax 
     400                  zqfdmax = xqfuncfecd(ji,jj,jk) + ( qfdmax - xqfuncfecd(ji,jj,jk) ) * xlimnpd(ji,jj,jk) 
     401                  zratio = 1.0 - MIN( 1., zratiof / zqfdmax ) 
     402                  zmax = MAX(0., MIN(1., zratio**2 / (0.05**2 + zratio**2) ) ) 
     403                  zprofmax = zprnutmax * zqfdmax * zmax 
    413404                  zprofed(ji,jj,jk) = zprofmax * xdiatfer(ji,jj,jk)    & 
    414405                  &          * (1. + 0.8 * xdiatno3(ji,jj,jk) / ( rtrn   & 
     
    503494              zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) + texcretp * zprofep(ji,jj,jk) 
    504495              tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zfeup 
     496              consfe3(ji,jj,jk)   = zfeup * 75.0 / ( rtrn + ( plig(ji,jj,jk) + 75.0 * (1.0 - plig(ji,jj,jk) ) )   & 
     497              &                     * trb(ji,jj,jk,jpfer) ) / rfact2 
    505498              tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - zprmaxd(ji,jj,jk) * zysopt(ji,jj,jk) * rfact2 * trb(ji,jj,jk,jpdia) 
    506499              tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk) - zprorcap(ji,jj,jk)  & 
     
    529522                 zfeup    = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) + texcretp * zprofep(ji,jj,jk) 
    530523                 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zdocprod * ldocp    & 
    531                  &       - zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) + 2.E3 * (1.0 - plig(ji,jj,jk) ) ) * lthet 
     524                 &       - zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) + 75.0 * (1.0 - plig(ji,jj,jk) ) ) * lthet 
    532525                 zpligprod1(ji,jj,jk) = zdocprod * ldocp 
    533526                 zpligprod2(ji,jj,jk) = zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) & 
    534                  &                      + 2.E3 * (1.0 - plig(ji,jj,jk) ) ) * lthet 
     527                 &                      + 75.0 * (1.0 - plig(ji,jj,jk) ) ) * lthet 
    535528              END DO 
    536529           END DO 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/SED/par_sed.F90

    r10222 r14276  
    6161   INTEGER, PARAMETER ::  & 
    6262      jptrased   = jpsol + jpwat , & 
    63       jpdia3dsed = 2             , & 
    64       jpdia2dsed = 12 
     63      jpdia3dsed = 3             , & 
     64      jpdia2dsed = 20  
    6565 
    6666END MODULE par_sed 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/SED/sedarr.F90

    r10222 r14276  
    5050         jid        = MOD( tab_ind(jn) - 1, jpi ) + 1 
    5151         jjd        = ( tab_ind(jn) - 1 ) / jpi + 1 
     52!         IF ( mig(jid) == 112 .and. mjg(jjd) == 25) write(0,*) 'plante ',jn,ndim1d 
    5253         tab1d(jn)  = tab2d(jid, jjd) 
    5354      END DO  
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/SED/seddta.F90

    r10362 r14276  
    157157!        zf1    = ( 0.02 * (reac_poc - reac_poc * 0.) + zkapp - reac_poc ) / ( reac_poc / 100. - reac_poc ) 
    158158!        zf1    = MIN(0.98, MAX(0., zf1 ) ) 
    159          zf1    = 0.48 
    160          zf0    = 1.0 - 0.02 - zf1 
    161          zf2    = 0.02 
     159         zf1    = 0.7 
     160         zf2    = 0.04 
     161         zf0    = 1.0 - zf2 - zf1 
    162162         rainrm_dta(ji,jspoc) =   ( zdtap(ji) +  zdtag(ji) ) * 1e-4 * zf0 
    163163         rainrm_dta(ji,jspos) =   ( zdtap(ji) +  zdtag(ji) ) * 1e-4 * zf1 
     
    177177      rainrm_dta(1:jpoce,jsclay) = rainrm_dta(1:jpoce,jsclay) * conv2 / mol_wgt(jsclay)   & 
    178178      &                            + wacc(1:jpoce) * por1(2) * denssol / mol_wgt(jsclay) / ( rsecday * 365.0 ) 
     179      rainrm_dta(1:jpoce,jsfeo)  = rainrm_dta(1:jpoce,jsclay) * mol_wgt(jsclay) / mol_wgt(jsfeo) * 0.035 * 0.5 
    179180      rainrm_dta(1:jpoce,jsclay) = rainrm_dta(1:jpoce,jsclay) * 0.965 
    180       rainrm_dta(1:jpoce,jsfeo)  = rainrm_dta(1:jpoce,jsclay) * mol_wgt(jsclay) / mol_wgt(jsfeo) * 0.035 / 0.965 
    181181!    rainrm_dta(1:jpoce,jsclay) = 1.0E-4 * conv2 / mol_wgt(jsclay) 
    182182 
     
    214214 
    215215      IF( lk_iomput ) THEN 
    216           IF( iom_use("sflxclay" ) ) CALL iom_put( "sflxclay", dust(:,:) * conv2 * 1E4 ) 
    217           IF( iom_use("sflxcal" ) )  CALL iom_put( "sflxcal", trc_data(:,:,13) ) 
    218           IF( iom_use("sflxbsi" ) )  CALL iom_put( "sflxbsi", trc_data(:,:,10) ) 
    219           IF( iom_use("sflxpoc" ) )  CALL iom_put( "sflxpoc", trc_data(:,:,11) + trc_data(:,:,12) ) 
     216          IF( iom_use("sflxclay" ) ) CALL iom_put( "sflxclay", dust(:,:) * 1E3 / 1.E4 ) 
     217          IF( iom_use("sflxcal" ) )  CALL iom_put( "sflxcal", trc_data(:,:,14) / 1.E4 ) 
     218          IF( iom_use("sflxbsi" ) )  CALL iom_put( "sflxbsi", trc_data(:,:,11) / 1.E4 ) 
     219          IF( iom_use("sflxpoc" ) )  CALL iom_put( "sflxpoc", ( trc_data(:,:,12) + trc_data(:,:,13) ) / 1.E4 ) 
    220220      ENDIF 
    221221 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/SED/sedini.F90

    r11536 r14276  
    371371      denssol = 2.6 
    372372 
    373       ! Initialization of diffusion coefficient as function of porosity [cm**2/s] 
    374       !-------------------------------------------------------------------- 
    375 !      DO jn = 1, jpsol 
    376 !         DO jk = 1, jpksed 
    377 !            DO ji = 1, jpoce 
    378 !               diff(ji,jk,jn) = dcoef / ( 1.0 - 2.0 * log(por(jk)) ) 
    379 !            END DO 
    380 !         END DO 
    381 !      END DO 
    382  
    383373      ! Accumulation rate from Burwicz et al. (2011). This is used to 
    384374      ! compute the flux of clays and minerals 
     
    387377          ztmp1 = 0.117 / ( 1.0 + ( zkbot(ji) / 200.)**3 ) 
    388378          ztmp2 = 0.006 / ( 1.0 + ( zkbot(ji) / 4000.)**10 ) 
    389           wacc(ji) = ztmp1 + ztmp2 
     379          wacc(ji) = (ztmp1 + ztmp2)/10.0 
     380          wacc(ji) = ztmp2 / 10.0 
    390381      END DO 
    391382 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/SED/sedwri.F90

    r10222 r14276  
    5353      IF (lwp) WRITE(numsed,*) ' ' 
    5454       
    55       ALLOCATE( zdta(jpoce,jpksed) )    ;   ALLOCATE( zflx(jpoce,jpwatp1) ) 
     55      ALLOCATE( zdta(jpoce,jpksed) )    ;   ALLOCATE( zflx(jpoce,jptrased+1) ) 
    5656 
    5757      ! Initialize variables 
     
    8787      CALL unpack_arr( jpoce, flxsedi3d(1:jpi,1:jpj,1:jpksed,2)  , iarroce(1:jpoce), & 
    8888         &                   co3por(1:jpoce,1:jpksed)  ) 
     89 
     90      CALL unpack_arr( jpoce, flxsedi3d(1:jpi,1:jpj,1:jpksed,3)  , iarroce(1:jpoce), & 
     91         &                   sedligand(1:jpoce,1:jpksed)  ) 
    8992       
    9093!      flxsedi3d = 0. 
     
    9497         DO ji = 1, jpoce 
    9598            zflx(ji,jw) = ( pwcp(ji,1,jw) - pwcp_dta(ji,jw) ) & 
    96                &         * 1.e3 / 1.e2 * dzkbot(ji) / r2dttrc 
     99               &         * 1.e3 / ( 1.e2 * dzkbot(ji) ) / 1.E4 / r2dttrc 
     100         ENDDO 
     101      ENDDO 
     102 
     103      ! Calculation of fluxes g/cm2/s 
     104      DO js = 1, jpsol 
     105         zrate =  1.0 / ( por1(jpksed) ) / r2dttrc 
     106         DO ji = 1, jpoce 
     107            zflx(ji,jpwat+js) = zflx(ji,jpwat+js) + ( tosed(ji,js) - fromsed(ji,js) ) * zrate 
    97108         ENDDO 
    98109      ENDDO 
     
    100111      ! Calculation of accumulation rate per dt 
    101112      DO js = 1, jpsol 
    102          zrate =  1.0 / ( denssol * por1(jpksed) ) / r2dttrc 
     113         zrate =  1.0 / ( por1(jpksed) ) / r2dttrc 
    103114         DO ji = 1, jpoce 
    104             zflx(ji,jpwatp1) = zflx(ji,jpwatp1) + ( tosed(ji,js) - fromsed(ji,js) ) * zrate 
     115            zflx(ji,jptrased+1) = zflx(ji,jptrased+1) + ( tosed(ji,js) - fromsed(ji,js) ) * zrate 
    105116         ENDDO 
    106117      ENDDO 
     
    109120         CALL unpack_arr( jpoce, flxsedi2d(1:jpi,1:jpj,jn), iarroce(1:jpoce), zflx(1:jpoce,jn)  ) 
    110121      END DO 
     122 
    111123      zflx(:,1) = dzdep(:) / dtsed 
    112124      CALL unpack_arr( jpoce, flxsedi2d(1:jpi,1:jpj,jpdia2dsed), iarroce(1:jpoce), zflx(1:jpoce,1) ) 
    113125 
    114        ! Start writing data 
    115        ! --------------------- 
    116        DO jn = 1, jptrased 
    117           cltra = sedtrcd(jn) ! short title for 3D diagnostic 
    118           CALL iom_put( cltra, trcsedi(:,:,:,jn) ) 
    119        END DO 
     126      ! Start writing data 
     127      ! --------------------- 
     128      DO jn = 1, jptrased 
     129         cltra = sedtrcd(jn) ! short title for 3D diagnostic 
     130         CALL iom_put( cltra, trcsedi(:,:,:,jn) ) 
     131      END DO 
    120132 
    121        DO jn = 1, jpdia3dsed 
    122           cltra = seddia3d(jn) ! short title for 3D diagnostic 
    123           CALL iom_put( cltra, flxsedi3d(:,:,:,jn) ) 
    124        END DO 
     133      DO jn = 1, jpdia3dsed 
     134         cltra = seddia3d(jn) ! short title for 3D diagnostic 
     135         CALL iom_put( cltra, flxsedi3d(:,:,:,jn) ) 
     136      END DO 
    125137 
    126        DO jn = 1, jpdia2dsed 
    127           cltra = seddia2d(jn) ! short title for 2D diagnostic 
    128           CALL iom_put( cltra, flxsedi2d(:,:,jn) ) 
    129        END DO 
     138      DO jn = 1, jpdia2dsed 
     139         cltra = seddia2d(jn) ! short title for 2D diagnostic 
     140         CALL iom_put( cltra, flxsedi2d(:,:,jn) ) 
     141      END DO 
    130142 
    131143 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/sms_pisces.F90

    r12759 r14276  
    4343   REAL(wp) ::   wsbio2scale      !: Length scale for the variations of wsbio2 
    4444   REAL(wp) ::   xkmort           !: Mortality half-saturation constant 
    45    REAL(wp) ::   ferat3           !: Fe/C in heterotrophic organisms 
     45   REAL(wp) ::   feratz           !: Fe/C in microzooplankton 
     46   REAL(wp) ::   feratm           !: Fe/C in mesozooplankton 
    4647   REAL(wp) ::   ldocp            !: Ligand production ratio during PP 
    4748   REAL(wp) ::   ldocz            !: Ligand production ratio by grazing 
     
    6869   INTEGER , ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  neln  !: number of T-levels + 1 in the euphotic layer 
    6970   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  heup  !: euphotic layer depth 
     71   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:  ) ::  strn  !: Day duration in hours 
    7072   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  etot  !: par (photosynthetic available radiation) 
    7173   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  etot_ndcy      !: PAR over 24h in case of diurnal cycle 
     
    7476   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  epico          !: PAR for pico 
    7577   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  epicom         !: mean PAR for pico 
    76    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  emoy           !: averaged PAR in the mixed layer 
     78   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  emoy, etotm    !: averaged PAR in the mixed layer 
    7779   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  heup_01 !: Absolute euphotic layer depth 
    7880   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  xksi  !:  Half-saturation con,stant for diatoms 
     
    98100   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prodgoc    !: GOC production 
    99101   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   consgoc    !: GOC consumption 
     102   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   consfe3    !: GOC consumption 
    100103   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   blim       !: bacterial production factor 
    101104   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizen      !: size of nanophyto 
     
    118121   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tgfunc    !: Temp. dependancy of various biological rates 
    119122   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tgfunc2   !: Temp. dependancy of mesozooplankton rates 
    120    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tgfunc3   !: Temp. dependancy of picophytoplankton rates 
    121123 
    122124   !!---------------------------------------------------------------------- 
     
    135137      !!---------------------------------------------------------------------- 
    136138      ierr(:) = 0 
    137       ALLOCATE( etot(jpi,jpj,jpk), neln(jpi,jpj), heup(jpi,jpj),    & 
    138         &       heup_01(jpi,jpj) , xksi(jpi,jpj)               ,  STAT=ierr(1) ) 
    139       ! 
    140    
     139      ALLOCATE( etot(jpi,jpj,jpk), neln(jpi,jpj), heup(jpi,jpj),   & 
     140        &       heup_01(jpi,jpj) , xksi(jpi,jpj), strn(jpi,jpj),  STAT=ierr(1) ) 
     141 
    141142      IF( ln_p4z .OR. ln_p5z ) THEN 
    142143 
     
    144145         ALLOCATE(  enano(jpi,jpj,jpk)    , ediat(jpi,jpj,jpk) ,   & 
    145146           &        enanom(jpi,jpj,jpk)   , ediatm(jpi,jpj,jpk),   & 
    146            &        etot_ndcy(jpi,jpj,jpk), emoy(jpi,jpj,jpk)  ,  STAT=ierr(2) )  
     147           &        etot_ndcy(jpi,jpj,jpk), emoy(jpi,jpj,jpk)  ,   & 
     148           &        etotm(jpi,jpj,jpk),                           STAT=ierr(2) ) 
    147149 
    148150         !* Biological SMS 
     
    155157            &      prodpoc(jpi,jpj,jpk) , conspoc(jpi,jpj,jpk) ,    & 
    156158            &      prodgoc(jpi,jpj,jpk) , consgoc(jpi,jpj,jpk) ,    & 
    157             &      blim   (jpi,jpj,jpk) ,                         STAT=ierr(4) ) 
     159            &      blim   (jpi,jpj,jpk) , consfe3(jpi,jpj,jpk) ,  STAT=ierr(4) ) 
    158160 
    159161         !* Carbonate chemistry 
     
    164166         ! 
    165167         !* Temperature dependency of SMS terms 
    166          ALLOCATE( tgfunc (jpi,jpj,jpk) , tgfunc2(jpi,jpj,jpk),     & 
    167             &      tgfunc3(jpi,jpj,jpk) ,                         STAT=ierr(6) ) 
     168         ALLOCATE( tgfunc (jpi,jpj,jpk) , tgfunc2(jpi,jpj,jpk),   STAT=ierr(6) ) 
    168169         ! 
    169170         !* Sinking speed 
     
    174175           &       sizena(jpi,jpj,jpk), sizeda(jpi,jpj,jpk),      STAT=ierr(8) ) 
    175176         !  
    176          !* Prognostic ligand 
    177          IF( ln_ligand ) THEN 
    178            ALLOCATE( plig(jpi,jpj,jpk)  ,                         STAT=ierr(9) ) 
    179          ENDIF 
     177         ALLOCATE( plig(jpi,jpj,jpk)  ,                           STAT=ierr(9) ) 
    180178      ENDIF 
    181179      ! 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/TRP/trcrad.F90

    r11536 r14276  
    107107      ENDIF 
    108108      ! 
    109       ALLOCATE( gainmass(jptra,2) ) 
     109      ALLOCATE( gainmass(jptra,4) ) 
    110110      gainmass(:,:) = 0. 
    111111      ! 
     
    169169                        IF( ptrb(ji,jj,jk,jn) > 0. ) THEN                         ! use positive values to compensate mass gain 
    170170                           zcoef = 1. + ztrneg(ji,jj,jn) / ztrpos(ji,jj,jn)       ! ztrpos > 0 as ptrb > 0 
     171                           gainmass(jn,1) = gainmass(jn,1) + ptrb(ji,jj,jk,jn) * cvol(ji,jj,jk) * ( zcoef - 1.0 )  ! we are correcting mass... 
    171172                           ptrb(ji,jj,jk,jn) = ptrb(ji,jj,jk,jn) * zcoef 
    172173                           IF( zcoef < 0. ) THEN                                  ! if the compensation exceed the positive value 
    173                               gainmass(jn,1) = gainmass(jn,1) - ptrb(ji,jj,jk,jn) * cvol(ji,jj,jk)   ! we are adding mass... 
     174                              gainmass(jn,2) = gainmass(jn,2) - ptrb(ji,jj,jk,jn) * cvol(ji,jj,jk)   ! we are adding mass... 
    174175                              ptrb(ji,jj,jk,jn) = 0.                              ! limit the compensation to keep positive value 
    175176                           ENDIF 
     
    190191         IF( kt == nitend ) THEN 
    191192            CALL mpp_sum( 'trcrad', gainmass(:,1) ) 
     193            CALL mpp_sum( 'trcrad', gainmass(:,2) ) 
    192194            DO jn = jp_sms0, jp_sms1 
    193                IF( gainmass(jn,1) > 0. ) THEN 
     195               IF( gainmass(jn,1) < 0. ) THEN 
    194196                  ztotmass = glob_sum( 'trcrad', ptrb(:,:,:,jn) * cvol(:,:,:) ) 
    195                   IF(lwp) WRITE(numout, '(a, i2, a, D23.16, a, D23.16)') 'trcrad ptrb, traceur ', jn  & 
    196                      &        , ' total mass : ', ztotmass, ', mass gain : ',  gainmass(jn,1) 
     197                  IF(lwp) WRITE(numout, '(a, i2, a, D23.16, a, D23.16, a, D23.16)') 'trcrad ptrb, traceur ', jn  & 
     198                     &        , ' total mass : ', ztotmass, ', mass correction : ',  gainmass(jn,1)   & 
     199                     &        , ' mass gain : ', gainmass(jn,2) 
    197200               END IF 
    198201            END DO 
     
    219222                        IF( ptrn(ji,jj,jk,jn) > 0. ) THEN                         ! use positive values to compensate mass gain 
    220223                           zcoef = 1. + ztrneg(ji,jj,jn) / ztrpos(ji,jj,jn)       ! ztrpos > 0 as ptrb > 0 
     224                           gainmass(jn,3) = gainmass(jn,3) + ptrn(ji,jj,jk,jn) * cvol(ji,jj,jk) * ( zcoef - 1.0 )  ! we are correcting mass... 
    221225                           ptrn(ji,jj,jk,jn) = ptrn(ji,jj,jk,jn) * zcoef 
    222226                           IF( zcoef < 0. ) THEN                                  ! if the compensation exceed the positive value 
    223                               gainmass(jn,2) = gainmass(jn,2) - ptrn(ji,jj,jk,jn) * cvol(ji,jj,jk)   ! we are adding mass... 
     227                              gainmass(jn,4) = gainmass(jn,4) - ptrn(ji,jj,jk,jn) * cvol(ji,jj,jk)   ! we are adding mass... 
    224228                              ptrn(ji,jj,jk,jn) = 0.                              ! limit the compensation to keep positive value 
    225229                           ENDIF 
     
    239243  
    240244         IF( kt == nitend ) THEN 
    241             CALL mpp_sum( 'trcrad', gainmass(:,2) ) 
     245            CALL mpp_sum( 'trcrad', gainmass(:,3) ) 
     246            CALL mpp_sum( 'trcrad', gainmass(:,4) ) 
    242247            DO jn = jp_sms0, jp_sms1 
    243                IF( gainmass(jn,2) > 0. ) THEN 
     248               IF( gainmass(jn,3) < 0. ) THEN 
    244249                  ztotmass = glob_sum( 'trcrad', ptrn(:,:,:,jn) * cvol(:,:,:) ) 
    245                   WRITE(numout, '(a, i2, a, D23.16, a, D23.16)') 'trcrad ptrn, traceur ', jn  & 
    246                      &        , ' total mass : ', ztotmass, ', mass gain : ',  gainmass(jn,1) 
     250                  IF(lwp) WRITE(numout, '(a, i2, a, D23.16, a, D23.16, a, D23.16)') 'trcrad ptrn, traceur ', jn  & 
     251                     &        , ' total mass : ', ztotmass, ', mass correction : ',  gainmass(jn,3)   & 
     252                     &        , ' mass gain : ', gainmass(jn,4) 
    247253               END IF 
    248254            END DO 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/trcnam.F90

    r11536 r14276  
    248248      !!--------------------------------------------------------------------- 
    249249#if defined key_trdmxl_trc  || defined key_trdtrc 
    250       INTEGER  ::   ios, ierr                 ! Local integer 
     250      INTEGER  ::   jn, ios, ierr                 ! Local integer 
    251251      !! 
    252252      NAMELIST/namtrc_trd/ nn_trd_trc, nn_ctls_trc, rn_ucf_trc, & 
     
    260260      ! 
    261261      ALLOCATE( ln_trdtrc(jptra) )  
     262      ln_trdtrc(:) = .false. 
    262263      ! 
    263264      REWIND( numnat_ref )              ! Namelist namtrc_trd in reference namelist : Passive tracer trends 
     
    267268      READ  ( numnat_cfg, namtrc_trd, IOSTAT = ios, ERR = 906 ) 
    268269906   IF( ios >  0 )   CALL ctl_nam ( ios , 'namtrc_trd in configuration namelist' ) 
    269       IF(lwm) WRITE( numont, namtrc_trd ) 
     270     IF(lwm) WRITE( numont, namtrc_trd ) 
    270271 
    271272      IF(lwp) THEN 
Note: See TracChangeset for help on using the changeset viewer.