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 7041 for branches/2016 – NEMO

Changeset 7041 for branches/2016


Ignore:
Timestamp:
2016-10-19T12:55:07+02:00 (7 years ago)
Author:
cetlod
Message:

ROBUST5_CNRS : implementation of part I of new TOP interface - 1st step -, see ticket #1782

Location:
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM
Files:
34 added
5 deleted
50 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/field_def.xml

    r6472 r7041  
    786786     <field_group id="ptrc_T" grid_ref="grid_T_3D"> 
    787787       <field id="DIC"          long_name="Dissolved inorganic Concentration"        unit="mmol/m3" /> 
    788        <field id="DIC_E3T"      long_name="DIC * E3T"                                unit="mmol/m2" > DIC * e3t </field > 
     788       <field id="DIC_e3t"      long_name="DIC * e3t"                                unit="mmol/m2" > DIC * e3t </field > 
    789789       <field id="Alkalini"     long_name="Total Alkalinity Concentration"           unit="mmol/m3" /> 
    790        <field id="Alkalini_E3T" long_name="Alkalini * E3T"                           unit="mmol/m2"  > Alkalini * e3t </field > 
     790       <field id="Alkalini_e3t" long_name="Alkalini * e3t"                           unit="mmol/m2"  > Alkalini * e3t </field > 
    791791       <field id="O2"           long_name="Oxygen Concentration"                     unit="mmol/m3" /> 
    792        <field id="O2_E3T"       long_name="O2 * E3T"                                 unit="mmol/m2"  > O2 * e3t </field > 
     792       <field id="O2_e3t"       long_name="O2 * e3t"                                 unit="mmol/m2"  > O2 * e3t </field > 
    793793       <field id="CaCO3"        long_name="Calcite Concentration"                    unit="mmol/m3" /> 
    794        <field id="CaCO3_E3T"    long_name="CaCO3 * E3T"                              unit="mmol/m2"  > CaCO3 * e3t </field > 
     794       <field id="CaCO3_e3t"    long_name="CaCO3 * e3t"                              unit="mmol/m2"  > CaCO3 * e3t </field > 
    795795       <field id="PO4"          long_name="Phosphate Concentration"                  unit="mmol/m3" /> 
    796        <field id="PO4_E3T"      long_name="PO4 * E3T"                                unit="mmol/m2"  > PO4 * e3t </field > 
     796       <field id="PO4_e3t"      long_name="PO4 * e3t"                                unit="mmol/m2"  > PO4 * e3t </field > 
    797797       <field id="POC"          long_name="Small organic carbon Concentration"       unit="mmol/m3" /> 
    798        <field id="POC_E3T"      long_name="POC * E3T"                                unit="mmol/m2"  > POC * e3t </field > 
     798       <field id="POC_e3t"      long_name="POC * e3t"                                unit="mmol/m2"  > POC * e3t </field > 
    799799       <field id="Si"           long_name="Silicate Concentration"                   unit="mmol/m3" /> 
    800        <field id="Si_E3T"       long_name="Si * E3T"                                 unit="mmol/m2"  > Si * e3t </field > 
     800       <field id="Si_e3t"       long_name="Si * e3t"                                 unit="mmol/m2"  > Si * e3t </field > 
    801801       <field id="PHY"          long_name="(Nano)Phytoplankton Concentration"        unit="mmol/m3" /> 
    802        <field id="PHY_E3T"      long_name="PHY * E3T"                                unit="mmol/m2"  > PHY * e3t </field > 
     802       <field id="PHY_e3t"      long_name="PHY * e3t"                                unit="mmol/m2"  > PHY * e3t </field > 
    803803       <field id="ZOO"          long_name="(Micro)Zooplankton Concentration"         unit="mmol/m3" /> 
    804        <field id="ZOO_E3T"      long_name="ZOO2 * E3T"                               unit="mmol/m2"  > ZOO * e3t </field > 
     804       <field id="ZOO_e3t"      long_name="ZOO2 * e3t"                               unit="mmol/m2"  > ZOO * e3t </field > 
    805805       <field id="DOC"          long_name="Dissolved organic Concentration"          unit="mmol/m3" /> 
    806        <field id="DOC_E3T"      long_name="DOC * E3T"                                unit="mmol/m2"  > DOC * e3t </field > 
     806       <field id="DOC_e3t"      long_name="DOC * e3t"                                unit="mmol/m2"  > DOC * e3t </field > 
    807807       <field id="PHY2"         long_name="Diatoms Concentration"                    unit="mmol/m3" /> 
    808        <field id="PHY2_E3T"     long_name="PHY2 * E3T"                               unit="mmol/m2"  > PHY2 * e3t </field > 
     808       <field id="PHY2_e3t"     long_name="PHY2 * e3t"                               unit="mmol/m2"  > PHY2 * e3t </field > 
    809809       <field id="ZOO2"         long_name="Mesozooplankton Concentration"            unit="mmol/m3" /> 
    810        <field id="ZOO2_E3T"     long_name="ZOO2 * E3T"                               unit="mmol/m2"  > ZOO2 * e3t </field > 
     810       <field id="ZOO2_e3t"     long_name="ZOO2 * e3t"                               unit="mmol/m2"  > ZOO2 * e3t </field > 
    811811       <field id="DSi"          long_name="Diatoms Silicate Concentration"           unit="mmol/m3" /> 
    812        <field id="DSi_E3T"      long_name="Dsi * E3T"                                unit="mmol/m2"  > DSi * e3t </field > 
     812       <field id="DSi_e3t"      long_name="Dsi * e3t"                                unit="mmol/m2"  > DSi * e3t </field > 
    813813       <field id="Fer"          long_name="Dissolved Iron Concentration"             unit="mmol/m3" /> 
    814        <field id="Fer_E3T"      long_name="Fer * E3T"                                unit="mmol/m2"  > Fer * e3t </field > 
     814       <field id="Fer_e3t"      long_name="Fer * e3t"                                unit="mmol/m2"  > Fer * e3t </field > 
    815815       <field id="BFe"          long_name="Big iron particles Concentration"         unit="mmol/m3" /> 
    816        <field id="BFe_E3T"      long_name="BFe * E3T"                                unit="mmol/m2"  > BFe * e3t </field > 
     816       <field id="BFe_e3t"      long_name="BFe * e3t"                                unit="mmol/m2"  > BFe * e3t </field > 
    817817       <field id="GOC"          long_name="Big organic carbon Concentration"         unit="mmol/m3" /> 
    818        <field id="GOC_E3T"      long_name="GOC * E3T"                                unit="mmol/m2"  > GOC * e3t </field > 
     818       <field id="GOC_e3t"      long_name="GOC * e3t"                                unit="mmol/m2"  > GOC * e3t </field > 
    819819       <field id="SFe"          long_name="Small iron particles Concentration"       unit="mmol/m3" /> 
    820        <field id="SFe_E3T"      long_name="SFe * E3T"                                unit="mmol/m2"  > SFe * e3t </field > 
     820       <field id="SFe_e3t"      long_name="SFe * e3t"                                unit="mmol/m2"  > SFe * e3t </field > 
    821821       <field id="DFe"          long_name="Diatoms iron  Concentration"              unit="mmol/m3" /> 
    822        <field id="DFe_E3T"      long_name="DFe * E3T"                                unit="mmol/m2"  > DFe * e3t </field > 
     822       <field id="DFe_e3t"      long_name="DFe * e3t"                                unit="mmol/m2"  > DFe * e3t </field > 
    823823       <field id="GSi"          long_name="Sinking biogenic Silicate Concentration"  unit="mmol/m3" /> 
    824        <field id="GSi_E3T"      long_name="GSi * E3T"                                unit="mmol/m2"  > GSi * e3t </field > 
     824       <field id="GSi_e3t"      long_name="GSi * e3t"                                unit="mmol/m2"  > GSi * e3t </field > 
    825825       <field id="NFe"          long_name="Nano iron Concentration"                  unit="mmol/m3" /> 
    826        <field id="NFe_E3T"      long_name="NFe * E3T"                                unit="mmol/m2"  > NFe * e3t </field > 
     826       <field id="NFe_e3t"      long_name="NFe * e3t"                                unit="mmol/m2"  > NFe * e3t </field > 
    827827       <field id="NCHL"         long_name="Nano chlorophyl Concentration"            unit="mg/m3"   /> 
    828        <field id="NCHL_E3T"     long_name="NCHL * E3T"                               unit="mmol/m2"  > NCHL * e3t </field > 
     828       <field id="NCHL_e3t"     long_name="NCHL * e3t"                               unit="mmol/m2"  > NCHL * e3t </field > 
    829829       <field id="DCHL"         long_name="Diatoms chlorophyl Concentration"         unit="mg/m3"   /> 
    830        <field id="DCHL_E3T"     long_name="DCHL * E3T"                               unit="mmol/m2"  > DCHL * e3t </field > 
     830       <field id="DCHL_e3t"     long_name="DCHL * e3t"                               unit="mmol/m2"  > DCHL * e3t </field > 
    831831       <field id="NO3"          long_name="Nitrate Concentration"                    unit="mmol/m3" /> 
    832        <field id="NO3_E3T"      long_name="NO3 * E3T"                                unit="mmol/m2"  > NO3 * e3t </field > 
     832       <field id="NO3_e3t"      long_name="NO3 * e3t"                                unit="mmol/m2"  > NO3 * e3t </field > 
    833833       <field id="NH4"          long_name="Ammonium Concentration"                   unit="mmol/m3" /> 
    834        <field id="NH4_E3T"      long_name="NH4 * E3T"                                unit="mmol/m2"  > NH4 * e3t </field > 
     834       <field id="NH4_e3t"      long_name="NH4 * e3t"                                unit="mmol/m2"  > NH4 * e3t </field > 
    835835 
    836836       <!-- PISCES with Kriest parametisation : variables available with key_kriest --> 
    837837       <field id="Num"         long_name="Number of organic particles"              unit="1" /> 
    838        <field id="Num_E3T"     long_name="Num * E3T"                                unit="m"  > Num * e3t </field > 
     838       <field id="Num_e3t"     long_name="Num * e3t"                                unit="m"  > Num * e3t </field > 
    839839 
    840840       <!-- PISCES light : variables available with key_pisces_reduced --> 
    841841       <field id="DET"         long_name="Detritus"                                 unit="mmol-N/m3" /> 
    842        <field id="DET_E3T"     long_name="DET * E3T"                                unit="mmol-N/m2"  > DET * e3t </field > 
     842       <field id="DET_e3t"     long_name="DET * e3t"                                unit="mmol-N/m2"  > DET * e3t </field > 
    843843       <field id="DOM"         long_name="Dissolved Organic Matter"                 unit="mmol-N/m3" /> 
    844        <field id="DOM_E3T"     long_name="DOM * E3T"                                unit="mmol-N/m2"  > DOM * e3t </field > 
    845  
    846        <!-- CFC11 : variables available with key_cfc --> 
    847        <field id="CFC11"       long_name="CFC-11 Concentration"                     unit="umol/m3" /> 
    848        <field id="CFC11_E3T"   long_name="CFC11 * E3T"                              unit="umol/m2"  > CFC11 * e3t </field > 
    849        <!-- Bomb C14 : variables available with key_c14b --> 
    850        <field id="C14B"     long_name="Bomb C14 Concentration"                      unit="1"         /> 
    851        <field id="C14B_E3T"    long_name="C14B * E3T"                               unit="m"  > C14B * e3t </field > 
     844       <field id="DOM_e3t"     long_name="DOM * e3t"                                unit="mmol-N/m2"  > DOM * e3t </field > 
     845 
     846       <!-- CFC11 : variables available with ln_cfc11 --> 
     847       <field id="CFC11"       long_name="Chlorofluoro carbon11 Concentration"      unit="umol/m3" /> 
     848       <field id="CFC11_e3t"   long_name="CFC11 * e3t"                              unit="umol/m2"  > CFC11 * e3t </field > 
     849 
     850       <!-- CFC12 : variables available with ln_cfc12 --> 
     851       <field id="CFC12"       long_name="Chlorofluoro carbon12 Concentration"      unit="umol/m3" /> 
     852       <field id="CFC12_e3t"   long_name="CFC12 * e3t"                              unit="umol/m2"  > CFC12 * e3t </field > 
     853 
     854       <!-- C14 : variables available with ln_c14 --> 
     855       <field id="RC14"        long_name="Radiocarbon ratio"                        unit="-"         /> 
     856       <field id="RC14_e3t"    long_name="RC14 * e3t"                               unit="m"  > RC14 * e3t </field > 
     857 
     858       <!-- AGE : variables available with ln_age --> 
     859       <field id="Age"        long_name="Sea water age since surface contact"       unit="yr"         /> 
     860       <field id="Age_e3t"    long_name="Age * e3t"                                 unit="yr * m"  > Age * e3t </field > 
     861 
    852862     </field_group> 
    853863 
     
    961971       <field id="TDETSED"     long_name="TDETSED"                                 unit=""  />  
    962972 
    963        <!-- CFC11 : variables available with key_cfc --> 
    964        <field id="qtrCFC11"    long_name="Air-sea flux of CFC-11"                  unit="mol/m2/s"   /> 
    965        <field id="qintCFC11"   long_name="Cumulative air-sea flux of CFC-11"       unit="mol/m2"     /> 
    966  
    967        <!-- Bomb C14 : variables available with key_c14b --> 
    968        <field id="qtrC14b"     long_name="Air-sea flux of Bomb C14"                unit="mol/m2/s"   /> 
    969        <field id="qintC14b"    long_name="Cumulative air-sea flux of Bomb C14"     unit="mol/m2"     /> 
    970        <field id="fdecay"      long_name="Radiactive decay of Bomb C14"            unit="mol/m3"  grid_ref="grid_T_3D"  /> 
     973       <!-- CFC11 : variables available with ln_cfc11 --> 
     974       <field id="qtr_CFC11"    long_name="Air-sea flux of CFC-11"                  unit="mol/m2/s"   /> 
     975       <field id="qint_CFC11"   long_name="Cumulative air-sea flux of CFC-11"       unit="mol/m2"     /> 
     976 
     977       <!-- CFC12 : variables available with ln_cfc12 --> 
     978       <field id="qtr_CFC12"    long_name="Air-sea flux of CFC12"                  unit="mol/m2/s"   /> 
     979       <field id="qint_CFC12"   long_name="Cumulative air-sea flux of CFC12"       unit="mol/m2"     /> 
     980 
     981       <!--  C14 : variables available with ln_c14 --> 
     982       <field id="DeltaC14"     long_name="Delta C14"                              unit="permil" grid_ref="grid_T_3D"   /> 
     983       <field id="C14Age"       long_name="Radiocarbon age"                        unit="yr"     grid_ref="grid_T_3D"   /> 
     984       <field id="RAge"         long_name="Reservoir Age"                          unit="yr"     /> 
     985       <field id="qtr_C14"      long_name="Air-sea flux of C14"                    unit="1/m2/s"   /> 
     986       <field id="qint_C14"     long_name="Cumulative air-sea flux of C14"         unit="1/m2"     /> 
    971987     </field_group> 
    972988 
    973      <field_group id="PISCES_scalar"  domain_ref="1point" > 
    974        <field id="pno3tot"         long_name="global mean nitrate concentration"                  unit="mol/m3"   /> 
     989     <field_group id="tracer_scalar"  domain_ref="1point" > 
     990     <!-- PISCES scalar  --> 
     991       <field id="pno3tot"         long_name="Global mean nitrate concentration"                  unit="mol/m3"   /> 
    975992       <field id="ppo4tot"         long_name="global mean phosphorus concentration"               unit="mol/m3"   /> 
    976        <field id="psiltot"         long_name="global mean silicate concentration"                 unit="mol/m3"   /> 
    977        <field id="palktot"         long_name="global mean alkalinity concentration"               unit="mol/m3"   /> 
    978        <field id="pfertot"         long_name="global mean iron concentration"                     unit="mol/m3"   /> 
    979        <field id="tcflx"           long_name="total Flux of Carbon out of the ocean"              unit="mol/s"   /> 
    980        <field id="tcflxcum"        long_name="cumulative total Flux of Carbon out of the ocean"   unit="mol/s"   /> 
    981        <field id="tcexp"           long_name="total Carbon export at 100m"                        unit="mol/s"   /> 
    982        <field id="tintpp"          long_name="global total integrated primary production"         unit="mol/s"   /> 
    983        <field id="tnfix"           long_name="global total nitrogen fixation"                     unit="mol/s"   /> 
     993       <field id="psiltot"         long_name="Global mean silicate concentration"                 unit="mol/m3"   /> 
     994       <field id="palktot"         long_name="Global mean alkalinity concentration"               unit="mol/m3"   /> 
     995       <field id="pfertot"         long_name="Global mean iron concentration"                     unit="mol/m3"   /> 
     996       <field id="tcflx"           long_name="Total Flux of Carbon out of the ocean"              unit="mol/s"   /> 
     997       <field id="tcflxcum"        long_name="Cumulative total Flux of Carbon out of the ocean"   unit="mol/s"   /> 
     998       <field id="tcexp"           long_name="Total Carbon export at 100m"                        unit="mol/s"   /> 
     999       <field id="tintpp"          long_name="Global total integrated primary production"         unit="mol/s"   /> 
     1000       <field id="tnfix"           long_name="Global total nitrogen fixation"                     unit="mol/s"   /> 
    9841001       <field id="tdenit"          long_name="Total denitrification"                              unit="mol/s"   /> 
     1002     <!-- C14 scalar  --> 
     1003       <field id="AtmCO2"          long_name="Global atmospheric CO2"                             unit="ppm"   /> 
     1004       <field id="AtmC14"          long_name="Global atmospheric DeltaC14"                        unit="permil"   /> 
     1005       <field id="K_C14"           long_name="Global 14C/C exchange velocity"                     unit="m/yr"   /> 
     1006       <field id="K_CO2"           long_name="Global CO2 piston velocity"                         unit="cm/h"   /> 
     1007       <field id="C14Inv"          long_name="global Radiocarbon ocean inventory"                 unit="10^26 atoms"   /> 
    9851008     </field_group> 
    9861009 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_pisces_ref

    r6945 r7041  
    99!!              7  - parameters for calcite chemistry         (nampiscal) 
    1010!!              8  - parameters for inputs deposition         (nampissed) 
    11 !!              9  - parameters for Kriest parameterization   (nampiskrp, nampiskrs) 
    12 !!              10 - additional 2D/3D  diagnostics            (nampisdia) 
    1311!!              11 - Damping                                  (nampisdmp) 
     12!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     13!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
     14&nampismod     !  Model used  
     15!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
     16  ln_p2z = .false.        !  LOBSTER model used 
     17  ln_p4z = .true.         !  PISCES model used 
     18/ 
    1419!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    1520!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
     
    248253/ 
    249254!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    250 &nampiskrp     !   Kriest parameterization : parameters     "key_kriest" 
    251 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
    252    xkr_eta      = 1.17    ! Sinking  exponent 
    253    xkr_zeta     = 2.28    ! N content exponent 
    254    xkr_ncontent = 5.7E-6  ! N content factor 
    255    xkr_mass_min = 0.0002  ! Minimum mass for Aggregates 
    256    xkr_mass_max = 1.      ! Maximum mass for Aggregates 
    257 / 
    258 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    259 &nampiskrs     !   Kriest parameterization : size classes  "key_kriest" 
    260 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
    261    xkr_sfact    = 942.    ! Sinking factor 
    262    xkr_stick    = 0.5     ! Stickiness 
    263    xkr_nnano    = 2.337   ! Nbr of cell in nano size class 
    264    xkr_ndiat    = 3.718   ! Nbr of cell in diatoms size class 
    265    xkr_nmeso    = 7.147   ! Nbr of cell in mesozoo size class 
    266    xkr_naggr    = 9.877   ! Nbr of cell in aggregates  size class 
    267 / 
    268 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    269 &nampisdia     !   additional 2D/3D tracers diagnostics  
    270 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
    271 !              !    name   !           title of the field          !     units      ! 
    272 !              !           !                                       !                !   
    273    pisdia2d(1)  = 'Cflx     ' , 'DIC flux                          ',  'molC/m2/s    ' 
    274    pisdia2d(2)  = 'Oflx     ' , 'Oxygen flux                       ',  'molC/m2/s    ' 
    275    pisdia2d(3)  = 'Kg       ' , 'Gas transfer                      ',  'mol/m2/s/uatm' 
    276    pisdia2d(4)  = 'Delc     ' , 'Delta CO2                         ',  'uatm         ' 
    277    pisdia2d(5)  = 'PMO      ' , 'POC export                        ',  'molC/m2/s    ' 
    278    pisdia2d(6)  = 'PMO2     ' , 'GOC export                        ',  'molC/m2/s    ' 
    279    pisdia2d(7)  = 'ExpFe1   ' , 'Nano iron export                  ',  'molFe/m2/s   ' 
    280    pisdia2d(8)  = 'ExpFe2   ' , 'Diatoms iron export               ',  'molFe/m2/s   ' 
    281    pisdia2d(9)  = 'ExpSi    ' , 'Silicate export                   ',  'molSi/m2/s   ' 
    282    pisdia2d(10) = 'ExpCaCO3 ' , 'Calcite export                    ',  'molC/m2/s    ' 
    283    pisdia2d(11) = 'heup     ' , 'euphotic layer depth              ',  'm            ' 
    284    pisdia2d(12) = 'Fedep    ' , 'Iron dep                          ',  'molFe/m2/s   ' 
    285    pisdia2d(13) = 'Nfix     ' , 'Nitrogen Fixation                 ',  'molN/m2/s    ' 
    286    pisdia3d(1)  = 'PH       ' , 'PH                                ',  '-            ' 
    287    pisdia3d(2)  = 'CO3      ' , 'Bicarbonates                      ',  'mol/l        ' 
    288    pisdia3d(3)  = 'CO3sat   ' , 'CO3 saturation                    ',  'mol/l        ' 
    289    pisdia3d(4)  = 'PAR      ' , 'light penetration                 ',  'W/m2         ' 
    290    pisdia3d(5)  = 'PPPHY    ' , 'Primary production of nanophyto   ',  'molC/m3/s    ' 
    291    pisdia3d(6)  = 'PPPHY2   ' , 'Primary production of diatoms     ',  'molC/m3/s    ' 
    292    pisdia3d(7)  = 'PPNEWN   ' , 'New Primary production of nano    ',  'molC/m3/s    ' 
    293    pisdia3d(8)  = 'PPNEWD   ' , 'New Primary production of diat    ',  'molC/m3/s    ' 
    294    pisdia3d(9)  = 'PBSi     ' , 'Primary production of Si diatoms  ',  'molSi/m3/s   ' 
    295    pisdia3d(10) = 'PFeN     ' , 'Primary production of nano iron   ',  'molFe/m3/s   ' 
    296    pisdia3d(11) = 'PFeD     ' , 'Primary production of diatoms iron',  'molFe/m3/s   ' 
    297 / 
    298 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    299255&nampisdmp     !  Damping  
    300256!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
     
    317273!!              7  - general coefficients                       (namlobrat) 
    318274!!              8  - optical parameters                         (namlobopt) 
    319  
    320 !!              10 - biological diagnostics trends              (namlobdbi)  
    321275!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    322276!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
     
    389343   rpig   = 0.7        ! chla/chla+pheo ratio 
    390344/ 
    391 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    392 &nampisdbi     !   biological diagnostics trends      
    393 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
    394 !                !  2D bio diagnostics   units : mmole/m2/s   ("key_trdmld_trc") 
    395 !                !  name    !       title of the field      !     units      ! 
    396    pisdiabio(1)  = 'NO3PHY' , 'Flux from NO3 to PHY          ',  'mmole/m3/s' 
    397    pisdiabio(2)  = 'NH4PHY' , 'Flux from NH4 to PHY          ',  'mmole/m3/s' 
    398    pisdiabio(3)  = 'PHYNH4' , 'Flux from PHY to NH4          ',  'mmole/m3/s' 
    399    pisdiabio(4)  = 'PHYDOM' , 'Flux from PHY to DOM          ',  'mmole/m3/s' 
    400    pisdiabio(5)  = 'PHYZOO' , 'Flux from PHY to ZOO          ',  'mmole/m3/s' 
    401    pisdiabio(6)  = 'PHYDET' , 'Flux from PHY to DET          ',  'mmole/m3/s' 
    402    pisdiabio(7)  = 'DETZOO' , 'Flux from DET to ZOO          ',  'mmole/m3/s' 
    403    pisdiabio(8)  = 'DETSED' , 'Flux from DET to SED          ',  'mmole/m3/s' 
    404    pisdiabio(9)  = 'ZOODET' , 'Flux from ZOO to DET          ',  'mmole/m3/s' 
    405    pisdiabio(10)  = 'ZOOBOD' , 'Zooplankton closure          ',  'mmole/m3/s' 
    406    pisdiabio(11)  = 'ZOONH4' , 'Flux from ZOO to NH4         ',  'mmole/m3/s' 
    407    pisdiabio(12)  = 'ZOODOM' , 'Flux from ZOO to DOM         ',  'mmole/m3/s' 
    408    pisdiabio(13)  = 'NH4NO3' , 'Flux from NH4 to NO3         ',  'mmole/m3/s' 
    409    pisdiabio(14)  = 'DOMNH4' , 'Flux from DOM to NH4         ',  'mmole/m3/s' 
    410    pisdiabio(15)  = 'DETNH4' , 'Flux from DET to NH4         ',  'mmole/m3/s' 
    411    pisdiabio(16)  = 'DETDOM' , 'Flux from DET to DOM         ',  'mmole/m3/s' 
    412    pisdiabio(17)  = 'SEDNO3' , 'NO3 remineralization from SED',  'mmole/m3/s' 
    413 / 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_top_ref

    r6403 r7041  
    88!!               - tracer newtonian damping              (namtrc_dmp) 
    99!!               - dynamical tracer trends               (namtrc_trd) 
    10 !!               - tracer output diagonstics             (namtrc_dia) 
    1110!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    1211!----------------------------------------------------------------------- 
    1312&namtrc_run      !   run information 
    1413!----------------------------------------------------------------------- 
     14   jptra         =  3        ! Total number of tracers 
    1515   nn_dttrc      =  1        !  time step frequency for passive sn_tracers 
    16    nn_writetrc   =  5475     !  time step frequency for sn_tracer outputs 
    1716   ln_top_euler  = .false.   !  use Euler time-stepping for TOP 
    1817   ln_rsttr      = .false.   !  start from a restart file (T) or not (F) 
     
    2827&namtrc          !   tracers definition 
    2928!----------------------------------------------------------------------- 
    30    ln_trcdta     =   .true.  !  Initialisation from data input file (T) or not (F) 
     29   ln_age        =  .true. 
     30   ln_cfc11      =  .true. 
     31   ln_cfc12      =  .false. 
     32   ln_c14        =  .true. 
     33   ln_trcdta     =  .false.  !  Initialisation from data input file (T) or not (F) 
    3134   ln_trcdmp     =  .false.  !  add a damping termn (T) or not (F) 
    3235   ln_trcdmp_clo =  .false.  !  damping term (T) or not (F) on closed seas 
     36! 
     37!              !    name   !           title of the field              !   units    ! initial data from file or not ! 
     38   sn_tracer(1)  = 'Age   ' , 'Sea water age since surface contact     ',  'yr'     ,      .false.  
     39   sn_tracer(2)  = 'CFC11 ' , 'CFC11 Concentration                     ',  'umolC/L',      .false. 
     40   sn_tracer(3)  = 'RC14  ' , 'Radiocarbon ratio                       ',  '-'      ,      .false.  
    3341/ 
    3442!----------------------------------------------------------------------- 
     
    111119   ln_trdtrc(23) = .true. 
    112120/ 
    113 !----------------------------------------------------------------------- 
    114 &namtrc_dia      !   parameters for passive tracer additional diagnostics 
    115 !---------------------------------------------------------------------- 
    116    ln_diatrc     =  .true.   !  save additional diag. (T) or not (F) 
    117    ln_diabio     =  .true.   !  output biological trends 
    118    nn_writedia   =  5475     !  time step frequency for diagnostics 
    119    nn_writebio   =    10     !  frequency of biological outputs 
    120 / 
    121121!---------------------------------------------------------------------- 
    122122&namtrc_bc       !   data for boundary conditions 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/cfg.txt

    r6403 r7041  
    1111GYRE OPA_SRC 
    1212ORCA2_LIM_PISCES OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 
     13ORCA2_LIM3_PISCES OPA_SRC LIM_SRC_3 NST_SRC TOP_SRC 
     14ORCA2_LIM3_TRC OPA_SRC LIM_SRC_3 NST_SRC TOP_SRC 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/par_cfc.F90

    r3680 r7041  
    1010   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    1111   !!---------------------------------------------------------------------- 
    12    USE par_pisces , ONLY : jp_pisces       !: number of tracers in PISCES 
    13    USE par_pisces , ONLY : jp_pisces_2d    !: number of 2D diag in PISCES 
    14    USE par_pisces , ONLY : jp_pisces_3d    !: number of 3D diag in PISCES 
    15    USE par_pisces , ONLY : jp_pisces_trd   !: number of biological diag in PISCES 
    1612 
    1713   IMPLICIT NONE 
    1814 
    19    INTEGER, PARAMETER ::   jp_lc      =  jp_pisces     !: cumulative number of passive tracers 
    20    INTEGER, PARAMETER ::   jp_lc_2d   =  jp_pisces_2d  !: 
    21    INTEGER, PARAMETER ::   jp_lc_3d   =  jp_pisces_3d  !: 
    22    INTEGER, PARAMETER ::   jp_lc_trd  =  jp_pisces_trd !: 
    23     
    24 #if defined key_cfc 
    25    !!--------------------------------------------------------------------- 
    26    !!   'key_cfc'   :                                          CFC tracers 
    27    !!--------------------------------------------------------------------- 
    28    LOGICAL, PUBLIC, PARAMETER ::   lk_cfc     = .TRUE.      !: CFC flag  
    29    INTEGER, PUBLIC, PARAMETER ::   jp_cfc     =  1          !: number of passive tracers 
    30    INTEGER, PUBLIC, PARAMETER ::   jp_cfc_2d  =  2          !: additional 2d output arrays ('key_trc_diaadd') 
    31    INTEGER, PUBLIC, PARAMETER ::   jp_cfc_3d  =  0          !: additional 3d output arrays ('key_trc_diaadd') 
    32    INTEGER, PUBLIC, PARAMETER ::   jp_cfc_trd =  0          !: number of sms trends for CFC 
    33     
    34    ! assign an index in trc arrays for each CFC prognostic variables 
    35    INTEGER, PUBLIC, PARAMETER ::   jpc11       = jp_lc + 1   !: CFC-11  
    36    INTEGER, PUBLIC, PARAMETER ::   jpc12       = jp_lc + 2   !: CFC-12    
    37 #else 
    38    !!--------------------------------------------------------------------- 
    39    !!   Default     :                                       No CFC tracers 
    40    !!--------------------------------------------------------------------- 
    41    LOGICAL, PUBLIC, PARAMETER ::   lk_cfc     = .FALSE.     !: CFC flag  
    42    INTEGER, PUBLIC, PARAMETER ::   jp_cfc     =  0          !: No CFC tracers 
    43    INTEGER, PUBLIC, PARAMETER ::   jp_cfc_2d  =  0          !: No CFC additional 2d output arrays  
    44    INTEGER, PUBLIC, PARAMETER ::   jp_cfc_3d  =  0          !: No CFC additional 3d output arrays  
    45    INTEGER, PUBLIC, PARAMETER ::   jp_cfc_trd =  0          !: number of sms trends for CFC 
    46 #endif 
     15   INTEGER, PUBLIC  :: jp_cfc            !:  number of CFC passive tracers 
     16   INTEGER, PUBLIC  :: jpc11, jpc12      !:  index of CFC tracers 
     17   INTEGER, PUBLIC  :: jp_cfc0, jp_cfc1  !:  First/last index of CFC tracers 
    4718 
    48    ! Starting/ending CFC do-loop indices (N.B. no CFC : jp_cfc0 > jp_cfc1 the do-loop are never done) 
    49    INTEGER, PUBLIC, PARAMETER ::   jp_cfc0     = jp_lc + 1       !: First index of CFC tracers 
    50    INTEGER, PUBLIC, PARAMETER ::   jp_cfc1     = jp_lc + jp_cfc  !: Last  index of CFC tracers 
    51    INTEGER, PUBLIC, PARAMETER ::   jp_cfc0_2d  = jp_lc_2d  + 1       !: First index of CFC tracers 
    52    INTEGER, PUBLIC, PARAMETER ::   jp_cfc1_2d  = jp_lc_2d  + jp_cfc_2d  !: Last  index of CFC tracers 
    53    INTEGER, PUBLIC, PARAMETER ::   jp_cfc0_3d  = jp_lc_3d  + 1       !: First index of CFC tracers 
    54    INTEGER, PUBLIC, PARAMETER ::   jp_cfc1_3d  = jp_lc_3d  + jp_cfc_3d  !: Last  index of CFC tracers 
    55    INTEGER, PUBLIC, PARAMETER ::   jp_cfc0_trd = jp_lc_trd + 1       !: First index of CFC tracers 
    56    INTEGER, PUBLIC, PARAMETER ::   jp_cfc1_trd = jp_lc_trd + jp_cfc_trd  !: Last  index of CFC tracers 
     19   LOGICAL, PUBLIC  :: ln_cfc11, ln_cfc12, ll_cfc 
    5720 
    5821   !!====================================================================== 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcice_cfc.F90

    r5434 r7041  
    55   !!====================================================================== 
    66   !! History :   2.0  !  2007-12  (C. Ethe, G. Madec) Original code 
    7    !!---------------------------------------------------------------------- 
    8 #if defined key_cfc 
    9    !!---------------------------------------------------------------------- 
    10    !!   'key_cfc'                                               CFC tracers 
    117   !!---------------------------------------------------------------------- 
    128   !! trc_ice_cfc       : MY_TRC model main routine 
     
    4036   END SUBROUTINE trc_ice_ini_cfc 
    4137 
    42  
    43 #else 
    44    !!---------------------------------------------------------------------- 
    45    !!   Dummy module                                        No MY_TRC model 
    46    !!---------------------------------------------------------------------- 
    47 CONTAINS 
    48    SUBROUTINE trc_ice_ini_cfc             ! Empty routine 
    49    END SUBROUTINE trc_ice_ini_cfc 
    50 #endif 
    51  
    5238   !!====================================================================== 
    5339END MODULE trcice_cfc 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcini_cfc.F90

    r3294 r7041  
    66   !! History :   2.0  !  2007-12  (C. Ethe, G. Madec)  
    77   !!---------------------------------------------------------------------- 
    8 #if defined key_cfc 
    9    !!---------------------------------------------------------------------- 
    10    !!   'key_cfc'                                               CFC tracers 
    118   !!---------------------------------------------------------------------- 
    129   !! trc_ini_cfc      : CFC model initialisation 
     
    4643      INTEGER  ::  iskip = 6   ! number of 1st descriptor lines 
    4744      REAL(wp) ::  zyy, zyd 
     45      CHARACTER(len = 20)  ::  cltra 
    4846      !!---------------------------------------------------------------------- 
    4947 
     
    5250      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~' 
    5351 
     52       
     53      ! assign an index in trc arrays for each CFC prognostic variables 
     54      jp_cfc = 1  
     55      IF( ln_cfc11 .AND. ln_cfc12 )  jp_cfc = 2 
     56 
     57      ! assign an index in trc arrays for each prognostic variables 
     58      DO jn = 1, jptra 
     59        cltra = ctrcnm(jn)  
     60        IF( cltra == 'CFC11'  .OR. cltra == 'cfc11' )   jpc11 = jn  
     61        IF( cltra == 'CFC12'  .OR. cltra == 'cfc12' )   jpc12 = jn  
     62      ENDDO 
     63    
     64      IF( jp_cfc == 1 ) THEN 
     65        IF( ln_cfc11 )  jp_cfc0  = jpc11 
     66        IF( ln_cfc12 )  jp_cfc0  = jpc12 
     67      ELSE 
     68        jp_cfc0 = MIN( jpc11, jpc12 )  
     69      ENDIF 
     70      jp_cfc1 = jp_cfc0 + jp_cfc - 1 
     71 
     72      IF( lwp ) THEN 
     73        WRITE(numout,*) '' 
     74        WRITE(numout,*) ' First index of CFC tracer in the passive tracer array   jp_cfc0 = ', jp_cfc0 
     75        WRITE(numout,*) ' Last  index of CFC tracer in the passive tracer array   jp_cfc1 = ', jp_cfc1 
     76        WRITE(numout,*)  
     77      ENDIF 
    5478 
    5579      IF(lwp) WRITE(numout,*) 'read of formatted file cfc1112atm' 
     
    146170   END SUBROUTINE trc_ini_cfc 
    147171    
    148 #else 
    149    !!---------------------------------------------------------------------- 
    150    !!   Dummy module                                         No CFC tracers 
    151    !!---------------------------------------------------------------------- 
    152 CONTAINS 
    153    SUBROUTINE trc_ini_cfc             ! Empty routine 
    154    END SUBROUTINE trc_ini_cfc 
    155 #endif 
    156  
    157172   !!====================================================================== 
    158173END MODULE trcini_cfc 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcnam_cfc.F90

    r4624 r7041  
    66   !! History :   2.0  !  2007-12  (C. Ethe, G. Madec) from trcnam.cfc.h90 
    77   !!---------------------------------------------------------------------- 
    8 #if defined key_cfc 
    9    !!---------------------------------------------------------------------- 
    10    !!   'key_cfc'                                               CFC tracers 
    11    !!---------------------------------------------------------------------- 
    128   !! trc_nam_cfc      : CFC model initialisation 
    139   !!---------------------------------------------------------------------- 
    1410   USE oce_trc         ! Ocean variables 
    15    USE par_trc         ! TOP parameters 
    1611   USE trc             ! TOP variables 
    1712   USE trcsms_cfc      ! CFC specific variable 
    18    USE iom             ! I/O manager 
    1913 
    2014   IMPLICIT NONE 
     
    4236      !! ** input   :   Namelist namcfc 
    4337      !!---------------------------------------------------------------------- 
    44       INTEGER ::  numnatc_ref = -1   ! Logical unit for reference CFC namelist 
    45       INTEGER ::  numnatc_cfg = -1   ! Logical unit for configuration CFC namelist 
    46       INTEGER ::  numonc      = -1   ! Logical unit for output namelist 
    4738      INTEGER :: ios                 ! Local integer output status for namelist read 
    4839      INTEGER :: jl, jn 
    49       TYPE(DIAG), DIMENSION(jp_cfc_2d) :: cfcdia2d 
    5040      !! 
    51       NAMELIST/namcfcdate/ ndate_beg, nyear_res 
    52       NAMELIST/namcfcdia/  cfcdia2d     ! additional diagnostics 
     41      NAMELIST/namcfc/ ndate_beg, nyear_res 
    5342      !!---------------------------------------------------------------------- 
    54       !                             ! Open namelist files 
    55       CALL ctl_opn( numnatc_ref, 'namelist_cfc_ref'   ,     'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 
    56       CALL ctl_opn( numnatc_cfg, 'namelist_cfc_cfg'   ,     'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 
    57       IF(lwm) CALL ctl_opn( numonc, 'output.namelist.cfc', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 
    5843 
    59       REWIND( numnatc_ref )              ! Namelist namcfcdate in reference namelist : CFC parameters 
    60       READ  ( numnatc_ref, namcfcdate, IOSTAT = ios, ERR = 901) 
    61 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfcdate in reference namelist', lwp ) 
     44      REWIND( numtrc_ref )              ! Namelist namcfcdate in reference namelist : CFC parameters 
     45      READ  ( numtrc_ref, namcfc, IOSTAT = ios, ERR = 901) 
     46901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfc in reference namelist', lwp ) 
    6247 
    63       REWIND( numnatc_cfg )              ! Namelist namcfcdate in configuration namelist : CFC parameters 
    64       READ  ( numnatc_cfg, namcfcdate, IOSTAT = ios, ERR = 902 ) 
    65 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfcdate in configuration namelist', lwp ) 
    66       IF(lwm) WRITE ( numonc, namcfcdate ) 
     48      REWIND( numtrc_cfg )              ! Namelist namcfcdate in configuration namelist : CFC parameters 
     49      READ  ( numtrc_cfg, namcfc, IOSTAT = ios, ERR = 902 ) 
     50902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfc in configuration namelist', lwp ) 
     51      IF(lwm) WRITE ( numonr, namcfc ) 
    6752 
    6853      IF(lwp) THEN                  ! control print 
     
    7661      IF(lwp) WRITE(numout,*) '    initial year (aa)                       nyear_beg = ', nyear_beg 
    7762      ! 
    78  
    79       IF( .NOT.lk_iomput .AND. ln_diatrc ) THEN 
    80          ! 
    81          ! Namelist namcfcdia 
    82          ! ------------------- 
    83          REWIND( numnatc_ref )              ! Namelist namcfcdia in reference namelist : CFC diagnostics 
    84          READ  ( numnatc_ref, namcfcdia, IOSTAT = ios, ERR = 903) 
    85 903      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfcdia in reference namelist', lwp ) 
    86  
    87          REWIND( numnatc_cfg )              ! Namelist namcfcdia in configuration namelist : CFC diagnostics 
    88          READ  ( numnatc_cfg, namcfcdia, IOSTAT = ios, ERR = 904 ) 
    89 904      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfcdia in configuration namelist', lwp ) 
    90          IF(lwm) WRITE ( numonc, namcfcdia ) 
    91  
    92          DO jl = 1, jp_cfc_2d 
    93             jn = jp_cfc0_2d + jl - 1 
    94             ctrc2d(jn) = TRIM( cfcdia2d(jl)%sname ) 
    95             ctrc2l(jn) = TRIM( cfcdia2d(jl)%lname ) 
    96             ctrc2u(jn) = TRIM( cfcdia2d(jl)%units ) 
    97          END DO 
    98  
    99          IF(lwp) THEN                   ! control print 
    100             WRITE(numout,*) 
    101             WRITE(numout,*) ' Namelist : natadd' 
    102             DO jl = 1, jp_cfc_2d 
    103                jn = jp_cfc0_2d + jl - 1 
    104                WRITE(numout,*) '  2d diag nb : ', jn, '    short name : ', ctrc2d(jn), & 
    105                  &             '  long name  : ', ctrc2l(jn), '   unit : ', ctrc2u(jn) 
    106             END DO 
    107             WRITE(numout,*) ' ' 
    108          ENDIF 
    109          ! 
    110       ENDIF 
    111  
    112    IF(lwm) CALL FLUSH ( numonc )     ! flush output namelist CFC 
     63      IF(lwm) CALL FLUSH ( numonr )     ! flush output namelist CFC 
    11364 
    11465   END SUBROUTINE trc_nam_cfc 
    11566    
    116 #else 
    117    !!---------------------------------------------------------------------- 
    118    !!  Dummy module :                                                No CFC 
    119    !!---------------------------------------------------------------------- 
    120 CONTAINS 
    121    SUBROUTINE trc_nam_cfc                      ! Empty routine 
    122    END  SUBROUTINE  trc_nam_cfc 
    123 #endif   
    124  
    12567   !!====================================================================== 
    12668END MODULE trcnam_cfc 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90

    r6140 r7041  
    77   !!  NEMO      1.0  !  2004-03  (C. Ethe) free form + modularity 
    88   !!            2.0  !  2007-12  (C. Ethe, G. Madec)  reorganisation 
    9    !!---------------------------------------------------------------------- 
    10 #if defined key_cfc 
    11    !!---------------------------------------------------------------------- 
    12    !!   'key_cfc'                                               CFC tracers 
    139   !!---------------------------------------------------------------------- 
    1410   !!   trc_sms_cfc  :  compute and add CFC suface forcing to CFC trends 
     
    159155               ! trn in pico-mol/l idem qtr; ak in en m/a 
    160156               qtr_cfc(ji,jj,jl) = -zak_cfc * ( trb(ji,jj,1,jn) - zca_cfc )   & 
    161 #if defined key_degrad 
    162                   &                         * facvol(ji,jj,1)                           & 
    163 #endif 
    164157                  &                         * tmask(ji,jj,1) * ( 1. - fr_i(ji,jj) ) 
    165158               ! Add the surface flux to the trend 
     
    185178      ! 
    186179      IF( lk_iomput ) THEN 
    187          CALL iom_put( "qtrCFC11"  , qtr_cfc (:,:,1) ) 
    188          CALL iom_put( "qintCFC11" , qint_cfc(:,:,1) ) 
    189       ELSE 
    190          IF( ln_diatrc ) THEN 
    191             trc2d(:,:,jp_cfc0_2d    ) = qtr_cfc (:,:,1) 
    192             trc2d(:,:,jp_cfc0_2d + 1) = qint_cfc(:,:,1) 
    193          END IF 
     180         DO jn = jp_cfc0, jp_cfc1 
     181            CALL iom_put( 'qtr_'//ctrcnm(jn) , qtr_cfc (:,:,jn) ) 
     182            CALL iom_put( 'qint_'//ctrcnm(jn), qint_cfc(:,:,jn) ) 
     183         ENDDO 
    194184      END IF 
    195185      ! 
     
    277267   END FUNCTION trc_sms_cfc_alloc 
    278268 
    279 #else 
    280    !!---------------------------------------------------------------------- 
    281    !!   Dummy module                                         No CFC tracers 
    282    !!---------------------------------------------------------------------- 
    283 CONTAINS 
    284    SUBROUTINE trc_sms_cfc( kt )       ! Empty routine 
    285       WRITE(*,*) 'trc_sms_cfc: You should not have seen this print! error?', kt 
    286    END SUBROUTINE trc_sms_cfc 
    287 #endif 
    288  
    289269   !!====================================================================== 
    290270END MODULE trcsms_cfc 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcwri_cfc.F90

    r5836 r7041  
    66   !! History :   1.0  !  2009-05 (C. Ethe)  Original code 
    77   !!---------------------------------------------------------------------- 
    8 #if defined key_top && defined key_cfc && defined key_iomput 
    9    !!---------------------------------------------------------------------- 
    10    !!   'key_cfc'                                           cfc model 
     8#if defined key_top && defined key_iomput 
    119   !!---------------------------------------------------------------------- 
    1210   !! trc_wri_cfc   :  outputs of concentration fields 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/par_my_trc.F90

    r3680 r7041  
    1010   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    1111   !!---------------------------------------------------------------------- 
    12    USE par_pisces , ONLY : jp_pisces       !: number of tracers in PISCES 
    13    USE par_pisces , ONLY : jp_pisces_2d    !: number of 2D diag in PISCES 
    14    USE par_pisces , ONLY : jp_pisces_3d    !: number of 3D diag in PISCES 
    15    USE par_pisces , ONLY : jp_pisces_trd   !: number of biological diag in PISCES 
    16  
    17    USE par_cfc    , ONLY : jp_cfc          !: number of tracers in CFC 
    18    USE par_cfc    , ONLY : jp_cfc_2d       !: number of tracers in CFC 
    19    USE par_cfc    , ONLY : jp_cfc_3d       !: number of tracers in CFC 
    20    USE par_cfc    , ONLY : jp_cfc_trd      !: number of tracers in CFC 
    21  
    22    USE par_c14b   , ONLY : jp_c14b         !: number of tracers in C14 
    23    USE par_c14b   , ONLY : jp_c14b_2d      !: number of tracers in C14 
    24    USE par_c14b   , ONLY : jp_c14b_3d      !: number of tracers in C14 
    25    USE par_c14b   , ONLY : jp_c14b_trd     !: number of tracers in C14 
    2612 
    2713   IMPLICIT NONE 
    28  
    29    INTEGER, PARAMETER ::   jp_lm      =  jp_pisces     + jp_cfc     + jp_c14b     !:  
    30    INTEGER, PARAMETER ::   jp_lm_2d   =  jp_pisces_2d  + jp_cfc_2d  + jp_c14b_2d  !: 
    31    INTEGER, PARAMETER ::   jp_lm_3d   =  jp_pisces_3d  + jp_cfc_3d  + jp_c14b_3d  !: 
    32    INTEGER, PARAMETER ::   jp_lm_trd  =  jp_pisces_trd + jp_cfc_trd + jp_c14b_trd !: 
    3314 
    3415#if defined key_my_trc 
     
    3617   !!   'key_my_trc'                     user defined tracers (MY_TRC) 
    3718   !!--------------------------------------------------------------------- 
    38    LOGICAL, PUBLIC, PARAMETER ::   lk_my_trc     = .TRUE.   !: PTS flag  
    39    INTEGER, PUBLIC, PARAMETER ::   jp_my_trc     =  1       !: number of PTS tracers 
    40    INTEGER, PUBLIC, PARAMETER ::   jp_my_trc_2d  =  0       !: additional 2d output arrays ('key_trc_diaadd') 
    41    INTEGER, PUBLIC, PARAMETER ::   jp_my_trc_3d  =  0       !: additional 3d output arrays ('key_trc_diaadd') 
    42    INTEGER, PUBLIC, PARAMETER ::   jp_my_trc_trd =  0       !: number of sms trends for MY_TRC 
    43  
    44    ! assign an index in trc arrays for each PTS prognostic variables 
    45    INTEGER, PUBLIC, PARAMETER ::   jpmyt1 = jp_lm + 1     !: 1st MY_TRC tracer 
     19   LOGICAL, PUBLIC, PARAMETER ::   lk_my_trc  = .TRUE.   !: PTS flag  
     20   INTEGER, PUBLIC            ::   jp_my_trc      !: number of PTS tracers 
    4621 
    4722#else 
     
    4924   !!   Default                           No user defined tracers (MY_TRC) 
    5025   !!--------------------------------------------------------------------- 
    51    LOGICAL, PUBLIC, PARAMETER ::   lk_my_trc     = .FALSE.  !: MY_TRC flag  
    52    INTEGER, PUBLIC, PARAMETER ::   jp_my_trc     =  0       !: No MY_TRC tracers 
    53    INTEGER, PUBLIC, PARAMETER ::   jp_my_trc_2d  =  0       !: No MY_TRC additional 2d output arrays  
    54    INTEGER, PUBLIC, PARAMETER ::   jp_my_trc_3d  =  0       !: No MY_TRC additional 3d output arrays  
    55    INTEGER, PUBLIC, PARAMETER ::   jp_my_trc_trd =  0       !: number of sms trends for MY_TRC 
     26   LOGICAL, PUBLIC, PARAMETER ::   lk_my_trc   = .FALSE.  !: MY_TRC flag  
     27   INTEGER, PUBLIC            ::   jp_my_trc        !: No MY_TRC tracers 
    5628#endif 
    5729 
    5830   ! Starting/ending PISCES do-loop indices (N.B. no PISCES : jpl_pcs < jpf_pcs the do-loop are never done) 
    59    INTEGER, PUBLIC, PARAMETER ::   jp_myt0     = jp_lm     + 1              !: First index of MY_TRC passive tracers 
    60    INTEGER, PUBLIC, PARAMETER ::   jp_myt1     = jp_lm     + jp_my_trc      !: Last  index of MY_TRC passive tracers 
    61    INTEGER, PUBLIC, PARAMETER ::   jp_myt0_2d  = jp_lm_2d  + 1              !: First index of MY_TRC passive tracers 
    62    INTEGER, PUBLIC, PARAMETER ::   jp_myt1_2d  = jp_lm_2d  + jp_my_trc_2d   !: Last  index of MY_TRC passive tracers 
    63    INTEGER, PUBLIC, PARAMETER ::   jp_myt0_3d  = jp_lm_3d  + 1              !: First index of MY_TRC passive tracers 
    64    INTEGER, PUBLIC, PARAMETER ::   jp_myt1_3d  = jp_lm_3d  + jp_my_trc_3d   !: Last  index of MY_TRC passive tracers 
    65    INTEGER, PUBLIC, PARAMETER ::   jp_myt0_trd = jp_lm_trd + 1              !: First index of MY_TRC passive tracers 
    66    INTEGER, PUBLIC, PARAMETER ::   jp_myt1_trd = jp_lm_trd + jp_my_trc_trd  !: Last  index of MY_TRC passive tracers 
     31   INTEGER, PUBLIC ::   jp_myt0             !: First index of MY_TRC passive tracers 
     32   INTEGER, PUBLIC ::   jp_myt1             !: Last  index of MY_TRC passive tracers 
    6733 
     34   INTEGER, PUBLIC ::   jpmyt0, jpmty1, jpmyt2         !: Last  index of MY_TRC passive tracers 
    6835   !!====================================================================== 
    6936END MODULE par_my_trc 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcini_my_trc.F90

    r5385 r7041  
    3737      !! ** Method  : - Read the namcfc namelist and check the parameter values 
    3838      !!---------------------------------------------------------------------- 
     39      INTEGER              ::  jn 
     40      CHARACTER(len = 20)  ::  cltra 
     41 
     42 
     43      jp_my_trc = 1 
     44      ! assign an index in trc arrays for each prognostic variables 
     45      DO jn = 1, jptra 
     46        cltra = ctrcnm(jn)  
     47        IF( cltra == 'MYTRC'   .OR. cltra == 'mytrc'  )   jpmyt0 = jn  
     48        IF( cltra == 'MYTRC1'  .OR. cltra == 'mytrc1' )   jpmyt1 = jn  
     49        IF( cltra == 'MYTRC2'  .OR. cltra == 'mytrc2' )   jpmyt2 = jn  
     50      ENDDO 
     51    
     52      IF( jp_my_trc == 1 ) THEN 
     53        jp_myt0  = jpmyt0 
     54      ELSE 
     55        jp_myt0 = MIN( jpmyt0, jpmyt1, jpmyt2 )  
     56      ENDIF 
     57      jp_myt1 = jp_myt0 + jp_my_trc - 1 
     58 
     59 
     60      IF( lwp ) THEN 
     61        WRITE(numout,*) '' 
     62        WRITE(numout,*) ' First index of MYTRC model in the passive tracer array   jp_myt0 = ', jp_myt0 
     63        WRITE(numout,*) ' Last  index of MYTRC model in the passive tracer array   jp_myt1 = ', jp_myt1 
     64        WRITE(numout,*)  
     65      ENDIF 
     66 
    3967 
    4068      !                       ! Allocate MY_TRC arrays 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zbio.F90

    r6140 r7041  
    99   !!             2.0  !  2007-12  (C. Deltel, G. Madec)  F90 
    1010   !!---------------------------------------------------------------------- 
    11 #if defined key_pisces_reduced 
     11#if defined key_pisces 
    1212   !!---------------------------------------------------------------------- 
    13    !!   'key_pisces_reduced'                                     LOBSTER bio-model 
     13   !!   'key_pisces'                                     LOBSTER bio-model 
    1414   !!---------------------------------------------------------------------- 
    1515   !!   p2z_bio        :   
     
    8686      !!                                  source      sink 
    8787      !!         
    88       !!              IF 'key_diabio' defined , the biogeochemical trends 
    89       !!              for passive tracers are saved for futher diagnostics. 
    9088      !!--------------------------------------------------------------------- 
    9189      !! 
     
    109107      IF( nn_timing == 1 )  CALL timing_start('p2z_bio') 
    110108      ! 
    111       IF( ln_diatrc .OR. lk_iomput ) THEN 
     109      IF( lk_iomput ) THEN 
    112110         CALL wrk_alloc( jpi, jpj,     17, zw2d ) 
    113111         CALL wrk_alloc( jpi, jpj, jpk, 3, zw3d ) 
     
    121119 
    122120      xksi(:,:) = 0.e0        ! zooplakton closure ( fbod) 
    123       IF( ln_diatrc .OR. lk_iomput ) THEN 
     121      IF( lk_iomput ) THEN 
    124122         zw2d  (:,:,:) = 0.e0 
    125123         zw3d(:,:,:,:) = 0.e0 
     
    218216               tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma 
    219217 
    220  
    221                IF( ( ln_diabio .AND. .NOT. lk_iomput ) .OR. l_trdtrc ) THEN 
    222                   trbio(ji,jj,jk,jp_pcs0_trd     ) = zno3phy 
    223                   trbio(ji,jj,jk,jp_pcs0_trd +  1) = znh4phy 
    224                   trbio(ji,jj,jk,jp_pcs0_trd +  2) = zphynh4 
    225                   trbio(ji,jj,jk,jp_pcs0_trd +  3) = zphydom 
    226                   trbio(ji,jj,jk,jp_pcs0_trd +  4) = zphyzoo 
    227                   trbio(ji,jj,jk,jp_pcs0_trd +  5) = zphydet 
    228                   trbio(ji,jj,jk,jp_pcs0_trd +  6) = zdetzoo 
    229                   !  trend number 8 in p2zsed 
    230                   trbio(ji,jj,jk,jp_pcs0_trd +  8) = zzoodet 
    231                   trbio(ji,jj,jk,jp_pcs0_trd +  9) = zzoobod 
    232                   trbio(ji,jj,jk,jp_pcs0_trd + 10) = zzoonh4 
    233                   trbio(ji,jj,jk,jp_pcs0_trd + 11) = zzoodom 
    234                   trbio(ji,jj,jk,jp_pcs0_trd + 12) = znh4no3 
    235                   trbio(ji,jj,jk,jp_pcs0_trd + 13) = zdomnh4 
    236                   trbio(ji,jj,jk,jp_pcs0_trd + 14) = zdetnh4 
    237                   trbio(ji,jj,jk,jp_pcs0_trd + 15) = zdetdom 
    238                   !  trend number 17 in p2zexp 
    239                 ENDIF 
    240                 IF( ln_diatrc .OR. lk_iomput ) THEN 
     218                IF( lk_iomput ) THEN 
    241219                  ! convert fluxes in per day 
    242220                  ze3t = e3t_n(ji,jj,jk) * 86400._wp 
     
    340318               tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma 
    341319               ! 
    342                IF( ( ln_diabio .AND. .NOT. lk_iomput ) .OR. l_trdtrc ) THEN 
    343                   trbio(ji,jj,jk,jp_pcs0_trd     ) = zno3phy 
    344                   trbio(ji,jj,jk,jp_pcs0_trd +  1) = znh4phy 
    345                   trbio(ji,jj,jk,jp_pcs0_trd +  2) = zphynh4 
    346                   trbio(ji,jj,jk,jp_pcs0_trd +  3) = zphydom 
    347                   trbio(ji,jj,jk,jp_pcs0_trd +  4) = zphyzoo 
    348                   trbio(ji,jj,jk,jp_pcs0_trd +  5) = zphydet 
    349                   trbio(ji,jj,jk,jp_pcs0_trd +  6) = zdetzoo 
    350                   !  trend number 8 in p2zsed 
    351                   trbio(ji,jj,jk,jp_pcs0_trd +  8) = zzoodet 
    352                   trbio(ji,jj,jk,jp_pcs0_trd +  9) = zzoobod 
    353                   trbio(ji,jj,jk,jp_pcs0_trd + 10) = zzoonh4 
    354                   trbio(ji,jj,jk,jp_pcs0_trd + 11) = zzoodom 
    355                   trbio(ji,jj,jk,jp_pcs0_trd + 12) = znh4no3 
    356                   trbio(ji,jj,jk,jp_pcs0_trd + 13) = zdomnh4 
    357                   trbio(ji,jj,jk,jp_pcs0_trd + 14) = zdetnh4 
    358                   trbio(ji,jj,jk,jp_pcs0_trd + 15) = zdetdom 
    359                   !  trend number 17 in p2zexp  
    360                 ENDIF 
    361                 IF( ln_diatrc .OR. lk_iomput ) THEN 
     320                IF( lk_iomput ) THEN 
    362321                  ! convert fluxes in per day 
    363322                  ze3t = e3t_n(ji,jj,jk) * 86400._wp 
     
    389348      END DO 
    390349 
    391       IF( ln_diatrc .OR. lk_iomput ) THEN 
     350      IF( lk_iomput ) THEN 
    392351         DO jl = 1, 17  
    393352            CALL lbc_lnk( zw2d(:,:,jl),'T', 1. ) 
     
    420379        CALL iom_put( "FNH4NO3", zw3d(:,:,:,3) ) 
    421380         ! 
    422        ELSE 
    423           IF( ln_diatrc ) THEN 
    424             ! 
    425             trc2d(:,:,jp_pcs0_2d    ) = zw2d(:,:,1)  
    426             trc2d(:,:,jp_pcs0_2d + 1) = zw2d(:,:,2)  
    427             trc2d(:,:,jp_pcs0_2d + 2) = zw2d(:,:,3)  
    428             trc2d(:,:,jp_pcs0_2d + 3) = zw2d(:,:,4)  
    429             trc2d(:,:,jp_pcs0_2d + 4) = zw2d(:,:,5)  
    430             trc2d(:,:,jp_pcs0_2d + 5) = zw2d(:,:,6)  
    431             trc2d(:,:,jp_pcs0_2d + 6) = zw2d(:,:,7)  
    432                      ! trend number 8 is in p2zsed.F 
    433             trc2d(:,:,jp_pcs0_2d +  8) = zw2d(:,:,8)  
    434             trc2d(:,:,jp_pcs0_2d +  9) = zw2d(:,:,9)  
    435             trc2d(:,:,jp_pcs0_2d + 10) = zw2d(:,:,10)  
    436             trc2d(:,:,jp_pcs0_2d + 11) = zw2d(:,:,11)  
    437             trc2d(:,:,jp_pcs0_2d + 12) = zw2d(:,:,12)  
    438             trc2d(:,:,jp_pcs0_2d + 13) = zw2d(:,:,13)  
    439             trc2d(:,:,jp_pcs0_2d + 14) = zw2d(:,:,14)  
    440             trc2d(:,:,jp_pcs0_2d + 15) = zw2d(:,:,15)  
    441             trc2d(:,:,jp_pcs0_2d + 16) = zw2d(:,:,16)  
    442             trc2d(:,:,jp_pcs0_2d + 17) = zw2d(:,:,17)  
    443             ! trend number 19 is in p2zexp.F 
    444             trc3d(:,:,:,jp_pcs0_3d    ) = zw3d(:,:,:,1)  
    445             trc3d(:,:,:,jp_pcs0_3d + 1) = zw3d(:,:,:,2)  
    446             trc3d(:,:,:,jp_pcs0_3d + 2) = zw3d(:,:,:,3)  
    447          ENDIF 
    448         ! 
    449       ENDIF 
    450  
    451       IF( ln_diabio .AND. .NOT. lk_iomput )  THEN 
    452          DO jl = jp_pcs0_trd, jp_pcs1_trd 
    453             CALL lbc_lnk( trbio(:,:,1,jl),'T', 1. ) 
    454          END DO  
    455       ENDIF 
    456       ! 
    457       IF( l_trdtrc ) THEN 
    458          DO jl = jp_pcs0_trd, jp_pcs1_trd 
    459             CALL trd_trc( trbio(:,:,:,jl), jl, kt )   ! handle the trend 
    460          END DO 
    461381      ENDIF 
    462382 
     
    467387      ENDIF 
    468388      ! 
    469       IF( ln_diatrc .OR. lk_iomput ) THEN 
     389      IF( lk_iomput ) THEN 
    470390         CALL wrk_dealloc( jpi, jpj,     17, zw2d ) 
    471391         CALL wrk_dealloc( jpi, jpj, jpk, 3, zw3d ) 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zexp.F90

    r6140 r7041  
    1010   !!             3.5  !  2012-03  (C. Ethe)  Merge PISCES-LOBSTER 
    1111   !!---------------------------------------------------------------------- 
    12 #if defined key_pisces_reduced 
    13    !!---------------------------------------------------------------------- 
    14    !!   'key_pisces_reduced'                                     LOBSTER bio-model 
     12#if defined key_pisces 
     13   !!---------------------------------------------------------------------- 
     14   !!   'key_pisces'                                     LOBSTER bio-model 
    1515   !!---------------------------------------------------------------------- 
    1616   !!   p2z_exp        :  Compute loss of organic matter in the sediments 
     
    6868      INTEGER  ::   ji, jj, jk, jl, ikt 
    6969      REAL(wp) ::   zgeolpoc, zfact, zwork, ze3t, zsedpocd, zmaskt 
    70       REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrbio 
    7170      REAL(wp), POINTER, DIMENSION(:,:)   ::  zsedpoca 
    7271      CHARACTER (len=25) :: charout 
     
    8079      zsedpoca(:,:) = 0. 
    8180 
    82       IF( l_trdtrc )  THEN 
    83          CALL wrk_alloc( jpi, jpj, jpk, ztrbio )   ! temporary save of trends 
    84          ztrbio(:,:,:) = tra(:,:,:,jpno3) 
    85       ENDIF 
    8681 
    8782      ! VERTICAL DISTRIBUTION OF NEWLY PRODUCED BIOGENIC 
     
    126121  
    127122      ! Oa & Ek: diagnostics depending on jpdia2d !          left as example 
    128       IF( lk_iomput ) THEN   
    129          CALL iom_put( "SEDPOC" , sedpocn ) 
    130       ELSE 
    131          IF( ln_diatrc )           trc2d(:,:,jp_pcs0_2d + 18) = sedpocn(:,:) 
    132       ENDIF 
     123      IF( lk_iomput )  CALL iom_put( "SEDPOC" , sedpocn ) 
    133124 
    134125       
     
    160151      ENDIF 
    161152      ! 
    162       IF( l_trdtrc ) THEN 
    163          ztrbio(:,:,:) = tra(:,:,:,jpno3) - ztrbio(:,:,:) 
    164          jl = jp_pcs0_trd + 16 
    165          CALL trd_trc( ztrbio, jl, kt )   ! handle the trend 
    166          CALL wrk_dealloc( jpi, jpj, jpk, ztrbio )   ! temporary save of trends 
    167       ENDIF 
    168       ! 
    169153      CALL wrk_dealloc( jpi, jpj, zsedpoca)   ! temporary save of trends 
    170154 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zopt.F90

    r6140 r7041  
    1111   !!             3.2  !  2009-04  (C. Ethe, G. Madec)  minor optimisation + style 
    1212   !!---------------------------------------------------------------------- 
    13 #if defined key_pisces_reduced 
    14    !!---------------------------------------------------------------------- 
    15    !!   'key_pisces_reduced'                                     LOBSTER bio-model 
     13#if defined key_pisces 
     14   !!---------------------------------------------------------------------- 
     15   !!   'key_pisces'                                     LOBSTER bio-model 
    1616   !!---------------------------------------------------------------------- 
    1717   !!   p2z_opt        :   Compute the light availability in the water column 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zsed.F90

    r6140 r7041  
    88   !!             2.0  !  2007-12  (C. Deltel, G. Madec)  F90 + simplifications 
    99   !!---------------------------------------------------------------------- 
    10 #if defined key_pisces_reduced 
     10#if defined key_pisces 
    1111   !!---------------------------------------------------------------------- 
    12    !!   'key_pisces_reduced'                                     LOBSTER bio-model 
     12   !!   'key_pisces'                                     LOBSTER bio-model 
    1313   !!---------------------------------------------------------------------- 
    1414   !!   p2z_sed        :  Compute loss of organic matter in the sediments 
     
    6666      CHARACTER (len=25) :: charout 
    6767      REAL(wp), POINTER, DIMENSION(:,:  ) :: zw2d 
    68       REAL(wp), POINTER, DIMENSION(:,:,:) :: zwork, ztra, ztrbio 
     68      REAL(wp), POINTER, DIMENSION(:,:,:) :: zwork, ztra 
    6969      !!--------------------------------------------------------------------- 
    7070      ! 
     
    7979      ! Allocate temporary workspace 
    8080      CALL wrk_alloc( jpi, jpj, jpk, zwork, ztra ) 
    81       IF( l_trdtrc ) THEN 
    82          CALL wrk_alloc( jpi, jpj, jpk, ztrbio ) 
    83          ztrbio(:,:,:) = tra(:,:,:,jpdet) 
    84       ENDIF 
    8581 
    8682      ! sedimentation of detritus  : upstream scheme 
     
    116112            CALL wrk_dealloc( jpi, jpj, zw2d ) 
    117113         ENDIF 
    118       ELSE 
    119          IF( ln_diatrc ) THEN  
    120             CALL wrk_alloc( jpi, jpj, zw2d ) 
    121             zw2d(:,:) =  ztra(:,:,1) * e3t_n(:,:,1) * 86400._wp 
    122             DO jk = 2, jpkm1 
    123                zw2d(:,:) = zw2d(:,:) + ztra(:,:,jk) * e3t_n(:,:,jk) * 86400._wp 
    124             END DO 
    125             trc2d(:,:,jp_pcs0_2d + 7) = zw2d(:,:) 
    126             CALL wrk_dealloc( jpi, jpj, zw2d ) 
    127          ENDIF 
    128114      ENDIF 
    129115      ! 
    130       IF( ln_diabio .AND. .NOT. lk_iomput )  trbio(:,:,:,jp_pcs0_trd + 7) = ztra(:,:,:) 
    131116      CALL wrk_dealloc( jpi, jpj, jpk, zwork, ztra ) 
    132117      ! 
    133       IF( l_trdtrc ) THEN 
    134          ztrbio(:,:,:) = tra(:,:,:,jpdet) - ztrbio(:,:,:) 
    135          jl = jp_pcs0_trd + 7 
    136          CALL trd_trc( ztrbio, jl, kt )   ! handle the trend 
    137          CALL wrk_dealloc( jpi, jpj, jpk, ztrbio ) 
    138       ENDIF 
    139118 
    140119      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zsms.F90

    r5656 r7041  
    77   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  revised architecture 
    88   !!---------------------------------------------------------------------- 
    9 #if defined key_pisces_reduced 
     9#if defined key_pisces 
    1010   !!---------------------------------------------------------------------- 
    11    !!   'key_pisces_reduced'                              LOBSTER bio-model 
     11   !!   'key_pisces'                              LOBSTER bio-model 
    1212   !!---------------------------------------------------------------------- 
    1313   !!   p2zsms        :  Time loop of passive tracers sms 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90

    r6140 r7041  
    6767      REAL(wp) ::   zdenom1, zscave, zaggdfea, zaggdfeb, zcoag 
    6868      REAL(wp) ::   ztrc, zdust 
    69 #if ! defined key_kriest 
    7069      REAL(wp) ::   zdenom, zdenom2 
    71 #endif 
    7270      REAL(wp), POINTER, DIMENSION(:,:,:) :: zTL1, zFe3, ztotlig 
    7371      REAL(wp), POINTER, DIMENSION(:,:,:) :: zFeL1, zFeL2, zTL2, zFe2, zFeP 
     
    7674      REAL(wp) :: zxs, zfunc, zp, zq, zd, zr, zphi, zfff, zp3, zq2 
    7775      REAL(wp) :: ztfe, zoxy 
    78       REAL(wp) :: zstep 
    7976      !!--------------------------------------------------------------------- 
    8077      ! 
     
    212209         DO jj = 1, jpj 
    213210            DO ji = 1, jpi 
    214                zstep = xstep 
    215 # if defined key_degrad 
    216                zstep = zstep * facvol(ji,jj,jk) 
    217 # endif 
    218211               ! Scavenging rate of iron. This scavenging rate depends on the load of particles of sea water.  
    219212               ! This parameterization assumes a simple second order kinetics (k[Particles][Fe]). 
     
    227220                  zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9 
    228221               ENDIF 
    229 #if defined key_kriest 
    230                ztrc   = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6  
    231 #else 
    232                ztrc   = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6  
    233 #endif 
     222 
     223               ztrc = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6  
    234224               IF( ln_dust )  zdust  = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) ! dust in kg/m2/s 
    235225               zlam1b = 3.e-5 + xlamdust * zdust + xlam1 * ztrc 
    236                zscave = zfeequi * zlam1b * zstep 
     226               zscave = zfeequi * zlam1b * xstep 
    237227 
    238228               ! Compute the different ratios for scavenging of iron 
     
    240230               ! --------------------------------------------------------- 
    241231               zdenom1 = xlam1 * trb(ji,jj,jk,jppoc) / zlam1b 
    242 #if ! defined key_kriest 
    243232               zdenom2 = xlam1 * trb(ji,jj,jk,jpgoc) / zlam1b 
    244 #endif 
    245233 
    246234               !  Increased scavenging for very high iron concentrations found near the coasts  
     
    252240               zdep    = MIN( 1., 1000. / gdept_n(ji,jj,jk) ) 
    253241               zlam1b  = xlam1 * MAX( 0.e0, ( trb(ji,jj,jk,jpfer) * 1.e9 - ztotlig(ji,jj,jk) ) ) 
    254                zcoag   = zfeequi * zlam1b * zstep + 1E-4 * ( 1. - zlamfac ) * zdep * zstep * trb(ji,jj,jk,jpfer) 
     242               zcoag   = zfeequi * zlam1b * xstep + 1E-4 * ( 1. - zlamfac ) * zdep * xstep * trb(ji,jj,jk,jpfer) 
    255243 
    256244               !  Compute the coagulation of colloidal iron. This parameterization  
     
    260248               zlam1a  = ( 0.369  * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4  * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk)    & 
    261249                   &   + ( 114.   * 0.3 * trb(ji,jj,jk,jpdoc) + 5.09E3 * trb(ji,jj,jk,jppoc) ) 
    262                zaggdfea = zlam1a * zstep * zfecoll 
    263 #if defined key_kriest 
    264                zaggdfeb = 0. 
    265                ! 
    266                tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb - zcoag 
    267                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea + zaggdfeb 
    268 #else 
     250               zaggdfea = zlam1a * xstep * zfecoll 
    269251               zlam1b = 3.53E3 *   trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 
    270                zaggdfeb = zlam1b * zstep * zfecoll 
     252               zaggdfeb = zlam1b * xstep * zfecoll 
    271253               ! 
    272254               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb - zcoag 
    273255               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea 
    274256               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * zdenom2 + zaggdfeb 
    275 #endif 
    276257            END DO 
    277258         END DO 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90

    r6962 r7041  
    167167            zkgwan = 0.251 * zws 
    168168            zkgwan = zkgwan * xconv * ( 1.- fr_i(ji,jj) ) * tmask(ji,jj,1) 
    169 # if defined key_degrad 
    170             zkgwan = zkgwan * facvol(ji,jj,1) 
    171 #endif  
    172169            ! compute gas exchange for CO2 and O2 
    173170            zkgco2(ji,jj) = zkgwan * SQRT( 660./ zsch_co2 ) 
     
    239236         ! 
    240237         CALL wrk_dealloc( jpi, jpj, zw2d ) 
    241       ELSE 
    242          IF( ln_diatrc ) THEN 
    243             trc2d(:,:,jp_pcs0_2d    ) = oce_co2(:,:) / e1e2t(:,:) * rfact2r  
    244             trc2d(:,:,jp_pcs0_2d + 1) = zoflx(:,:) * 1000 * tmask(:,:,1)  
    245             trc2d(:,:,jp_pcs0_2d + 2) = zkgco2(:,:) * tmask(:,:,1)  
    246             trc2d(:,:,jp_pcs0_2d + 3) = ( zpco2atm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1)  
    247          ENDIF 
    248238      ENDIF 
    249239      ! 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90

    r6945 r7041  
    129129               !       CACO3 GETS DISSOLVED EVEN IN THE CASE OF OVERSATURATION) 
    130130               zdispot = kdca * zexcess * trb(ji,jj,jk,jpcal) 
    131 # if defined key_degrad 
    132                zdispot = zdispot * facvol(ji,jj,jk) 
    133 # endif 
    134131              !  CHANGE OF [CO3--] , [ALK], PARTICULATE [CACO3], 
    135132              !       AND [SUM(CO2)] DUE TO CACO3 DISSOLUTION/PRECIPITATION 
     
    150147         IF( iom_use( "CO3sat" ) ) CALL iom_put( "CO3sat", zco3sat(:,:,:) * 1.e+3            * tmask(:,:,:) ) 
    151148         IF( iom_use( "DCAL"   ) ) CALL iom_put( "DCAL"  , zcaldiss(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) 
    152       ELSE 
    153          IF( ln_diatrc ) THEN 
    154             trc3d(:,:,:,jp_pcs0_3d    ) = -1. * LOG10( hi(:,:,:) ) * tmask(:,:,:) 
    155             trc3d(:,:,:,jp_pcs0_3d + 1) = zco3(:,:,:)              * tmask(:,:,:) 
    156             trc3d(:,:,:,jp_pcs0_3d + 2) = zco3sat(:,:,:)           * tmask(:,:,:) 
    157          ENDIF 
    158149      ENDIF 
    159150      ! 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90

    r5836 r7041  
    7070      REAL(wp) :: zcompadi, zcompaph, zcompapoc, zcompaz, zcompam 
    7171      REAL(wp) :: zgraze2 , zdenom, zdenom2 
    72       REAL(wp) :: zfact   , zstep, zfood, zfoodlim, zproport 
     72      REAL(wp) :: zfact   , zfood, zfoodlim, zproport 
    7373      REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2 
    7474      REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotn, zgraztotf 
    7575      REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zgrasrat, zgrasratn 
    76 #if defined key_kriest 
    77       REAL znumpoc 
    78 #endif 
    7976      REAL(wp) :: zrespz2, ztortz2, zgrazd, zgrazz, zgrazpof 
    8077      REAL(wp) :: zgrazn, zgrazpoc, zgraznf, zgrazf 
     
    9693            DO ji = 1, jpi 
    9794               zcompam   = MAX( ( trb(ji,jj,jk,jpmes) - 1.e-9 ), 0.e0 ) 
    98 # if defined key_degrad 
    99                zstep     = xstep * facvol(ji,jj,jk) 
    100 # else 
    101                zstep     = xstep 
    102 # endif 
    103                zfact     = zstep * tgfunc2(ji,jj,jk) * zcompam 
     95               zfact     = xstep * tgfunc2(ji,jj,jk) * zcompam 
    10496 
    10597               !  Respiration rates of both zooplankton 
     
    126118               zdenom    = zfoodlim / ( xkgraz2 + zfoodlim ) 
    127119               zdenom2   = zdenom / ( zfood + rtrn ) 
    128                zgraze2   = grazrat2 * zstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes)  
     120               zgraze2   = grazrat2 * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes)  
    129121 
    130122               zgrazd    = zgraze2  * xprefc   * zcompadi  * zdenom2  
     
    140132               !  ---------------------------------- 
    141133               !  ---------------------------------- 
    142 # if ! defined key_kriest 
    143                zgrazffeg = grazflux  * zstep * wsbio4(ji,jj,jk)      & 
     134               zgrazffeg = grazflux  * xstep * wsbio4(ji,jj,jk)      & 
    144135               &           * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes) 
    145136               zgrazfffg = zgrazffeg * trb(ji,jj,jk,jpbfe) / (trb(ji,jj,jk,jpgoc) + rtrn) 
    146 # endif 
    147                zgrazffep = grazflux  * zstep *  wsbio3(ji,jj,jk)     & 
     137               zgrazffep = grazflux  * xstep *  wsbio3(ji,jj,jk)     & 
    148138               &           * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpmes) 
    149139               zgrazfffp = zgrazffep * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 
    150140              ! 
    151 # if ! defined key_kriest 
    152141              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 
    153142              ! Compute the proportion of filter feeders 
     
    158147              zratio    = trb(ji,jj,jk,jpgsi) / ( trb(ji,jj,jk,jpgoc) + rtrn ) 
    159148              zratio2   = zratio * zratio 
    160               zfrac     = zproport * grazflux  * zstep * wsbio4(ji,jj,jk)      & 
     149              zfrac     = zproport * grazflux  * xstep * wsbio4(ji,jj,jk)      & 
    161150               &          * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes)          & 
    162151               &          * ( 0.2 + 3.8 * zratio2 / ( 1.**2 + zratio2 ) ) 
     
    171160              &   + zgrazpoc + zgrazffep + zgrazffeg 
    172161              zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg 
    173 # else 
    174               zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep 
    175               ! Compute the proportion of filter feeders 
    176               zproport  = zgrazffep / ( zgraztot + rtrn ) 
    177               zgrazffep = zproport * zgrazffep 
    178               zgrazfffp = zproport * zgrazfffp 
    179               zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep 
    180               zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk) + zgrazpoc + zgrazffep 
    181               zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp 
    182 # endif 
    183162 
    184163              ! Total grazing ( grazing by microzoo is already computed in p4zmicro ) 
     
    228207               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca 
    229208               tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 
    230 #if defined key_kriest 
    231               znumpoc = trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
    232               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffep + zgrapoc2 
    233               tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc + zgrapoc2 * xkr_dmeso      & 
    234                  &   + zmortzgoc * xkr_dmeso - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn ) 
    235               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortzgoc - zgrazfffp - zgrazpof    & 
    236                  &                 + zgraztotf * unass2 
    237 #else 
    238               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac 
    239               tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac 
    240               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe 
    241               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg     & 
    242                  &                + zgraztotf * unass2 - zfracfe 
    243 #endif 
     209               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac 
     210               tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac 
     211               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe 
     212               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg     & 
     213                   &                + zgraztotf * unass2 - zfracfe 
    244214            END DO 
    245215         END DO 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90

    r5836 r7041  
    7171      REAL(wp) :: zcompadi, zcompaz , zcompaph, zcompapoc 
    7272      REAL(wp) :: zgraze  , zdenom, zdenom2 
    73       REAL(wp) :: zfact   , zstep, zfood, zfoodlim 
     73      REAL(wp) :: zfact   , zfood, zfoodlim 
    7474      REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotn, zgraztotf 
    7575      REAL(wp) :: zgrarem, zgrafer, zgrapoc, zprcaca, zmortz 
     
    8989            DO ji = 1, jpi 
    9090               zcompaz = MAX( ( trb(ji,jj,jk,jpzoo) - 1.e-9 ), 0.e0 ) 
    91                zstep   = xstep 
    92 # if defined key_degrad 
    93                zstep = zstep * facvol(ji,jj,jk) 
    94 # endif 
    95                zfact   = zstep * tgfunc2(ji,jj,jk) * zcompaz 
     91               zfact   = xstep * tgfunc2(ji,jj,jk) * zcompaz 
    9692 
    9793               !  Respiration rates of both zooplankton 
     
    115111               zdenom    = zfoodlim / ( xkgraz + zfoodlim ) 
    116112               zdenom2   = zdenom / ( zfood + rtrn ) 
    117                zgraze    = grazrat * zstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpzoo)  
     113               zgraze    = grazrat * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpzoo)  
    118114 
    119115               zgrazp    = zgraze  * xpref2p * zcompaph  * zdenom2  
     
    130126 
    131127               ! Grazing by microzooplankton 
    132                IF( ln_diatrc .AND. lk_iomput )  zgrazing(ji,jj,jk) = zgraztot 
     128               IF( lk_iomput )  zgrazing(ji,jj,jk) = zgraztot 
    133129 
    134130               !    Various remineralization and excretion terms 
     
    154150               tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarsig 
    155151               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zgrarsig 
    156 #if defined key_kriest 
    157                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zgrapoc * xkr_dmicro 
    158 #endif 
    159152               !   Update the arrays TRA which contain the biological sources and sinks 
    160153               !   -------------------------------------------------------------------- 
     
    180173               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca 
    181174               tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 
    182 #if defined key_kriest 
    183                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zmortz * xkr_dmicro & 
    184                                                          - zgrazm * trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
    185 #endif 
    186175            END DO 
    187176         END DO 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmort.F90

    r5836 r7041  
    7373      REAL(wp) :: zsizerat, zcompaph 
    7474      REAL(wp) :: zfactfe, zfactch, zprcaca, zfracal 
    75       REAL(wp) :: ztortp , zrespp , zmortp , zstep 
     75      REAL(wp) :: ztortp , zrespp , zmortp 
    7676      CHARACTER (len=25) :: charout 
    7777      !!--------------------------------------------------------------------- 
     
    8484            DO ji = 1, jpi 
    8585               zcompaph = MAX( ( trb(ji,jj,jk,jpphy) - 1e-8 ), 0.e0 ) 
    86                zstep    = xstep 
    87 # if defined key_degrad 
    88                zstep    = zstep * facvol(ji,jj,jk) 
    89 # endif 
    9086               !     When highly limited by macronutrients, very small cells  
    9187               !     dominate the community. As a consequence, aggregation 
     
    9591               !     Squared mortality of Phyto similar to a sedimentation term during 
    9692               !     blooms (Doney et al. 1996) 
    97                zrespp = wchl * 1.e6 * zstep * xdiss(ji,jj,jk) * zcompaph * zsizerat  
     93               zrespp = wchl * 1.e6 * xstep * xdiss(ji,jj,jk) * zcompaph * zsizerat  
    9894 
    9995               !     Phytoplankton mortality. This mortality loss is slightly 
     
    119115               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca 
    120116               tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 
    121 #if defined key_kriest 
    122                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp 
    123                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + ztortp * xkr_dnano + zrespp * xkr_ddiat 
    124                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zmortp * zfactfe 
    125 #else 
    126117               tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zfracal * zmortp 
    127118               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + ( 1. - zfracal ) * zmortp 
    128119               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ( 1. - zfracal ) * zmortp * zfactfe 
    129120               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zfracal * zmortp * zfactfe 
    130 #endif 
    131121            END DO 
    132122         END DO 
     
    153143      INTEGER  ::  ji, jj, jk 
    154144      REAL(wp) ::  zfactfe,zfactsi,zfactch, zcompadi 
    155       REAL(wp) ::  zrespp2, ztortp2, zmortp2, zstep 
     145      REAL(wp) ::  zrespp2, ztortp2, zmortp2 
    156146      REAL(wp) ::  zlim2, zlim1 
    157147      CHARACTER (len=25) :: charout 
     
    176166               !    sticky and coagulate to sink quickly out of the euphotic zone 
    177167               !     ------------------------------------------------------------ 
    178                zstep   = xstep 
    179 # if defined key_degrad 
    180                zstep = zstep * facvol(ji,jj,jk) 
    181 # endif 
    182168               !  Phytoplankton respiration  
    183169               !     ------------------------ 
    184170               zlim2   = xlimdia(ji,jj,jk) * xlimdia(ji,jj,jk) 
    185171               zlim1   = 0.25 * ( 1. - zlim2 ) / ( 0.25 + zlim2 )  
    186                zrespp2 = 1.e6 * zstep * (  wchld + wchldm * zlim1 ) * xdiss(ji,jj,jk) * zcompadi * trb(ji,jj,jk,jpdia) 
     172               zrespp2 = 1.e6 * xstep * (  wchld + wchldm * zlim1 ) * xdiss(ji,jj,jk) * zcompadi * trb(ji,jj,jk,jpdia) 
    187173 
    188174               !     Phytoplankton mortality.  
    189175               !     ------------------------ 
    190                ztortp2 = mprat2 * zstep * trb(ji,jj,jk,jpdia)  / ( xkmort + trb(ji,jj,jk,jpdia) ) * zcompadi  
     176               ztortp2 = mprat2 * xstep * trb(ji,jj,jk,jpdia)  / ( xkmort + trb(ji,jj,jk,jpdia) ) * zcompadi  
    191177 
    192178               zmortp2 = zrespp2 + ztortp2 
     
    202188               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zmortp2 * zfactsi 
    203189               tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zmortp2 * zfactsi 
    204 #if defined key_kriest 
    205                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp2   
    206                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + ztortp2 * xkr_ddiat + zrespp2 * xkr_daggr 
    207                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zmortp2 * zfactfe 
    208 #else 
    209190               tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zrespp2 + 0.5 * ztortp2 
    210191               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + 0.5 * ztortp2 
    211192               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 0.5 * ztortp2 * zfactfe 
    212193               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ( zrespp2 + 0.5 * ztortp2 ) * zfactfe 
    213 #endif 
    214194            END DO 
    215195         END DO 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90

    r6962 r7041  
    215215           IF( iom_use( "PAR"   ) ) CALL iom_put( "PAR"  , emoy(:,:,:) * tmask(:,:,:) )  ! Photosynthetically Available Radiation 
    216216        ENDIF 
    217       ELSE 
    218          IF( ln_diatrc ) THEN        ! save output diagnostics 
    219             trc2d(:,:,  jp_pcs0_2d + 10) = heup(:,:  ) * tmask(:,:,1) 
    220             trc3d(:,:,:,jp_pcs0_3d + 3)  = etot(:,:,:) * tmask(:,:,:) 
    221          ENDIF 
    222217      ENDIF 
    223218      ! 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90

    r6945 r7041  
    110110      ! Computation of the optimal production 
    111111      prmax(:,:,:) = 0.6_wp * r1_rday * tgfunc(:,:,:)  
    112       IF( lk_degrad )  prmax(:,:,:) = prmax(:,:,:) * facvol(:,:,:)  
    113112 
    114113      ! compute the day length depending on latitude and the day 
     
    482481          CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 
    483482       ENDIF 
    484      ELSE 
    485         IF( ln_diatrc ) THEN 
    486            zfact = 1.e+3 * rfact2r 
    487            trc3d(:,:,:,jp_pcs0_3d + 4)  = zprorca (:,:,:) * zfact * tmask(:,:,:) 
    488            trc3d(:,:,:,jp_pcs0_3d + 5)  = zprorcad(:,:,:) * zfact * tmask(:,:,:) 
    489            trc3d(:,:,:,jp_pcs0_3d + 6)  = zpronew (:,:,:) * zfact * tmask(:,:,:) 
    490            trc3d(:,:,:,jp_pcs0_3d + 7)  = zpronewd(:,:,:) * zfact * tmask(:,:,:) 
    491            trc3d(:,:,:,jp_pcs0_3d + 8)  = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) 
    492            trc3d(:,:,:,jp_pcs0_3d + 9)  = zprofed (:,:,:) * zfact * tmask(:,:,:) 
    493 #  if ! defined key_kriest 
    494            trc3d(:,:,:,jp_pcs0_3d + 10) = zprofen (:,:,:) * zfact * tmask(:,:,:) 
    495 #  endif 
    496         ENDIF 
    497483     ENDIF 
    498484 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90

    r6945 r7041  
    7272      REAL(wp) ::   zbactfer, zorem, zorem2, zofer, zolimit 
    7373      REAL(wp) ::   zosil, ztem 
    74 #if ! defined key_kriest 
    7574      REAL(wp) ::   zofer2 
    76 #endif 
    77       REAL(wp) ::   zonitr, zstep, zfact 
     75      REAL(wp) ::   zonitr, zfact 
    7876      CHARACTER (len=25) :: charout 
    7977      REAL(wp), POINTER, DIMENSION(:,:  ) :: ztempbac 
     
    115113         DO jj = 1, jpj 
    116114            DO ji = 1, jpi 
    117                zstep   = xstep 
    118 # if defined key_degrad 
    119                zstep = zstep * facvol(ji,jj,jk) 
    120 # endif 
    121115               ! DOC ammonification. Depends on depth, phytoplankton biomass 
    122116               ! and a limitation term which is supposed to be a parameterization 
    123117               !     of the bacterial activity.  
    124                zremik = xremik * zstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk)  
     118               zremik = xremik * xstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk)  
    125119               zremik = MAX( zremik, 2.74e-4 * xstep ) 
    126120               ! Ammonification in oxic waters with oxygen consumption 
     
    144138         DO jj = 1, jpj 
    145139            DO ji = 1, jpi 
    146                zstep   = xstep 
    147 # if defined key_degrad 
    148                zstep = zstep * facvol(ji,jj,jk) 
    149 # endif 
    150140               ! NH4 nitrification to NO3. Ceased for oxygen concentrations 
    151141               ! below 2 umol/L. Inhibited at strong light  
    152142               ! ---------------------------------------------------------- 
    153                zonitr  =nitrif * zstep * trb(ji,jj,jk,jpnh4) / ( 1.+ emoy(ji,jj,jk) ) * ( 1.- nitrfac(ji,jj,jk) )  
    154                denitnh4(ji,jj,jk) = nitrif * zstep * trb(ji,jj,jk,jpnh4) * nitrfac(ji,jj,jk)  
     143               zonitr  =nitrif * xstep * trb(ji,jj,jk,jpnh4) / ( 1.+ emoy(ji,jj,jk) ) * ( 1.- nitrfac(ji,jj,jk) )  
     144               denitnh4(ji,jj,jk) = nitrif * xstep * trb(ji,jj,jk,jpnh4) * nitrfac(ji,jj,jk)  
    155145               ! Update of the tracers trends 
    156146               ! ---------------------------- 
     
    180170                  &              * trb(ji,jj,jk,jpfer) / ( 2.5E-10 + trb(ji,jj,jk,jpfer) )    & 
    181171                  &              * zdepprod(ji,jj,jk) * zdepbac(ji,jj,jk) 
    182 #if defined key_kriest 
    183                tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.05 
    184                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.05 
    185 #else 
    186172               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.16 
    187173               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.12 
    188174               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer*0.04 
    189 #endif 
    190175            END DO 
    191176         END DO 
     
    201186         DO jj = 1, jpj 
    202187            DO ji = 1, jpi 
    203                zstep   = xstep 
    204 # if defined key_degrad 
    205                zstep = zstep * facvol(ji,jj,jk) 
    206 # endif 
    207188               ! POC disaggregation by turbulence and bacterial activity.  
    208189               ! -------------------------------------------------------- 
    209                zremip = xremip * zstep * tgfunc(ji,jj,jk) * ( 1.- 0.55 * nitrfac(ji,jj,jk) )  
     190               zremip = xremip * xstep * tgfunc(ji,jj,jk) * ( 1.- 0.55 * nitrfac(ji,jj,jk) )  
    210191 
    211192               ! POC disaggregation rate is reduced in anoxic zone as shown by 
     
    216197               zorem  = zremip * trb(ji,jj,jk,jppoc) 
    217198               zofer  = zremip * trb(ji,jj,jk,jpsfe) 
    218 #if ! defined key_kriest 
    219199               zorem2 = zremip * trb(ji,jj,jk,jpgoc) 
    220200               zofer2 = zremip * trb(ji,jj,jk,jpbfe) 
    221 #else 
    222                zorem2 = zremip * trb(ji,jj,jk,jpnum) 
    223 #endif 
    224201 
    225202               ! Update the appropriate tracers trends 
     
    228205               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zorem 
    229206               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zofer 
    230 #if defined key_kriest 
    231                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zorem 
    232                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zorem2 
    233                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zofer 
    234 #else 
    235207               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zorem2 - zorem 
    236208               tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) - zorem2 
    237209               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zofer2 - zofer 
    238210               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) - zofer2 
    239 #endif 
    240211 
    241212            END DO 
     
    252223         DO jj = 1, jpj 
    253224            DO ji = 1, jpi 
    254                zstep   = xstep 
    255 # if defined key_degrad 
    256                zstep = zstep * facvol(ji,jj,jk) 
    257 # endif 
    258225               ! Remineralization rate of BSi depedant on T and saturation 
    259226               ! --------------------------------------------------------- 
     
    272239               ztem     = MAX( tsn(ji,jj,1,jp_tem), 0. ) 
    273240               zfactdep = xsilab * EXP(-( xsiremlab - xsirem ) * znusil2 * zdep / wsbio2 ) * ztem / ( ztem + 10. ) 
    274                zsiremin = ( xsiremlab * zfactdep + xsirem * ( 1. - zfactdep ) ) * zstep * znusil 
     241               zsiremin = ( xsiremlab * zfactdep + xsirem * ( 1. - zfactdep ) ) * xstep * znusil 
    275242               zosil    = zsiremin * trb(ji,jj,jk,jpgsi) 
    276243               ! 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90

    r6140 r7041  
    145145                &  CALL iom_put( "pdust"  , dust(:,:) / ( wdust * rday )  * tmask(:,:,1) ) ! dust concentration at surface 
    146146            ENDIF 
    147          ELSE                                     
    148             IF( ln_diatrc )  & 
    149               &  trc2d(:,:,jp_pcs0_2d + 11) = zirondep(:,:,1) * 1.e+3 * rfact2r * e3t_n(:,:,1) * tmask(:,:,1) 
    150147         ENDIF 
    151148         CALL wrk_dealloc( jpi, jpj,      zpdep, zsidep ) 
     
    196193      ENDIF 
    197194 
    198       ! OA: Warning, the following part is necessary, especially with Kriest 
    199       ! to avoid CFL problems above the sediments 
     195      ! OA: Warning, the following part is necessary to avoid CFL problems above the sediments 
    200196      ! -------------------------------------------------------------------- 
    201197      DO jj = 1, jpj 
     
    217213           IF( tmask(ji,jj,1) == 1 ) THEN 
    218214              ikt = mbkt(ji,jj) 
    219 # if defined key_kriest 
    220               zflx =    trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj)    * 1E3 * 1E6 / 1E4 
    221 # else 
    222215              zflx = (  trb(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj)   & 
    223216                &     + trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) )  * 1E3 * 1E6 / 1E4 
    224 #endif 
    225217              zflx  = LOG10( MAX( 1E-3, zflx ) ) 
    226218              zo2   = LOG10( MAX( 10. , trb(ji,jj,ikt,jpoxy) * 1E6 ) ) 
     
    246238            IF( tmask(ji,jj,1) == 1 ) THEN 
    247239               ikt = mbkt(ji,jj)  
    248 # if defined key_kriest 
    249                zwork1(ji,jj) = trb(ji,jj,ikt,jpgsi) * zwscal (ji,jj) 
    250                zwork2(ji,jj) = trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) 
    251 # else 
    252240               zwork1(ji,jj) = trb(ji,jj,ikt,jpgsi) * zwsbio4(ji,jj) 
    253241               zwork2(ji,jj) = trb(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj) + trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj)  
    254 # endif 
    255242               ! For calcite, burial efficiency is made a function of saturation 
    256243               zfactcal      = MIN( excess(ji,jj,ikt), 0.2 ) 
     
    278265            zws4 = zwsbio4(ji,jj) * zdep 
    279266            zwsc = zwscal (ji,jj) * zdep 
    280 # if defined key_kriest 
    281             zsiloss = trb(ji,jj,ikt,jpgsi) * zws4 
    282 # else 
    283267            zsiloss = trb(ji,jj,ikt,jpgsi) * zwsc 
    284 # endif 
    285268            zcaloss = trb(ji,jj,ikt,jpcal) * zwsc 
    286269            ! 
     
    305288            zws3 = zwsbio3(ji,jj) * zdep 
    306289            zrivno3 = 1. - zbureff(ji,jj) 
    307 # if ! defined key_kriest 
    308290            tra(ji,jj,ikt,jpgoc) = tra(ji,jj,ikt,jpgoc) - trb(ji,jj,ikt,jpgoc) * zws4  
    309291            tra(ji,jj,ikt,jppoc) = tra(ji,jj,ikt,jppoc) - trb(ji,jj,ikt,jppoc) * zws3 
     
    311293            tra(ji,jj,ikt,jpsfe) = tra(ji,jj,ikt,jpsfe) - trb(ji,jj,ikt,jpsfe) * zws3 
    312294            zwstpoc              = trb(ji,jj,ikt,jpgoc) * zws4 + trb(ji,jj,ikt,jppoc) * zws3 
    313 # else 
    314             tra(ji,jj,ikt,jpnum) = tra(ji,jj,ikt,jpnum) - trb(ji,jj,ikt,jpnum) * zws4  
    315             tra(ji,jj,ikt,jppoc) = tra(ji,jj,ikt,jppoc) - trb(ji,jj,ikt,jppoc) * zws3 
    316             tra(ji,jj,ikt,jpsfe) = tra(ji,jj,ikt,jpsfe) - trb(ji,jj,ikt,jpsfe) * zws3 
    317             zwstpoc = trb(ji,jj,ikt,jppoc) * zws3  
    318 # endif 
    319295 
    320296#if ! defined key_sed 
     
    346322               zlim = ( 1.- xnanono3(ji,jj,jk) - xnanonh4(ji,jj,jk) ) 
    347323               IF( zlim <= 0.2 )   zlim = 0.01 
    348 #if defined key_degrad 
    349                zfact = zlim * rfact2 * facvol(ji,jj,jk) 
    350 #else 
    351324               zfact = zlim * rfact2 
    352 #endif 
     325 
    353326               ztrfer = biron(ji,jj,jk)       / ( concfediaz + biron(ji,jj,jk)       ) 
    354327               ztrpo4 = trb  (ji,jj,jk,jppo4) / ( concnnh4   + trb  (ji,jj,jk,jppo4) )  
     
    389362            ENDIF 
    390363         ENDIF 
    391       ELSE 
    392          IF( ln_diatrc )  & 
    393             &  trc2d(:,:,jp_pcs0_2d + 12) = nitrpot(:,:,1) * nitrfix * rno3 * 1.e+3 * rfact2r * e3t_n(:,:,1) * tmask(:,:,1) 
    394364      ENDIF 
    395365      ! 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsink.F90

    r6140 r7041  
    3737   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sinkcal, sinksil   !: CaCO3 and BSi sinking fluxes 
    3838   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sinkfer            !: Small BFe sinking fluxes 
    39 #if ! defined key_kriest 
    4039   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sinkfer2           !: Big iron sinking fluxes 
    41 #endif 
    4240 
    4341   INTEGER  :: ik100 
    44  
    45 #if  defined key_kriest 
    46    REAL(wp) ::  xkr_sfact    !: Sinking factor 
    47    REAL(wp) ::  xkr_stick    !: Stickiness 
    48    REAL(wp) ::  xkr_nnano    !: Nbr of cell in nano size class 
    49    REAL(wp) ::  xkr_ndiat    !: Nbr of cell in diatoms size class 
    50    REAL(wp) ::  xkr_nmicro   !: Nbr of cell in microzoo size class 
    51    REAL(wp) ::  xkr_nmeso    !: Nbr of cell in mesozoo  size class 
    52    REAL(wp) ::  xkr_naggr    !: Nbr of cell in aggregates  size class 
    53  
    54    REAL(wp) ::  xkr_frac  
    55  
    56    REAL(wp), PUBLIC ::  xkr_dnano       !: Size of particles in nano pool 
    57    REAL(wp), PUBLIC ::  xkr_ddiat       !: Size of particles in diatoms pool 
    58    REAL(wp), PUBLIC ::  xkr_dmicro      !: Size of particles in microzoo pool 
    59    REAL(wp), PUBLIC ::  xkr_dmeso       !: Size of particles in mesozoo pool 
    60    REAL(wp), PUBLIC ::  xkr_daggr       !: Size of particles in aggregates pool 
    61    REAL(wp), PUBLIC ::  xkr_wsbio_min   !: min vertical particle speed 
    62    REAL(wp), PUBLIC ::  xkr_wsbio_max   !: max vertical particle speed 
    63  
    64    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   xnumm   !:  maximum number of particles in aggregates 
    65 #endif 
    6642 
    6743   !!---------------------------------------------------------------------- 
     
    7248CONTAINS 
    7349 
    74 #if ! defined key_kriest 
    7550   !!---------------------------------------------------------------------- 
    7651   !!   'standard sinking parameterisation'                  ??? 
     
    9166      REAL(wp) ::   zagg1, zagg2, zagg3, zagg4 
    9267      REAL(wp) ::   zagg , zaggfe, zaggdoc, zaggdoc2, zaggdoc3 
    93       REAL(wp) ::   zfact, zwsmax, zmax, zstep 
     68      REAL(wp) ::   zfact, zwsmax, zmax 
    9469      CHARACTER (len=25) :: charout 
    9570      REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d 
     
    191166            DO ji = 1, jpi 
    192167               ! 
    193                zstep = xstep  
    194 # if defined key_degrad 
    195                zstep = zstep * facvol(ji,jj,jk) 
    196 # endif 
    197                zfact = zstep * xdiss(ji,jj,jk) 
     168               zfact = xstep * xdiss(ji,jj,jk) 
    198169               !  Part I : Coagulation dependent on turbulence 
    199170               zagg1 = 25.9  * zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc) 
     
    203174 
    204175               !  Aggregation of small into large particles 
    205                zagg3 =  47.1 * zstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc) 
    206                zagg4 =  3.3  * zstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc) 
     176               zagg3 =  47.1 * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc) 
     177               zagg4 =  3.3  * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc) 
    207178 
    208179               zagg   = zagg1 + zagg2 + zagg3 + zagg4 
     
    214185               ! 3rd term is differential settling of DOC-POC 
    215186               zaggdoc  = ( ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * zfact       & 
    216                &            + 2.4 * zstep * trb(ji,jj,jk,jppoc) ) * 0.3 * trb(ji,jj,jk,jpdoc) 
     187               &            + 2.4 * xstep * trb(ji,jj,jk,jppoc) ) * 0.3 * trb(ji,jj,jk,jpdoc) 
    217188               ! transfer of DOC to GOC :  
    218189               ! 1st term is shear aggregation 
    219190               ! 2nd term is differential settling  
    220                zaggdoc2 = ( 3.53E3 * zfact + 0.1 * zstep ) * trb(ji,jj,jk,jpgoc) * 0.3 * trb(ji,jj,jk,jpdoc) 
     191               zaggdoc2 = ( 3.53E3 * zfact + 0.1 * xstep ) * trb(ji,jj,jk,jpgoc) * 0.3 * trb(ji,jj,jk,jpdoc) 
    221192               ! tranfer of DOC to POC due to brownian motion 
    222                zaggdoc3 =  ( 5095. * trb(ji,jj,jk,jppoc) + 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) *zstep * 0.3 * trb(ji,jj,jk,jpdoc) 
     193               zaggdoc3 =  ( 5095. * trb(ji,jj,jk,jppoc) + 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) * xstep * 0.3 * trb(ji,jj,jk,jpdoc) 
    223194 
    224195               !  Update the trends 
     
    281252          CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 
    282253        ENDIF 
    283       ELSE 
    284          IF( ln_diatrc ) THEN 
    285             zfact = 1.e3 * rfact2r 
    286             trc2d(:,:,jp_pcs0_2d + 4) = sinking (:,:,ik100) * zfact * tmask(:,:,1) 
    287             trc2d(:,:,jp_pcs0_2d + 5) = sinking2(:,:,ik100) * zfact * tmask(:,:,1) 
    288             trc2d(:,:,jp_pcs0_2d + 6) = sinkfer (:,:,ik100) * zfact * tmask(:,:,1) 
    289             trc2d(:,:,jp_pcs0_2d + 7) = sinkfer2(:,:,ik100) * zfact * tmask(:,:,1) 
    290             trc2d(:,:,jp_pcs0_2d + 8) = sinksil (:,:,ik100) * zfact * tmask(:,:,1) 
    291             trc2d(:,:,jp_pcs0_2d + 9) = sinkcal (:,:,ik100) * zfact * tmask(:,:,1) 
    292          ENDIF 
    293254      ENDIF 
    294255      ! 
     
    320281      ! 
    321282   END SUBROUTINE p4z_sink_init 
    322  
    323 #else 
    324    !!---------------------------------------------------------------------- 
    325    !!   'Kriest sinking parameterisation'        key_kriest          ??? 
    326    !!---------------------------------------------------------------------- 
    327  
    328    SUBROUTINE p4z_sink ( kt, knt ) 
    329       !!--------------------------------------------------------------------- 
    330       !!                ***  ROUTINE p4z_sink  *** 
    331       !! 
    332       !! ** Purpose :   Compute vertical flux of particulate matter due to 
    333       !!              gravitational sinking - Kriest parameterization 
    334       !! 
    335       !! ** Method  : - ??? 
    336       !!--------------------------------------------------------------------- 
    337       ! 
    338       INTEGER, INTENT(in) :: kt, knt 
    339       ! 
    340       INTEGER  :: ji, jj, jk, jit, niter1, niter2 
    341       REAL(wp) :: zagg1, zagg2, zagg3, zagg4, zagg5, zfract, zaggsi, zaggsh 
    342       REAL(wp) :: zagg , zaggdoc, zaggdoc1, znumdoc 
    343       REAL(wp) :: znum , zeps, zfm, zgm, zsm 
    344       REAL(wp) :: zdiv , zdiv1, zdiv2, zdiv3, zdiv4, zdiv5 
    345       REAL(wp) :: zval1, zval2, zval3, zval4 
    346       REAL(wp) :: zfact 
    347       INTEGER  :: ik1 
    348       CHARACTER (len=25) :: charout 
    349       REAL(wp), POINTER, DIMENSION(:,:,:) :: znum3d  
    350       REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d 
    351       REAL(wp), POINTER, DIMENSION(:,:  ) :: zw2d 
    352       !!--------------------------------------------------------------------- 
    353       ! 
    354       IF( nn_timing == 1 )  CALL timing_start('p4z_sink') 
    355       ! 
    356       CALL wrk_alloc( jpi, jpj, jpk, znum3d ) 
    357       ! 
    358       !     Initialisation of variables used to compute Sinking Speed 
    359       !     --------------------------------------------------------- 
    360  
    361       znum3d(:,:,:) = 0.e0 
    362       zval1 = 1. + xkr_zeta 
    363       zval2 = 1. + xkr_zeta + xkr_eta 
    364       zval3 = 1. + xkr_eta 
    365  
    366       !     Computation of the vertical sinking speed : Kriest et Evans, 2000 
    367       !     ----------------------------------------------------------------- 
    368  
    369       DO jk = 1, jpkm1 
    370          DO jj = 1, jpj 
    371             DO ji = 1, jpi 
    372                IF( tmask(ji,jj,jk) /= 0.e0 ) THEN 
    373                   znum = trb(ji,jj,jk,jppoc) / ( trb(ji,jj,jk,jpnum) + rtrn ) / xkr_massp 
    374                   ! -------------- To avoid sinking speed over 50 m/day ------- 
    375                   znum  = MIN( xnumm(jk), znum ) 
    376                   znum  = MAX( 1.1      , znum ) 
    377                   znum3d(ji,jj,jk) = znum 
    378                   !------------------------------------------------------------ 
    379                   zeps  = ( zval1 * znum - 1. )/ ( znum - 1. ) 
    380                   zfm   = xkr_frac**( 1. - zeps ) 
    381                   zgm   = xkr_frac**( zval1 - zeps ) 
    382                   zdiv  = MAX( 1.e-4, ABS( zeps - zval2 ) ) * SIGN( 1., ( zeps - zval2 ) ) 
    383                   zdiv1 = zeps - zval3 
    384                   wsbio3(ji,jj,jk) = xkr_wsbio_min * ( zeps - zval1 ) / zdiv    & 
    385                      &             - xkr_wsbio_max *   zgm * xkr_eta  / zdiv 
    386                   wsbio4(ji,jj,jk) = xkr_wsbio_min *   ( zeps-1. )    / zdiv1   & 
    387                      &             - xkr_wsbio_max *   zfm * xkr_eta  / zdiv1 
    388                   IF( znum == 1.1)   wsbio3(ji,jj,jk) = wsbio4(ji,jj,jk) 
    389                ENDIF 
    390             END DO 
    391          END DO 
    392       END DO 
    393  
    394       wscal(:,:,:) = MAX( wsbio3(:,:,:), 30._wp ) 
    395  
    396       !   INITIALIZE TO ZERO ALL THE SINKING ARRAYS 
    397       !   ----------------------------------------- 
    398  
    399       sinking (:,:,:) = 0.e0 
    400       sinking2(:,:,:) = 0.e0 
    401       sinkcal (:,:,:) = 0.e0 
    402       sinkfer (:,:,:) = 0.e0 
    403       sinksil (:,:,:) = 0.e0 
    404  
    405      !   Compute the sedimentation term using p4zsink2 for all the sinking particles 
    406      !   ----------------------------------------------------- 
    407  
    408       niter1 = niter1max 
    409       niter2 = niter2max 
    410  
    411       DO jit = 1, niter1 
    412         CALL p4z_sink2( wsbio3, sinking , jppoc, niter1 ) 
    413         CALL p4z_sink2( wsbio3, sinkfer , jpsfe, niter1 ) 
    414         CALL p4z_sink2( wscal , sinksil , jpgsi, niter1 ) 
    415         CALL p4z_sink2( wscal , sinkcal , jpcal, niter1 ) 
    416       END DO 
    417  
    418       DO jit = 1, niter2 
    419         CALL p4z_sink2( wsbio4, sinking2, jpnum, niter2 ) 
    420       END DO 
    421  
    422      !  Exchange between organic matter compartments due to coagulation/disaggregation 
    423      !  --------------------------------------------------- 
    424  
    425       zval1 = 1. + xkr_zeta 
    426       zval2 = 1. + xkr_eta 
    427       zval3 = 3. + xkr_eta 
    428       zval4 = 4. + xkr_eta 
    429  
    430       DO jk = 1,jpkm1 
    431          DO jj = 1,jpj 
    432             DO ji = 1,jpi 
    433                IF( tmask(ji,jj,jk) /= 0.e0 ) THEN 
    434  
    435                   znum = trb(ji,jj,jk,jppoc)/(trb(ji,jj,jk,jpnum)+rtrn) / xkr_massp 
    436                   !-------------- To avoid sinking speed over 50 m/day ------- 
    437                   znum  = min(xnumm(jk),znum) 
    438                   znum  = MAX( 1.1,znum) 
    439                   !------------------------------------------------------------ 
    440                   zeps  = ( zval1 * znum - 1.) / ( znum - 1.) 
    441                   zdiv  = MAX( 1.e-4, ABS( zeps - zval3) ) * SIGN( 1., zeps - zval3 ) 
    442                   zdiv1 = MAX( 1.e-4, ABS( zeps - 4.   ) ) * SIGN( 1., zeps - 4.    ) 
    443                   zdiv2 = zeps - 2. 
    444                   zdiv3 = zeps - 3. 
    445                   zdiv4 = zeps - zval2 
    446                   zdiv5 = 2.* zeps - zval4 
    447                   zfm   = xkr_frac**( 1.- zeps ) 
    448                   zsm   = xkr_frac**xkr_eta 
    449  
    450                   !    Part I : Coagulation dependant on turbulence 
    451                   !    ---------------------------------------------- 
    452  
    453                   zagg1 =  0.163 * trb(ji,jj,jk,jpnum)**2               & 
    454                      &            * 2.*( (zfm-1.)*(zfm*xkr_mass_max**3-xkr_mass_min**3)    & 
    455                      &            * (zeps-1)/zdiv1 + 3.*(zfm*xkr_mass_max-xkr_mass_min)    & 
    456                      &            * (zfm*xkr_mass_max**2-xkr_mass_min**2)                  & 
    457                      &            * (zeps-1.)**2/(zdiv2*zdiv3))  
    458                   zagg2 =  2*0.163*trb(ji,jj,jk,jpnum)**2*zfm*                       & 
    459                      &                   ((xkr_mass_max**3+3.*(xkr_mass_max**2          & 
    460                      &                    *xkr_mass_min*(zeps-1.)/zdiv2                 & 
    461                      &                    +xkr_mass_max*xkr_mass_min**2*(zeps-1.)/zdiv3)    & 
    462                      &                    +xkr_mass_min**3*(zeps-1)/zdiv1)                  & 
    463                      &                    -zfm*xkr_mass_max**3*(1.+3.*((zeps-1.)/           & 
    464                      &                    (zeps-2.)+(zeps-1.)/zdiv3)+(zeps-1.)/zdiv1))     
    465  
    466                   zagg3 =  0.163*trb(ji,jj,jk,jpnum)**2*zfm**2*8. * xkr_mass_max**3   
    467                    
    468                  !    Aggregation of small into large particles 
    469                  !    Part II : Differential settling 
    470                  !    ---------------------------------------------- 
    471  
    472                   zagg4 =  2.*3.141*0.125*trb(ji,jj,jk,jpnum)**2*                       & 
    473                      &                 xkr_wsbio_min*(zeps-1.)**2                         & 
    474                      &                 *(xkr_mass_min**2*((1.-zsm*zfm)/(zdiv3*zdiv4)      & 
    475                      &                 -(1.-zfm)/(zdiv*(zeps-1.)))-                       & 
    476                      &                 ((zfm*zfm*xkr_mass_max**2*zsm-xkr_mass_min**2)     & 
    477                      &                 *xkr_eta)/(zdiv*zdiv3*zdiv5) )    
    478  
    479                   zagg5 =   2.*3.141*0.125*trb(ji,jj,jk,jpnum)**2                         & 
    480                      &                 *(zeps-1.)*zfm*xkr_wsbio_min                        & 
    481                      &                 *(zsm*(xkr_mass_min**2-zfm*xkr_mass_max**2)         & 
    482                      &                 /zdiv3-(xkr_mass_min**2-zfm*zsm*xkr_mass_max**2)    & 
    483                      &                 /zdiv)   
    484  
    485                   ! 
    486                   !     Fractionnation by swimming organisms 
    487                   !     ------------------------------------ 
    488  
    489                   zfract = 2.*3.141*0.125*trb(ji,jj,jk,jpmes)*12./0.12/0.06**3*trb(ji,jj,jk,jpnum)  & 
    490                     &      * (0.01/xkr_mass_min)**(1.-zeps)*0.1**2  & 
    491                     &      * 10000.*xstep 
    492  
    493                   !     Aggregation of DOC to small particles 
    494                   !     -------------------------------------- 
    495  
    496                   zaggdoc = 0.83 * trb(ji,jj,jk,jpdoc) * xstep * xdiss(ji,jj,jk) * trb(ji,jj,jk,jpdoc)   & 
    497                      &        + 0.005 * 231. * trb(ji,jj,jk,jpdoc) * xstep * trb(ji,jj,jk,jpdoc) 
    498                   zaggdoc1 = 271. * trb(ji,jj,jk,jppoc) * xstep * xdiss(ji,jj,jk) * trb(ji,jj,jk,jpdoc)  & 
    499                      &  + 0.02 * 16706. * trb(ji,jj,jk,jppoc) * xstep * trb(ji,jj,jk,jpdoc) 
    500  
    501 # if defined key_degrad 
    502                    zagg1   = zagg1   * facvol(ji,jj,jk)                  
    503                    zagg2   = zagg2   * facvol(ji,jj,jk)                  
    504                    zagg3   = zagg3   * facvol(ji,jj,jk)                  
    505                    zagg4   = zagg4   * facvol(ji,jj,jk)                  
    506                    zagg5   = zagg5   * facvol(ji,jj,jk)                  
    507                    zaggdoc = zaggdoc * facvol(ji,jj,jk)                  
    508                    zaggdoc1 = zaggdoc1 * facvol(ji,jj,jk) 
    509 # endif 
    510                   zaggsh = ( zagg1 + zagg2 + zagg3 ) * rfact2 * xdiss(ji,jj,jk) / 1000. 
    511                   zaggsi = ( zagg4 + zagg5 ) * xstep / 10. 
    512                   zagg = 0.5 * xkr_stick * ( zaggsh + zaggsi ) 
    513                   ! 
    514                   znumdoc = trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
    515                   tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zaggdoc + zaggdoc1 
    516                   tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zfract + zaggdoc / xkr_massp - zagg 
    517                   tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc1 
    518  
    519                ENDIF 
    520             END DO 
    521          END DO 
    522       END DO 
    523  
    524      ! Total primary production per year 
    525      t_oce_co2_exp = t_oce_co2_exp + glob_sum( ( sinking(:,:,ik100) * e1e2t(:,:) * tmask(:,:,1) ) 
    526      ! 
    527      IF( lk_iomput ) THEN 
    528         IF( knt == nrdttrc ) THEN 
    529           CALL wrk_alloc( jpi, jpj,      zw2d ) 
    530           CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 
    531           zfact = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s 
    532           ! 
    533           IF( iom_use( "EPC100" ) )  THEN 
    534               zw2d(:,:) = sinking(:,:,ik100) * zfact * tmask(:,:,1) ! Export of carbon at 100m 
    535               CALL iom_put( "EPC100"  , zw2d ) 
    536           ENDIF 
    537           IF( iom_use( "EPN100" ) )  THEN 
    538               zw2d(:,:) = sinking2(:,:,ik100) * zfact * tmask(:,:,1) ! Export of number of aggregates ? 
    539               CALL iom_put( "EPN100"  , zw2d ) 
    540           ENDIF 
    541           IF( iom_use( "EPCAL100" ) )  THEN 
    542               zw2d(:,:) = sinkcal(:,:,ik100) * zfact * tmask(:,:,1) ! Export of calcite at 100m 
    543               CALL iom_put( "EPCAL100"  , zw2d ) 
    544           ENDIF 
    545           IF( iom_use( "EPSI100" ) )  THEN 
    546               zw2d(:,:) = sinksil(:,:,ik100) * zfact * tmask(:,:,1) ! Export of bigenic silica at 100m 
    547               CALL iom_put( "EPSI100"  , zw2d ) 
    548           ENDIF 
    549           IF( iom_use( "EXPC" ) )  THEN 
    550               zw3d(:,:,:) = sinking(:,:,:) * zfact * tmask(:,:,:) ! Export of carbon in the water column 
    551               CALL iom_put( "EXPC"  , zw3d ) 
    552           ENDIF 
    553           IF( iom_use( "EXPN" ) )  THEN 
    554               zw3d(:,:,:) = sinking(:,:,:) * zfact * tmask(:,:,:) ! Export of carbon in the water column 
    555               CALL iom_put( "EXPN"  , zw3d ) 
    556           ENDIF 
    557           IF( iom_use( "EXPCAL" ) )  THEN 
    558               zw3d(:,:,:) = sinkcal(:,:,:) * zfact * tmask(:,:,:) ! Export of calcite  
    559               CALL iom_put( "EXPCAL"  , zw3d ) 
    560           ENDIF 
    561           IF( iom_use( "EXPSI" ) )  THEN 
    562               zw3d(:,:,:) = sinksil(:,:,:) * zfact * tmask(:,:,:) ! Export of bigenic silica 
    563               CALL iom_put( "EXPSI"  , zw3d ) 
    564           ENDIF 
    565           IF( iom_use( "XNUM" ) )  THEN 
    566               zw3d(:,:,:) =  znum3d(:,:,:) * tmask(:,:,:) !  Number of particles on aggregats 
    567               CALL iom_put( "XNUM"  , zw3d ) 
    568           ENDIF 
    569           IF( iom_use( "WSC" ) )  THEN 
    570               zw3d(:,:,:) = wsbio3(:,:,:) * tmask(:,:,:) ! Sinking speed of carbon particles 
    571               CALL iom_put( "WSC"  , zw3d ) 
    572           ENDIF 
    573           IF( iom_use( "WSN" ) )  THEN 
    574               zw3d(:,:,:) = wsbio4(:,:,:) * tmask(:,:,:) ! Sinking speed of particles number 
    575               CALL iom_put( "WSN"  , zw3d ) 
    576           ENDIF 
    577           ! 
    578           CALL wrk_dealloc( jpi, jpj,      zw2d ) 
    579           CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 
    580       ELSE 
    581          IF( ln_diatrc ) THEN 
    582             zfact = 1.e3 * rfact2r 
    583             trc2d(:,:  ,jp_pcs0_2d + 4)  = sinking (:,:,ik100)  * zfact * tmask(:,:,1) 
    584             trc2d(:,:  ,jp_pcs0_2d + 5)  = sinking2(:,:,ik100)  * zfact * tmask(:,:,1) 
    585             trc2d(:,:  ,jp_pcs0_2d + 6)  = sinkfer (:,:,ik100)  * zfact * tmask(:,:,1) 
    586             trc2d(:,:  ,jp_pcs0_2d + 7)  = sinksil (:,:,ik100)  * zfact * tmask(:,:,1) 
    587             trc2d(:,:  ,jp_pcs0_2d + 8)  = sinkcal (:,:,ik100)  * zfact * tmask(:,:,1) 
    588             trc3d(:,:,:,jp_pcs0_3d + 11) = sinking (:,:,:)      * zfact * tmask(:,:,:) 
    589             trc3d(:,:,:,jp_pcs0_3d + 12) = sinking2(:,:,:)      * zfact * tmask(:,:,:) 
    590             trc3d(:,:,:,jp_pcs0_3d + 13) = sinksil (:,:,:)      * zfact * tmask(:,:,:) 
    591             trc3d(:,:,:,jp_pcs0_3d + 14) = sinkcal (:,:,:)      * zfact * tmask(:,:,:) 
    592             trc3d(:,:,:,jp_pcs0_3d + 15) = znum3d  (:,:,:)              * tmask(:,:,:) 
    593             trc3d(:,:,:,jp_pcs0_3d + 16) = wsbio3  (:,:,:)              * tmask(:,:,:) 
    594             trc3d(:,:,:,jp_pcs0_3d + 17) = wsbio4  (:,:,:)              * tmask(:,:,:) 
    595          ENDIF 
    596       ENDIF 
    597  
    598       ! 
    599       IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
    600          WRITE(charout, FMT="('sink')") 
    601          CALL prt_ctl_trc_info(charout) 
    602          CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
    603       ENDIF 
    604       ! 
    605       CALL wrk_dealloc( jpi, jpj, jpk, znum3d ) 
    606       ! 
    607       IF( nn_timing == 1 )  CALL timing_stop('p4z_sink') 
    608       ! 
    609    END SUBROUTINE p4z_sink 
    610  
    611  
    612    SUBROUTINE p4z_sink_init 
    613       !!---------------------------------------------------------------------- 
    614       !!                  ***  ROUTINE p4z_sink_init  *** 
    615       !! 
    616       !! ** Purpose :   Initialization of sinking parameters 
    617       !!                Kriest parameterization only 
    618       !! 
    619       !! ** Method  :   Read the nampiskrs namelist and check the parameters 
    620       !!      called at the first timestep  
    621       !! 
    622       !! ** input   :   Namelist nampiskrs 
    623       !!---------------------------------------------------------------------- 
    624       INTEGER  ::   jk, jn, kiter 
    625       INTEGER  ::   ios                 ! Local integer output status for namelist read 
    626       REAL(wp) ::   znum, zdiv 
    627       REAL(wp) ::   zws, zwr, zwl,wmax, znummax 
    628       REAL(wp) ::   zmin, zmax, zl, zr, xacc 
    629       ! 
    630       NAMELIST/nampiskrs/ xkr_sfact, xkr_stick ,  & 
    631          &                xkr_nnano, xkr_ndiat, xkr_nmicro, xkr_nmeso, xkr_naggr 
    632       !!---------------------------------------------------------------------- 
    633       ! 
    634       IF( nn_timing == 1 )  CALL timing_start('p4z_sink_init') 
    635       ! 
    636  
    637       REWIND( numnatp_ref )              ! Namelist nampiskrs in reference namelist : Pisces sinking Kriest 
    638       READ  ( numnatp_ref, nampiskrs, IOSTAT = ios, ERR = 901) 
    639 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiskrs in reference namelist', lwp ) 
    640  
    641       REWIND( numnatp_cfg )              ! Namelist nampiskrs in configuration namelist : Pisces sinking Kriest 
    642       READ  ( numnatp_cfg, nampiskrs, IOSTAT = ios, ERR = 902 ) 
    643 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiskrs in configuration namelist', lwp ) 
    644       IF(lwm) WRITE ( numonp, nampiskrs ) 
    645  
    646       IF(lwp) THEN 
    647          WRITE(numout,*) 
    648          WRITE(numout,*) ' Namelist : nampiskrs' 
    649          WRITE(numout,*) '    Sinking factor                           xkr_sfact    = ', xkr_sfact 
    650          WRITE(numout,*) '    Stickiness                               xkr_stick    = ', xkr_stick 
    651          WRITE(numout,*) '    Nbr of cell in nano size class           xkr_nnano    = ', xkr_nnano 
    652          WRITE(numout,*) '    Nbr of cell in diatoms size class        xkr_ndiat    = ', xkr_ndiat 
    653          WRITE(numout,*) '    Nbr of cell in microzoo size class       xkr_nmicro   = ', xkr_nmicro 
    654          WRITE(numout,*) '    Nbr of cell in mesozoo size class        xkr_nmeso    = ', xkr_nmeso 
    655          WRITE(numout,*) '    Nbr of cell in aggregates size class     xkr_naggr    = ', xkr_naggr 
    656       ENDIF 
    657  
    658  
    659       ! max and min vertical particle speed 
    660       xkr_wsbio_min = xkr_sfact * xkr_mass_min**xkr_eta 
    661       xkr_wsbio_max = xkr_sfact * xkr_mass_max**xkr_eta 
    662       IF (lwp) WRITE(numout,*) ' max and min vertical particle speed ', xkr_wsbio_min, xkr_wsbio_max 
    663  
    664       ! 
    665       !    effect of the sizes of the different living pools on particle numbers 
    666       !    nano = 2um-20um -> mean size=6.32 um -> ws=2.596 -> xnum=xnnano=2.337 
    667       !    diat and microzoo = 10um-200um -> 44.7 -> 8.732 -> xnum=xndiat=3.718 
    668       !    mesozoo = 200um-2mm -> 632.45 -> 45.14 -> xnum=xnmeso=7.147 
    669       !    aggregates = 200um-10mm -> 1414 -> 74.34 -> xnum=xnaggr=9.877 
    670       !    doc aggregates = 1um 
    671       ! ---------------------------------------------------------- 
    672  
    673       xkr_dnano = 1. / ( xkr_massp * xkr_nnano ) 
    674       xkr_ddiat = 1. / ( xkr_massp * xkr_ndiat ) 
    675       xkr_dmicro = 1. / ( xkr_massp * xkr_nmicro ) 
    676       xkr_dmeso = 1. / ( xkr_massp * xkr_nmeso ) 
    677       xkr_daggr = 1. / ( xkr_massp * xkr_naggr ) 
    678  
    679       !!--------------------------------------------------------------------- 
    680       !!    'key_kriest'                                                  ??? 
    681       !!--------------------------------------------------------------------- 
    682       !  COMPUTATION OF THE VERTICAL PROFILE OF MAXIMUM SINKING SPEED 
    683       !  Search of the maximum number of particles in aggregates for each k-level. 
    684       !  Bissection Method 
    685       !-------------------------------------------------------------------- 
    686       IF (lwp) THEN 
    687         WRITE(numout,*) 
    688         WRITE(numout,*)'    kriest : Compute maximum number of particles in aggregates' 
    689       ENDIF 
    690  
    691       xacc     =  0.001_wp 
    692       kiter    = 50 
    693       zmin     =  1.10_wp 
    694       zmax     = xkr_mass_max / xkr_mass_min 
    695       xkr_frac = zmax 
    696  
    697       DO jk = 1,jpk 
    698          zl = zmin 
    699          zr = zmax 
    700          wmax = 0.5 * e3t_n(1,1,jk) * rday * float(niter1max) / rfact2 
    701          zdiv = xkr_zeta + xkr_eta - xkr_eta * zl 
    702          znum = zl - 1. 
    703          zwl =  xkr_wsbio_min * xkr_zeta / zdiv & 
    704             & - ( xkr_wsbio_max * xkr_eta * znum * & 
    705             &     xkr_frac**( -xkr_zeta / znum ) / zdiv ) & 
    706             & - wmax 
    707  
    708          zdiv = xkr_zeta + xkr_eta - xkr_eta * zr 
    709          znum = zr - 1. 
    710          zwr =  xkr_wsbio_min * xkr_zeta / zdiv & 
    711             & - ( xkr_wsbio_max * xkr_eta * znum * & 
    712             &     xkr_frac**( -xkr_zeta / znum ) / zdiv ) & 
    713             & - wmax 
    714 iflag:   DO jn = 1, kiter 
    715             IF    ( zwl == 0._wp ) THEN   ;   znummax = zl 
    716             ELSEIF( zwr == 0._wp ) THEN   ;   znummax = zr 
    717             ELSE 
    718                znummax = ( zr + zl ) / 2. 
    719                zdiv = xkr_zeta + xkr_eta - xkr_eta * znummax 
    720                znum = znummax - 1. 
    721                zws =  xkr_wsbio_min * xkr_zeta / zdiv & 
    722                   & - ( xkr_wsbio_max * xkr_eta * znum * & 
    723                   &     xkr_frac**( -xkr_zeta / znum ) / zdiv ) & 
    724                   & - wmax 
    725                IF( zws * zwl < 0. ) THEN   ;   zr = znummax 
    726                ELSE                        ;   zl = znummax 
    727                ENDIF 
    728                zdiv = xkr_zeta + xkr_eta - xkr_eta * zl 
    729                znum = zl - 1. 
    730                zwl =  xkr_wsbio_min * xkr_zeta / zdiv & 
    731                   & - ( xkr_wsbio_max * xkr_eta * znum * & 
    732                   &     xkr_frac**( -xkr_zeta / znum ) / zdiv ) & 
    733                   & - wmax 
    734  
    735                zdiv = xkr_zeta + xkr_eta - xkr_eta * zr 
    736                znum = zr - 1. 
    737                zwr =  xkr_wsbio_min * xkr_zeta / zdiv & 
    738                   & - ( xkr_wsbio_max * xkr_eta * znum * & 
    739                   &     xkr_frac**( -xkr_zeta / znum ) / zdiv ) & 
    740                   & - wmax 
    741                ! 
    742                IF ( ABS ( zws )  <= xacc ) EXIT iflag 
    743                ! 
    744             ENDIF 
    745             ! 
    746          END DO iflag 
    747  
    748          xnumm(jk) = znummax 
    749          IF (lwp) WRITE(numout,*) '       jk = ', jk, ' wmax = ', wmax,' xnum max = ', xnumm(jk) 
    750          ! 
    751       END DO 
    752       ! 
    753       ik100 = 10        !  last level where depth less than 100 m 
    754       DO jk = jpkm1, 1, -1 
    755          IF( gdept_1d(jk) > 100. )  iksed = jk - 1 
    756       END DO 
    757       IF (lwp) WRITE(numout,*) 
    758       IF (lwp) WRITE(numout,*) ' Level corresponding to 100m depth ',  ik100 + 1 
    759       IF (lwp) WRITE(numout,*) 
    760       ! 
    761       t_oce_co2_exp = 0._wp 
    762       ! 
    763       IF( nn_timing == 1 )  CALL timing_stop('p4z_sink_init') 
    764       ! 
    765   END SUBROUTINE p4z_sink_init 
    766  
    767 #endif 
    768283 
    769284   SUBROUTINE p4z_sink2( pwsink, psinkflx, jp_tra, kiter ) 
     
    804319      END DO 
    805320      zwsink2(:,:,1) = 0.e0 
    806       IF( lk_degrad ) THEN 
    807          zwsink2(:,:,:) = zwsink2(:,:,:) * facvol(:,:,:) 
    808       ENDIF 
    809321 
    810322 
     
    890402         &      sinking(jpi,jpj,jpk) , sinking2(jpi,jpj,jpk)                      ,     &                 
    891403         &      sinkcal(jpi,jpj,jpk) , sinksil (jpi,jpj,jpk)                      ,     &                 
    892 #if defined key_kriest 
    893          &      xnumm(jpk)                                                        ,     &                 
    894 #else 
    895404         &      sinkfer2(jpi,jpj,jpk)                                             ,     &                 
    896 #endif 
    897405         &      sinkfer(jpi,jpj,jpk)                                              , STAT=p4z_sink_alloc )                 
    898406         ! 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90

    r6421 r7041  
    6969      INTEGER ::   ji, jj, jk, jnt, jn, jl 
    7070      REAL(wp) ::  ztra 
    71 #if defined key_kriest 
    72       REAL(wp) ::  zcoef1, zcoef2 
    73 #endif 
    7471      CHARACTER (len=25) :: charout 
    7572      !!--------------------------------------------------------------------- 
     
    165162      END DO 
    166163 
    167 #if defined key_kriest 
    168       !  
    169       zcoef1 = 1.e0 / xkr_massp  
    170       zcoef2 = 1.e0 / xkr_massp / 1.1 
    171       DO jk = 1,jpkm1 
    172          trb(:,:,jk,jpnum) = MAX(  trb(:,:,jk,jpnum), trb(:,:,jk,jppoc) * zcoef1 / xnumm(jk)  ) 
    173          trb(:,:,jk,jpnum) = MIN(  trb(:,:,jk,jpnum), trb(:,:,jk,jppoc) * zcoef2              ) 
    174       END DO 
    175       ! 
    176 #endif 
    177       ! 
    178164      ! 
    179165      IF( l_trdtrc ) THEN 
     
    212198      !! ** input   :   file 'namelist.trc.s' containing the following 
    213199      !!             namelist: natext, natbio, natsms 
    214       !!                       natkriest ("key_kriest") 
    215200      !!---------------------------------------------------------------------- 
    216201      NAMELIST/nampisbio/ nrdttrc, wsbio, xkmort, ferat3, wsbio2, niter1max, niter2max 
    217 #if defined key_kriest 
    218       NAMELIST/nampiskrp/ xkr_eta, xkr_zeta, xkr_ncontent, xkr_mass_min, xkr_mass_max 
    219 #endif 
    220202      NAMELIST/nampisdmp/ ln_pisdmp, nn_pisdmp 
    221203      NAMELIST/nampismass/ ln_check_mass 
     
    242224         WRITE(numout,*) '    Maximum number of iterations for GOC      niter2max =', niter2max 
    243225      ENDIF 
    244  
    245 #if defined key_kriest 
    246  
    247       !                               ! nampiskrp : kriest parameters 
    248       !                               ! ----------------------------- 
    249       REWIND( numnatp_ref )              ! Namelist nampiskrp in reference namelist : Pisces Kriest 
    250       READ  ( numnatp_ref, nampiskrp, IOSTAT = ios, ERR = 903) 
    251 903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiskrp in reference namelist', lwp ) 
    252  
    253       REWIND( numnatp_cfg )              ! Namelist nampiskrp in configuration namelist : Pisces Kriest 
    254       READ  ( numnatp_cfg, nampiskrp, IOSTAT = ios, ERR = 904 ) 
    255 904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiskrp in configuration namelist', lwp ) 
    256       IF(lwm) WRITE ( numonp, nampiskrp ) 
    257  
    258       IF(lwp) THEN 
    259          WRITE(numout,*) 
    260          WRITE(numout,*) ' Namelist : nampiskrp' 
    261          WRITE(numout,*) '    Sinking  exponent                        xkr_eta      = ', xkr_eta 
    262          WRITE(numout,*) '    N content exponent                       xkr_zeta     = ', xkr_zeta 
    263          WRITE(numout,*) '    N content factor                         xkr_ncontent = ', xkr_ncontent 
    264          WRITE(numout,*) '    Minimum mass for Aggregates              xkr_mass_min = ', xkr_mass_min 
    265          WRITE(numout,*) '    Maximum mass for Aggregates              xkr_mass_max = ', xkr_mass_max 
    266          WRITE(numout,*) 
    267      ENDIF 
    268  
    269  
    270      ! Computation of some variables 
    271      xkr_massp = xkr_ncontent * 7.625 * xkr_mass_min**xkr_zeta 
    272  
    273 #endif 
    274226 
    275227      REWIND( numnatp_ref )              ! Namelist nampisdmp in reference namelist : Pisces damping 
     
    503455            &                    + trn(:,:,:,jpzoo) + trn(:,:,:,jpmes)  & 
    504456            &                    + trn(:,:,:,jppoc)                     & 
    505 #if ! defined key_kriest 
    506457            &                    + trn(:,:,:,jpgoc)                     & 
    507 #endif 
    508458            &                    + trn(:,:,:,jpdoc)                     ) * cvol(:,:,:)  ) 
    509459         ! 
     
    517467            &                    + trn(:,:,:,jpzoo) + trn(:,:,:,jpmes)  & 
    518468            &                    + trn(:,:,:,jppoc)                     & 
    519 #if ! defined key_kriest 
    520469            &                    + trn(:,:,:,jpgoc)                     & 
    521 #endif 
    522470            &                    + trn(:,:,:,jpdoc)                     ) * cvol(:,:,:)  ) 
    523471         po4budget = po4budget / areatot 
     
    545493         ferbudget = glob_sum( (   trn(:,:,:,jpfer) + trn(:,:,:,jpnfe)  & 
    546494            &                    + trn(:,:,:,jpdfe)                     & 
    547 #if ! defined key_kriest 
    548495            &                    + trn(:,:,:,jpbfe)                     & 
    549 #endif 
    550496            &                    + trn(:,:,:,jpsfe)                     & 
    551497            &                    + trn(:,:,:,jpzoo) * ferat3            & 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/SED/par_sed.F90

    r5215 r7041  
    2424#endif 
    2525 
    26 #if defined key_kriest 
    27    INTEGER, PARAMETER :: jpdta = 11 
    28 #else 
    2926   INTEGER, PARAMETER :: jpdta = 12 
    30 #endif 
    3127 
    3228 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/SED/sed.F90

    r5215 r7041  
    4040 
    4141   USE p4zsink , ONLY :  sinking    =>   sinking         !: sinking flux for POC 
    42 #if ! defined key_kriest 
    4342   USE p4zsink , ONLY :  sinking2   =>   sinking2        !: sinking flux for GOC 
    44 #endif 
    4543   USE p4zsink , ONLY :  sinkcal    =>   sinkcal         !: sinking flux for calcite 
    4644   USE p4zsink , ONLY :  sinksil    =>   sinksil         !: sinking flux for opal ( dsi ) 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/SED/seddta.F90

    r5215 r7041  
    5555 
    5656      REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zdta 
    57 #if ! defined key_kriest 
    5857      REAL(wp), DIMENSION(:)  , ALLOCATABLE :: zdtap, zdtag 
    59 #endif  
    6058 
    6159 
     
    9795      ENDIF 
    9896 
    99  
    100 #if ! defined key_kriest    
    10197      ! Initialization of temporaries arrays   
    10298      ALLOCATE( zdtap(jpoce) )    ;   zdtap(:)    = 0.  
    10399      ALLOCATE( zdtag(jpoce) )    ;   zdtag(:)    = 0.   
    104 #endif 
    105  
    106100 
    107101      IF( MOD( kt - 1, nfreq ) == 0 ) THEN 
     
    122116                  trc_data(ji,jj,5)  = trn  (ji,jj,ikt,jpoxy) 
    123117                  trc_data(ji,jj,6)  = trn  (ji,jj,ikt,jpsil) 
    124 #   if ! defined key_kriest 
    125118                  trc_data(ji,jj,7 ) = sinksil (ji,jj,ikt) 
    126119                  trc_data(ji,jj,8 ) = sinking (ji,jj,ikt) 
     
    129122                  trc_data(ji,jj,11) = tsn     (ji,jj,ikt,jp_tem) 
    130123                  trc_data(ji,jj,12) = tsn     (ji,jj,ikt,jp_sal) 
    131 #   else 
    132                   trc_data(ji,jj,7 ) = sinksil (ji,jj,ikt) 
    133                   trc_data(ji,jj,8 ) = sinking (ji,jj,ikt) 
    134                   trc_data(ji,jj,9 ) = sinkcal (ji,jj,ikt) 
    135                   trc_data(ji,jj,10) = tsn     (ji,jj,ikt,jp_tem) 
    136                   trc_data(ji,jj,11) = tsn     (ji,jj,ikt,jp_sal)        
    137 #   endif 
    138124               ENDIF 
    139125            ENDDO 
     
    147133         CALL iom_get( numbio, jpdom_data, 'O2BOT'      , trc_data(:,:,5 ) ) 
    148134         CALL iom_get( numbio, jpdom_data, 'SIBOT'      , trc_data(:,:,6 ) ) 
    149 #   if ! defined key_kriest 
    150135         CALL iom_get( numbio, jpdom_data, 'OPALFLXBOT' , trc_data(:,:,7 ) )  
    151136         CALL iom_get( numbio, jpdom_data, 'POCFLXBOT'  , trc_data(:,:,8 ) )  
     
    154139         CALL iom_get( numoce, jpdom_data, 'TBOT'       , trc_data(:,:,11) )  
    155140         CALL iom_get( numoce, jpdom_data, 'SBOT'       , trc_data(:,:,12) )  
    156 #   else 
    157          CALL iom_get( numbio, jpdom_data, 'OPALFLXBOT' , trc_data(:,:,7 ) )  
    158          CALL iom_get( numbio, jpdom_data, 'POCFLXBOT'  , trc_data(:,:,8 ) )  
    159          CALL iom_get( numbio, jpdom_data, 'CACO3FLXBOT', trc_data(:,:,9 ) )  
    160          CALL iom_get( numoce, jpdom_data, 'TBOT'       , trc_data(:,:,10) )  
    161          CALL iom_get( numoce, jpdom_data, 'SBOT'       , trc_data(:,:,11) )  
    162 #   endif 
    163141#endif 
    164142 
     
    186164         !  Solid components :  
    187165         !----------------------- 
    188 #if ! defined key_kriest 
    189166         !  Sinking fluxes for OPAL in mol.m-2.s-1 ; conversion in mol.cm-2.s-1 
    190167         CALL pack_arr ( jpoce, rainrm_dta(1:jpoce,jsopal), trc_data(1:jpi,1:jpj,7), iarroce(1:jpoce) )  
     
    200177         CALL pack_arr ( jpoce,  temp(1:jpoce), trc_data(1:jpi,1:jpj,11), iarroce(1:jpoce) ) 
    201178         CALL pack_arr ( jpoce,  salt(1:jpoce), trc_data(1:jpi,1:jpj,12), iarroce(1:jpoce) ) 
    202 #else 
    203          !  Sinking fluxes for OPAL in mol.m-2.s-1 ; conversion in mol.cm-2.s-1 
    204          CALL pack_arr ( jpoce, rainrm_dta(1:jpoce,jsopal), trc_data(1:jpi,1:jpj,7), iarroce(1:jpoce) )  
    205          rainrm_dta(1:jpoce,jsopal) = rainrm_dta(1:jpoce,jsopal) * 1e-4 
    206          !  Sinking fluxes for POC in mol.m-2.s-1 ; conversion in mol.cm-2.s-1 
    207          CALL pack_arr ( jpoce, rainrm_dta(1:jpoce,jspoc), trc_data(1:jpi,1:jpj,8) , iarroce(1:jpoce) )       
    208          rainrm_dta(1:jpoce,jspoc) = rainrm_dta(1:jpoce,jspoc) * 1e-4 
    209          !  Sinking fluxes for Calcite in mol.m-2.s-1 ; conversion in mol.cm-2.s-1 
    210          CALL pack_arr ( jpoce,  rainrm_dta(1:jpoce,jscal), trc_data(1:jpi,1:jpj,9), iarroce(1:jpoce) ) 
    211          rainrm_dta(1:jpoce,jscal) = rainrm_dta(1:jpoce,jscal) * 1e-4 
    212          ! vector temperature [°C] and salinity  
    213          CALL pack_arr ( jpoce,  temp(1:jpoce), trc_data(1:jpi,1:jpj,10), iarroce(1:jpoce) ) 
    214          CALL pack_arr ( jpoce,  salt(1:jpoce), trc_data(1:jpi,1:jpj,11), iarroce(1:jpoce) ) 
    215  
    216 #endif 
    217179         
    218180         ! Clay rain rate in [mol/(cm**2.s)]  
     
    252214 
    253215      DEALLOCATE( zdta )  
    254 #if ! defined key_kriest 
    255216      DEALLOCATE( zdtap    ) ;  DEALLOCATE( zdtag    )  
    256 #endif       
    257217 
    258218      IF( kt == nitsedend )   THEN 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/par_pisces.F90

    r5385 r7041  
    1313   IMPLICIT NONE 
    1414 
    15 #if defined key_pisces_reduced 
     15   INTEGER, PUBLIC    ::   jp_pisces   !: number of passive tracers in PISCES 
     16 
     17#if defined key_pisces 
    1618   !!--------------------------------------------------------------------- 
    17    !!   'key_pisces_reduced'   :                                LOBSTER bio-model 
     19   !!   'key_pisces   :                                PISCES bio-model 
    1820   !!--------------------------------------------------------------------- 
    1921   LOGICAL, PUBLIC, PARAMETER ::   lk_pisces     = .TRUE.  !: PISCES flag  
    20    LOGICAL, PUBLIC, PARAMETER ::   lk_p4z        = .FALSE. !: p4z flag  
    21    INTEGER, PUBLIC, PARAMETER ::   jp_pisces     =  6      !: number of passive tracers 
    22    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_2d  =  19     !: additional 2d output  
    23    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_3d  =   3     !: additional 3d output  
    24    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_trd =   17    !: number of sms trends for PISCES 
    25  
    26    ! assign an index in trc arrays for each LOBSTER prognostic variables 
    27    INTEGER, PUBLIC, PARAMETER ::   jpdet     =  1        !: detritus                    [mmoleN/m3] 
    28    INTEGER, PUBLIC, PARAMETER ::   jpzoo     =  2        !: zooplancton concentration   [mmoleN/m3] 
    29    INTEGER, PUBLIC, PARAMETER ::   jpphy     =  3        !: phytoplancton concentration [mmoleN/m3] 
    30    INTEGER, PUBLIC, PARAMETER ::   jpno3     =  4        !: nitrate concentration       [mmoleN/m3] 
    31    INTEGER, PUBLIC, PARAMETER ::   jpnh4     =  5        !: ammonium concentration      [mmoleN/m3] 
    32    INTEGER, PUBLIC, PARAMETER ::   jpdom     =  6        !: dissolved organic matter    [mmoleN/m3] 
    33  
    3422   ! productive layer depth 
    35    INTEGER, PUBLIC, PARAMETER ::   jpkb      = 12        !: first vertical layers where biology is active 
    36    INTEGER, PUBLIC, PARAMETER ::   jpkbm1    = jpkb - 1  !: first vertical layers where biology is active 
    37  
    38 #elif defined key_pisces  &&  defined key_kriest 
    39    !!--------------------------------------------------------------------- 
    40    !!   'key_pisces' & 'key_kriest'                 PISCES bio-model + ??? 
    41    !!--------------------------------------------------------------------- 
    42    LOGICAL, PUBLIC, PARAMETER ::   lk_pisces     = .TRUE.  !: PISCES flag  
    43    LOGICAL, PUBLIC, PARAMETER ::   lk_p4z        = .TRUE. !: p4z flag  
    44    LOGICAL, PUBLIC, PARAMETER ::   lk_kriest     = .TRUE.  !: Kriest flag  
    45    INTEGER, PUBLIC, PARAMETER ::   jp_pisces     =  23     !: number of passive tracers 
    46    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_2d  =  13     !: additional 2d output  
    47    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_3d  =  18     !: additional 3d output  
    48    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_trd =   1     !: number of sms trends for PISCES 
    49  
    50    ! assign an index in trc arrays for each LOBSTER prognostic variables 
    51    !    WARNING: be carefull about the order when reading the restart 
    52         !   !!gm  this warning should be obsolet with IOM 
    53    INTEGER, PUBLIC, PARAMETER ::   jpdic =  1    !: dissolved inoganic carbon concentration  
    54    INTEGER, PUBLIC, PARAMETER ::   jptal =  2    !: total alkalinity  
    55    INTEGER, PUBLIC, PARAMETER ::   jpoxy =  3    !: oxygen carbon concentration  
    56    INTEGER, PUBLIC, PARAMETER ::   jpcal =  4    !: calcite  concentration  
    57    INTEGER, PUBLIC, PARAMETER ::   jppo4 =  5    !: phosphate concentration  
    58    INTEGER, PUBLIC, PARAMETER ::   jppoc =  6    !: small particulate organic phosphate concentration 
    59    INTEGER, PUBLIC, PARAMETER ::   jpsil =  7    !: silicate concentration 
    60    INTEGER, PUBLIC, PARAMETER ::   jpphy =  8    !: phytoplancton concentration  
    61    INTEGER, PUBLIC, PARAMETER ::   jpzoo =  9    !: zooplancton concentration 
    62    INTEGER, PUBLIC, PARAMETER ::   jpdoc = 10    !: dissolved organic carbon concentration  
    63    INTEGER, PUBLIC, PARAMETER ::   jpdia = 11    !: Diatoms Concentration 
    64    INTEGER, PUBLIC, PARAMETER ::   jpmes = 12    !: Mesozooplankton Concentration 
    65    INTEGER, PUBLIC, PARAMETER ::   jpdsi = 13    !: Diatoms Silicate Concentration 
    66    INTEGER, PUBLIC, PARAMETER ::   jpfer = 14    !: Iron Concentration 
    67    INTEGER, PUBLIC, PARAMETER ::   jpnum = 15    !: Big iron particles Concentration 
    68    INTEGER, PUBLIC, PARAMETER ::   jpsfe = 16    !: number of particulate organic phosphate concentration 
    69    INTEGER, PUBLIC, PARAMETER ::   jpdfe = 17    !: Diatoms iron Concentration 
    70    INTEGER, PUBLIC, PARAMETER ::   jpgsi = 18    !: (big) Silicate Concentration 
    71    INTEGER, PUBLIC, PARAMETER ::   jpnfe = 19    !: Nano iron Concentration 
    72    INTEGER, PUBLIC, PARAMETER ::   jpnch = 20    !: Nano Chlorophyll Concentration 
    73    INTEGER, PUBLIC, PARAMETER ::   jpdch = 21    !: Diatoms Chlorophyll Concentration 
    74    INTEGER, PUBLIC, PARAMETER ::   jpno3 = 22    !: Nitrates Concentration 
    75    INTEGER, PUBLIC, PARAMETER ::   jpnh4 = 23    !: Ammonium Concentration 
    76  
    77 #elif defined key_pisces 
    78    !!--------------------------------------------------------------------- 
    79    !!   'key_pisces'   :                         standard PISCES bio-model 
    80    !!--------------------------------------------------------------------- 
    81    LOGICAL, PUBLIC, PARAMETER ::   lk_pisces     = .TRUE.  !: PISCES flag  
    82    LOGICAL, PUBLIC, PARAMETER ::   lk_p4z        = .TRUE.  !: p4z flag  
    83    LOGICAL, PUBLIC, PARAMETER ::   lk_kriest     = .FALSE. !: Kriest flag  
    84    INTEGER, PUBLIC, PARAMETER ::   jp_pisces     = 24      !: number of PISCES passive tracers 
    85    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_2d  = 13      !: additional 2d output  
    86    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_3d  = 11      !: additional 3d output  
    87    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_trd =  1      !: number of sms trends for PISCES 
    88  
    89    ! assign an index in trc arrays for each LOBSTER prognostic variables 
    90    !    WARNING: be carefull about the order when reading the restart 
    91         !   !!gm  this warning should be obsolet with IOM 
    92    INTEGER, PUBLIC, PARAMETER ::   jpdic =  1    !: dissolved inoganic carbon concentration  
    93    INTEGER, PUBLIC, PARAMETER ::   jptal =  2    !: total alkalinity  
    94    INTEGER, PUBLIC, PARAMETER ::   jpoxy =  3    !: oxygen carbon concentration  
    95    INTEGER, PUBLIC, PARAMETER ::   jpcal =  4    !: calcite  concentration  
    96    INTEGER, PUBLIC, PARAMETER ::   jppo4 =  5    !: phosphate concentration  
    97    INTEGER, PUBLIC, PARAMETER ::   jppoc =  6    !: small particulate organic phosphate concentration 
    98    INTEGER, PUBLIC, PARAMETER ::   jpsil =  7    !: silicate concentration 
    99    INTEGER, PUBLIC, PARAMETER ::   jpphy =  8    !: phytoplancton concentration  
    100    INTEGER, PUBLIC, PARAMETER ::   jpzoo =  9    !: zooplancton concentration 
    101    INTEGER, PUBLIC, PARAMETER ::   jpdoc = 10    !: dissolved organic carbon concentration  
    102    INTEGER, PUBLIC, PARAMETER ::   jpdia = 11    !: Diatoms Concentration 
    103    INTEGER, PUBLIC, PARAMETER ::   jpmes = 12    !: Mesozooplankton Concentration 
    104    INTEGER, PUBLIC, PARAMETER ::   jpdsi = 13    !: Diatoms Silicate Concentration 
    105    INTEGER, PUBLIC, PARAMETER ::   jpfer = 14    !: Iron Concentration 
    106    INTEGER, PUBLIC, PARAMETER ::   jpbfe = 15    !: Big iron particles Concentration 
    107    INTEGER, PUBLIC, PARAMETER ::   jpgoc = 16    !: big particulate organic phosphate concentration 
    108    INTEGER, PUBLIC, PARAMETER ::   jpsfe = 17    !: Small iron particles Concentration 
    109    INTEGER, PUBLIC, PARAMETER ::   jpdfe = 18    !: Diatoms iron Concentration 
    110    INTEGER, PUBLIC, PARAMETER ::   jpgsi = 19    !: (big) Silicate Concentration 
    111    INTEGER, PUBLIC, PARAMETER ::   jpnfe = 20    !: Nano iron Concentration 
    112    INTEGER, PUBLIC, PARAMETER ::   jpnch = 21    !: Nano Chlorophyll Concentration 
    113    INTEGER, PUBLIC, PARAMETER ::   jpdch = 22    !: Diatoms Chlorophyll Concentration 
    114    INTEGER, PUBLIC, PARAMETER ::   jpno3 = 23    !: Nitrates Concentration 
    115    INTEGER, PUBLIC, PARAMETER ::   jpnh4 = 24    !: Ammonium Concentration 
     23   INTEGER, PUBLIC ::   jpkb     !: first vertical layers where biology is active 
     24   INTEGER, PUBLIC ::   jpkbm1   !: first vertical layers where biology is active 
    11625 
    11726#else 
    11827   !!--------------------------------------------------------------------- 
    119    !!   Default                                   No CFC geochemical model 
    120    !!--------------------------------------------------------------------- 
    12128   LOGICAL, PUBLIC, PARAMETER ::   lk_pisces     = .FALSE.  !: PISCES flag  
    122    LOGICAL, PUBLIC, PARAMETER ::   lk_p4z        = .FALSE.  !: p4z flag  
    123    INTEGER, PUBLIC, PARAMETER ::   jp_pisces     =  0       !: No CFC tracers 
    124    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_2d  =  0       !: No CFC additional 2d output arrays  
    125    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_3d  =  0       !: No CFC additional 3d output arrays  
    126    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_trd =  0       !: number of sms trends for PISCES 
    12729#endif 
    12830 
     31   ! assign an index in trc arrays for each LOBSTER prognostic variables 
     32   INTEGER, PUBLIC ::   jpdet     !: detritus                    
     33   INTEGER, PUBLIC ::   jpdom     !: dissolved organic matter  
     34   INTEGER, PUBLIC ::   jpdic     !: dissolved inoganic carbon concentration  
     35   INTEGER, PUBLIC ::   jptal     !: total alkalinity  
     36   INTEGER, PUBLIC ::   jpoxy     !: oxygen carbon concentration  
     37   INTEGER, PUBLIC ::   jpcal     !: calcite  concentration  
     38   INTEGER, PUBLIC ::   jppo4     !: phosphate concentration  
     39   INTEGER, PUBLIC ::   jppoc     !: small particulate organic phosphate concentration 
     40   INTEGER, PUBLIC ::   jpsil     !: silicate concentration 
     41   INTEGER, PUBLIC ::   jpphy     !: phytoplancton concentration  
     42   INTEGER, PUBLIC ::   jpzoo     !: zooplancton concentration 
     43   INTEGER, PUBLIC ::   jpdoc     !: dissolved organic carbon concentration  
     44   INTEGER, PUBLIC ::   jpdia     !: Diatoms Concentration 
     45   INTEGER, PUBLIC ::   jpmes     !: Mesozooplankton Concentration 
     46   INTEGER, PUBLIC ::   jpdsi     !: Diatoms Silicate Concentration 
     47   INTEGER, PUBLIC ::   jpfer     !: Iron Concentration 
     48   INTEGER, PUBLIC ::   jpbfe     !: Big iron particles Concentration 
     49   INTEGER, PUBLIC ::   jpgoc     !: big particulate organic phosphate concentration 
     50   INTEGER, PUBLIC ::   jpsfe     !: Small iron particles Concentration 
     51   INTEGER, PUBLIC ::   jpdfe     !: Diatoms iron Concentration 
     52   INTEGER, PUBLIC ::   jpgsi     !: (big) Silicate Concentration 
     53   INTEGER, PUBLIC ::   jpnfe     !: Nano iron Concentration 
     54   INTEGER, PUBLIC ::   jpnch     !: Nano Chlorophyll Concentration 
     55   INTEGER, PUBLIC ::   jpdch     !: Diatoms Chlorophyll Concentration 
     56   INTEGER, PUBLIC ::   jpno3     !: Nitrates Concentration 
     57   INTEGER, PUBLIC ::   jpnh4     !: Ammonium Concentration 
     58   !!--------------------------------------------------------------------- 
     59   !!   Default                                   No CFC geochemical model 
    12960   ! Starting/ending PISCES do-loop indices (N.B. no PISCES : jpl_pcs < jpf_pcs the do-loop are never done) 
    130    INTEGER, PUBLIC, PARAMETER ::   jp_pcs0     = 1                  !: First index of PISCES tracers 
    131    INTEGER, PUBLIC, PARAMETER ::   jp_pcs1     = jp_pisces          !: Last  index of PISCES tracers 
    132    INTEGER, PUBLIC, PARAMETER ::   jp_pcs0_2d  = 1               !: First index of 2D diag 
    133    INTEGER, PUBLIC, PARAMETER ::   jp_pcs1_2d  = jp_pisces_2d    !: Last  index of 2D diag 
    134    INTEGER, PUBLIC, PARAMETER ::   jp_pcs0_3d  = 1               !: First index of 3D diag 
    135    INTEGER, PUBLIC, PARAMETER ::   jp_pcs1_3d  = jp_pisces_3d    !: Last  index of 3d diag 
    136    INTEGER, PUBLIC, PARAMETER ::   jp_pcs0_trd = 1              !: First index of bio diag 
    137    INTEGER, PUBLIC, PARAMETER ::   jp_pcs1_trd = jp_pisces_trd  !: Last  index of bio diag 
    138  
     61   INTEGER, PUBLIC  ::   jp_pcs0                    !: First index of PISCES tracers 
     62   INTEGER, PUBLIC  ::   jp_pcs1                   !: Last  index of PISCES tracers 
    13963 
    14064   !!====================================================================== 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90

    r6291 r7041  
    77   !!             3.2  !  2009-04 (C. Ethe & NEMO team) style 
    88   !!---------------------------------------------------------------------- 
    9 #if defined key_pisces || defined key_pisces_reduced  
     9#if defined key_pisces  
    1010   !!---------------------------------------------------------------------- 
    1111   !!   'key_pisces'                                         PISCES model 
     
    2929   !                                                       !:  PISCES  : silicon dependant half saturation 
    3030 
    31 #if defined key_pisces  
     31   !!* Model used 
     32   LOGICAL  ::  ln_p2z            !: Flag to use LOBSTER model 
     33   LOGICAL  ::  ln_p4z            !: Flag to use PISCES  model 
     34 
     35 
    3236   !!*  Time variables 
    3337   INTEGER  ::   nrdttrc           !: ??? 
     
    108112   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tgfunc2   !: Temp. dependancy of mesozooplankton rates 
    109113 
    110 #if defined key_kriest 
    111    !!*  Kriest parameter for aggregation 
    112    REAL(wp) ::   xkr_eta                            !: Sinking  exponent  
    113    REAL(wp) ::   xkr_zeta                           !:  N content exponent  
    114    REAL(wp) ::   xkr_ncontent                       !:  N content factor    
    115    REAL(wp) ::   xkr_massp                          !:  
    116    REAL(wp) ::   xkr_mass_min, xkr_mass_max         !:  Minimum, Maximum mass for Aggregates  
    117 #endif 
    118114 
    119 #endif 
    120115   !!---------------------------------------------------------------------- 
    121116   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
     
    136131      ALLOCATE( etot(jpi,jpj,jpk), neln(jpi,jpj), heup(jpi,jpj), xksi(jpi,jpj), STAT=ierr(1) ) 
    137132      ! 
    138 #if defined key_pisces 
    139       !*  Biological fluxes for primary production 
    140       ALLOCATE( xksimax(jpi,jpj)     , biron   (jpi,jpj,jpk),       & 
    141          &      xnanono3(jpi,jpj,jpk), xdiatno3(jpi,jpj,jpk),       & 
    142          &      xnanonh4(jpi,jpj,jpk), xdiatnh4(jpi,jpj,jpk),       & 
    143          &      xnanopo4(jpi,jpj,jpk), xdiatpo4(jpi,jpj,jpk),       & 
    144          &      xlimphy (jpi,jpj,jpk), xlimdia (jpi,jpj,jpk),       & 
    145          &      xlimnfe (jpi,jpj,jpk), xlimdfe (jpi,jpj,jpk),       & 
    146          &      xlimsi  (jpi,jpj,jpk), concdfe (jpi,jpj,jpk),       & 
    147          &      concnfe (jpi,jpj,jpk),                           STAT=ierr(2) )  
     133      IF( ln_p4z ) THEN 
     134         !*  Biological fluxes for primary production 
     135         ALLOCATE( xksimax(jpi,jpj)     , biron   (jpi,jpj,jpk),       & 
     136            &      xnanono3(jpi,jpj,jpk), xdiatno3(jpi,jpj,jpk),       & 
     137            &      xnanonh4(jpi,jpj,jpk), xdiatnh4(jpi,jpj,jpk),       & 
     138            &      xnanopo4(jpi,jpj,jpk), xdiatpo4(jpi,jpj,jpk),       & 
     139            &      xlimphy (jpi,jpj,jpk), xlimdia (jpi,jpj,jpk),       & 
     140            &      xlimnfe (jpi,jpj,jpk), xlimdfe (jpi,jpj,jpk),       & 
     141            &      xlimsi  (jpi,jpj,jpk), concdfe (jpi,jpj,jpk),       & 
     142            &      concnfe (jpi,jpj,jpk),                           STAT=ierr(2) )  
    148143         ! 
    149       !*  SMS for the organic matter 
    150       ALLOCATE( xfracal (jpi,jpj,jpk), nitrfac(jpi,jpj,jpk),       & 
    151          &      xlimbac (jpi,jpj,jpk), xdiss  (jpi,jpj,jpk),       &  
    152          &      xlimbacl(jpi,jpj,jpk), prodcal(jpi,jpj,jpk),     STAT=ierr(3) ) 
     144         !*  SMS for the organic matter 
     145         ALLOCATE( xfracal (jpi,jpj,jpk), nitrfac(jpi,jpj,jpk),       & 
     146            &      xlimbac (jpi,jpj,jpk), xdiss  (jpi,jpj,jpk),       &  
     147            &      xlimbacl(jpi,jpj,jpk), prodcal(jpi,jpj,jpk),     STAT=ierr(3) ) 
    153148 
    154       !* Variable for chemistry of the CO2 cycle 
    155       ALLOCATE( akb3(jpi,jpj,jpk)    , ak13  (jpi,jpj,jpk) ,       & 
    156          &      ak23(jpi,jpj,jpk)    , aksp  (jpi,jpj,jpk) ,       & 
    157          &      akw3(jpi,jpj,jpk)    , borat (jpi,jpj,jpk) ,       & 
    158          &      hi  (jpi,jpj,jpk)    , excess(jpi,jpj,jpk) ,       & 
    159          &      aphscale(jpi,jpj,jpk),                           STAT=ierr(4) ) 
     149         !* Variable for chemistry of the CO2 cycle 
     150         ALLOCATE( akb3(jpi,jpj,jpk)    , ak13  (jpi,jpj,jpk) ,       & 
     151            &      ak23(jpi,jpj,jpk)    , aksp  (jpi,jpj,jpk) ,       & 
     152            &      akw3(jpi,jpj,jpk)    , borat (jpi,jpj,jpk) ,       & 
     153            &      hi  (jpi,jpj,jpk)    , excess(jpi,jpj,jpk) ,       & 
     154            &      aphscale(jpi,jpj,jpk),                           STAT=ierr(4) ) 
     155            ! 
     156         !* Temperature dependancy of SMS terms 
     157         ALLOCATE( tgfunc(jpi,jpj,jpk)  , tgfunc2(jpi,jpj,jpk) ,    STAT=ierr(5) ) 
    160158         ! 
    161       !* Temperature dependancy of SMS terms 
    162       ALLOCATE( tgfunc(jpi,jpj,jpk)  , tgfunc2(jpi,jpj,jpk) ,    STAT=ierr(5) ) 
    163          ! 
    164 #endif 
     159      ENDIF 
    165160      ! 
    166161      sms_pisces_alloc = MAXVAL( ierr ) 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcice_pisces.F90

    r5725 r7041  
    55   !!====================================================================== 
    66   !! History :  3.5  ! 2013    (M. Vancoppenolle, O. Aumont, G. Madec), original code 
    7    !! Comment ! probably not properly done when the second particle export 
    8    !! scheme (kriest) is used 
    9    !!---------------------------------------------------------------------- 
    10 #if defined key_pisces || defined key_pisces_reduced 
     7   !!---------------------------------------------------------------------- 
     8#if defined key_pisces  
    119   !!---------------------------------------------------------------------- 
    1210   !!   'key_pisces'                                       PISCES bio-model 
     
    3735      !!---------------------------------------------------------------------- 
    3836 
    39       IF( lk_p4z ) THEN  ;   CALL p4z_ice_ini   !  PISCES 
     37      IF( ln_p4z ) THEN  ;   CALL p4z_ice_ini   !  PISCES 
    4038      ELSE               ;   CALL p2z_ice_ini   !  LOBSTER 
    4139      ENDIF 
     
    4543 
    4644   SUBROUTINE p4z_ice_ini 
    47  
    48 #if defined key_pisces  
    4945      !!---------------------------------------------------------------------- 
    5046      !!                   ***  ROUTINE p4z_ice_ini *** 
     
    7571 
    7672                                        !--- Dummy variables 
    77       REAL(wp), DIMENSION(jp_pisces,2)  :: zratio  ! effective ice-ocean tracer cc ratio 
    78       REAL(wp), DIMENSION(jp_pisces,4)  :: zpisc   ! prescribes concentration  
     73      REAL(wp), DIMENSION(:,:), ALLOCATABLE  :: zratio  ! effective ice-ocean tracer cc ratio 
     74      REAL(wp), DIMENSION(:,:), ALLOCATABLE  :: zpisc   ! prescribes concentration  
    7975      !                                            !  1:global, 2:Arctic, 3:Antarctic, 4:Baltic 
    8076 
     
    9995      ! fluxes 
    10096 
     97      ALLOCATE( zratio(jp_pisces,2),  zpisc(jp_pisces,4) ) 
     98   
    10199      !--- Global values 
    102100      zpisc(jpdic,1) =  1.99e-3_wp  
     
    107105      zpisc(jppo4,1) =  5.77e-7_wp / po4r  
    108106      zpisc(jppoc,1) =  1.27e-6_wp   
    109 #  if ! defined key_kriest 
    110107      zpisc(jpgoc,1) =  5.23e-8_wp   
    111108      zpisc(jpbfe,1) =  9.84e-13_wp  
    112 #  else 
    113       zpisc(jpnum,1) = 0. ! could not get this value since did not use it 
    114 #  endif 
    115109      zpisc(jpsil,1) =  7.36e-6_wp   
    116110      zpisc(jpdsi,1) =  1.07e-7_wp  
     
    137131      zpisc(jppo4,2) =  4.09e-7_wp / po4r  
    138132      zpisc(jppoc,2) =  4.05e-7_wp   
    139 #  if ! defined key_kriest 
    140133      zpisc(jpgoc,2) =  2.84e-8_wp   
    141134      zpisc(jpbfe,2) =  7.03e-13_wp  
    142 #  else 
    143       zpisc(jpnum,2) =  0.00e-00_wp  
    144 #  endif 
    145135      zpisc(jpsil,2) =  6.87e-6_wp   
    146136      zpisc(jpdsi,2) =  1.73e-7_wp  
     
    167157      zpisc(jppo4,3) =  1.88e-6_wp / po4r   
    168158      zpisc(jppoc,3) =  1.13e-6_wp   
    169 #  if ! defined key_kriest 
    170159      zpisc(jpgoc,3) =  2.89e-8_wp   
    171160      zpisc(jpbfe,3) =  5.63e-13_wp  
    172 #  else 
    173       zpisc(jpnum,3) =  0.00e-00_wp  
    174 #  endif 
    175161      zpisc(jpsil,3) =  4.96e-5_wp   
    176162      zpisc(jpdsi,3) =  5.63e-7_wp  
     
    197183      zpisc(jppo4,4) = 2.85e-9_wp / po4r 
    198184      zpisc(jppoc,4) = 4.84e-7_wp 
    199 #  if ! defined key_kriest 
    200185      zpisc(jpgoc,4) = 1.05e-8_wp 
    201186      zpisc(jpbfe,4) = 4.97e-13_wp 
    202 #  else 
    203       zpisc(jpnum,4) = 0. ! could not get this value 
    204 #  endif 
    205187      zpisc(jpsil,4) = 4.91e-5_wp 
    206188      zpisc(jpdsi,4) = 3.25e-7_wp 
     
    279261      ! 
    280262      END DO ! jn 
    281 #endif 
     263      ! 
     264      DEALLOCATE( zratio, zpisc ) 
     265      ! 
    282266 
    283267   END SUBROUTINE p4z_ice_ini 
    284268 
    285269   SUBROUTINE p2z_ice_ini 
    286 #if defined key_pisces_reduced  
    287270      !!---------------------------------------------------------------------- 
    288271      !!                   ***  ROUTINE p2z_ice_ini *** 
     
    290273      !! ** Purpose :   Initialisation of the LOBSTER biochemical model 
    291274      !!---------------------------------------------------------------------- 
    292 #endif 
    293275   END SUBROUTINE p2z_ice_ini 
    294276 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90

    r6325 r7041  
    1111   !!             3.5  !  2012-05  (C. Ethe) Merge PISCES-LOBSTER 
    1212   !!---------------------------------------------------------------------- 
    13 #if defined key_pisces || defined key_pisces_reduced 
     13#if defined key_pisces  
    1414   !!---------------------------------------------------------------------- 
    1515   !!   'key_pisces'                                       PISCES bio-model 
     
    4141      !!---------------------------------------------------------------------- 
    4242 
    43       IF( lk_p4z ) THEN  ;   CALL p4z_ini   !  PISCES 
     43      IF( ln_p4z ) THEN  ;   CALL p4z_ini   !  PISCES 
    4444      ELSE               ;   CALL p2z_ini   !  LOBSTER 
    4545      ENDIF 
     
    5353      !! ** Purpose :   Initialisation of the PISCES biochemical model 
    5454      !!---------------------------------------------------------------------- 
    55 #if defined key_pisces  
    5655      ! 
    5756      USE p4zsms          ! Main P4Z routine 
     
    7978      REAL(wp), SAVE :: no3    =  30.9e-6_wp * 7.625_wp 
    8079      ! 
    81       INTEGER  ::  ji, jj, jk, ierr 
     80      INTEGER  ::  ji, jj, jk, jn, ierr 
    8281      REAL(wp) ::  zcaralk, zbicarb, zco3 
    8382      REAL(wp) ::  ztmas, ztmas1 
     83      CHARACTER(len = 20)  ::  cltra 
     84 
    8485      !!---------------------------------------------------------------------- 
    8586 
     
    105106      ! 
    106107 
     108      ! assign an index in trc arrays for each prognostic variables 
     109      DO jn = 1, jptra 
     110        cltra = ctrcnm(jn)  
     111        IF( cltra == 'DIC'      )   jpdic = jn      !: dissolved inoganic carbon concentration  
     112        IF( cltra == 'Alkalini' )   jptal = jn      !: total alkalinity  
     113        IF( cltra == 'O2'       )   jpoxy = jn      !: oxygen carbon concentration  
     114        IF( cltra == 'CaCO3'    )   jpcal = jn      !: calcite  concentration  
     115        IF( cltra == 'PO4'      )   jppo4 = jn      !: phosphate concentration  
     116        IF( cltra == 'POC'      )   jppoc = jn      !: small particulate organic phosphate concentration 
     117        IF( cltra == 'Si'       )   jpsil = jn      !: silicate concentration 
     118        IF( cltra == 'PHY'      )   jpphy = jn      !: phytoplancton concentration  
     119        IF( cltra == 'ZOO'      )   jpzoo = jn      !: zooplancton concentration 
     120        IF( cltra == 'DOC'      )   jpdoc = jn      !: dissolved organic carbon concentration  
     121        IF( cltra == 'PHY2'     )   jpdia = jn      !: Diatoms Concentration 
     122        IF( cltra == 'ZOO2'     )   jpmes = jn      !: Mesozooplankton Concentration 
     123        IF( cltra == 'DSi'      )   jpdsi = jn      !: Diatoms Silicate Concentration 
     124        IF( cltra == 'Fer'      )   jpfer = jn      !: Iron Concentration 
     125        IF( cltra == 'BFe'      )   jpbfe = jn      !: Big iron particles Concentration 
     126        IF( cltra == 'GOC'      )   jpgoc = jn      !: Big particulate organic phosphate concentration 
     127        IF( cltra == 'SFe'      )   jpsfe = jn      !: Small iron particles Concentration 
     128        IF( cltra == 'DFe'      )   jpdfe = jn      !: Diatoms iron Concentration 
     129        IF( cltra == 'GSi'      )   jpgsi = jn      !: (big) Silicate Concentration 
     130        IF( cltra == 'NFe'      )   jpnfe = jn      !: Nano iron Concentration 
     131        IF( cltra == 'NCHL'     )   jpnch = jn      !: Nano Chlorophyll Concentration 
     132        IF( cltra == 'DCHL'     )   jpdch = jn      !: Diatoms Chlorophyll Concentration 
     133        IF( cltra == 'NO3'      )   jpno3 = jn      !: Nitrates Concentration 
     134        IF( cltra == 'NH4'      )   jpnh4 = jn      !: Ammonium Concentration 
     135      ENDDO 
     136 
     137      jp_pisces = 24 
     138      jp_pcs0 = MIN( jpdic, jptal, jpoxy, jpcal, jppo4, jppoc, jpsil, & 
     139         &           jpphy, jpzoo, jpdoc, jpdia, jpmes, jpdsi, jpfer, & 
     140         &           jpbfe, jpgoc, jpsfe, jpdfe, jpgsi, jpnfe, jpnch, & 
     141         &           jpdch, jpno3, jpnh4 ) 
     142 
     143      jp_pcs1     =  jp_pcs0 + jp_pisces - 1 
     144 
     145 
     146      IF( lwp ) THEN 
     147        WRITE(numout,*) '' 
     148        WRITE(numout,*) ' First index of PISCES model in the passive tracer array   jp_pcs0 = ', jp_pcs0 
     149        WRITE(numout,*) ' Last  index of PISCES model in the passive tracer array   jp_pcs1 = ', jp_pcs1 
     150        WRITE(numout,*)  
     151      ENDIF 
     152       
     153 
    107154      CALL p4z_sms_init       !  Maint routine 
    108155      !                                            ! Time-step 
     
    120167      ! Initialization of tracer concentration in case of  no restart  
    121168      !-------------------------------------------------------------- 
    122       IF( .NOT. ln_rsttr ) THEN   
    123           
     169      IF( .NOT.ln_rsttr ) THEN   
    124170         trn(:,:,:,jpdic) = sco2 
    125171         trn(:,:,:,jpdoc) = bioma0 
     
    129175         trn(:,:,:,jppo4) = po4 / po4r 
    130176         trn(:,:,:,jppoc) = bioma0 
    131 #  if ! defined key_kriest 
    132177         trn(:,:,:,jpgoc) = bioma0 
    133178         trn(:,:,:,jpbfe) = bioma0 * 5.e-6 
    134 #  else 
    135          trn(:,:,:,jpnum) = bioma0 / ( 6. * xkr_massp ) 
    136 #  endif 
    137179         trn(:,:,:,jpsil) = silic1 
    138180         trn(:,:,:,jpdsi) = bioma0 * 0.15 
     
    176218      IF(lwp) WRITE(numout,*) 'Initialization of PISCES tracers done' 
    177219      IF(lwp) WRITE(numout,*)  
    178 #endif 
    179220      ! 
    180221   END SUBROUTINE p4z_ini 
     
    186227      !! ** Purpose :   Initialisation of the LOBSTER biochemical model 
    187228      !!---------------------------------------------------------------------- 
    188 #if defined key_pisces_reduced  
    189229      ! 
    190230      USE p2zopt 
     
    193233      USE p2zsed 
    194234      ! 
    195       INTEGER  ::  ji, jj, jk, ierr 
     235      INTEGER  ::  ji, jj, jk, jn, ierr 
     236      CHARACTER(len = 10)  ::  cltra 
    196237      !!---------------------------------------------------------------------- 
    197238 
     
    205246      IF( lk_mpp    )   CALL mpp_sum( ierr ) 
    206247      IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'p2z_ini: unable to allocate LOBSTER arrays' ) 
     248 
     249      DO jn = 1, jptra 
     250        cltra = ctrcnm(jn)  
     251        IF( cltra == 'DET' )   jpdet = jn       !: detritus                    [mmoleN/m3] 
     252        IF( cltra == 'ZOO' )   jpzoo = jn       !: zooplancton concentration   [mmoleN/m3] 
     253        IF( cltra == 'PHY' )   jpphy = jn       !: phytoplancton concentration [mmoleN/m3] 
     254        IF( cltra == 'NO3' )   jpno3 = jn       !: nitrate concentration       [mmoleN/m3] 
     255        IF( cltra == 'NH4' )   jpnh4 = jn       !: ammonium concentration      [mmoleN/m3] 
     256        IF( cltra == 'DOM' )   jpdom = jn       !: dissolved organic matter    [mmoleN/m3] 
     257      ENDDO 
     258 
     259 
     260      jp_pcs0 = MIN( jpdet, jpzoo, jpphy, jpno3, jpnh4, jpdom ) 
     261      jp_pcs1 =  jp_pcs0 + jp_pisces - 1 
     262 
     263 
     264      IF( lwp ) THEN 
     265        WRITE(numout,*) '' 
     266        WRITE(numout,*) ' First index of LOBSTER model in the passive tracer array   jp_pcs0 = ', jp_pcs0 
     267        WRITE(numout,*) ' Last  index of LOBSTER model in the passive tracer array   jp_pcs1 = ', jp_pcs1 
     268        WRITE(numout,*)  
     269      ENDIF 
     270 
     271 
     272      jpkb = 10        !  last level where depth less than 200 m 
     273      DO jk = jpkm1, 1, -1 
     274         IF( gdept_1d(jk) > 200. ) jpkb = jk  
     275      END DO 
     276      IF (lwp) WRITE(numout,*) 
     277      IF (lwp) WRITE(numout,*) ' first vertical layers where biology is active (200m depth ) ', jpkb 
     278      IF (lwp) WRITE(numout,*) 
     279      jpkbm1 = jpkb - 1 
     280      ! 
     281 
    207282 
    208283      ! LOBSTER initialisation for GYRE : init NO3=f(density) by asklod AS Kremeur 2005-07 
     
    214289         trn(:,:,:,jpphy) = 0.1 * tmask(:,:,:) 
    215290         trn(:,:,:,jpdom) = 1.0 * tmask(:,:,:) 
    216          WHERE( rhd(:,:,:) <= 24.5e-3 )  ;  trn(:,:,:,jpno3 ) = 2._wp * tmask(:,:,:) 
     291         WHERE( rhd(:,:,:) <= 24.5e-3 )  ;  trn(:,:,:,jpno3) = 2._wp * tmask(:,:,:) 
    217292         ELSE WHERE                      ;  trn(:,:,:,jpno3) = ( 15.55 * ( rhd(:,:,:) * 1000. ) - 380.11 ) * tmask(:,:,:) 
    218293         END WHERE                        
     
    227302      IF(lwp) WRITE(numout,*) 'Initialization of LOBSTER tracers done' 
    228303      IF(lwp) WRITE(numout,*)  
    229 #endif 
    230304      ! 
    231305   END SUBROUTINE p2z_ini 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcnam_pisces.F90

    r4990 r7041  
    99   !!             2.0  !  2007-12  (C. Ethe, G. Madec) from trcnam.pisces.h90 
    1010   !!---------------------------------------------------------------------- 
    11 #if defined key_pisces || defined key_pisces_reduced 
     11#if defined key_pisces  
    1212   !!---------------------------------------------------------------------- 
    1313   !!   'key_pisces'   :                                   PISCES bio-model 
     
    4545      !! ** input   :   file 'namelist.trc.sms' containing the following 
    4646      !!             namelist: natext, natbio, natsms 
    47       !!                       natkriest ("key_kriest") 
    4847      !!---------------------------------------------------------------------- 
    4948      !! 
    5049      INTEGER :: jl, jn 
    51       INTEGER :: ios                 ! Local integer output status for namelist read 
    52       TYPE(DIAG), DIMENSION(jp_pisces_2d)  :: pisdia2d 
    53       TYPE(DIAG), DIMENSION(jp_pisces_3d)  :: pisdia3d 
    54       TYPE(DIAG), DIMENSION(jp_pisces_trd) :: pisdiabio 
     50      INTEGER :: ios, ioptio                 ! Local integer output status for namelist read 
    5551      CHARACTER(LEN=20)   ::   clname 
    5652      !! 
    57       NAMELIST/nampisdia/ pisdia3d, pisdia2d     ! additional diagnostics 
    58 #if defined key_pisces_reduced 
    59       NAMELIST/nampisdbi/ pisdiabio 
    60 #endif 
    61  
     53      NAMELIST/nampismod/ln_p2z, ln_p4z 
    6254      !!---------------------------------------------------------------------- 
    6355 
    6456      IF(lwp) WRITE(numout,*) 
    6557      clname = 'namelist_pisces' 
    66 #if defined key_pisces 
     58 
    6759      IF(lwp) WRITE(numout,*) ' trc_nam_pisces : read PISCES namelist' 
    68 #else 
    69       IF(lwp) WRITE(numout,*) ' trc_nam_pisces : read LOBSTER namelist' 
    70 #endif 
    7160      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 
    7261      CALL ctl_opn( numnatp_ref, TRIM( clname )//'_ref', 'OLD'    , 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 
     
    7463      IF(lwm) CALL ctl_opn( numonp     , 'output.namelist.pis' , 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 
    7564      ! 
    76       IF( .NOT.lk_iomput .AND. ln_diatrc ) THEN 
    77          ! 
    78          ! Namelist nampisdia 
    79          ! ------------------- 
    80          REWIND( numnatp_ref )              ! Namelist nampisdia in reference namelist : Pisces diagnostics 
    81          READ  ( numnatp_ref, nampisdia, IOSTAT = ios, ERR = 901) 
    82 901      IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisdia in reference namelist', lwp ) 
    8365 
    84          REWIND( numnatp_cfg )              ! Namelist nampisdia in configuration namelist : Pisces diagnostics 
    85          READ  ( numnatp_cfg, nampisdia, IOSTAT = ios, ERR = 902 ) 
    86 902      IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisdia in configuration namelist', lwp ) 
    87          IF(lwm) WRITE ( numonp, nampisdia ) 
     66      REWIND( numnatp_ref )              ! Namelist nampisbio in reference namelist : Pisces variables 
     67      READ  ( numnatp_ref, nampismod, IOSTAT = ios, ERR = 901) 
     68901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampismod in reference namelist', lwp ) 
    8869 
    89          DO jl = 1, jp_pisces_2d 
    90             jn = jp_pcs0_2d + jl - 1 
    91             ctrc2d(jn) = pisdia2d(jl)%sname 
    92             ctrc2l(jn) = pisdia2d(jl)%lname 
    93             ctrc2u(jn) = pisdia2d(jl)%units 
    94          END DO 
     70      REWIND( numnatp_cfg )              ! Namelist nampisbio in configuration namelist : Pisces variables 
     71      READ  ( numnatp_cfg, nampismod, IOSTAT = ios, ERR = 902 ) 
     72902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampismod in configuration namelist', lwp ) 
     73      IF(lwm) WRITE ( numonp, nampismod ) 
    9574 
    96          DO jl = 1, jp_pisces_3d 
    97             jn = jp_pcs0_3d + jl - 1 
    98             ctrc3d(jn) = pisdia3d(jl)%sname 
    99             ctrc3l(jn) = pisdia3d(jl)%lname 
    100             ctrc3u(jn) = pisdia3d(jl)%units 
    101          END DO 
    102  
    103          IF(lwp) THEN                   ! control print 
    104             WRITE(numout,*) 
    105             WRITE(numout,*) ' Namelist : natadd' 
    106             DO jl = 1, jp_pisces_3d 
    107                jn = jp_pcs0_3d + jl - 1 
    108                WRITE(numout,*) '  3d diag nb : ', jn, '    short name : ', ctrc3d(jn), & 
    109                  &             '  long name  : ', ctrc3l(jn), '   unit : ', ctrc3u(jn) 
    110             END DO 
    111             WRITE(numout,*) ' ' 
    112  
    113             DO jl = 1, jp_pisces_2d 
    114                jn = jp_pcs0_2d + jl - 1 
    115                WRITE(numout,*) '  2d diag nb : ', jn, '    short name : ', ctrc2d(jn), & 
    116                  &             '  long name  : ', ctrc2l(jn), '   unit : ', ctrc2u(jn) 
    117             END DO 
    118             WRITE(numout,*) ' ' 
    119          ENDIF 
    120          ! 
     75      IF(lwp) THEN                         ! control print 
     76         WRITE(numout,*) ' Namelist : nampismod' 
     77         WRITE(numout,*) '    PISCES   model                 ln_p4z  =', ln_p4z 
     78         WRITE(numout,*) '    LOBSTER  model                 ln_p2z  =', ln_p2z 
    12179      ENDIF 
    122  
    123 #if defined key_pisces_reduced 
    124  
    125       IF( ( .NOT.lk_iomput .AND. ln_diabio ) .OR. lk_trdmxl_trc ) THEN 
    126          ! 
    127          ! Namelist nampisdbi 
    128          ! ------------------- 
    129          REWIND( numnatp_ref )              ! Namelist nampisdbi in reference namelist : Pisces add. diagnostics 
    130          READ  ( numnatp_ref, nampisdbi, IOSTAT = ios, ERR = 903) 
    131 903      IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisdbi in reference namelist', lwp ) 
    132  
    133          REWIND( numnatp_cfg )              ! Namelist nampisdbi in configuration namelist : Pisces add. diagnostics 
    134          READ  ( numnatp_cfg, nampisdbi, IOSTAT = ios, ERR = 904 ) 
    135 904      IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisdbi in configuration namelist', lwp ) 
    136          IF(lwm) WRITE ( numonp, nampisdbi ) 
    137  
    138          DO jl = 1, jp_pisces_trd 
    139             jn = jp_pcs0_trd + jl - 1 
    140             ctrbio(jl) = pisdiabio(jl)%sname 
    141             ctrbil(jl) = pisdiabio(jl)%lname 
    142             ctrbiu(jl) = pisdiabio(jl)%units 
    143          END DO 
    144  
    145          IF(lwp) THEN                   ! control print 
    146             WRITE(numout,*) 
    147             WRITE(numout,*) ' Namelist : nampisdbi' 
    148             DO jl = 1, jp_pisces_trd 
    149                jn = jp_pcs0_trd + jl - 1 
    150                WRITE(numout,*) '  biological trend No : ', jn, '    short name : ', ctrbio(jn), & 
    151                  &             '  long name  : ', ctrbio(jn), '   unit : ', ctrbio(jn) 
    152             END DO 
    153             WRITE(numout,*) ' ' 
    154          END IF 
    155          ! 
    156       END IF 
    157  
    158 #endif 
    159  
     80     
     81      ioptio = 0 
     82      IF( ln_p2z )    ioptio = ioptio + 1 
     83      IF( ln_p4z )    ioptio = ioptio + 1 
     84      ! 
     85      IF( ioptio /= 1 )   CALL ctl_stop( 'Choose ONE PISCES model namelist nampismod' ) 
     86       ! 
    16087   END SUBROUTINE trc_nam_pisces 
    16188 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90

    r4147 r7041  
    77   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90 
    88   !!---------------------------------------------------------------------- 
    9 #if defined key_pisces || defined key_pisces_reduced 
     9#if defined key_pisces  
    1010   !!---------------------------------------------------------------------- 
    1111   !!   'key_pisces'                                       PISCES bio-model 
     
    1414   !!---------------------------------------------------------------------- 
    1515   USE par_pisces 
     16   USE sms_pisces 
    1617   USE p4zsms 
    1718   USE p2zsms 
     
    4849      !!--------------------------------------------------------------------- 
    4950      ! 
    50       IF( lk_p4z ) THEN  ;   CALL p4z_sms( kt )   !  PISCES 
     51      IF( ln_p4z ) THEN  ;   CALL p4z_sms( kt )   !  PISCES 
    5152      ELSE               ;   CALL p2z_sms( kt )   !  LOBSTER 
    5253      ENDIF 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcwri_pisces.F90

    r6140 r7041  
    66   !! History :   1.0  !  2009-05 (C. Ethe)  Original code 
    77   !!---------------------------------------------------------------------- 
    8 #if defined key_top && defined key_iomput && ( defined key_pisces || defined key_pisces_reduced ) 
     8#if defined key_top && defined key_pisces && defined key_iomput  
    99   !!---------------------------------------------------------------------- 
    10    !!   'key_pisces or key_pisces_reduced'                     PISCES model 
     10   !!   'key_pisces                           PISCES model 
    1111   !!---------------------------------------------------------------------- 
    1212   !! trc_wri_pisces   :  outputs of concentration fields 
     
    4242      ! write the tracer concentrations in the file 
    4343      ! --------------------------------------- 
    44 #if defined key_pisces_reduced 
    45       DO jn = jp_pcs0, jp_pcs1 
    46          cltra = TRIM( ctrcnm(jn) )                  ! short title for tracer 
    47          CALL iom_put( cltra, trn(:,:,:,jn) ) 
    48       END DO 
    49 #else 
    50       DO jn = jp_pcs0, jp_pcs1 
    51          zfact = 1.0e+6  
    52          IF( jn == jpno3 .OR. jn == jpnh4 ) zfact = rno3 * 1.0e+6  
    53          IF( jn == jppo4  )                 zfact = po4r * 1.0e+6 
    54          cltra = TRIM( ctrcnm(jn) )                  ! short title for tracer 
    55          IF( iom_use( cltra ) )  CALL iom_put( cltra, trn(:,:,:,jn) * zfact ) 
    56       END DO 
     44      IF( ln_p2z ) THEN 
     45         DO jn = jp_pcs0, jp_pcs1 
     46            cltra = TRIM( ctrcnm(jn) )                  ! short title for tracer 
     47            CALL iom_put( cltra, trn(:,:,:,jn) ) 
     48         END DO 
     49      ELSE 
     50         DO jn = jp_pcs0, jp_pcs1 
     51            zfact = 1.0e+6  
     52            IF( jn == jpno3 .OR. jn == jpnh4 ) zfact = rno3 * 1.0e+6  
     53            IF( jn == jppo4  )                 zfact = po4r * 1.0e+6 
     54            cltra = TRIM( ctrcnm(jn) )                  ! short title for tracer 
     55            IF( iom_use( cltra ) )  CALL iom_put( cltra, trn(:,:,:,jn) * zfact ) 
     56         END DO 
    5757 
    58       IF( iom_use( "INTDIC" ) ) THEN                     !   DIC content in kg/m2 
    59          zdic(:,:) = 0. 
    60          DO jk = 1, jpkm1 
    61             zdic(:,:) = zdic(:,:) + trn(:,:,jk,jpdic) * e3t_n(:,:,jk) * tmask(:,:,jk) * 12. 
    62          ENDDO 
    63          CALL iom_put( 'INTDIC', zdic )      
    64       ENDIF 
    65       ! 
    66       IF( iom_use( "O2MIN" ) .OR. iom_use ( "ZO2MIN" ) ) THEN  ! Oxygen minimum concentration and depth  
    67          zo2min   (:,:) = trn(:,:,1,jpoxy) * tmask(:,:,1) 
    68          zdepo2min(:,:) = gdepw_n(:,:,1)   * tmask(:,:,1) 
    69          DO jk = 2, jpkm1 
    70             DO jj = 1, jpj 
    71                DO ji = 1, jpi 
    72                   IF( tmask(ji,jj,jk) == 1 ) then 
    73                      IF( trn(ji,jj,jk,jpoxy) < zo2min(ji,jj) ) then 
    74                         zo2min   (ji,jj) = trn(ji,jj,jk,jpoxy) 
    75                         zdepo2min(ji,jj) = gdepw_n(ji,jj,jk) 
     58         IF( iom_use( "INTDIC" ) ) THEN                     !   DIC content in kg/m2 
     59            zdic(:,:) = 0. 
     60            DO jk = 1, jpkm1 
     61               zdic(:,:) = zdic(:,:) + trn(:,:,jk,jpdic) * e3t_n(:,:,jk) * tmask(:,:,jk) * 12. 
     62            ENDDO 
     63            CALL iom_put( 'INTDIC', zdic )      
     64         ENDIF 
     65         ! 
     66         IF( iom_use( "O2MIN" ) .OR. iom_use ( "ZO2MIN" ) ) THEN  ! Oxygen minimum concentration and depth  
     67            zo2min   (:,:) = trn(:,:,1,jpoxy) * tmask(:,:,1) 
     68            zdepo2min(:,:) = gdepw_n(:,:,1)   * tmask(:,:,1) 
     69            DO jk = 2, jpkm1 
     70               DO jj = 1, jpj 
     71                  DO ji = 1, jpi 
     72                     IF( tmask(ji,jj,jk) == 1 ) then 
     73                        IF( trn(ji,jj,jk,jpoxy) < zo2min(ji,jj) ) then 
     74                           zo2min   (ji,jj) = trn(ji,jj,jk,jpoxy) 
     75                           zdepo2min(ji,jj) = gdepw_n(ji,jj,jk) 
     76                        ENDIF 
    7677                     ENDIF 
    77                   ENDIF 
     78                  END DO 
    7879               END DO 
    7980            END DO 
    80          END DO 
    81          ! 
    82          CALL iom_put('O2MIN' , zo2min     )                              ! oxygen minimum concentration 
    83          CALL iom_put('ZO2MIN', zdepo2min  )                              ! depth of oxygen minimum concentration 
    84           ! 
    85       ENDIF 
    86 #endif 
     81            ! 
     82            CALL iom_put('O2MIN' , zo2min     )                              ! oxygen minimum concentration 
     83            CALL iom_put('ZO2MIN', zdepo2min  )                              ! depth of oxygen minimum concentration 
     84             ! 
     85         ENDIF 
     86     ENDIF 
    8787      ! 
    8888   END SUBROUTINE trc_wri_pisces 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90

    r5836 r7041  
    6262      ENDIF 
    6363 
    64       IF( lk_cfc     )   CALL trc_rad_sms( kt, trb, trn, jp_cfc0 , jp_cfc1               )  ! CFC model 
    65       IF( lk_c14b    )   CALL trc_rad_sms( kt, trb, trn, jp_c14b0, jp_c14b1              )  ! bomb C14 
    66       IF( lk_pisces  )   CALL trc_rad_sms( kt, trb, trn, jp_pcs0 , jp_pcs1, cpreserv='Y' )  ! PISCES model 
    67       IF( lk_my_trc  )   CALL trc_rad_sms( kt, trb, trn, jp_myt0 , jp_myt1               )  ! MY_TRC model 
     64      IF( ln_age     )   CALL trc_rad_sms( kt, trb, trn, jp_age0, jp_age0               )  !  AGE 
     65      IF( ll_cfc     )   CALL trc_rad_sms( kt, trb, trn, jp_cfc0, jp_cfc1               )  !  CFC model 
     66      IF( ln_c14     )   CALL trc_rad_sms( kt, trb, trn, jp_c140, jp_c140               )  !  C14 
     67      IF( lk_pisces  )   CALL trc_rad_sms( kt, trb, trn, jp_pcs0, jp_pcs1, cpreserv='Y' )  !  PISCES model 
     68      IF( lk_my_trc  )   CALL trc_rad_sms( kt, trb, trn, jp_myt0, jp_myt1               )  !  MY_TRC model 
    6869 
    6970      ! 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/TRP/trdtrc_oce.F90

    r5836 r7041  
    2222   CHARACTER(len=50) ::  cn_trdrst_trc_in     !: suffix of pass. tracer restart name (input) 
    2323   CHARACTER(len=50) ::  cn_trdrst_trc_out    !: suffix of pass. tracer restart name (output) 
    24    LOGICAL, DIMENSION(jptra) ::   ln_trdtrc   !: large trends diagnostic to write or not (namelist) 
     24   LOGICAL, DIMENSION(:), ALLOCATABLE ::   ln_trdtrc   !: large trends diagnostic to write or not (namelist) 
    2525 
    2626# if defined key_trdtrc && defined key_iomput 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/par_trc.F90

    r4529 r7041  
    1111   USE par_kind          ! kind parameters 
    1212   ! 
    13    USE par_pisces    ! PISCES  model 
    14    USE par_c14b      ! C14 bomb tracer 
    15    USE par_cfc       ! CFC 11 and 12 tracers 
    16    USE par_my_trc    ! user defined passive tracers 
     13   ! 
     14   USE par_pisces 
     15   USE par_c14   
     16   USE par_cfc 
     17   USE par_age  
     18   USE par_my_trc 
    1719 
    1820   IMPLICIT NONE 
     21 
     22   INTEGER, PUBLIC, PARAMETER  :: jptra_max = 100    !   Maximum number of passive tracers 
     23   INTEGER, PUBLIC             :: jptra     ! Total number of tracers 
     24   INTEGER, PUBLIC             :: jp_lc     ! Total number of tracers 
    1925 
    2026   ! Passive tracers : Maximum number of tracers. Needed to define data structures 
    2127   ! ---------------  
    2228   INTEGER, PUBLIC,  PARAMETER ::   jpmaxtrc = 100 
    23  
    24    ! Passive tracers : Total size 
    25    ! ---------------               ! total number of passive tracers, of 2d and 3d output and trend arrays 
    26    INTEGER, PUBLIC,  PARAMETER ::   jptra    =  jp_pisces     + jp_cfc     + jp_c14b    + jp_my_trc 
    27    INTEGER, PUBLIC,  PARAMETER ::   jpdia2d  =  jp_pisces_2d  + jp_cfc_2d  + jp_c14b_2d + jp_my_trc_2d 
    28    INTEGER, PUBLIC,  PARAMETER ::   jpdia3d  =  jp_pisces_3d  + jp_cfc_3d  + jp_c14b_3d + jp_my_trc_3d 
    29    !                     ! total number of sms diagnostic arrays 
    30    INTEGER, PUBLIC,  PARAMETER ::   jpdiabio =  jp_pisces_trd + jp_cfc_trd + jp_c14b_trd + jp_my_trc_trd 
    31     
    32    !  1D configuration ("key_c1d") 
    33    ! ----------------- 
    34 # if defined key_c1d 
    35    LOGICAL, PUBLIC, PARAMETER ::   lk_trc_c1d   = .TRUE.   !: 1D pass. tracer configuration flag 
    36 # else    
    37    LOGICAL, PUBLIC, PARAMETER ::   lk_trc_c1d   = .FALSE.  !: 1D pass. tracer configuration flag 
    38 # endif 
    39  
    4029   REAL(wp), PUBLIC  :: rtrn  = 0.5 * EPSILON( 1.e0 )    !: truncation value 
    4130 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/prtctl_trc.F90

    r4520 r7041  
    7070      INTEGER  ::   overlap, jn, js, sind, eind, kdir, j_id 
    7171      REAL(wp) ::   zsum, zvctl 
    72       CHARACTER (len=20), DIMENSION(jptra) ::   cl 
     72      CHARACTER (len=20), ALLOCATABLE, DIMENSION(:) ::   cl 
    7373      CHARACTER (len=10) ::   cl2 
    7474      REAL(wp), POINTER, DIMENSION(:,:,:)  :: zmask, ztab3d  
     
    7676 
    7777      CALL wrk_alloc( jpi, jpj, jpk, zmask, ztab3d ) 
     78      ALLOCATE( cl(jptra) ) 
    7879      !                                      ! Arrays, scalars initialization  
    7980      overlap       = 0 
     
    152153      ! 
    153154      CALL wrk_dealloc( jpi, jpj, jpk, zmask, ztab3d ) 
     155      DEALLOCATE( cl ) 
    154156      ! 
    155157   END SUBROUTINE prt_ctl_trc 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trc.F90

    r6140 r7041  
    2828   INTEGER, PUBLIC                                                 ::   numnat_cfg = -1   !: logical unit for the reference passive tracer namelist_top_cfg 
    2929   INTEGER, PUBLIC                                                 ::   numont     = -1   !: logical unit for the reference passive tracer namelist output output.namelist.top 
     30   INTEGER, PUBLIC                                                 ::   numtrc_ref = -1   !: logical unit for the reference passive tracer namelist_top_ref 
     31   INTEGER, PUBLIC                                                 ::   numtrc_cfg = -1   !: logical unit for the reference passive tracer namelist_top_cfg 
     32   INTEGER, PUBLIC                                                 ::   numonr     = -1   !: logical unit for the reference passive tracer namelist output output.namelist.top 
    3033   INTEGER, PUBLIC                                                 ::   numstr        !: logical unit for tracer statistics 
    3134   INTEGER, PUBLIC                                                 ::   numrtr        !: logical unit for trc restart (read ) 
     
    8386   END TYPE 
    8487 
    85    REAL(wp), DIMENSION(jptra), PUBLIC         :: trc_ice_ratio, & ! ice-ocean tracer ratio 
    86                                                  trc_ice_prescr   ! prescribed ice trc cc 
    87    CHARACTER(len=2), DIMENSION(jptra), PUBLIC :: cn_trc_o ! choice of ocean tracer cc 
     88   REAL(wp)        , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)  :: trc_ice_ratio      ! ice-ocean tracer ratio 
     89   REAL(wp)        , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)  :: trc_ice_prescr     ! prescribed ice trc cc 
     90   CHARACTER(len=2), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)  :: cn_trc_o ! choice of ocean tracer cc 
     91 
    8892 
    8993   !! information for outputs 
     
    99103       LOGICAL              :: llobc   !: read in a file or not 
    100104#endif 
    101        LOGICAL              :: llsave   !: save the tracer or not 
    102105   END TYPE PTRACER 
    103106   CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)    ::  ctrcnm         !: tracer name  
    104107   CHARACTER(len = 80), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)    ::  ctrcln         !: trccer field long name 
    105108   CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)    ::  ctrcun         !: tracer unit 
    106    LOGICAL            , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)    ::  ln_trc_wri     !: save the tracer or not 
    107109 
    108110   TYPE, PUBLIC :: DIAG                                                               !: passive trcacer ddditional diagnostic type 
     
    119121   LOGICAL            , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)    ::  ln_trc_cbc     !: Use coastal boundary condition data 
    120122 
    121    !! additional 2D/3D outputs namelist 
    122    !! -------------------------------------------------- 
    123    REAL(wp)           , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,  :) ::   trc2d         !: additional 2d outputs array  
    124    REAL(wp)           , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   trc3d         !: additional 3d outputs array  
    125    CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)       ::   ctrc2d        !: 2d field short name 
    126    CHARACTER(len = 80), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)       ::   ctrc2l        !: 2d field long name 
    127    CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)       ::   ctrc2u        !: 2d field unit 
    128    CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)       ::   ctrc3d        !: 3d field short name 
    129    CHARACTER(len = 80), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)       ::   ctrc3l        !: 3d field long name 
    130    CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)       ::   ctrc3u        !: 3d field unit 
    131    LOGICAL            , PUBLIC                                        ::  ln_diatrc      !: boolean term for additional diagnostic 
    132    INTEGER            , PUBLIC                                        ::  nn_writedia    !: frequency of additional outputs 
    133  
    134    !! Biological trends 
    135    !! ----------------- 
    136    LOGICAL            , PUBLIC                                        ::  ln_diabio      !: boolean term for biological diagnostic 
    137    INTEGER            , PUBLIC                                        ::  nn_writebio    !: frequency of biological outputs 
    138    REAL(wp)           , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::  trbio          !: biological trends 
    139    CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)       ::  ctrbio         !: bio field short name 
    140    CHARACTER(len = 80), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)       ::  ctrbil         !: bio field long name 
    141    CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)       ::  ctrbiu         !: bio field unit 
    142123 
    143124   !! variables to average over physics over passive tracer sub-steps. 
     
    217198         &      gtrui(jpi,jpj,jptra)  , gtrvi(jpi,jpj,jptra)                          ,       & 
    218199         &      sbc_trc_b(jpi,jpj,jptra), sbc_trc(jpi,jpj,jptra)                      ,       &   
    219          &      cvol(jpi,jpj,jpk)     , trai(jptra)                                   ,       & 
     200         &      cvol(jpi,jpj,jpk)     , trai(jptra)           ,  qsr_mean(jpi,jpj)    ,       & 
    220201         &      ctrcnm(jptra)         , ctrcln(jptra)         , ctrcun(jptra)         ,       &  
    221          &      ln_trc_ini(jptra)     , ln_trc_wri(jptra)     , qsr_mean(jpi,jpj)     ,       & 
     202         &      ln_trc_ini(jptra)     ,                                                       & 
     203         &      trc_ice_ratio(jptra)  , trc_ice_prescr(jptra) , cn_trc_o(jptra)       ,       &  
    222204#if defined key_my_trc 
    223205         &      ln_trc_sbc(jptra)     , ln_trc_cbc(jptra)     , ln_trc_obc(jptra)     ,       & 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcice.F90

    r5385 r7041  
    1717   USE trcice_cfc      ! CFC      initialisation 
    1818   USE trcice_pisces   ! PISCES   initialisation 
    19    USE trcice_c14b     ! C14 bomb initialisation 
     19   USE trcice_c14      ! C14 bomb initialisation 
     20   USE trcice_age      ! aGE initialisation 
    2021   USE trcice_my_trc   ! MY_TRC   initialisation 
    2122    
     
    5253      IF ( nn_ice_tr == 1 ) THEN 
    5354         IF( lk_pisces  )    CALL trc_ice_ini_pisces       ! PISCES  bio-model 
    54          IF( lk_cfc     )    CALL trc_ice_ini_cfc          ! CFC     tracers 
    55          IF( lk_c14b    )    CALL trc_ice_ini_c14b         ! C14 bomb  tracer 
     55         IF( ll_cfc     )    CALL trc_ice_ini_cfc          ! CFC     tracers 
     56         IF( ln_c14     )    CALL trc_ice_ini_c14          ! C14     tracer 
     57         IF( ln_age     )    CALL trc_ice_ini_age          ! AGE     tracer 
    5658         IF( lk_my_trc  )    CALL trc_ice_ini_my_trc       ! MY_TRC  tracers 
    5759      ENDIF 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcini.F90

    r6701 r7041  
    5959      IF(lwp) WRITE(numout,*) '~~~~~~~' 
    6060 
     61      IF( .NOT.lk_offline )   CALL trc_nam_run     ! Parameters of the run  
    6162      ! 
    6263      CALL top_alloc()   ! allocate TOP arrays 
    6364      ! 
    6465      CALL trc_ini_ctl   ! control  
    65       ! 
    6666      CALL trc_nam       ! read passive tracers namelists 
    6767      ! 
     68      ! 
    6869      IF(lwp) WRITE(numout,*) 
    69       ! 
    7070      IF( ln_rsttr .AND. .NOT. lk_offline ) CALL trc_rst_cal( nit000, 'READ' )   ! calendar 
    71       ! 
    7271      IF(lwp) WRITE(numout,*) 
    7372      ! 
    7473      CALL trc_ini_sms   ! SMS 
    75       ! 
    7674      CALL trc_ini_trp   ! passive tracers transport 
    77       ! 
    7875      CALL trc_ice_ini   ! Tracers in sea ice 
    7976      ! 
    80       IF( lwp )  & 
    81          &  CALL ctl_opn( numstr, 'tracer.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp , narea ) 
     77      IF(lwp) CALL ctl_opn( numstr, 'tracer.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp , narea ) 
    8278      ! 
    8379      CALL trc_ini_state  !  passive tracers initialisation : from a restart or from clim 
    84       ! 
    85       IF( nn_dttrc /= 1 )        CALL trc_sub_ini      ! Initialize variables for substepping passive tracers 
    86       ! 
     80      IF( nn_dttrc /= 1 ) & 
     81      CALL trc_sub_ini      ! Initialize variables for substepping passive tracers 
    8782      CALL trc_ini_inv   ! Inventories 
    8883      ! 
     
    120115         cvol(:,:,jk) = e1e2t(:,:) * e3t_n(:,:,jk) * tmask(:,:,jk) 
    121116      END DO 
    122       IF( lk_degrad )   cvol(:,:,:) = cvol(:,:,:) * facvol(:,:,:)    ! degrad option: reduction by facvol 
    123117      !                                                              ! total volume of the ocean  
    124118      areatot = glob_sum( cvol(:,:,:) ) 
     
    158152      !! ** Purpose :   SMS initialisation 
    159153      !!---------------------------------------------------------------------- 
    160       USE trcini_cfc      ! CFC      initialisation 
    161       USE trcini_pisces   ! PISCES   initialisation 
    162       USE trcini_c14b     ! C14 bomb initialisation 
    163       USE trcini_my_trc   ! MY_TRC   initialisation 
    164       !!---------------------------------------------------------------------- 
    165       IF( lk_pisces  )       CALL trc_ini_pisces       ! PISCES  bio-model 
    166       IF( lk_cfc     )       CALL trc_ini_cfc          ! CFC     tracers 
    167       IF( lk_c14b    )       CALL trc_ini_c14b         ! C14 bomb  tracer 
    168       IF( lk_my_trc  )       CALL trc_ini_my_trc       ! MY_TRC  tracers 
     154      USE par_trc 
     155      USE trcini_pisces  ! PISCES   initialisation 
     156      USE trcini_cfc     ! CFC      initialisation 
     157      USE trcini_c14     ! C14  initialisation 
     158      USE trcini_age     ! age initialisation 
     159      USE trcini_my_trc  ! MY_TRC   initialisation 
     160      !!---------------------------------------------------------------------- 
     161      jp_lc = 0 
     162      IF( lk_pisces  )  THEN       ! PISCES bio-model 
     163         CALL trc_ini_pisces     
     164         jp_lc       = jp_pisces  
     165      ELSE 
     166         jp_pisces   = 0 
     167         jp_pcs0     = 0               
     168         jp_pcs1     = 0          
     169      ENDIF 
     170      IF( lk_my_trc )  THEN      ! MY_TRC 
     171         CALL trc_ini_my_trc 
     172         jp_lc       = jp_lc + jp_my_trc   
     173      ELSE 
     174         jp_my_trc   = 0 
     175         jp_myt0     = 0        
     176         jp_myt1     = 0       
     177      ENDIF 
     178      IF( ll_cfc    )  THEN          ! CFC 
     179         CALL trc_ini_cfc     
     180         jp_lc       = jp_lc + jp_cfc 
     181      ELSE 
     182         jp_cfc      = 0 
     183         jp_cfc0     = 0        
     184         jp_cfc1     = 0       
     185      ENDIF 
     186      IF( ln_c14    )  THEN      ! C14 
     187         CALL trc_ini_c14 
     188         jp_lc       = jp_lc + jp_c14 
     189      ELSE 
     190         jp_c14      = 0 
     191         jp_c140     = 0        
     192      ENDIF 
     193      IF( ln_age    )  THEN      ! AGE 
     194         CALL trc_ini_age 
     195         jp_lc       = jp_lc + jp_age 
     196      ELSE 
     197         jp_age      = 0 
     198         jp_age0     = 0        
     199      ENDIF 
     200      ! 
     201      IF( jp_lc /= jptra ) THEN 
     202        IF( lwp ) WRITE(numout,*) ' The total number of tracers in namelist_top jptra = ', jptra 
     203        IF( lwp ) WRITE(numout,*) ' The total number of tracers to be used by the model is jp_lc = ', jp_lc 
     204        CALL ctl_stop( " Change the value of total number of tracers in namelist " ) 
     205      ENDIF 
    169206      ! 
    170207   END SUBROUTINE trc_ini_sms 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcnam.F90

    r6140 r7041  
    2222   USE trcnam_pisces     ! PISCES namelist 
    2323   USE trcnam_cfc        ! CFC SMS namelist 
    24    USE trcnam_c14b       ! C14 SMS namelist 
     24   USE trcnam_c14        ! C14 SMS namelist 
     25   USE trcnam_age        ! AGE SMS namelist 
    2526   USE trcnam_my_trc     ! MY_TRC SMS namelist 
    2627   USE trd_oce        
     
    5354      INTEGER  ::   jn                  ! dummy loop indice 
    5455      !                                   
    55       IF( .NOT.lk_offline )   CALL trc_nam_run     ! Parameters of the run  
    5656      !                
    57                               CALL trc_nam_trc     ! passive tracer informations 
     57      CALL trc_nam_trc     ! passive tracer informations 
    5858      !                                         
    59                               CALL trc_nam_dia     ! Parameters of additional diagnostics 
    60       !                                       
    6159      ! 
    6260      IF( ln_rsttr                     )   ln_trcdta     = .FALSE.   ! restart : no need of clim data 
     
    6563      ! 
    6664      IF( .NOT.ln_trcdta               )   ln_trc_ini(:) = .FALSE. 
    67  
    68       IF(lwp) THEN                   ! control print 
    69          WRITE(numout,*) 
    70          WRITE(numout,*) ' Namelist : namtrc' 
    71          WRITE(numout,*) '   Read inputs data from file (y/n)             ln_trcdta     = ', ln_trcdta 
    72          WRITE(numout,*) '   Damping of passive tracer (y/n)              ln_trcdmp     = ', ln_trcdmp 
    73          WRITE(numout,*) '   Restoring of tracer on closed seas           ln_trcdmp_clo = ', ln_trcdmp_clo 
    74          WRITE(numout,*) ' ' 
    75          DO jn = 1, jptra 
    76             WRITE(numout,*) '  tracer nb : ', jn, '    short name : ', ctrcnm(jn) 
    77          END DO 
    78          WRITE(numout,*) ' ' 
    79       ENDIF 
    8065 
    8166      IF(lwp) THEN                   ! control print 
     
    10792 
    10893 
    109 #if defined key_trdmxl_trc || defined key_trdtrc 
    110  
    111          REWIND( numnat_ref )              ! Namelist namtrc_trd in reference namelist : Passive tracer trends 
    112          READ  ( numnat_ref, namtrc_trd, IOSTAT = ios, ERR = 905) 
    113 905      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_trd in reference namelist', lwp ) 
    114  
    115          REWIND( numnat_cfg )              ! Namelist namtrc_trd in configuration namelist : Passive tracer trends 
    116          READ  ( numnat_cfg, namtrc_trd, IOSTAT = ios, ERR = 906 ) 
    117 906      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_trd in configuration namelist', lwp ) 
    118          IF(lwm) WRITE ( numont, namtrc_trd ) 
    119  
    120          IF(lwp) THEN 
    121             WRITE(numout,*) 
    122             WRITE(numout,*) ' trd_mxl_trc_init : read namelist namtrc_trd                    ' 
    123             WRITE(numout,*) ' ~~~~~~~~~~~~~~~~                                               ' 
    124             WRITE(numout,*) '   * frequency of trends diagnostics   nn_trd_trc             = ', nn_trd_trc 
    125             WRITE(numout,*) '   * control surface type              nn_ctls_trc            = ', nn_ctls_trc 
    126             WRITE(numout,*) '   * restart for ML diagnostics        ln_trdmxl_trc_restart  = ', ln_trdmxl_trc_restart 
    127             WRITE(numout,*) '   * flag to diagnose trends of                                 ' 
    128             WRITE(numout,*) '     instantantaneous or mean ML T/S   ln_trdmxl_trc_instant  = ', ln_trdmxl_trc_instant 
    129             WRITE(numout,*) '   * unit conversion factor            rn_ucf_trc             = ', rn_ucf_trc 
    130             DO jn = 1, jptra 
    131                IF( ln_trdtrc(jn) ) WRITE(numout,*) '    compute ML trends for tracer number :', jn 
    132             END DO 
    133          ENDIF 
    134 #endif 
    135  
    136  
    137       ! Call the ice module for tracers 
    138       ! ------------------------------- 
    139                                   CALL trc_nam_ice 
     94      IF( l_trdtrc )        CALL trc_nam_trd    ! Passive tracer trends 
     95 
     96                              
     97                            CALL trc_nam_ice  ! ice module for tracerd 
    14098 
    14199      ! namelist of SMS 
    142100      ! ---------------       
     101      IF( ln_age     ) THEN   ;   CALL trc_nam_age         ! AGE     tracer 
     102      ELSE                    ;   IF(lwp) WRITE(numout,*) '          AGE not used' 
     103      ENDIF 
     104 
     105      IF( ll_cfc     ) THEN   ;   CALL trc_nam_cfc         ! CFC     tracers 
     106      ELSE                    ;   IF(lwp) WRITE(numout,*) '          CFC not used' 
     107      ENDIF 
     108 
     109      IF( ln_c14     ) THEN   ;   CALL trc_nam_c14         ! C14     tracers 
     110      ELSE                    ;   IF(lwp) WRITE(numout,*) '          C14 not used' 
     111      ENDIF 
     112 
    143113      IF( lk_pisces  ) THEN   ;   CALL trc_nam_pisces      ! PISCES  bio-model 
    144114      ELSE                    ;   IF(lwp) WRITE(numout,*) '          PISCES not used' 
    145115      ENDIF 
    146116 
    147       IF( lk_cfc     ) THEN   ;   CALL trc_nam_cfc         ! CFC     tracers 
    148       ELSE                    ;   IF(lwp) WRITE(numout,*) '          CFC not used' 
    149       ENDIF 
    150  
    151       IF( lk_c14b     ) THEN   ;   CALL trc_nam_c14b         ! C14 bomb     tracers 
    152       ELSE                    ;   IF(lwp) WRITE(numout,*) '          C14 not used' 
    153       ENDIF 
    154117 
    155118      IF( lk_my_trc  ) THEN   ;   CALL trc_nam_my_trc      ! MY_TRC  tracers 
     
    167130      !! 
    168131      !!--------------------------------------------------------------------- 
    169       NAMELIST/namtrc_run/ nn_dttrc, nn_writetrc, ln_rsttr, nn_rsttr, ln_top_euler, & 
     132      NAMELIST/namtrc_run/ jptra, nn_dttrc, ln_rsttr, nn_rsttr, ln_top_euler, & 
    170133        &                  cn_trcrst_indir, cn_trcrst_outdir, cn_trcrst_in, cn_trcrst_out 
    171134      ! 
     
    195158         WRITE(numout,*) 
    196159         WRITE(numout,*) ' Namelist : namtrc_run' 
     160         WRITE(numout,*) '   Total number of passive tracers              jptra         = ', jptra 
    197161         WRITE(numout,*) '   time step freq. for passive tracer           nn_dttrc      = ', nn_dttrc 
    198162         WRITE(numout,*) '   restart  for passive tracer                  ln_rsttr      = ', ln_rsttr 
    199163         WRITE(numout,*) '   control of time step for passive tracer      nn_rsttr      = ', nn_rsttr 
    200164         WRITE(numout,*) '   first time step for pass. trac.              nittrc000     = ', nittrc000 
    201          WRITE(numout,*) '   frequency of outputs for passive tracers     nn_writetrc   = ', nn_writetrc  
    202165         WRITE(numout,*) '   Use euler integration for TRC (y/n)          ln_top_euler  = ', ln_top_euler 
    203166         WRITE(numout,*) ' ' 
     
    206169    END SUBROUTINE trc_nam_run 
    207170 
    208  
    209    SUBROUTINE trc_nam_ice 
    210       !!--------------------------------------------------------------------- 
    211       !!                     ***  ROUTINE trc_nam_ice *** 
    212       !! 
    213       !! ** Purpose :   Read the namelist for the ice effect on tracers 
    214       !! 
    215       !! ** Method  : - 
    216       !! 
    217       !!--------------------------------------------------------------------- 
    218       INTEGER :: jn      ! dummy loop indices 
    219       INTEGER :: ios     ! Local integer output status for namelist read 
    220       ! 
    221       TYPE(TRC_I_NML), DIMENSION(jptra) :: sn_tri_tracer 
    222       !! 
    223       NAMELIST/namtrc_ice/ nn_ice_tr, sn_tri_tracer 
    224       !!--------------------------------------------------------------------- 
    225       ! 
    226       IF(lwp) THEN 
    227          WRITE(numout,*) 
    228          WRITE(numout,*) 'trc_nam_ice : Read the namelist for trc_ice' 
    229          WRITE(numout,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
    230       ENDIF 
    231  
    232       IF( nn_timing == 1 )  CALL timing_start('trc_nam_ice') 
    233  
    234       ! 
    235       REWIND( numnat_ref )              ! Namelist namtrc_ice in reference namelist : Passive tracer input data 
    236       READ  ( numnat_ref, namtrc_ice, IOSTAT = ios, ERR = 901) 
    237  901  IF( ios /= 0 ) CALL ctl_nam ( ios , ' namtrc_ice in reference namelist ', lwp ) 
    238  
    239       REWIND( numnat_cfg )              ! Namelist namtrc_ice in configuration namelist : Pisces external sources of nutrients 
    240       READ  ( numnat_cfg, namtrc_ice, IOSTAT = ios, ERR = 902 ) 
    241  902  IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_ice in configuration namelist', lwp ) 
    242  
    243       IF( lwp ) THEN 
    244          WRITE(numout,*) ' ' 
    245          WRITE(numout,*) ' Sea ice tracers option (nn_ice_tr) : ', nn_ice_tr 
    246          WRITE(numout,*) ' ' 
    247       ENDIF 
    248  
    249       ! Assign namelist stuff 
    250       DO jn = 1, jptra 
    251          trc_ice_ratio(jn)  = sn_tri_tracer(jn)%trc_ratio 
    252          trc_ice_prescr(jn) = sn_tri_tracer(jn)%trc_prescr 
    253          cn_trc_o      (jn) = sn_tri_tracer(jn)%ctrc_o 
    254       END DO 
    255  
    256       IF( nn_timing == 1 )   CALL timing_stop('trc_nam_ice') 
    257       ! 
    258    END SUBROUTINE trc_nam_ice 
    259  
    260  
    261171   SUBROUTINE trc_nam_trc 
    262172      !!--------------------------------------------------------------------- 
     
    266176      !! 
    267177      !!--------------------------------------------------------------------- 
    268       INTEGER  ::   ios                 ! Local integer output status for namelist read 
    269       INTEGER  ::   jn                  ! dummy loop indice 
    270       ! 
    271       TYPE(PTRACER), DIMENSION(jptra) :: sn_tracer  ! type of tracer for saving if not key_iomput 
    272       !! 
    273       NAMELIST/namtrc/ sn_tracer, ln_trcdta, ln_trcdmp, ln_trcdmp_clo 
     178      INTEGER  ::   ios, ierr                 ! Local integer output status for namelist read 
     179      INTEGER  ::   jn                    ! dummy loop indice 
     180      ! 
     181      TYPE(PTRACER), DIMENSION(jptra_max) :: sn_tracer  ! type of tracer for saving if not key_iomput 
     182      !! 
     183      NAMELIST/namtrc/ln_age, ln_cfc11, ln_cfc12, ln_c14, sn_tracer, ln_trcdta, ln_trcdmp, ln_trcdmp_clo 
    274184      !!--------------------------------------------------------------------- 
    275185      IF(lwp) WRITE(numout,*) 
    276186      IF(lwp) WRITE(numout,*) 'trc_nam_trc : read the passive tracer namelists' 
    277187      IF(lwp) WRITE(numout,*) '~~~~~~~' 
     188 
    278189 
    279190      REWIND( numnat_ref )              ! Namelist namtrc in reference namelist : Passive tracer variables 
     
    285196902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc in configuration namelist', lwp ) 
    286197      IF(lwm) WRITE ( numont, namtrc ) 
     198 
    287199 
    288200      DO jn = 1, jptra 
     
    296208         ln_trc_obc(jn) =       sn_tracer(jn)%llobc 
    297209#endif 
    298          ln_trc_wri(jn) =       sn_tracer(jn)%llsave 
    299210      END DO 
    300211      ! 
     212      ll_cfc = ln_cfc11 .OR. ln_cfc12 
     213      ! 
     214      IF(lwp) THEN                   ! control print 
     215         WRITE(numout,*) 
     216         WRITE(numout,*) ' Namelist : namtrc' 
     217         WRITE(numout,*) '   Simulating water mass age                    ln_age        = ', ln_age 
     218         WRITE(numout,*) '   Simulating CFC11 passive tracer              ln_cfc11      = ', ln_cfc11 
     219         WRITE(numout,*) '   Simulating CFC12 passive tracer              ln_cfc12      = ', ln_cfc12 
     220         WRITE(numout,*) '   Simulating C14   passive tracer              ln_c14        = ', ln_c14 
     221         WRITE(numout,*) '   Read inputs data from file (y/n)             ln_trcdta     = ', ln_trcdta 
     222         WRITE(numout,*) '   Damping of passive tracer (y/n)              ln_trcdmp     = ', ln_trcdmp 
     223         WRITE(numout,*) '   Restoring of tracer on closed seas           ln_trcdmp_clo = ', ln_trcdmp_clo 
     224         WRITE(numout,*) ' ' 
     225         DO jn = 1, jptra 
     226            WRITE(numout,*) '  tracer nb : ', jn, '    short name : ', ctrcnm(jn) 
     227         END DO 
     228         WRITE(numout,*) ' ' 
     229      ENDIF 
     230      ! 
     231      IF( ln_age .OR. ll_cfc .OR. ln_c14 ) THEN 
     232        !                             ! Open namelist files 
     233        CALL ctl_opn( numtrc_ref, 'namelist_trc_ref'   ,     'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 
     234        CALL ctl_opn( numtrc_cfg, 'namelist_trc_cfg'   ,     'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 
     235        IF(lwm) CALL ctl_opn( numonr, 'output.namelist.trc', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 
     236        ! 
     237      ENDIF 
     238 
    301239   END SUBROUTINE trc_nam_trc 
    302240 
    303241 
    304    SUBROUTINE trc_nam_dia 
     242   SUBROUTINE trc_nam_ice 
     243      !!--------------------------------------------------------------------- 
     244      !!                     ***  ROUTINE trc_nam_ice *** 
     245      !! 
     246      !! ** Purpose :   Read the namelist for the ice effect on tracers 
     247      !! 
     248      !! ** Method  : - 
     249      !! 
     250      !!--------------------------------------------------------------------- 
     251      INTEGER :: jn      ! dummy loop indices 
     252      INTEGER :: ios, ierr     ! Local integer output status for namelist read 
     253      ! 
     254      TYPE(TRC_I_NML), ALLOCATABLE, DIMENSION(:) :: sn_tri_tracer  ! type of tracer for saving if not key_iomput 
     255      !! 
     256      NAMELIST/namtrc_ice/ nn_ice_tr, sn_tri_tracer 
     257      !!--------------------------------------------------------------------- 
     258      ! 
     259      IF(lwp) THEN 
     260         WRITE(numout,*) 
     261         WRITE(numout,*) 'trc_nam_ice : Read the namelist for trc_ice' 
     262         WRITE(numout,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
     263      ENDIF 
     264 
     265      IF( nn_timing == 1 )  CALL timing_start('trc_nam_ice') 
     266 
     267      ALLOCATE( sn_tri_tracer(jptra),  STAT = ierr ) 
     268      ! 
     269      REWIND( numnat_ref )              ! Namelist namtrc_ice in reference namelist : Passive tracer input data 
     270      READ  ( numnat_ref, namtrc_ice, IOSTAT = ios, ERR = 901) 
     271 901  IF( ios /= 0 ) CALL ctl_nam ( ios , ' namtrc_ice in reference namelist ', lwp ) 
     272 
     273      REWIND( numnat_cfg )              ! Namelist namtrc_ice in configuration namelist : Pisces external sources of nutrients 
     274      READ  ( numnat_cfg, namtrc_ice, IOSTAT = ios, ERR = 902 ) 
     275 902  IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_ice in configuration namelist', lwp ) 
     276 
     277      IF( lwp ) THEN 
     278         WRITE(numout,*) ' ' 
     279         WRITE(numout,*) ' Sea ice tracers option (nn_ice_tr) : ', nn_ice_tr 
     280         WRITE(numout,*) ' ' 
     281      ENDIF 
     282 
     283      ! Assign namelist stuff 
     284      DO jn = 1, jptra 
     285         trc_ice_ratio(jn)  = sn_tri_tracer(jn)%trc_ratio 
     286         trc_ice_prescr(jn) = sn_tri_tracer(jn)%trc_prescr 
     287         cn_trc_o      (jn) = sn_tri_tracer(jn)%ctrc_o 
     288      END DO 
     289 
     290      IF( nn_timing == 1 )   CALL timing_stop('trc_nam_ice') 
     291      ! 
     292   END SUBROUTINE trc_nam_ice 
     293 
     294 
     295 
     296   SUBROUTINE trc_nam_trd 
    305297      !!--------------------------------------------------------------------- 
    306298      !!                     ***  ROUTINE trc_nam_dia  *** 
     
    312304      !!                ( (PISCES, CFC, MY_TRC ) 
    313305      !!--------------------------------------------------------------------- 
     306 
     307#if defined key_trdmxl_trc  || defined key_trdtrc 
    314308      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    315309      INTEGER ::  ierr 
    316310      !! 
    317 #if defined key_trdmxl_trc  || defined key_trdtrc 
    318311      NAMELIST/namtrc_trd/ nn_trd_trc, nn_ctls_trc, rn_ucf_trc, & 
    319312         &                ln_trdmxl_trc_restart, ln_trdmxl_trc_instant, & 
    320313         &                cn_trdrst_trc_in, cn_trdrst_trc_out, ln_trdtrc 
    321 #endif 
    322       NAMELIST/namtrc_dia/ ln_diatrc, ln_diabio, nn_writedia, nn_writebio 
    323314      !!--------------------------------------------------------------------- 
    324315 
    325316      IF(lwp) WRITE(numout,*) 
    326       IF(lwp) WRITE(numout,*) 'trc_nam_dia : read the passive tracer diagnostics options' 
     317      IF(lwp) WRITE(numout,*) 'trc_nam_trd : read the passive tracer diagnostics options' 
    327318      IF(lwp) WRITE(numout,*) '~~~~~~~' 
    328319 
    329       REWIND( numnat_ref )              ! Namelist namtrc_dia in reference namelist : Passive tracer diagnostics 
    330       READ  ( numnat_ref, namtrc_dia, IOSTAT = ios, ERR = 903) 
    331 903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dia in reference namelist', lwp ) 
    332  
    333       REWIND( numnat_cfg )              ! Namelist namtrc_dia in configuration namelist : Passive tracer diagnostics 
    334       READ  ( numnat_cfg, namtrc_dia, IOSTAT = ios, ERR = 904 ) 
    335 904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dia in configuration namelist', lwp ) 
    336       IF(lwm) WRITE ( numont, namtrc_dia ) 
     320      ! 
     321      ALLOCATE( ln_trdtrc(jptra) )  
     322      ! 
     323      REWIND( numnat_ref )              ! Namelist namtrc_trd in reference namelist : Passive tracer trends 
     324      READ  ( numnat_ref, namtrc_trd, IOSTAT = ios, ERR = 905) 
     325905   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_trd in reference namelist', lwp ) 
     326 
     327      REWIND( numnat_cfg )              ! Namelist namtrc_trd in configuration namelist : Passive tracer trends 
     328      READ  ( numnat_cfg, namtrc_trd, IOSTAT = ios, ERR = 906 ) 
     329906   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_trd in configuration namelist', lwp ) 
     330      IF(lwm) WRITE ( numont, namtrc_trd ) 
    337331 
    338332      IF(lwp) THEN 
    339333         WRITE(numout,*) 
    340          WRITE(numout,*) 
    341          WRITE(numout,*) ' Namelist : namtrc_dia' 
    342          WRITE(numout,*) '    save additionnal diagnostics arrays         ln_diatrc   = ', ln_diatrc 
    343          WRITE(numout,*) '    save additionnal biology diagnostics arrays ln_diabio   = ', ln_diabio 
    344          WRITE(numout,*) '    frequency of outputs for additional arrays  nn_writedia = ', nn_writedia 
    345          WRITE(numout,*) '    frequency of outputs for biological trends  nn_writebio = ', nn_writebio 
    346          WRITE(numout,*) ' ' 
    347       ENDIF 
    348  
    349       IF( ln_diatrc .AND. .NOT. lk_iomput ) THEN  
    350          ALLOCATE( trc2d(jpi,jpj,jpdia2d), trc3d(jpi,jpj,jpk,jpdia3d),  & 
    351            &       ctrc2d(jpdia2d), ctrc2l(jpdia2d), ctrc2u(jpdia2d) ,  &  
    352            &       ctrc3d(jpdia3d), ctrc3l(jpdia3d), ctrc3u(jpdia3d) ,  STAT = ierr )  
    353          IF( ierr > 0 )   CALL ctl_stop( 'STOP', 'trcnam: unable to allocate add. diag. array' ) 
    354          ! 
    355          trc2d(:,:,:  ) = 0._wp  ;   ctrc2d(:) = ' '   ;   ctrc2l(:) = ' '    ;    ctrc2u(:) = ' '  
    356          trc3d(:,:,:,:) = 0._wp  ;   ctrc3d(:) = ' '   ;   ctrc3l(:) = ' '    ;    ctrc3u(:) = ' '  
    357          ! 
    358       ENDIF 
    359  
    360       IF( ( ln_diabio .AND. .NOT. lk_iomput ) .OR. l_trdtrc ) THEN 
    361          ALLOCATE( trbio (jpi,jpj,jpk,jpdiabio) , & 
    362            &       ctrbio(jpdiabio), ctrbil(jpdiabio), ctrbiu(jpdiabio), STAT = ierr )  
    363          IF( ierr > 0 )   CALL ctl_stop( 'STOP', 'trcnam: unable to allocate bio. diag. array' ) 
    364          ! 
    365          trbio(:,:,:,:) = 0._wp  ;   ctrbio(:) = ' '   ;   ctrbil(:) = ' '    ;    ctrbiu(:) = ' '  
    366          ! 
    367       ENDIF 
    368       ! 
    369    END SUBROUTINE trc_nam_dia 
     334         WRITE(numout,*) ' trd_mxl_trc_init : read namelist namtrc_trd                    ' 
     335         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~                                               ' 
     336         WRITE(numout,*) '   * frequency of trends diagnostics   nn_trd_trc             = ', nn_trd_trc 
     337         WRITE(numout,*) '   * control surface type              nn_ctls_trc            = ', nn_ctls_trc 
     338         WRITE(numout,*) '   * restart for ML diagnostics        ln_trdmxl_trc_restart  = ', ln_trdmxl_trc_restart 
     339         WRITE(numout,*) '   * flag to diagnose trends of                                 ' 
     340         WRITE(numout,*) '     instantantaneous or mean ML T/S   ln_trdmxl_trc_instant  = ', ln_trdmxl_trc_instant 
     341         WRITE(numout,*) '   * unit conversion factor            rn_ucf_trc             = ', rn_ucf_trc 
     342         DO jn = 1, jptra 
     343            IF( ln_trdtrc(jn) ) WRITE(numout,*) '    compute ML trends for tracer number :', jn 
     344         END DO 
     345      ENDIF 
     346#endif 
     347      ! 
     348   END SUBROUTINE trc_nam_trd 
    370349 
    371350#else 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcsms.F90

    r5656 r7041  
    1616   USE trc                ! 
    1717   USE trcsms_pisces      ! PISCES biogeo-model 
    18    USE trcsms_cfc         ! CFC 11 & 12 
    19    USE trcsms_c14b        ! C14b tracer  
     18   USE trcsms_cfc         ! CFC 11 &/or 12 
     19   USE trcsms_c14         ! C14  
     20   USE trcsms_age         ! AGE 
    2021   USE trcsms_my_trc      ! MY_TRC  tracers 
    2122   USE prtctl_trc         ! Print control for debbuging 
     
    4950      ! 
    5051      IF( lk_pisces  )   CALL trc_sms_pisces ( kt )    ! main program of PISCES  
    51       IF( lk_cfc     )   CALL trc_sms_cfc    ( kt )    ! surface fluxes of CFC 
    52       IF( lk_c14b    )   CALL trc_sms_c14b   ( kt )    ! surface fluxes of C14 
     52      IF( ll_cfc     )   CALL trc_sms_cfc    ( kt )    ! surface fluxes of CFC 
     53      IF( ln_c14     )   CALL trc_sms_c14    ( kt )    ! surface fluxes of C14 
     54      IF( ln_age     )   CALL trc_sms_age    ( kt )    ! Age tracer 
    5355      IF( lk_my_trc  )   CALL trc_sms_my_trc ( kt )    ! MY_TRC  tracers 
    5456 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcstp.F90

    r6981 r7041  
    1515   USE trctrp           ! passive tracers transport 
    1616   USE trcsms           ! passive tracers sources and sinks 
    17    USE prtctl_trc       ! Print control for debbuging 
    18    USE trcdia 
    1917   USE trcwri 
    2018   USE trcrst 
    2119   USE trdtrc_oce 
    2220   USE trdmxl_trc 
     21   USE prtctl_trc       ! Print control for debbuging 
    2322   USE iom 
    2423   USE in_out_manager 
     
    6867            cvol(:,:,jk) = e1e2t(:,:) * e3t_n(:,:,jk) * tmask(:,:,jk) 
    6968         END DO 
    70          IF( lk_degrad )  cvol(:,:,:) = cvol(:,:,:) * facvol(:,:,:)       ! degrad option: reduction by facvol 
    7169         areatot         = glob_sum( cvol(:,:,:) ) 
    7270      ENDIF 
     
    8785                                   CALL trc_rst_opn  ( kt )       ! Open tracer restart file  
    8886         IF( lrst_trc )            CALL trc_rst_cal  ( kt, 'WRITE' )   ! calendar 
    89          IF( lk_iomput ) THEN  ;   CALL trc_wri      ( kt )       ! output of passive tracers with iom I/O manager 
    90          ELSE                  ;   CALL trc_dia      ( kt )       ! output of passive tracers with old I/O manager 
    91          ENDIF 
     87                                   CALL trc_wri      ( kt )       ! output of passive tracers with iom I/O manager 
    9288                                   CALL trc_sms      ( kt )       ! tracers: sinks and sources 
    9389                                   CALL trc_trp      ( kt )       ! transport of passive tracers 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcwri.F90

    r5836 r7041  
    1919   USE trcwri_pisces 
    2020   USE trcwri_cfc 
    21    USE trcwri_c14b 
     21   USE trcwri_c14 
     22   USE trcwri_age 
    2223   USE trcwri_my_trc 
    2324 
     
    5455      ! --------------------------------------- 
    5556      IF( lk_pisces  )   CALL trc_wri_pisces     ! PISCES  
    56       IF( lk_cfc     )   CALL trc_wri_cfc        ! surface fluxes of CFC 
    57       IF( lk_c14b    )   CALL trc_wri_c14b       ! surface fluxes of C14 
     57      IF( ll_cfc     )   CALL trc_wri_cfc        ! surface fluxes of CFC 
     58      IF( ln_c14     )   CALL trc_wri_c14        ! surface fluxes of C14 
     59      IF( ln_age     )   CALL trc_wri_age        ! AGE tracer 
    5860      IF( lk_my_trc  )   CALL trc_wri_my_trc     ! MY_TRC  tracers 
    5961      ! 
Note: See TracChangeset for help on using the changeset viewer.