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 8074 for branches/NERC – NEMO

Changeset 8074 for branches/NERC


Ignore:
Timestamp:
2017-05-25T18:43:39+02:00 (7 years ago)
Author:
jpalmier
Message:

JPALM -- reverse MEDUSA cleaning and update MOCSY

Location:
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/sms_medusa.F90

    r7894 r8074  
    4949   REAL(wp) ::  xthetam   !:  maximum Chl to C ratio for non-diatoms       
    5050   REAL(wp) ::  xthetamd  !:  maximum Chl to C ratio for diatoms     
    51    REAL(wp) ::  xq10      !:  specific Q10 value (jphy==2)     
     51   REAL(wp) ::  jq10      !:  specific Q10 value (jphy==2)     
    5252!! 
    5353!! Diatom silicon parameters 
     
    239239   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: za_dms_din  !: 2D avg DIN   (after) 
    240240!! 
    241 !! 2D fields needing to be knows at first tstp for coupling with atm - UKESM (Jpalm,14-06-2016) 
     241!! 2D fields needing to be knows at first tstp for coupling with atm - UKEMS(Jpalm,14-06-2016) 
    242242   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zb_co2_flx  !: 2D avg fx co2 (before) 
    243243   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zn_co2_flx  !: 2D avg fx co2 (now) 
     
    272272   !! AXY (19/07/12): add this to permit river fluxes to be added below top box 
    273273   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   friver_dep !: where river fluxes added 
     274 
     275#if defined key_roam 
     276!!---------------------------------------------------------------------- 
     277!! Atmospheric pCO2 data (1859 to 2100 inclusive) 
     278!!---------------------------------------------------------------------- 
     279!! 
     280   REAL(wp), DIMENSION(242)         ::   hist_pco2 !: pCO2 
     281 
     282# if defined key_rcp26 
     283      !! UKMO, run AJKKH + KAAEC, RCP 2.6, pCO2 time evolution 
     284      DATA hist_pco2 / 286.0230, 286.1730, 286.3230, 286.4480, 286.5730, & 
     285      & 286.7230, 286.8480, 286.9480, 287.0480, 287.1730, & 
     286      & 287.3230, 287.4730, 287.6480, 287.8480, 288.0730, & 
     287      & 288.3480, 288.6480, 288.9730, 289.3470, 289.7470, & 
     288      & 290.1730, 290.6470, 291.1470, 291.6220, 292.0720, & 
     289      & 292.5220, 292.9220, 293.2470, 293.5220, 293.7470, & 
     290      & 293.9470, 294.1220, 294.2720, 294.4220, 294.5470, & 
     291      & 294.6470, 294.7470, 294.8470, 294.9710, 295.1710, & 
     292      & 295.4460, 295.7470, 296.0720, 296.4210, 296.7710, & 
     293      & 297.1460, 297.5710, 298.0210, 298.4460, 298.8460, & 
     294      & 299.2460, 299.6450, 300.0210, 300.3710, 300.7200, & 
     295      & 301.0450, 301.3460, 301.6710, 302.0200, 302.3450, & 
     296      & 302.6450, 302.9700, 303.3450, 303.7200, 304.0700, & 
     297      & 304.4700, 304.9200, 305.3440, 305.7700, 306.2450, & 
     298      & 306.7190, 307.1700, 307.6440, 308.1190, 308.5440, & 
     299      & 308.9440, 309.3440, 309.6940, 309.9440, 310.1190, & 
     300      & 310.2440, 310.3190, 310.3190, 310.2440, 310.1440, & 
     301      & 310.0690, 310.0440, 310.0690, 310.1440, 310.2690, & 
     302      & 310.4440, 310.6940, 311.0430, 311.4440, 311.8690, & 
     303      & 312.3680, 312.9430, 313.5430, 314.1680, 314.7900, & 
     304      & 315.4430, 316.2150, 317.0170, 317.7370, 318.3400, & 
     305      & 318.8680, 319.5900, 320.5890, 321.5470, 322.5770, & 
     306      & 323.8440, 324.9260, 325.7960, 327.0810, 328.6180, & 
     307      & 329.6830, 330.5250, 331.6880, 333.2120, 334.7870, & 
     308      & 336.4640, 338.2990, 339.6660, 340.7310, 342.1360, & 
     309      & 343.7200, 345.2200, 346.7350, 348.5820, 350.6740, & 
     310      & 352.4230, 353.7910, 354.9530, 355.8210, 356.7130, & 
     311      & 358.0630, 359.7720, 361.3970, 363.0900, 365.2560, & 
     312      & 367.2810, 368.7980, 370.4000, 372.4550, 374.6920, & 
     313      & 376.7440, 378.7440, 380.7580, 382.7080, 384.7300, & 
     314      & 386.9310, 389.2150, 391.4910, 393.7710, 396.0460, & 
     315      & 398.3240, 400.6080, 402.8950, 405.1780, 407.4550, & 
     316      & 409.7260, 411.9930, 414.2500, 416.4410, 418.5280, & 
     317      & 420.5250, 422.4390, 424.2720, 426.0200, 427.6750, & 
     318      & 429.2360, 430.7050, 432.0850, 433.3580, 434.5140, & 
     319      & 435.5740, 436.5490, 437.4420, 438.2550, 438.9810, & 
     320      & 439.6110, 440.1430, 440.5770, 440.9450, 441.2660, & 
     321      & 441.5410, 441.7840, 442.0050, 442.2040, 442.3780, & 
     322      & 442.5210, 442.6200, 442.6720, 442.6810, 442.6540, & 
     323      & 442.5830, 442.4670, 442.3270, 442.1680, 441.9960, & 
     324      & 441.8060, 441.5930, 441.3440, 441.0540, 440.7230, & 
     325      & 440.3510, 439.9300, 439.4650, 438.9730, 438.4630, & 
     326      & 437.9400, 437.4020, 436.8400, 436.2640, 435.6850, & 
     327      & 435.1030, 434.5160, 433.9170, 433.3060, 432.7010, & 
     328      & 432.1110, 431.5380, 430.9810, 430.4320, 429.8860, & 
     329      & 429.3370, 428.7810, 428.2220, 427.6490, 427.0660, & 
     330      & 426.4890, 425.9270, 425.3840, 424.8610, 424.3540, & 
     331      & 423.8540, 423.3540, 422.8530, 422.3510, 421.8410, & 
     332      & 421.3250, 420.8190 / 
     333# else 
     334      !! UKMO, run AJKKH + KAAEF, RCP 8.5, pCO2 time evolution 
     335      DATA hist_pco2 / 286.0230, 286.1730, 286.3230, 286.4480, 286.5730, & 
     336      & 286.7230, 286.8480, 286.9480, 287.0480, 287.1730, & 
     337      & 287.3230, 287.4730, 287.6480, 287.8480, 288.0730, & 
     338      & 288.3480, 288.6480, 288.9730, 289.3470, 289.7470, & 
     339      & 290.1730, 290.6470, 291.1470, 291.6220, 292.0720, & 
     340      & 292.5220, 292.9220, 293.2470, 293.5220, 293.7470, & 
     341      & 293.9470, 294.1220, 294.2720, 294.4220, 294.5470, & 
     342      & 294.6470, 294.7470, 294.8470, 294.9710, 295.1710, & 
     343      & 295.4460, 295.7470, 296.0720, 296.4210, 296.7710, & 
     344      & 297.1460, 297.5710, 298.0210, 298.4460, 298.8460, & 
     345      & 299.2460, 299.6450, 300.0210, 300.3710, 300.7200, & 
     346      & 301.0450, 301.3460, 301.6710, 302.0200, 302.3450, & 
     347      & 302.6450, 302.9700, 303.3450, 303.7200, 304.0700, & 
     348      & 304.4700, 304.9200, 305.3440, 305.7700, 306.2450, & 
     349      & 306.7190, 307.1700, 307.6440, 308.1190, 308.5440, & 
     350      & 308.9440, 309.3440, 309.6940, 309.9440, 310.1190, & 
     351      & 310.2440, 310.3190, 310.3190, 310.2440, 310.1440, & 
     352      & 310.0690, 310.0440, 310.0690, 310.1440, 310.2690, & 
     353      & 310.4440, 310.6940, 311.0430, 311.4440, 311.8690, & 
     354      & 312.3680, 312.9430, 313.5430, 314.1680, 314.7900, & 
     355      & 315.4430, 316.2150, 317.0170, 317.7370, 318.3400, & 
     356      & 318.8680, 319.5900, 320.5890, 321.5470, 322.5770, & 
     357      & 323.8440, 324.9260, 325.7960, 327.0810, 328.6180, & 
     358      & 329.6830, 330.5250, 331.6880, 333.2120, 334.7870, & 
     359      & 336.4640, 338.2990, 339.6660, 340.7310, 342.1360, & 
     360      & 343.7200, 345.2200, 346.7350, 348.5820, 350.6740, & 
     361      & 352.4230, 353.7910, 354.9530, 355.8210, 356.7130, & 
     362      & 358.0630, 359.7720, 361.3970, 363.0900, 365.2560, & 
     363      & 367.2810, 368.7980, 370.4000, 372.4550, 374.6920, & 
     364      & 376.7440, 378.7440, 380.7580, 382.7080, 384.7300, & 
     365      & 386.9420, 389.2540, 391.5670, 393.9370, 396.3920, & 
     366      & 398.9320, 401.5550, 404.2550, 407.0220, 409.8530, & 
     367      & 412.7470, 415.7050, 418.7210, 421.7880, 424.9180, & 
     368      & 428.1200, 431.3970, 434.7470, 438.1650, 441.6410, & 
     369      & 445.1700, 448.7530, 452.3920, 456.0950, 459.8810, & 
     370      & 463.7680, 467.7660, 471.8750, 476.0960, 480.4210, & 
     371      & 484.8390, 489.3470, 493.9430, 498.6400, 503.4380, & 
     372      & 508.3410, 513.3630, 518.5160, 523.8050, 529.2290, & 
     373      & 534.7780, 540.4450, 546.2230, 552.1120, 558.1110, & 
     374      & 564.2110, 570.4130, 576.7390, 583.1990, 589.7980, & 
     375      & 596.5390, 603.4110, 610.4060, 617.4940, 624.6500, & 
     376      & 631.8800, 639.1750, 646.5360, 653.9800, 661.5230, & 
     377      & 669.1840, 676.9570, 684.8290, 692.7790, 700.7690, & 
     378      & 708.8050, 716.8870, 725.0020, 733.1770, 741.3900, & 
     379      & 749.6700, 758.0480, 766.5050, 775.0350, 783.6110, & 
     380      & 792.2200, 800.8740, 809.5680, 818.2760, 827.0090, & 
     381      & 835.8020, 844.6550, 853.5730, 862.5690, 871.6190, & 
     382      & 880.7020, 889.8240, 898.9590, 908.1270, 917.3080, & 
     383      & 926.4960, 935.7040 / 
     384# endif 
     385#endif 
    274386 
    275387!!---------------------------------------------------------------------- 
     
    369481         &      za_dms_din(jpi,jpj)  ,                           STAT=ierr(4) ) 
    370482      !* 2D fields needing to be knows at first tstp for coupling with atm - 
    371       !UKESM (Jpalm,14-06-2016)  
     483      !UKEMSi (Jpalm,14-06-2016)  
    372484      ALLOCATE( zb_co2_flx(jpi,jpj)  , zn_co2_flx(jpi,jpj)  ,       & 
    373485         &      za_co2_flx(jpi,jpj)  ,                              & 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcavg_medusa.F90

    r7894 r8074  
    5151      !! This functionality was originally added to support the 
    5252      !! calculation of surface DMS concentrations - and was done so 
    53       !! within the trcbio_medusa.F90 routine - but was moved to 
     53      !! within the trcbio_meduse.F90 routine - but was moved to 
    5454      !! this separate module so that its calculations could be used 
    5555      !! to inform MEDUSA's submarine irradiance field 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90

    r7894 r8074  
    2020   !!  -   !  2015-10  (J. Palm)              Update for diag outputs through iom_use   
    2121   !!  -   !  2016-11  (A. Yool)              Updated diags for CMIP6 
    22    !!  -   !  2017-03  (A. Yool)              Updated DMS for DIN limitation 
    23    !!  -   !  2017-04  (A. Yool)              Simplify code to remove unused options, etc. 
    24    !!                                         - remove ln_diatrc, etc. code 
    25    !!                                         - remove PML carbonate chemistry code 
    26    !!                                         - remove defunct iron scavenging code 
    27    !!                                         - remove defunct debug diagnostic code 
    2822   !!---------------------------------------------------------------------- 
    2923   !! 
     
    3226   !! Updates for the ROAM project include: 
    3327   !!   - addition of DIC, alkalinity, detrital carbon and oxygen tracers 
    34    !!   - addition of air-sea fluxes of CO2 and oxygen (updated with MOCSY) 
     28   !!   - addition of air-sea fluxes of CO2 and oxygen 
    3529   !!   - periodic (monthly) calculation of full 3D carbonate chemistry  
    3630   !!   - detrital C:N ratio now free to evolve dynamically 
     
    4337   !!   - switch for ballast vs. Martin vs. Henson fast detritus remin. 
    4438   !!   - per GMD referee remarks, xfdfrac3 introduced for grazed PDS 
     39   !!---------------------------------------------------------------------- 
     40#endif 
    4541   !! 
     42#if defined key_mocsy 
     43   !!---------------------------------------------------------------------- 
    4644   !! Updates with the addition of MOCSY include: 
    4745   !!   - option to use PML or MOCSY carbonate chemistry (the latter is  
     
    7775# if defined key_roam 
    7876      USE gastransfer 
     77#  if defined key_mocsy 
    7978      USE mocsy_wrapper 
     79#  else 
     80      USE trcco2_medusa 
    8081#  endif 
    8182      USE trcoxy_medusa 
     
    110111CONTAINS 
    111112 
    112   SUBROUTINE trc_bio_medusa( kt ) 
    113     !!--------------------------------------------------------------------- 
    114     !!                     ***  ROUTINE trc_bio  *** 
    115     !! 
    116     !! ** Purpose :   compute the now trend due to biogeochemical processes 
    117     !!              and add it to the general trend of passive tracers equations 
    118     !! 
    119     !! ** Method  :   each now biological flux is calculated in function of now 
    120     !!              concentrations of tracers. 
    121     !!              depending on the tracer, these fluxes are sources or sinks. 
    122     !!              the total of the sources and sinks for each tracer 
    123     !!              is added to the general trend. 
    124     !!         
    125     !!                      tra = tra + zf...tra - zftra... 
    126     !!                                     |         | 
    127     !!                                     |         | 
    128     !!                                  source      sink 
    129     !!--------------------------------------------------------------------- 
    130     !! 
    131     !! 
    132     !!----------------------------------------------------------------------             
    133     !! Variable conventions 
    134     !!---------------------------------------------------------------------- 
    135     !! 
    136     !! names: z*** - state variable  
    137     !!        f*** - function (or temporary variable used in part of a function) 
    138     !!        x*** - parameter 
    139     !!        b*** - right-hand part (sources and sinks) 
    140     !!        i*** - integer variable (usually used in yes/no flags) 
    141     !! 
    142     !! time (integer timestep) 
    143     INTEGER, INTENT( in ) ::    kt 
    144     !! 
    145     !! spatial array indices 
    146     INTEGER  ::    ji,jj,jk,jn 
    147     !! 
    148     !! AXY (27/07/10): add in indices for depth horizons (for sinking flux 
    149     !!                 and seafloor iron inputs) 
    150     !! INTEGER  ::    i0100, i0200, i0500, i1000, i1100 
    151     !! 
    152     !! model state variables 
    153     REAL(wp) ::    zchn,zchd,zphn,zphd,zpds,zzmi 
    154     REAL(wp) ::    zzme,zdet,zdtc,zdin,zsil,zfer 
     113   SUBROUTINE trc_bio_medusa( kt ) 
     114      !!--------------------------------------------------------------------- 
     115      !!                     ***  ROUTINE trc_bio  *** 
     116      !! 
     117      !! ** Purpose :   compute the now trend due to biogeochemical processes 
     118      !!              and add it to the general trend of passive tracers equations 
     119      !! 
     120      !! ** Method  :   each now biological flux is calculated in function of now 
     121      !!              concentrations of tracers. 
     122      !!              depending on the tracer, these fluxes are sources or sinks. 
     123      !!              the total of the sources and sinks for each tracer 
     124      !!              is added to the general trend. 
     125      !!         
     126      !!                      tra = tra + zf...tra - zftra... 
     127      !!                                     |         | 
     128      !!                                     |         | 
     129      !!                                  source      sink 
     130      !!         
     131      !!              IF 'key_trc_diabio' defined , the biogeochemical trends 
     132      !!              for passive tracers are saved for futher diagnostics. 
     133      !!--------------------------------------------------------------------- 
     134      !! 
     135      !! 
     136      !!----------------------------------------------------------------------             
     137      !! Variable conventions 
     138      !!---------------------------------------------------------------------- 
     139      !! 
     140      !! names: z*** - state variable  
     141      !!        f*** - function (or temporary variable used in part of a function) 
     142      !!        x*** - parameter 
     143      !!        b*** - right-hand part (sources and sinks) 
     144      !!        i*** - integer variable (usually used in yes/no flags) 
     145      !! 
     146      !! time (integer timestep) 
     147      INTEGER, INTENT( in ) ::    kt 
     148      !! 
     149      !! spatial array indices 
     150      INTEGER  ::    ji,jj,jk,jn 
     151      !! 
     152      !! AXY (27/07/10): add in indices for depth horizons (for sinking flux 
     153      !!                 and seafloor iron inputs) 
     154      !! INTEGER  ::    i0100, i0200, i0500, i1000, i1100 
     155      !! 
     156      !! model state variables 
     157      REAL(wp) ::    zchn,zchd,zphn,zphd,zpds,zzmi 
     158      REAL(wp) ::    zzme,zdet,zdtc,zdin,zsil,zfer 
     159      REAL(wp) ::    zage 
    155160# if defined key_roam 
    156     REAL(wp) ::    zdic, zalk, zoxy 
    157     REAL(wp) ::    ztmp, zsal 
    158     REAL(wp) ::    zpho 
    159 # endif 
    160     !! 
    161     !! integrated source and sink terms 
    162     REAL(wp) ::    b0 
    163     !! AXY (23/08/13): changed from individual variables for each flux to 
    164     !!                 an array that holds all fluxes 
    165     REAL(wp), DIMENSION(jp_medusa) ::    btra 
    166     !! 
    167     !! primary production and chl related quantities       
    168     REAL(wp)                     ::    fthetan,faln,fchn1,fchn,fjln,fprn,frn 
    169     REAL(wp)                     ::    fthetad,fald,fchd1,fchd,fjld,fprd,frd 
    170     !! AXY (23/11/16): add in light-only limitation term (normalised 0-1 range) 
    171     REAL(wp)                     ::    fjlim_pn, fjlim_pd 
    172     !! AXY (03/02/11): add in Liebig terms 
    173     REAL(wp) ::    fpnlim, fpdlim 
    174     !! AXY (16/07/09): add in Eppley curve functionality 
    175     REAL(wp) ::    loc_T,fun_T,xvpnT,xvpdT 
    176     INTEGER  ::    ieppley 
    177     !! AXY (16/05/11): per Katya's prompting, add in new T-dependence 
    178     !!                 for phytoplankton growth only (i.e. no change 
    179     !!                 for remineralisation) 
    180     REAL(wp) ::    fun_Q10 
    181     !! AXY (01/03/10): add in mixed layer PP diagnostics 
    182     REAL(wp), DIMENSION(jpi,jpj) ::  fprn_ml,fprd_ml 
    183     !! 
    184     !! nutrient limiting factors 
    185     REAL(wp) ::    fnln,ffln            !! N and Fe 
    186     REAL(wp) ::    fnld,ffld,fsld,fsld2 !! N, Fe and Si 
    187     !! 
    188     !! silicon cycle 
    189     REAL(wp) ::    fsin,fnsi,fsin1,fnsi1,fnsi2,fprds,fsdiss 
    190     !! 
    191     !! iron cycle; includes parameters for Parekh et al. (2005) iron scheme 
    192     REAL(wp) ::    ffetop,ffebot,ffescav 
    193     REAL(wp) ::    xLgF, xFeT, xFeF, xFeL         !! state variables for iron-ligand system 
    194     REAL(wp), DIMENSION(jpi,jpj) ::  xFree        !! state variables for iron-ligand system 
    195     REAL(wp) ::    xb_coef_tmp, xb2M4ac           !! iron-ligand parameters 
    196     REAL(wp) ::    xmaxFeF,fdeltaFe               !! max Fe' parameters 
    197     !! 
    198     !! local parameters for Moore et al. (2004) alternative scavenging scheme 
    199     REAL(wp) ::    fbase_scav,fscal_sink,fscal_part,fscal_scav 
    200     !! 
    201     !! local parameters for Moore et al. (2008) alternative scavenging scheme 
    202     REAL(wp) ::    fscal_csink,fscal_sisink,fscal_casink 
    203     !! 
    204     !! local parameters for Galbraith et al. (2010) alternative scavenging scheme 
    205     REAL(wp) ::    xCscav1, xCscav2, xk_org, xORGscav  !! organic portion of scavenging 
    206     REAL(wp) ::    xk_inorg, xINORGscav                !! inorganic portion of scavenging 
    207     !! 
    208     !! microzooplankton grazing 
    209     REAL(wp) ::    fmi1,fmi,fgmipn,fgmid,fgmidc 
    210     REAL(wp) ::    finmi,ficmi,fstarmi,fmith,fmigrow,fmiexcr,fmiresp 
    211     !! 
    212     !! mesozooplankton grazing 
    213     REAL(wp) ::    fme1,fme,fgmepn,fgmepd,fgmepds,fgmezmi,fgmed,fgmedc 
    214     REAL(wp) ::    finme,ficme,fstarme,fmeth,fmegrow,fmeexcr,fmeresp 
    215     !! 
    216     !! mortality/Remineralisation (defunct parameter "fz" removed) 
    217     REAL(wp) ::    fdpn,fdpd,fdpds,fdzmi,fdzme,fdd 
     161      REAL(wp) ::    zdic, zalk, zoxy 
     162      REAL(wp) ::    ztmp, zsal 
     163# endif 
     164# if defined key_mocsy 
     165      REAL(wp) ::    zpho 
     166# endif 
     167      !! 
     168      !! integrated source and sink terms 
     169      REAL(wp) ::    b0 
     170      !! AXY (23/08/13): changed from individual variables for each flux to 
     171      !!                 an array that holds all fluxes 
     172      REAL(wp), DIMENSION(jp_medusa) ::    btra 
     173      !! 
     174      !! primary production and chl related quantities       
     175      REAL(wp)                     ::    fthetan,faln,fchn1,fchn,fjln,fprn,frn 
     176      REAL(wp)                     ::    fthetad,fald,fchd1,fchd,fjld,fprd,frd 
     177      !! AXY (23/11/16): add in light-only limitation term (normalised 0-1 range) 
     178      REAL(wp)                     ::    fjlim_pn, fjlim_pd 
     179      !! AXY (03/02/11): add in Liebig terms 
     180      REAL(wp) ::    fpnlim, fpdlim 
     181      !! AXY (16/07/09): add in Eppley curve functionality 
     182      REAL(wp) ::    loc_T,fun_T,xvpnT,xvpdT 
     183      INTEGER  ::    ieppley 
     184      !! AXY (16/05/11): per Katya's prompting, add in new T-dependence 
     185      !!                 for phytoplankton growth only (i.e. no change 
     186      !!                 for remineralisation) 
     187      REAL(wp) ::    fun_Q10 
     188      !! AXY (01/03/10): add in mixed layer PP diagnostics 
     189      REAL(wp), DIMENSION(jpi,jpj) ::  fprn_ml,fprd_ml 
     190      !! 
     191      !! nutrient limiting factors 
     192      REAL(wp) ::    fnln,ffln            !! N and Fe 
     193      REAL(wp) ::    fnld,ffld,fsld,fsld2 !! N, Fe and Si 
     194      !! 
     195      !! silicon cycle 
     196      REAL(wp) ::    fsin,fnsi,fsin1,fnsi1,fnsi2,fprds,fsdiss 
     197      !! 
     198      !! iron cycle; includes parameters for Parekh et al. (2005) iron scheme 
     199      REAL(wp) ::    ffetop,ffebot,ffescav 
     200      REAL(wp) ::    xLgF, xFeT, xFeF, xFeL         !! state variables for iron-ligand system 
     201      REAL(wp), DIMENSION(jpi,jpj) ::  xFree        !! state variables for iron-ligand system 
     202      REAL(wp) ::    xb_coef_tmp, xb2M4ac           !! iron-ligand parameters 
     203      REAL(wp) ::    xmaxFeF,fdeltaFe               !! max Fe' parameters 
     204      !! 
     205      !! local parameters for Moore et al. (2004) alternative scavenging scheme 
     206      REAL(wp) ::    fbase_scav,fscal_sink,fscal_part,fscal_scav 
     207      !! 
     208      !! local parameters for Moore et al. (2008) alternative scavenging scheme 
     209      REAL(wp) ::    fscal_csink,fscal_sisink,fscal_casink 
     210      !! 
     211      !! local parameters for Galbraith et al. (2010) alternative scavenging scheme 
     212      REAL(wp) ::    xCscav1, xCscav2, xk_org, xORGscav  !! organic portion of scavenging 
     213      REAL(wp) ::    xk_inorg, xINORGscav                !! inorganic portion of scavenging 
     214      !! 
     215      !! microzooplankton grazing 
     216      REAL(wp) ::    fmi1,fmi,fgmipn,fgmid,fgmidc 
     217      REAL(wp) ::    finmi,ficmi,fstarmi,fmith,fmigrow,fmiexcr,fmiresp 
     218      !! 
     219      !! mesozooplankton grazing 
     220      REAL(wp) ::    fme1,fme,fgmepn,fgmepd,fgmepds,fgmezmi,fgmed,fgmedc 
     221      REAL(wp) ::    finme,ficme,fstarme,fmeth,fmegrow,fmeexcr,fmeresp 
     222      !! 
     223      !! mortality/Remineralisation (defunct parameter "fz" removed) 
     224      REAL(wp) ::    fdpn,fdpd,fdpds,fdzmi,fdzme,fdd 
    218225# if defined key_roam 
    219     REAL(wp) ::    fddc 
    220 # endif 
    221     REAL(wp) ::    fdpn2,fdpd2,fdpds2,fdzmi2,fdzme2 
    222     REAL(wp) ::    fslown, fslowc 
    223     REAL(wp), DIMENSION(jpi,jpj) ::    fslownflux, fslowcflux 
    224     REAL(wp) ::    fregen,fregensi 
    225     REAL(wp), DIMENSION(jpi,jpj) ::    fregenfast,fregenfastsi 
     226      REAL(wp) ::    fddc 
     227# endif 
     228      REAL(wp) ::    fdpn2,fdpd2,fdpds2,fdzmi2,fdzme2 
     229      REAL(wp) ::    fslown, fslowc 
     230      REAL(wp), DIMENSION(jpi,jpj) ::    fslownflux, fslowcflux 
     231      REAL(wp) ::    fregen,fregensi 
     232      REAL(wp), DIMENSION(jpi,jpj) ::    fregenfast,fregenfastsi 
    226233# if defined key_roam 
    227     REAL(wp) ::    fregenc 
    228     REAL(wp), DIMENSION(jpi,jpj) ::    fregenfastc 
    229 # endif 
    230     !! 
    231     !! particle flux 
    232     REAL(WP) ::    fthk,fdep,fdep1,fdep2,flat,fcaco3 
    233     REAL(WP) ::    ftempn,ftempsi,ftempfe,ftempc,ftempca 
    234     REAL(wp) ::    freminn,freminsi,freminfe,freminc,freminca 
    235     REAL(wp), DIMENSION(jpi,jpj) ::    ffastn,ffastsi,ffastfe,ffastc,ffastca 
    236     REAL(wp) ::    fleftn,fleftsi,fleftfe,fleftc,fleftca 
    237     REAL(wp) ::    fheren,fheresi,fherefe,fherec,fhereca 
    238     REAL(wp) ::    fprotf 
    239     REAL(wp), DIMENSION(jpi,jpj) ::    fsedn,fsedsi,fsedfe,fsedc,fsedca 
    240     REAL(wp), DIMENSION(jpi,jpj) ::    fccd 
    241     REAL(wp) ::    fccd_dep 
    242     !! AXY (28/11/16): fix mbathy bug 
    243     INTEGER  ::    jmbathy 
    244     !! 
    245     !! AXY (06/07/11): alternative fast detritus schemes 
    246     REAL(wp) ::    fb_val, fl_sst 
    247     !! 
    248     !! AXY (08/07/11): fate of fast detritus reaching the seafloor 
    249     REAL(wp) ::    ffast2slown,ffast2slowfe,ffast2slowc 
    250     !! 
    251     !! conservation law 
    252     REAL(wp) ::    fnit0,fsil0,ffer0  
     234      REAL(wp) ::    fregenc 
     235      REAL(wp), DIMENSION(jpi,jpj) ::    fregenfastc 
     236# endif 
     237      !! 
     238      !! particle flux 
     239      REAL(WP) ::    fthk,fdep,fdep1,fdep2,flat,fcaco3 
     240      REAL(WP) ::    ftempn,ftempsi,ftempfe,ftempc,ftempca 
     241      REAL(wp) ::    freminn,freminsi,freminfe,freminc,freminca 
     242      REAL(wp), DIMENSION(jpi,jpj) ::    ffastn,ffastsi,ffastfe,ffastc,ffastca 
     243      REAL(wp) ::    fleftn,fleftsi,fleftfe,fleftc,fleftca 
     244      REAL(wp) ::    fheren,fheresi,fherefe,fherec,fhereca 
     245      REAL(wp) ::    fprotf 
     246      REAL(wp), DIMENSION(jpi,jpj) ::    fsedn,fsedsi,fsedfe,fsedc,fsedca 
     247      REAL(wp), DIMENSION(jpi,jpj) ::    fccd 
     248      REAL(wp) ::    fccd_dep 
     249      !! AXY (28/11/16): fix mbathy bug 
     250      INTEGER  ::    jmbathy 
     251      !! 
     252      !! AXY (06/07/11): alternative fast detritus schemes 
     253      REAL(wp) ::    fb_val, fl_sst 
     254      !! 
     255      !! AXY (08/07/11): fate of fast detritus reaching the seafloor 
     256      REAL(wp) ::    ffast2slown,ffast2slowfe,ffast2slowc 
     257      !! 
     258      !! conservation law 
     259      REAL(wp) ::    fnit0,fsil0,ffer0  
    253260# if defined key_roam 
    254     REAL(wp) ::    fcar0,falk0,foxy0  
     261      REAL(wp) ::    fcar0,falk0,foxy0  
    255262# endif       
    256     !!  
    257     !! temporary variables 
    258     REAL(wp) ::    fq0,fq1,fq2,fq3,fq4,fq5,fq6,fq7,fq8,fq9 
    259     !! 
    260     !! water column nutrient and flux integrals 
    261     REAL(wp), DIMENSION(jpi,jpj) ::    ftot_n,ftot_si,ftot_fe 
    262     REAL(wp), DIMENSION(jpi,jpj) ::    fflx_n,fflx_si,fflx_fe 
    263     REAL(wp), DIMENSION(jpi,jpj) ::    fifd_n,fifd_si,fifd_fe 
    264     REAL(wp), DIMENSION(jpi,jpj) ::    fofd_n,fofd_si,fofd_fe 
     263      !!  
     264      !! temporary variables 
     265      REAL(wp) ::    fq0,fq1,fq2,fq3,fq4,fq5,fq6,fq7,fq8,fq9 
     266      !! 
     267      !! water column nutrient and flux integrals 
     268      REAL(wp), DIMENSION(jpi,jpj) ::    ftot_n,ftot_si,ftot_fe 
     269      REAL(wp), DIMENSION(jpi,jpj) ::    fflx_n,fflx_si,fflx_fe 
     270      REAL(wp), DIMENSION(jpi,jpj) ::    fifd_n,fifd_si,fifd_fe 
     271      REAL(wp), DIMENSION(jpi,jpj) ::    fofd_n,fofd_si,fofd_fe 
    265272# if defined key_roam 
    266     REAL(wp), DIMENSION(jpi,jpj) ::    ftot_c,ftot_a,ftot_o2 
    267     REAL(wp), DIMENSION(jpi,jpj) ::    fflx_c,fflx_a,fflx_o2 
    268     REAL(wp), DIMENSION(jpi,jpj) ::    fifd_c,fifd_a,fifd_o2 
    269     REAL(wp), DIMENSION(jpi,jpj) ::    fofd_c,fofd_a,fofd_o2 
    270 # endif 
    271     !! 
    272     !! zooplankton grazing integrals 
    273     REAL(wp), DIMENSION(jpi,jpj) ::    fzmi_i,fzmi_o,fzme_i,fzme_o 
    274     !! 
    275     !! limitation term temporary variables 
    276     REAL(wp), DIMENSION(jpi,jpj) ::    ftot_pn,ftot_pd 
    277     REAL(wp), DIMENSION(jpi,jpj) ::    ftot_zmi,ftot_zme,ftot_det,ftot_dtc 
    278     !! use ballast scheme (1) or simple exponential scheme (0; a conservation test) 
    279     INTEGER  ::    iball 
    280     !! use biological fluxes (1) or not (0) 
    281     INTEGER  ::    ibio_switch 
    282     !! 
    283     !! diagnose fluxes (should only be used in 1D runs) 
    284     INTEGER  ::    idf, idfval 
    285     !! 
    286     !! nitrogen and silicon production and consumption 
    287     REAL(wp) ::    fn_prod, fn_cons, fs_prod, fs_cons 
    288     REAL(wp), DIMENSION(jpi,jpj) ::    fnit_prod, fnit_cons, fsil_prod, fsil_cons 
     273      REAL(wp), DIMENSION(jpi,jpj) ::    ftot_c,ftot_a,ftot_o2 
     274      REAL(wp), DIMENSION(jpi,jpj) ::    fflx_c,fflx_a,fflx_o2 
     275      REAL(wp), DIMENSION(jpi,jpj) ::    fifd_c,fifd_a,fifd_o2 
     276      REAL(wp), DIMENSION(jpi,jpj) ::    fofd_c,fofd_a,fofd_o2 
     277# endif 
     278      !! 
     279      !! zooplankton grazing integrals 
     280      REAL(wp), DIMENSION(jpi,jpj) ::    fzmi_i,fzmi_o,fzme_i,fzme_o 
     281      !! 
     282      !! limitation term temporary variables 
     283      REAL(wp), DIMENSION(jpi,jpj) ::    ftot_pn,ftot_pd 
     284      REAL(wp), DIMENSION(jpi,jpj) ::    ftot_zmi,ftot_zme,ftot_det,ftot_dtc 
     285      !! use ballast scheme (1) or simple exponential scheme (0; a conservation test) 
     286      INTEGER  ::    iball 
     287      !! use biological fluxes (1) or not (0) 
     288      INTEGER  ::    ibio_switch 
     289      !! 
     290      !! diagnose fluxes (should only be used in 1D runs) 
     291      INTEGER  ::    idf, idfval 
     292      !! 
     293      !! nitrogen and silicon production and consumption 
     294      REAL(wp) ::    fn_prod, fn_cons, fs_prod, fs_cons 
     295      REAL(wp), DIMENSION(jpi,jpj) ::    fnit_prod, fnit_cons, fsil_prod, fsil_cons 
    289296# if defined key_roam 
    290     !! 
    291     !! flags to help with calculating the position of the CCD 
    292     INTEGER, DIMENSION(jpi,jpj) ::     i2_omcal,i2_omarg 
    293     !! 
    294     !! ROAM air-sea flux and diagnostic parameters 
    295     REAL(wp) ::    f_wind 
    296     !! AXY (24/11/16): add xCO2 variable for atmosphere (what we actually have) 
    297     REAL(wp) ::    f_xco2a 
    298     REAL(wp) ::    f_ph, f_pco2w, f_h2co3, f_hco3, f_co3, f_co2flux 
    299     REAL(wp) ::    f_TDIC, f_TALK, f_dcf, f_henry 
    300     REAL(wp) ::    f_uwind, f_vwind, f_pp0 
    301     REAL(wp) ::    f_kw660, f_o2flux, f_o2sat, f_o2sat3 
    302     REAL(wp), DIMENSION(jpi,jpj) ::    f_omcal, f_omarg 
    303     !! 
    304     !! AXY (23/06/15): additional diagnostics for MOCSY and oxygen 
    305     REAL(wp) ::    f_fco2w, f_BetaD, f_rhosw, f_opres, f_insitut, f_pco2atm, f_fco2atm 
    306     REAL(wp) ::    f_schmidtco2, f_kwco2, f_K0, f_co2starair, f_dpco2, f_kwo2 
    307     !! jpalm 14-07-2016: convert CO2flux diag from mmol/m2/d to kg/m2/s 
    308     REAL, PARAMETER :: weight_CO2_mol = 44.0095  !! g / mol 
    309     REAL, PARAMETER :: secs_in_day    = 86400.0  !! s / d 
    310     REAL, PARAMETER :: CO2flux_conv   = (1.e-6 * weight_CO2_mol) / secs_in_day 
    311     !! 
    312     INTEGER  ::    iters 
    313     REAL(wp) ::    f_year 
    314     INTEGER  ::    i_year 
    315     INTEGER  ::    iyr1, iyr2 
    316     !! 
    317     !! carbon, alkalinity production and consumption 
    318     REAL(wp) ::    fc_prod, fc_cons, fa_prod, fa_cons 
    319     REAL(wp), DIMENSION(jpi,jpj) ::    fcomm_resp 
    320     REAL(wp), DIMENSION(jpi,jpj) ::    fcar_prod, fcar_cons 
    321     !! 
    322     !! oxygen production and consumption (and non-consumption) 
    323     REAL(wp) ::    fo2_prod, fo2_cons, fo2_ncons, fo2_ccons 
    324     REAL(wp), DIMENSION(jpi,jpj) ::    foxy_prod, foxy_cons, foxy_anox 
    325     !! Jpalm (11-08-2014) 
    326     !! add DMS in MEDUSA for UKESM1 model 
    327     REAL(wp) ::    dms_surf 
    328     !! AXY (13/03/15): add in other DMS calculations 
    329     REAL(wp) ::    dms_andr, dms_simo, dms_aran, dms_hall, dms_nlim, dms_wtkn 
    330 # endif 
    331     !!  
    332     !! benthic fluxes 
    333     INTEGER  ::    ibenthic 
    334     REAL(wp), DIMENSION(jpi,jpj) :: f_sbenin_n, f_sbenin_fe,              f_sbenin_c 
    335     REAL(wp), DIMENSION(jpi,jpj) :: f_fbenin_n, f_fbenin_fe, f_fbenin_si, f_fbenin_c, f_fbenin_ca 
    336     REAL(wp), DIMENSION(jpi,jpj) :: f_benout_n, f_benout_fe, f_benout_si, f_benout_c, f_benout_ca 
    337     REAL(wp) ::    zfact 
    338     !!  
    339     !! benthic fluxes of CaCO3 that shouldn't happen because of lysocline 
    340     REAL(wp), DIMENSION(jpi,jpj) :: f_benout_lyso_ca 
    341     !! 
    342     !! riverine fluxes 
    343     REAL(wp), DIMENSION(jpi,jpj) :: f_runoff, f_riv_n, f_riv_si, f_riv_c, f_riv_alk 
    344     !! AXY (19/07/12): variables for local riverine fluxes to handle inputs below surface 
    345     REAL(wp) ::    f_riv_loc_n, f_riv_loc_si, f_riv_loc_c, f_riv_loc_alk 
    346     !! 
    347     !! horizontal grid location 
    348     REAL(wp) ::    flatx, flonx 
    349     !! 
    350     !! Jpalm -- 11-10-2015 -- adapt diag to iom_use 
    351     !! 2D var for diagnostics. 
    352     REAL(wp), POINTER, DIMENSION(:,:  ) :: fprn2d, fdpn2d, fprd2d, fdpd2d, fprds2d, fsdiss2d, fgmipn2d 
    353     REAL(wp), POINTER, DIMENSION(:,:  ) :: fgmid2d, fdzmi2d, fgmepn2d, fgmepd2d, fgmezmi2d, fgmed2d 
    354     REAL(wp), POINTER, DIMENSION(:,:  ) :: fdzme2d, fslown2d, fdd2d, ffetop2d, ffebot2d, ffescav2d 
    355     REAL(wp), POINTER, DIMENSION(:,:  ) :: fjln2d, fnln2d, ffln2d, fjld2d, fnld2d, ffld2d, fsld2d2 
    356     REAL(wp), POINTER, DIMENSION(:,:  ) :: fsld2d, fregen2d, fregensi2d, ftempn2d, ftempsi2d, ftempfe2d 
    357     REAL(wp), POINTER, DIMENSION(:,:  ) :: ftempc2d, ftempca2d, freminn2d, freminsi2d, freminfe2d 
    358     REAL(wp), POINTER, DIMENSION(:,:  ) :: freminc2d, freminca2d 
    359     REAL(wp), POINTER, DIMENSION(:,:  ) :: zw2d 
     297      !! 
     298      !! flags to help with calculating the position of the CCD 
     299      INTEGER, DIMENSION(jpi,jpj) ::     i2_omcal,i2_omarg 
     300      !! 
     301      !! ROAM air-sea flux and diagnostic parameters 
     302      REAL(wp) ::    f_wind 
     303      !! AXY (24/11/16): add xCO2 variable for atmosphere (what we actually have) 
     304      REAL(wp) ::    f_xco2a 
     305      REAL(wp) ::    f_ph, f_pco2w, f_h2co3, f_hco3, f_co3, f_co2flux 
     306      REAL(wp) ::    f_TDIC, f_TALK, f_dcf, f_henry 
     307      REAL(wp) ::    f_uwind, f_vwind, f_pp0 
     308      REAL(wp) ::    f_kw660, f_o2flux, f_o2sat, f_o2sat3 
     309      REAL(wp), DIMENSION(jpi,jpj) ::    f_omcal, f_omarg 
     310      !! 
     311      !! AXY (23/06/15): additional diagnostics for MOCSY and oxygen 
     312      REAL(wp) ::    f_fco2w, f_BetaD, f_rhosw, f_opres, f_insitut, f_pco2atm, f_fco2atm 
     313      REAL(wp) ::    f_schmidtco2, f_kwco2, f_K0, f_co2starair, f_dpco2, f_kwo2 
     314      !! jpalm 14-07-2016: convert CO2flux diag from mmol/m2/d to kg/m2/s 
     315      REAL, PARAMETER :: weight_CO2_mol = 44.0095  !! g / mol 
     316      REAL, PARAMETER :: secs_in_day    = 86400.0  !! s / d 
     317      REAL, PARAMETER :: CO2flux_conv   = (1.e-6 * weight_CO2_mol) / secs_in_day 
     318 
     319      !! 
     320      INTEGER  ::    iters 
     321      REAL(wp) ::    f_year 
     322      INTEGER  ::    i_year 
     323      INTEGER  ::    iyr1, iyr2 
     324      !! 
     325      !! carbon, alkalinity production and consumption 
     326      REAL(wp) ::    fc_prod, fc_cons, fa_prod, fa_cons 
     327      REAL(wp), DIMENSION(jpi,jpj) ::    fcomm_resp 
     328      REAL(wp), DIMENSION(jpi,jpj) ::    fcar_prod, fcar_cons 
     329      !! 
     330      !! oxygen production and consumption (and non-consumption) 
     331      REAL(wp) ::    fo2_prod, fo2_cons, fo2_ncons, fo2_ccons 
     332      REAL(wp), DIMENSION(jpi,jpj) ::    foxy_prod, foxy_cons, foxy_anox 
     333      !! Jpalm (11-08-2014) 
     334      !! add DMS in MEDUSA for UKESM1 model 
     335      REAL(wp) ::    dms_surf 
     336      !! AXY (13/03/15): add in other DMS calculations 
     337      REAL(wp) ::    dms_andr, dms_simo, dms_aran, dms_hall 
     338 
     339# endif 
     340      !!  
     341      !! benthic fluxes 
     342      INTEGER  ::    ibenthic 
     343      REAL(wp), DIMENSION(jpi,jpj) :: f_sbenin_n, f_sbenin_fe,              f_sbenin_c 
     344      REAL(wp), DIMENSION(jpi,jpj) :: f_fbenin_n, f_fbenin_fe, f_fbenin_si, f_fbenin_c, f_fbenin_ca 
     345      REAL(wp), DIMENSION(jpi,jpj) :: f_benout_n, f_benout_fe, f_benout_si, f_benout_c, f_benout_ca 
     346      REAL(wp) ::    zfact 
     347      !!  
     348      !! benthic fluxes of CaCO3 that shouldn't happen because of lysocline 
     349      REAL(wp), DIMENSION(jpi,jpj) :: f_benout_lyso_ca 
     350      !! 
     351      !! riverine fluxes 
     352      REAL(wp), DIMENSION(jpi,jpj) :: f_runoff, f_riv_n, f_riv_si, f_riv_c, f_riv_alk 
     353      !! AXY (19/07/12): variables for local riverine fluxes to handle inputs below surface 
     354      REAL(wp) ::    f_riv_loc_n, f_riv_loc_si, f_riv_loc_c, f_riv_loc_alk 
     355      !! 
     356      !! Jpalm -- 11-10-2015 -- adapt diag to iom_use 
     357      !! 2D var for diagnostics. 
     358      REAL(wp), POINTER, DIMENSION(:,:  ) :: fprn2d, fdpn2d, fprd2d, fdpd2d, fprds2d, fsdiss2d, fgmipn2d 
     359      REAL(wp), POINTER, DIMENSION(:,:  ) :: fgmid2d, fdzmi2d, fgmepn2d, fgmepd2d, fgmezmi2d, fgmed2d 
     360      REAL(wp), POINTER, DIMENSION(:,:  ) :: fdzme2d, fslown2d, fdd2d, ffetop2d, ffebot2d, ffescav2d 
     361      REAL(wp), POINTER, DIMENSION(:,:  ) :: fjln2d, fnln2d, ffln2d, fjld2d, fnld2d, ffld2d, fsld2d2 
     362      REAL(wp), POINTER, DIMENSION(:,:  ) :: fsld2d, fregen2d, fregensi2d, ftempn2d, ftempsi2d, ftempfe2d 
     363      REAL(wp), POINTER, DIMENSION(:,:  ) :: ftempc2d, ftempca2d, freminn2d, freminsi2d, freminfe2d 
     364      REAL(wp), POINTER, DIMENSION(:,:  ) :: freminc2d, freminca2d 
     365      REAL(wp), POINTER, DIMENSION(:,:  ) :: zw2d 
    360366# if defined key_roam 
    361     REAL(wp), POINTER, DIMENSION(:,:  ) :: ffastca2d, rivn2d, rivsi2d, rivc2d, rivalk2d, fslowc2d 
    362     REAL(wp), POINTER, DIMENSION(:,:  ) :: fdpn22d, fdpd22d, fdzmi22d, fdzme22d, zimesn2d, zimesd2d 
    363     REAL(wp), POINTER, DIMENSION(:,:  ) :: zimesc2d, zimesdc2d, ziexcr2d, ziresp2d, zigrow2d, zemesn2d 
    364     REAL(wp), POINTER, DIMENSION(:,:  ) :: zemesd2d, zemesc2d, zemesdc2d, zeexcr2d, zeresp2d, zegrow2d 
    365     REAL(wp), POINTER, DIMENSION(:,:  ) :: mdetc2d, gmidc2d, gmedc2d, f_pco2a2d, f_pco2w2d, f_co2flux2d 
    366     REAL(wp), POINTER, DIMENSION(:,:  ) :: f_TDIC2d, f_TALK2d, f_kw6602d, f_pp02d, f_o2flux2d, f_o2sat2d 
    367     REAL(wp), POINTER, DIMENSION(:,:  ) :: dms_andr2d, dms_simo2d, dms_aran2d, dms_hall2d, dms_surf2d 
    368     REAL(wp), POINTER, DIMENSION(:,:  ) :: iben_n2d, iben_fe2d, iben_c2d, iben_si2d, iben_ca2d, oben_n2d 
    369     REAL(wp), POINTER, DIMENSION(:,:  ) :: oben_fe2d, oben_c2d, oben_si2d, oben_ca2d, sfr_ocal2d 
    370     REAL(wp), POINTER, DIMENSION(:,:  ) :: sfr_oarg2d, lyso_ca2d  
    371     !! AXY (23/11/16): extra MOCSY diagnostics 
    372     REAL(wp), POINTER, DIMENSION(:,:  ) :: f_xco2a_2d, f_fco2w_2d, f_fco2a_2d 
    373     REAL(wp), POINTER, DIMENSION(:,:  ) :: f_ocnrhosw_2d, f_ocnschco2_2d, f_ocnkwco2_2d 
    374     REAL(wp), POINTER, DIMENSION(:,:  ) :: f_ocnk0_2d, f_co2starair_2d, f_ocndpco2_2d 
    375 # endif 
    376     !! 
    377     !! 3D var for diagnostics. 
    378     REAL(wp), POINTER, DIMENSION(:,:,:) :: tpp3d, detflux3d, remin3dn 
    379     !! 
     367      REAL(wp), POINTER, DIMENSION(:,:  ) :: ffastca2d, rivn2d, rivsi2d, rivc2d, rivalk2d, fslowc2d 
     368      REAL(wp), POINTER, DIMENSION(:,:  ) :: fdpn22d, fdpd22d, fdzmi22d, fdzme22d, zimesn2d, zimesd2d 
     369      REAL(wp), POINTER, DIMENSION(:,:  ) :: zimesc2d, zimesdc2d, ziexcr2d, ziresp2d, zigrow2d, zemesn2d 
     370      REAL(wp), POINTER, DIMENSION(:,:  ) :: zemesd2d, zemesc2d, zemesdc2d, zeexcr2d, zeresp2d, zegrow2d 
     371      REAL(wp), POINTER, DIMENSION(:,:  ) :: mdetc2d, gmidc2d, gmedc2d, f_pco2a2d, f_pco2w2d, f_co2flux2d 
     372      REAL(wp), POINTER, DIMENSION(:,:  ) :: f_TDIC2d, f_TALK2d, f_kw6602d, f_pp02d, f_o2flux2d, f_o2sat2d 
     373      REAL(wp), POINTER, DIMENSION(:,:  ) :: dms_andr2d, dms_simo2d, dms_aran2d, dms_hall2d, dms_surf2d 
     374      REAL(wp), POINTER, DIMENSION(:,:  ) :: iben_n2d, iben_fe2d, iben_c2d, iben_si2d, iben_ca2d, oben_n2d 
     375      REAL(wp), POINTER, DIMENSION(:,:  ) :: oben_fe2d, oben_c2d, oben_si2d, oben_ca2d, sfr_ocal2d 
     376      REAL(wp), POINTER, DIMENSION(:,:  ) :: sfr_oarg2d, lyso_ca2d  
     377      !! AXY (23/11/16): extra MOCSY diagnostics 
     378      REAL(wp), POINTER, DIMENSION(:,:  ) :: f_xco2a_2d, f_fco2w_2d, f_fco2a_2d 
     379      REAL(wp), POINTER, DIMENSION(:,:  ) :: f_ocnrhosw_2d, f_ocnschco2_2d, f_ocnkwco2_2d 
     380      REAL(wp), POINTER, DIMENSION(:,:  ) :: f_ocnk0_2d, f_co2starair_2d, f_ocndpco2_2d 
     381# endif 
     382      !! 
     383      !! 3D var for diagnostics. 
     384      REAL(wp), POINTER, DIMENSION(:,:,:) :: tpp3d, detflux3d, remin3dn 
     385      !! 
    380386# if defined key_roam 
    381     !! AXY (04/11/16) 
    382     !! 2D var for new CMIP6 diagnostics (behind a key_roam ifdef for simplicity) 
    383     REAL(wp), POINTER, DIMENSION(:,:  ) :: fgco2, intdissic, intdissin, intdissisi, inttalk, o2min, zo2min 
    384     REAL(wp), POINTER, DIMENSION(:,:  ) :: fbddtalk, fbddtdic, fbddtdife, fbddtdin, fbddtdisi 
    385     !! 
    386     !! 3D var for new CMIP6 diagnostics 
    387     REAL(wp), POINTER, DIMENSION(:,:,:) :: tppd3 
    388     REAL(wp), POINTER, DIMENSION(:,:,:) :: bddtalk3, bddtdic3, bddtdife3, bddtdin3, bddtdisi3 
    389     REAL(wp), POINTER, DIMENSION(:,:,:) :: fd_nit3, fd_sil3, fd_car3, fd_cal3 
    390     REAL(wp), POINTER, DIMENSION(:,:,:) :: co33, co3satarag3, co3satcalc3, dcalc3 
    391     REAL(wp), POINTER, DIMENSION(:,:,:) :: expc3, expn3 
    392     REAL(wp), POINTER, DIMENSION(:,:,:) :: fediss3, fescav3 
    393     REAL(wp), POINTER, DIMENSION(:,:,:) :: migrazp3, migrazd3, megrazp3, megrazd3, megrazz3 
    394     REAL(wp), POINTER, DIMENSION(:,:,:) :: o2sat3, pbsi3, pcal3, remoc3 
    395     REAL(wp), POINTER, DIMENSION(:,:,:) :: pnlimj3, pnlimn3, pnlimfe3, pdlimj3, pdlimn3, pdlimfe3, pdlimsi3 
    396 # endif 
    397     !!--------------------------------------------------------------------- 
     387      !! AXY (04/11/16) 
     388      !! 2D var for new CMIP6 diagnostics (behind a key_roam ifdef for simplicity) 
     389      REAL(wp), POINTER, DIMENSION(:,:  ) :: fgco2, intdissic, intdissin, intdissisi, inttalk, o2min, zo2min 
     390      REAL(wp), POINTER, DIMENSION(:,:  ) :: fbddtalk, fbddtdic, fbddtdife, fbddtdin, fbddtdisi 
     391      !! 
     392      !! 3D var for new CMIP6 diagnostics 
     393      REAL(wp), POINTER, DIMENSION(:,:,:) :: tppd3 
     394      REAL(wp), POINTER, DIMENSION(:,:,:) :: bddtalk3, bddtdic3, bddtdife3, bddtdin3, bddtdisi3 
     395      REAL(wp), POINTER, DIMENSION(:,:,:) :: fd_nit3, fd_sil3, fd_car3, fd_cal3 
     396      REAL(wp), POINTER, DIMENSION(:,:,:) :: co33, co3satarag3, co3satcalc3, dcalc3 
     397      REAL(wp), POINTER, DIMENSION(:,:,:) :: expc3, expn3 
     398      REAL(wp), POINTER, DIMENSION(:,:,:) :: fediss3, fescav3 
     399      REAL(wp), POINTER, DIMENSION(:,:,:) :: migrazp3, migrazd3, megrazp3, megrazd3, megrazz3 
     400      REAL(wp), POINTER, DIMENSION(:,:,:) :: o2sat3, pbsi3, pcal3, remoc3 
     401      REAL(wp), POINTER, DIMENSION(:,:,:) :: pnlimj3, pnlimn3, pnlimfe3, pdlimj3, pdlimn3, pdlimfe3, pdlimsi3 
     402# endif 
     403      !!--------------------------------------------------------------------- 
    398404 
    399405# if defined key_debug_medusa 
    400     IF ( lwp ) write (numout,*) 'trc_bio_medusa: variables defined' 
    401     CALL flush(numout) 
     406      IF (lwp) write (numout,*) 'trc_bio_medusa: variables defined' 
     407      CALL flush(numout) 
    402408# endif  
    403409 
    404     !! AXY (20/11/14): alter this to report on first MEDUSA call 
    405     !! IF( kt == nit000 ) THEN 
    406     IF( kt == nittrc000 ) THEN 
    407        IF(lwp) WRITE(numout,*) 
    408        IF(lwp) WRITE(numout,*) ' trc_bio: MEDUSA bio-model' 
    409        IF(lwp) WRITE(numout,*) ' ~~~~~~~' 
    410        IF(lwp) WRITE(numout,*) ' kt =',kt 
    411     ENDIF 
    412  
    413     !! AXY (13/01/12): is benthic model properly interactive? 0 = no, 1 = yes 
    414     ibenthic = 1 
    415  
    416     !!---------------------------------------------------------------------- 
    417     !! b0 is present for debugging purposes; using b0 = 0 sets the tendency 
    418     !! terms of all biological equations to 0. 
    419     !!---------------------------------------------------------------------- 
    420     !! 
    421     !! AXY (03/09/14): probably not the smartest move ever, but it'll fit 
    422     !!                 the bill for now; another item on the things-to-sort- 
    423     !!       out-in-the-future list ... 
     410      !! AXY (20/11/14): alter this to report on first MEDUSA call 
     411      !! IF( kt == nit000 ) THEN 
     412      IF( kt == nittrc000 ) THEN 
     413         IF(lwp) WRITE(numout,*) 
     414         IF(lwp) WRITE(numout,*) ' trc_bio: MEDUSA bio-model' 
     415         IF(lwp) WRITE(numout,*) ' ~~~~~~~' 
     416    IF(lwp) WRITE(numout,*) ' kt =',kt 
     417      ENDIF 
     418 
     419      !! AXY (13/01/12): is benthic model properly interactive? 0 = no, 1 = yes 
     420      ibenthic = 1 
     421 
     422      !! not sure what this is for; it's not used anywhere; commenting out 
     423      !! fbodn(:,:) = 0.e0    
     424 
     425      !! 
     426      IF( ln_diatrc ) THEN 
     427         !! blank 2D diagnostic array 
     428         trc2d(:,:,:) = 0.e0 
     429         !! 
     430         !! blank 3D diagnostic array 
     431         trc3d(:,:,:,:) = 0.e0 
     432      ENDIF 
     433 
     434      !!---------------------------------------------------------------------- 
     435      !! b0 is present for debugging purposes; using b0 = 0 sets the tendency 
     436      !! terms of all biological equations to 0. 
     437      !!---------------------------------------------------------------------- 
     438      !! 
     439      !! AXY (03/09/14): probably not the smartest move ever, but it'll fit 
     440      !!                 the bill for now; another item on the things-to-sort- 
     441      !!     out-in-the-future list ... 
    424442# if defined key_kill_medusa 
    425     b0 = 0. 
     443      b0 = 0. 
    426444# else 
    427     b0 = 1. 
    428 # endif 
    429     !!---------------------------------------------------------------------- 
    430     !! fast detritus ballast scheme (0 = no; 1 = yes) 
    431     !! alternative to ballast scheme is same scheme but with no ballast 
    432     !! protection (not dissimilar to Martin et al., 1987) 
    433     !!---------------------------------------------------------------------- 
    434     !! 
    435     iball = 1 
    436  
    437     !!---------------------------------------------------------------------- 
    438     !! full flux diagnostics (0 = no; 1 = yes); appear in ocean.output 
    439     !! these should *only* be used in 1D since they give comprehensive 
    440     !! output for ecological functions in the model; primarily used in 
    441     !! debugging 
    442     !!---------------------------------------------------------------------- 
    443     !! 
    444     idf    = 0 
    445     !! 
    446     !! timer mechanism 
    447     if (kt/120*120.eq.kt) then 
    448        idfval = 1 
    449     else 
    450        idfval = 0 
    451     endif 
    452  
    453     !!---------------------------------------------------------------------- 
    454     !! blank fast-sinking detritus 2D fields 
    455     !!---------------------------------------------------------------------- 
    456     !! 
    457     ffastn(:,:)  = 0.0        !! organic nitrogen 
    458     ffastsi(:,:) = 0.0        !! biogenic silicon 
    459     ffastfe(:,:) = 0.0        !! organic iron 
    460     ffastc(:,:)  = 0.0        !! organic carbon 
    461     ffastca(:,:) = 0.0        !! biogenic calcium carbonate 
    462     !! 
    463     fsedn(:,:)   = 0.0        !! Seafloor flux of N  
    464     fsedsi(:,:)  = 0.0        !! Seafloor flux of Si 
    465     fsedfe(:,:)  = 0.0        !! Seafloor flux of Fe 
    466     fsedc(:,:)   = 0.0        !! Seafloor flux of C 
    467     fsedca(:,:)  = 0.0        !! Seafloor flux of CaCO3 
    468     !! 
    469     fregenfast(:,:)   = 0.0   !! integrated  N regeneration (fast detritus) 
    470     fregenfastsi(:,:) = 0.0   !! integrated Si regeneration (fast detritus) 
     445      b0 = 1. 
     446# endif 
     447      !!---------------------------------------------------------------------- 
     448      !! fast detritus ballast scheme (0 = no; 1 = yes) 
     449      !! alternative to ballast scheme is same scheme but with no ballast 
     450      !! protection (not dissimilar to Martin et al., 1987) 
     451      !!---------------------------------------------------------------------- 
     452      !! 
     453      iball = 1 
     454 
     455      !!---------------------------------------------------------------------- 
     456      !! full flux diagnostics (0 = no; 1 = yes); appear in ocean.output 
     457      !! these should *only* be used in 1D since they give comprehensive 
     458      !! output for ecological functions in the model; primarily used in 
     459      !! debugging 
     460      !!---------------------------------------------------------------------- 
     461      !! 
     462      idf    = 0 
     463      !! 
     464      !! timer mechanism 
     465      if (kt/120*120.eq.kt) then 
     466         idfval = 1 
     467      else 
     468         idfval = 0 
     469      endif 
     470 
     471      !!---------------------------------------------------------------------- 
     472      !! blank fast-sinking detritus 2D fields 
     473      !!---------------------------------------------------------------------- 
     474      !! 
     475      ffastn(:,:)  = 0.0        !! organic nitrogen 
     476      ffastsi(:,:) = 0.0        !! biogenic silicon 
     477      ffastfe(:,:) = 0.0        !! organic iron 
     478      ffastc(:,:)  = 0.0        !! organic carbon 
     479      ffastca(:,:) = 0.0        !! biogenic calcium carbonate 
     480      !! 
     481      fsedn(:,:)   = 0.0        !! Seafloor flux of N  
     482      fsedsi(:,:)  = 0.0        !! Seafloor flux of Si 
     483      fsedfe(:,:)  = 0.0        !! Seafloor flux of Fe 
     484      fsedc(:,:)   = 0.0        !! Seafloor flux of C 
     485      fsedca(:,:)  = 0.0        !! Seafloor flux of CaCO3 
     486      !! 
     487      fregenfast(:,:)   = 0.0   !! integrated  N regeneration (fast detritus) 
     488      fregenfastsi(:,:) = 0.0   !! integrated Si regeneration (fast detritus) 
    471489# if defined key_roam 
    472     fregenfastc(:,:)  = 0.0   !! integrated  C regeneration (fast detritus) 
    473 # endif 
    474     !! 
    475     fccd(:,:)    = 0.0        !! last depth level before CCD 
    476  
    477     !!---------------------------------------------------------------------- 
    478     !! blank nutrient/flux inventories 
    479     !!---------------------------------------------------------------------- 
    480     !! 
    481     fflx_n(:,:)  = 0.0        !! nitrogen flux total 
    482     fflx_si(:,:) = 0.0        !! silicon  flux total 
    483     fflx_fe(:,:) = 0.0        !! iron     flux total 
    484     fifd_n(:,:)  = 0.0        !! nitrogen fast detritus production 
    485     fifd_si(:,:) = 0.0        !! silicon  fast detritus production 
    486     fifd_fe(:,:) = 0.0        !! iron     fast detritus production 
    487     fofd_n(:,:)  = 0.0        !! nitrogen fast detritus remineralisation 
    488     fofd_si(:,:) = 0.0        !! silicon  fast detritus remineralisation 
    489     fofd_fe(:,:) = 0.0        !! iron     fast detritus remineralisation 
     490      fregenfastc(:,:)  = 0.0   !! integrated  C regeneration (fast detritus) 
     491# endif 
     492      !! 
     493      fccd(:,:)    = 0.0        !! last depth level before CCD 
     494 
     495      !!---------------------------------------------------------------------- 
     496      !! blank nutrient/flux inventories 
     497      !!---------------------------------------------------------------------- 
     498      !! 
     499      fflx_n(:,:)  = 0.0        !! nitrogen flux total 
     500      fflx_si(:,:) = 0.0        !! silicon  flux total 
     501      fflx_fe(:,:) = 0.0        !! iron     flux total 
     502      fifd_n(:,:)  = 0.0        !! nitrogen fast detritus production 
     503      fifd_si(:,:) = 0.0        !! silicon  fast detritus production 
     504      fifd_fe(:,:) = 0.0        !! iron     fast detritus production 
     505      fofd_n(:,:)  = 0.0        !! nitrogen fast detritus remineralisation 
     506      fofd_si(:,:) = 0.0        !! silicon  fast detritus remineralisation 
     507      fofd_fe(:,:) = 0.0        !! iron     fast detritus remineralisation 
    490508# if defined key_roam 
    491     fflx_c(:,:)  = 0.0        !! carbon     flux total 
    492     fflx_a(:,:)  = 0.0        !! alkalinity flux total 
    493     fflx_o2(:,:) = 0.0        !! oxygen     flux total 
    494     ftot_c(:,:)  = 0.0        !! carbon     inventory 
    495     ftot_a(:,:)  = 0.0        !! alkalinity inventory 
    496     ftot_o2(:,:) = 0.0        !! oxygen     inventory 
    497     fifd_c(:,:)  = 0.0        !! carbon     fast detritus production 
    498     fifd_a(:,:)  = 0.0        !! alkalinity fast detritus production 
    499     fifd_o2(:,:) = 0.0        !! oxygen     fast detritus production 
    500     fofd_c(:,:)  = 0.0        !! carbon     fast detritus remineralisation 
    501     fofd_a(:,:)  = 0.0        !! alkalinity fast detritus remineralisation 
    502     fofd_o2(:,:) = 0.0        !! oxygen     fast detritus remineralisation 
    503     !! 
    504     fnit_prod(:,:) = 0.0      !! (organic)   nitrogen production 
    505     fnit_cons(:,:) = 0.0      !! (organic)   nitrogen consumption 
    506     fsil_prod(:,:) = 0.0      !! (inorganic) silicon production 
    507     fsil_cons(:,:) = 0.0      !! (inorganic) silicon consumption 
    508     fcar_prod(:,:) = 0.0      !! (organic)   carbon production 
    509     fcar_cons(:,:) = 0.0      !! (organic)   carbon consumption 
    510     !! 
    511     foxy_prod(:,:) = 0.0      !! oxygen production 
    512     foxy_cons(:,:) = 0.0      !! oxygen consumption 
    513     foxy_anox(:,:) = 0.0      !! unrealised oxygen consumption 
    514     !! 
    515 # endif 
    516     ftot_n(:,:)   = 0.0       !! N inventory  
    517     ftot_si(:,:)  = 0.0       !! Si inventory 
    518     ftot_fe(:,:)  = 0.0       !! Fe inventory 
    519     ftot_pn(:,:)  = 0.0       !! integrated non-diatom phytoplankton 
    520     ftot_pd(:,:)  = 0.0       !! integrated diatom     phytoplankton 
    521     ftot_zmi(:,:) = 0.0       !! integrated microzooplankton 
    522     ftot_zme(:,:) = 0.0       !! integrated mesozooplankton 
    523     ftot_det(:,:) = 0.0       !! integrated slow detritus, nitrogen 
    524     ftot_dtc(:,:) = 0.0       !! integrated slow detritus, carbon 
    525     !! 
    526     fzmi_i(:,:)  = 0.0        !! material grazed by microzooplankton 
    527     fzmi_o(:,:)  = 0.0        !! ... sum of fate of this material 
    528     fzme_i(:,:)  = 0.0        !! material grazed by  mesozooplankton 
    529     fzme_o(:,:)  = 0.0        !! ... sum of fate of this material 
    530     !! 
    531     f_sbenin_n(:,:)  = 0.0    !! slow detritus N  -> benthic pool 
    532     f_sbenin_fe(:,:) = 0.0    !! slow detritus Fe -> benthic pool 
    533     f_sbenin_c(:,:)  = 0.0    !! slow detritus C  -> benthic pool 
    534     f_fbenin_n(:,:)  = 0.0    !! fast detritus N  -> benthic pool 
    535     f_fbenin_fe(:,:) = 0.0    !! fast detritus Fe -> benthic pool 
    536     f_fbenin_si(:,:) = 0.0    !! fast detritus Si -> benthic pool 
    537     f_fbenin_c(:,:)  = 0.0    !! fast detritus C  -> benthic pool 
    538     f_fbenin_ca(:,:) = 0.0    !! fast detritus Ca -> benthic pool 
    539     !! 
    540     f_benout_n(:,:)  = 0.0    !! benthic N  pool  -> dissolved 
    541     f_benout_fe(:,:) = 0.0    !! benthic Fe pool  -> dissolved 
    542     f_benout_si(:,:) = 0.0    !! benthic Si pool  -> dissolved 
    543     f_benout_c(:,:)  = 0.0    !! benthic C  pool  -> dissolved 
    544     f_benout_ca(:,:) = 0.0    !! benthic Ca pool  -> dissolved 
    545     !! 
    546     f_benout_lyso_ca(:,:) = 0.0 !! benthic Ca pool  -> dissolved (when it shouldn't!) 
    547     !! 
    548     f_runoff(:,:)  = 0.0      !! riverine runoff 
    549     f_riv_n(:,:)   = 0.0      !! riverine N   input  
    550     f_riv_si(:,:)  = 0.0      !! riverine Si  input  
    551     f_riv_c(:,:)   = 0.0      !! riverine C   input  
    552     f_riv_alk(:,:) = 0.0      !! riverine alk input  
    553     !!  
    554     !! Jpalm -- 06-03-2017 -- Forgotten var to init 
    555     f_omarg(:,:) = 0.0        !! 
    556     f_omcal(:,:) = 0.0  
    557     xFree(:,:) = 0.0          !! state variables for iron-ligand system 
    558     fcomm_resp(:,:) = 0.0  
    559     fprn_ml(:,:) = 0.0        !! mixed layer PP diagnostics 
    560     fprd_ml(:,:) = 0.0        !! mixed layer PP diagnostics 
    561  
    562     !!---------------------------------------------------------------------- 
    563     !! allocate and initiate 2D diag 
    564     !!---------------------------------------------------------------------- 
    565     !! 
    566     IF ( lk_iomput .AND. .NOT.  ln_diatrc ) THEN  
    567        !! Juju :: add kt condition !! 
    568        if ( kt == nittrc000 )   CALL trc_nam_iom_medusa !! initialise iom_use test 
     509      fflx_c(:,:)  = 0.0        !! carbon     flux total 
     510      fflx_a(:,:)  = 0.0        !! alkalinity flux total 
     511      fflx_o2(:,:) = 0.0        !! oxygen     flux total 
     512      ftot_c(:,:)  = 0.0        !! carbon     inventory 
     513      ftot_a(:,:)  = 0.0        !! alkalinity inventory 
     514      ftot_o2(:,:) = 0.0        !! oxygen     inventory 
     515      fifd_c(:,:)  = 0.0        !! carbon     fast detritus production 
     516      fifd_a(:,:)  = 0.0        !! alkalinity fast detritus production 
     517      fifd_o2(:,:) = 0.0        !! oxygen     fast detritus production 
     518      fofd_c(:,:)  = 0.0        !! carbon     fast detritus remineralisation 
     519      fofd_a(:,:)  = 0.0        !! alkalinity fast detritus remineralisation 
     520      fofd_o2(:,:) = 0.0        !! oxygen     fast detritus remineralisation 
     521      !! 
     522      fnit_prod(:,:) = 0.0      !! (organic)   nitrogen production 
     523      fnit_cons(:,:) = 0.0      !! (organic)   nitrogen consumption 
     524      fsil_prod(:,:) = 0.0      !! (inorganic) silicon production 
     525      fsil_cons(:,:) = 0.0      !! (inorganic) silicon consumption 
     526      fcar_prod(:,:) = 0.0      !! (organic)   carbon production 
     527      fcar_cons(:,:) = 0.0      !! (organic)   carbon consumption 
     528      !! 
     529      foxy_prod(:,:) = 0.0      !! oxygen production 
     530      foxy_cons(:,:) = 0.0      !! oxygen consumption 
     531      foxy_anox(:,:) = 0.0      !! unrealised oxygen consumption 
     532      !! 
     533# endif 
     534      ftot_n(:,:)   = 0.0       !! N inventory  
     535      ftot_si(:,:)  = 0.0       !! Si inventory 
     536      ftot_fe(:,:)  = 0.0       !! Fe inventory 
     537      ftot_pn(:,:)  = 0.0       !! integrated non-diatom phytoplankton 
     538      ftot_pd(:,:)  = 0.0       !! integrated diatom     phytoplankton 
     539      ftot_zmi(:,:) = 0.0       !! integrated microzooplankton 
     540      ftot_zme(:,:) = 0.0       !! integrated mesozooplankton 
     541      ftot_det(:,:) = 0.0       !! integrated slow detritus, nitrogen 
     542      ftot_dtc(:,:) = 0.0       !! integrated slow detritus, carbon 
     543      !! 
     544      fzmi_i(:,:)  = 0.0        !! material grazed by microzooplankton 
     545      fzmi_o(:,:)  = 0.0        !! ... sum of fate of this material 
     546      fzme_i(:,:)  = 0.0        !! material grazed by  mesozooplankton 
     547      fzme_o(:,:)  = 0.0        !! ... sum of fate of this material 
     548      !! 
     549      f_sbenin_n(:,:)  = 0.0    !! slow detritus N  -> benthic pool 
     550      f_sbenin_fe(:,:) = 0.0    !! slow detritus Fe -> benthic pool 
     551      f_sbenin_c(:,:)  = 0.0    !! slow detritus C  -> benthic pool 
     552      f_fbenin_n(:,:)  = 0.0    !! fast detritus N  -> benthic pool 
     553      f_fbenin_fe(:,:) = 0.0    !! fast detritus Fe -> benthic pool 
     554      f_fbenin_si(:,:) = 0.0    !! fast detritus Si -> benthic pool 
     555      f_fbenin_c(:,:)  = 0.0    !! fast detritus C  -> benthic pool 
     556      f_fbenin_ca(:,:) = 0.0    !! fast detritus Ca -> benthic pool 
     557      !! 
     558      f_benout_n(:,:)  = 0.0    !! benthic N  pool  -> dissolved 
     559      f_benout_fe(:,:) = 0.0    !! benthic Fe pool  -> dissolved 
     560      f_benout_si(:,:) = 0.0    !! benthic Si pool  -> dissolved 
     561      f_benout_c(:,:)  = 0.0    !! benthic C  pool  -> dissolved 
     562      f_benout_ca(:,:) = 0.0    !! benthic Ca pool  -> dissolved 
     563      !! 
     564      f_benout_lyso_ca(:,:) = 0.0 !! benthic Ca pool  -> dissolved (when it shouldn't!) 
     565      !! 
     566      f_runoff(:,:)  = 0.0      !! riverine runoff 
     567      f_riv_n(:,:)   = 0.0      !! riverine N   input  
     568      f_riv_si(:,:)  = 0.0      !! riverine Si  input  
     569      f_riv_c(:,:)   = 0.0      !! riverine C   input  
     570      f_riv_alk(:,:) = 0.0      !! riverine alk input  
     571      !!  
     572      !! Jpalm -- 06-03-2017 -- Forgotten var to init 
     573      f_omarg(:,:) = 0.0        !! 
     574      f_omcal(:,:) = 0.0  
     575      xFree(:,:) = 0.0          !! state variables for iron-ligand system 
     576      fcomm_resp(:,:) = 0.0  
     577      fprn_ml(:,:) = 0.0        !! mixed layer PP diagnostics 
     578      fprd_ml(:,:) = 0.0        !! mixed layer PP diagnostics 
     579 
     580      !! 
     581      !! allocate and initiate 2D diag 
     582      !! ----------------------------- 
     583      !! Juju :: add kt condition !! 
     584      IF ( lk_iomput .AND. .NOT.  ln_diatrc ) THEN  
     585         !! 
     586         if ( kt == nittrc000 )   CALL trc_nam_iom_medusa !! initialise iom_use test 
     587         !! 
     588         CALL wrk_alloc( jpi, jpj,      zw2d ) 
     589         zw2d(:,:)      = 0.0   !! 
     590         IF ( med_diag%PRN%dgsave ) THEN 
     591            CALL wrk_alloc( jpi, jpj,   fprn2d    ) 
     592            fprn2d(:,:)      = 0.0 !! 
     593         ENDIF 
     594         IF ( med_diag%MPN%dgsave ) THEN 
     595            CALL wrk_alloc( jpi, jpj,   fdpn2d    ) 
     596            fdpn2d(:,:)      = 0.0 !! 
     597         ENDIF 
     598         IF ( med_diag%PRD%dgsave ) THEN 
     599            CALL wrk_alloc( jpi, jpj,   fprd2d    ) 
     600            fprd2d(:,:)      = 0.0 !! 
     601         ENDIF 
     602         IF( med_diag%MPD%dgsave ) THEN 
     603            CALL wrk_alloc( jpi, jpj,   fdpd2d    ) 
     604            fdpd2d(:,:)      = 0.0 !! 
     605         ENDIF 
     606         IF( med_diag%OPAL%dgsave ) THEN 
     607            CALL wrk_alloc( jpi, jpj,   fprds2d    ) 
     608            fprds2d(:,:)      = 0.0 !! 
     609         ENDIF 
     610         IF( med_diag%OPALDISS%dgsave ) THEN 
     611            CALL wrk_alloc( jpi, jpj,   fsdiss2d    ) 
     612            fsdiss2d(:,:)      = 0.0 !! 
     613         ENDIF 
     614         IF( med_diag%GMIPn%dgsave ) THEN 
     615            CALL wrk_alloc( jpi, jpj,   fgmipn2d    ) 
     616            fgmipn2d(:,:)      = 0.0 !! 
     617         ENDIF 
     618         IF( med_diag%GMID%dgsave ) THEN 
     619            CALL wrk_alloc( jpi, jpj,   fgmid2d    ) 
     620            fgmid2d(:,:)      = 0.0 !! 
     621         ENDIF 
     622         IF( med_diag%MZMI%dgsave ) THEN 
     623            CALL wrk_alloc( jpi, jpj,   fdzmi2d    ) 
     624            fdzmi2d(:,:)      = 0.0 !! 
     625         ENDIF 
     626         IF( med_diag%GMEPN%dgsave ) THEN 
     627            CALL wrk_alloc( jpi, jpj,   fgmepn2d    ) 
     628            fgmepn2d(:,:)      = 0.0 !! 
     629         ENDIF 
     630         IF( med_diag%GMEPD%dgsave ) THEN 
     631            CALL wrk_alloc( jpi, jpj,   fgmepd2d    ) 
     632            fgmepd2d(:,:)      = 0.0 !! 
     633         ENDIF 
     634         IF( med_diag%GMEZMI%dgsave ) THEN 
     635            CALL wrk_alloc( jpi, jpj,   fgmezmi2d    ) 
     636            fgmezmi2d(:,:)      = 0.0 !! 
     637         ENDIF 
     638         IF( med_diag%GMED%dgsave ) THEN 
     639            CALL wrk_alloc( jpi, jpj,   fgmed2d    ) 
     640            fgmed2d(:,:)      = 0.0 !! 
     641         ENDIF 
     642         IF( med_diag%MZME%dgsave ) THEN 
     643            CALL wrk_alloc( jpi, jpj,   fdzme2d    ) 
     644            fdzme2d(:,:)      = 0.0 !! 
     645         ENDIF 
     646         IF( med_diag%DETN%dgsave ) THEN 
     647            CALL wrk_alloc( jpi, jpj,   fslown2d    ) 
     648            fslown2d(:,:)      = 0.0 !! 
     649         ENDIF 
     650         IF( med_diag%MDET%dgsave ) THEN 
     651            CALL wrk_alloc( jpi, jpj,   fdd2d    ) 
     652            fdd2d(:,:)      = 0.0 !! 
     653         ENDIF       
     654         IF( med_diag%AEOLIAN%dgsave ) THEN 
     655            CALL wrk_alloc( jpi, jpj,   ffetop2d    ) 
     656            ffetop2d(:,:)      = 0.0 !! 
     657         ENDIF 
     658         IF( med_diag%BENTHIC%dgsave ) THEN 
     659            CALL wrk_alloc( jpi, jpj,    ffebot2d   ) 
     660            ffebot2d(:,:)      = 0.0 !! 
     661         ENDIF 
     662         IF( med_diag%SCAVENGE%dgsave ) THEN 
     663            CALL wrk_alloc( jpi, jpj,   ffescav2d    ) 
     664            ffescav2d(:,:)      = 0.0 !! 
     665         ENDIF 
     666         IF( med_diag%PN_JLIM%dgsave ) THEN 
     667            CALL wrk_alloc( jpi, jpj,   fjln2d    ) 
     668            fjln2d(:,:)      = 0.0 !! 
     669         ENDIF 
     670         IF( med_diag%PN_NLIM%dgsave ) THEN 
     671            CALL wrk_alloc( jpi, jpj,   fnln2d    ) 
     672            fnln2d(:,:)      = 0.0 !! 
     673         ENDIF 
     674         IF( med_diag%PN_FELIM%dgsave ) THEN 
     675            CALL wrk_alloc( jpi, jpj,   ffln2d    ) 
     676            ffln2d(:,:)      = 0.0 !! 
     677         ENDIF 
     678         IF( med_diag%PD_JLIM%dgsave ) THEN 
     679            CALL wrk_alloc( jpi, jpj,   fjld2d    ) 
     680            fjld2d(:,:)      = 0.0 !! 
     681         ENDIF 
     682         IF( med_diag%PD_NLIM%dgsave ) THEN 
     683            CALL wrk_alloc( jpi, jpj,   fnld2d    ) 
     684            fnld2d(:,:)      = 0.0 !! 
     685         ENDIF 
     686         IF( med_diag%PD_FELIM%dgsave ) THEN 
     687            CALL wrk_alloc( jpi, jpj,   ffld2d    ) 
     688            ffld2d(:,:)      = 0.0 !! 
     689         ENDIF 
     690         IF( med_diag%PD_SILIM%dgsave ) THEN 
     691            CALL wrk_alloc( jpi, jpj,   fsld2d2    ) 
     692            fsld2d2(:,:)      = 0.0 !! 
     693         ENDIF 
     694         IF( med_diag%PDSILIM2%dgsave ) THEN 
     695            CALL wrk_alloc( jpi, jpj,   fsld2d    ) 
     696            fsld2d(:,:)      = 0.0 !! 
     697         ENDIF 
     698!! 
     699!! skip SDT_XXXX diagnostics here 
     700!! 
     701         IF( med_diag%TOTREG_N%dgsave ) THEN 
     702            CALL wrk_alloc( jpi, jpj,   fregen2d    ) 
     703            fregen2d(:,:)      = 0.0 !! 
     704         ENDIF 
     705         IF( med_diag%TOTRG_SI%dgsave ) THEN 
     706            CALL wrk_alloc( jpi, jpj,   fregensi2d    ) 
     707            fregensi2d(:,:)      = 0.0 !! 
     708         ENDIF 
     709!! 
     710!! skip REG_XXXX diagnostics here 
     711!! 
     712         IF( med_diag%FASTN%dgsave ) THEN 
     713            CALL wrk_alloc( jpi, jpj,   ftempn2d    ) 
     714            ftempn2d(:,:)      = 0.0 !! 
     715         ENDIF 
     716         IF( med_diag%FASTSI%dgsave ) THEN 
     717            CALL wrk_alloc( jpi, jpj,   ftempsi2d    ) 
     718            ftempsi2d(:,:)      = 0.0 !! 
     719         ENDIF 
     720         IF( med_diag%FASTFE%dgsave ) THEN 
     721            CALL wrk_alloc( jpi, jpj,  ftempfe2d     ) 
     722            ftempfe2d(:,:)      = 0.0 !! 
     723         ENDIF 
     724         IF( med_diag%FASTC%dgsave ) THEN 
     725            CALL wrk_alloc( jpi, jpj,  ftempc2d     ) 
     726            ftempc2d(:,:)      = 0.0 !! 
     727         ENDIF 
     728         IF( med_diag%FASTCA%dgsave ) THEN 
     729            CALL wrk_alloc( jpi, jpj,   ftempca2d    ) 
     730            ftempca2d(:,:)      = 0.0 !! 
     731         ENDIF      
     732!! 
     733!! skip FDT_XXXX, RG_XXXXF, FDS_XXXX, RGS_XXXXF diagnostics here 
     734!! 
     735         IF( med_diag%REMINN%dgsave ) THEN 
     736            CALL wrk_alloc( jpi, jpj,    freminn2d   ) 
     737            freminn2d(:,:)      = 0.0 !! 
     738         ENDIF 
     739         IF( med_diag%REMINSI%dgsave ) THEN 
     740            CALL wrk_alloc( jpi, jpj,    freminsi2d   ) 
     741            freminsi2d(:,:)      = 0.0 !! 
     742         ENDIF 
     743         IF( med_diag%REMINFE%dgsave ) THEN 
     744            CALL wrk_alloc( jpi, jpj,    freminfe2d   ) 
     745            freminfe2d(:,:)      = 0.0 !! 
     746         ENDIF 
     747         IF( med_diag%REMINC%dgsave ) THEN 
     748            CALL wrk_alloc( jpi, jpj,   freminc2d    ) 
     749            freminc2d(:,:)      = 0.0 !!  
     750         ENDIF 
     751         IF( med_diag%REMINCA%dgsave ) THEN 
     752            CALL wrk_alloc( jpi, jpj,   freminca2d    ) 
     753            freminca2d(:,:)      = 0.0 !! 
     754         ENDIF 
     755# if defined key_roam 
     756!! 
     757!! skip SEAFLRXX, MED_XXXX, INTFLX_XX, INT_XX, ML_XXX, OCAL_XXX, FE_XXXX, MED_XZE, WIND diagnostics here 
     758!! 
     759         IF( med_diag%RR_0100%dgsave ) THEN 
     760            CALL wrk_alloc( jpi, jpj,    ffastca2d   ) 
     761            ffastca2d(:,:)      = 0.0 !! 
     762         ENDIF 
     763 
     764         IF( med_diag%ATM_PCO2%dgsave ) THEN 
     765            CALL wrk_alloc( jpi, jpj,    f_pco2a2d   ) 
     766            f_pco2a2d(:,:)      = 0.0 !! 
     767         ENDIF 
     768!! 
     769!! skip OCN_PH diagnostic here 
     770!! 
     771         IF( med_diag%OCN_PCO2%dgsave ) THEN 
     772            CALL wrk_alloc( jpi, jpj,    f_pco2w2d   ) 
     773            f_pco2w2d(:,:)      = 0.0 !! 
     774         ENDIF 
     775!! 
     776!! skip OCNH2CO3, OCN_HCO3, OCN_CO3 diagnostics here 
     777!! 
     778         IF( med_diag%CO2FLUX%dgsave ) THEN 
     779            CALL wrk_alloc( jpi, jpj,   f_co2flux2d    ) 
     780            f_co2flux2d(:,:)      = 0.0 !! 
     781         ENDIF 
     782!! 
     783!! skip OM_XXX diagnostics here 
     784!! 
     785         IF( med_diag%TCO2%dgsave ) THEN 
     786            CALL wrk_alloc( jpi, jpj,   f_TDIC2d    ) 
     787            f_TDIC2d(:,:)      = 0.0 !! 
     788         ENDIF 
     789         IF( med_diag%TALK%dgsave ) THEN 
     790            CALL wrk_alloc( jpi, jpj,    f_TALK2d   ) 
     791            f_TALK2d(:,:)      = 0.0 !! 
     792         ENDIF 
     793         IF( med_diag%KW660%dgsave ) THEN 
     794            CALL wrk_alloc( jpi, jpj,    f_kw6602d   ) 
     795            f_kw6602d(:,:)      = 0.0 !! 
     796         ENDIF 
     797         IF( med_diag%ATM_PP0%dgsave ) THEN 
     798            CALL wrk_alloc( jpi, jpj,    f_pp02d   ) 
     799            f_pp02d(:,:)      = 0.0 !! 
     800         ENDIF 
     801         IF( med_diag%O2FLUX%dgsave ) THEN 
     802            CALL wrk_alloc( jpi, jpj,   f_o2flux2d    ) 
     803            f_o2flux2d(:,:)      = 0.0 !! 
     804         ENDIF 
     805         IF( med_diag%O2SAT%dgsave ) THEN 
     806            CALL wrk_alloc( jpi, jpj,    f_o2sat2d   ) 
     807            f_o2sat2d(:,:)      = 0.0 !! 
     808         ENDIF  
     809!! 
     810!! skip XXX_CCD diagnostics here 
     811!!  
     812         IF( med_diag%SFR_OCAL%dgsave ) THEN 
     813            CALL wrk_alloc( jpi, jpj,    sfr_ocal2d  ) 
     814            sfr_ocal2d(:,:)      = 0.0 !! 
     815         ENDIF 
     816         IF( med_diag%SFR_OARG%dgsave ) THEN 
     817            CALL wrk_alloc( jpi, jpj,    sfr_oarg2d  ) 
     818            sfr_oarg2d(:,:)      = 0.0 !! 
     819         ENDIF 
     820!! 
     821!! skip XX_PROD, XX_CONS, O2_ANOX, RR_XXXX diagnostics here 
     822!!  
     823         IF( med_diag%IBEN_N%dgsave ) THEN 
     824            CALL wrk_alloc( jpi, jpj,    iben_n2d  ) 
     825            iben_n2d(:,:)      = 0.0 !! 
     826         ENDIF 
     827         IF( med_diag%IBEN_FE%dgsave ) THEN 
     828            CALL wrk_alloc( jpi, jpj,   iben_fe2d   ) 
     829            iben_fe2d(:,:)      = 0.0 !! 
     830         ENDIF 
     831         IF( med_diag%IBEN_C%dgsave ) THEN 
     832            CALL wrk_alloc( jpi, jpj,   iben_c2d   ) 
     833            iben_c2d(:,:)      = 0.0 !! 
     834         ENDIF 
     835         IF( med_diag%IBEN_SI%dgsave ) THEN 
     836            CALL wrk_alloc( jpi, jpj,   iben_si2d   ) 
     837            iben_si2d(:,:)      = 0.0 !! 
     838         ENDIF 
     839         IF( med_diag%IBEN_CA%dgsave ) THEN 
     840            CALL wrk_alloc( jpi, jpj,   iben_ca2d   ) 
     841            iben_ca2d(:,:)      = 0.0 !! 
     842         ENDIF 
     843         IF( med_diag%OBEN_N%dgsave ) THEN 
     844            CALL wrk_alloc( jpi, jpj,    oben_n2d  ) 
     845            oben_n2d(:,:)      = 0.0 !! 
     846         ENDIF 
     847         IF( med_diag%OBEN_FE%dgsave ) THEN 
     848            CALL wrk_alloc( jpi, jpj,    oben_fe2d  ) 
     849            oben_fe2d(:,:)      = 0.0 !! 
     850         ENDIF 
     851         IF( med_diag%OBEN_C%dgsave ) THEN 
     852            CALL wrk_alloc( jpi, jpj,    oben_c2d  ) 
     853            oben_c2d(:,:)      = 0.0 !! 
     854         ENDIF 
     855         IF( med_diag%OBEN_SI%dgsave ) THEN 
     856            CALL wrk_alloc( jpi, jpj,    oben_si2d  ) 
     857            oben_si2d(:,:)      = 0.0 !! 
     858         ENDIF 
     859         IF( med_diag%OBEN_CA%dgsave ) THEN 
     860            CALL wrk_alloc( jpi, jpj,    oben_ca2d  ) 
     861            oben_ca2d(:,:)      = 0.0 !! 
     862         ENDIF 
     863!! 
     864!! skip BEN_XX diagnostics here 
     865!! 
     866         IF( med_diag%RIV_N%dgsave ) THEN 
     867            CALL wrk_alloc( jpi, jpj,    rivn2d   ) 
     868            rivn2d(:,:)      = 0.0 !! 
     869         ENDIF 
     870         IF( med_diag%RIV_SI%dgsave ) THEN 
     871            CALL wrk_alloc( jpi, jpj,    rivsi2d   ) 
     872            rivsi2d(:,:)      = 0.0 !! 
     873         ENDIF 
     874         IF( med_diag%RIV_C%dgsave ) THEN 
     875            CALL wrk_alloc( jpi, jpj,   rivc2d    ) 
     876            rivc2d(:,:)      = 0.0 !! 
     877         ENDIF 
     878         IF( med_diag%RIV_ALK%dgsave ) THEN 
     879            CALL wrk_alloc( jpi, jpj,    rivalk2d   ) 
     880            rivalk2d(:,:)      = 0.0 !! 
     881         ENDIF 
     882         IF( med_diag%DETC%dgsave ) THEN 
     883            CALL wrk_alloc( jpi, jpj,    fslowc2d   ) 
     884            fslowc2d(:,:)      = 0.0 !! 
     885         ENDIF  
     886!! 
     887!! skip SDC_XXXX, INVTXXX diagnostics here 
     888!! 
     889         IF( med_diag%LYSO_CA%dgsave ) THEN 
     890            CALL wrk_alloc( jpi, jpj,    lyso_ca2d  ) 
     891            lyso_ca2d(:,:)      = 0.0 !! 
     892         ENDIF 
     893!! 
     894!! skip COM_RESP diagnostic here 
     895!! 
     896         IF( med_diag%PN_LLOSS%dgsave ) THEN 
     897            CALL wrk_alloc( jpi, jpj,    fdpn22d   ) 
     898            fdpn22d(:,:)      = 0.0 !! 
     899         ENDIF 
     900         IF( med_diag%PD_LLOSS%dgsave ) THEN 
     901            CALL wrk_alloc( jpi, jpj,    fdpd22d   ) 
     902            fdpd22d(:,:)      = 0.0 !! 
     903         ENDIF 
     904         IF( med_diag%ZI_LLOSS%dgsave ) THEN 
     905            CALL wrk_alloc( jpi, jpj,    fdzmi22d   ) 
     906            fdzmi22d(:,:)      = 0.0 !! 
     907         ENDIF 
     908         IF( med_diag%ZE_LLOSS%dgsave ) THEN 
     909            CALL wrk_alloc( jpi, jpj,   fdzme22d    ) 
     910            fdzme22d(:,:)      = 0.0 !! 
     911         ENDIF 
     912         IF( med_diag%ZI_MES_N%dgsave ) THEN    
     913            CALL wrk_alloc( jpi, jpj,   zimesn2d    ) 
     914            zimesn2d(:,:)      = 0.0 !! 
     915         ENDIF 
     916         IF( med_diag%ZI_MES_D%dgsave ) THEN 
     917            CALL wrk_alloc( jpi, jpj,    zimesd2d   ) 
     918            zimesd2d(:,:)      = 0.0 !! 
     919         ENDIF 
     920         IF( med_diag%ZI_MES_C%dgsave ) THEN 
     921            CALL wrk_alloc( jpi, jpj,    zimesc2d   ) 
     922            zimesc2d(:,:)      = 0.0 !! 
     923         ENDIF 
     924         IF( med_diag%ZI_MESDC%dgsave ) THEN 
     925            CALL wrk_alloc( jpi, jpj,    zimesdc2d   ) 
     926            zimesdc2d(:,:)      = 0.0 !! 
     927         ENDIF 
     928         IF( med_diag%ZI_EXCR%dgsave ) THEN 
     929            CALL wrk_alloc( jpi, jpj,     ziexcr2d  ) 
     930            ziexcr2d(:,:)      = 0.0 !! 
     931         ENDIF 
     932         IF( med_diag%ZI_RESP%dgsave ) THEN 
     933            CALL wrk_alloc( jpi, jpj,    ziresp2d   ) 
     934            ziresp2d(:,:)      = 0.0 !! 
     935         ENDIF 
     936         IF( med_diag%ZI_GROW%dgsave ) THEN 
     937            CALL wrk_alloc( jpi, jpj,    zigrow2d   ) 
     938            zigrow2d(:,:)      = 0.0 !! 
     939         ENDIF 
     940         IF( med_diag%ZE_MES_N%dgsave ) THEN 
     941            CALL wrk_alloc( jpi, jpj,   zemesn2d    ) 
     942            zemesn2d(:,:)      = 0.0 !! 
     943         ENDIF 
     944         IF( med_diag%ZE_MES_D%dgsave ) THEN 
     945            CALL wrk_alloc( jpi, jpj,    zemesd2d   ) 
     946            zemesd2d(:,:)      = 0.0 !! 
     947         ENDIF 
     948         IF( med_diag%ZE_MES_C%dgsave ) THEN 
     949            CALL wrk_alloc( jpi, jpj,    zemesc2d   ) 
     950            zemesc2d(:,:)      = 0.0 !! 
     951         ENDIF 
     952         IF( med_diag%ZE_MESDC%dgsave ) THEN 
     953            CALL wrk_alloc( jpi, jpj,    zemesdc2d   ) 
     954            zemesdc2d(:,:)      = 0.0 !! 
     955         ENDIF 
     956         IF( med_diag%ZE_EXCR%dgsave ) THEN 
     957            CALL wrk_alloc( jpi, jpj,    zeexcr2d   ) 
     958            zeexcr2d(:,:)      = 0.0 !! 
     959         ENDIF                   
     960         IF( med_diag%ZE_RESP%dgsave ) THEN 
     961            CALL wrk_alloc( jpi, jpj,    zeresp2d   ) 
     962            zeresp2d(:,:)      = 0.0 !! 
     963         ENDIF 
     964         IF( med_diag%ZE_GROW%dgsave ) THEN 
     965            CALL wrk_alloc( jpi, jpj,    zegrow2d   ) 
     966            zegrow2d(:,:)      = 0.0 !! 
     967         ENDIF 
     968         IF( med_diag%MDETC%dgsave ) THEN 
     969            CALL wrk_alloc( jpi, jpj,   mdetc2d    ) 
     970            mdetc2d(:,:)      = 0.0 !! 
     971         ENDIF 
     972         IF( med_diag%GMIDC%dgsave ) THEN 
     973            CALL wrk_alloc( jpi, jpj,    gmidc2d   ) 
     974            gmidc2d(:,:)      = 0.0 !! 
     975         ENDIF 
     976         IF( med_diag%GMEDC%dgsave ) THEN 
     977            CALL wrk_alloc( jpi, jpj,    gmedc2d   ) 
     978            gmedc2d(:,:)      = 0.0 !! 
     979         ENDIF 
     980!! 
     981!! skip INT_XXX diagnostics here 
     982!! 
     983         IF (jdms .eq. 1) THEN 
     984            IF( med_diag%DMS_SURF%dgsave ) THEN 
     985               CALL wrk_alloc( jpi, jpj,   dms_surf2d    ) 
     986               dms_surf2d(:,:)      = 0.0 !! 
     987            ENDIF 
     988            IF( med_diag%DMS_ANDR%dgsave ) THEN 
     989               CALL wrk_alloc( jpi, jpj,   dms_andr2d    ) 
     990               dms_andr2d(:,:)      = 0.0 !! 
     991            ENDIF 
     992            IF( med_diag%DMS_SIMO%dgsave ) THEN 
     993               CALL wrk_alloc( jpi, jpj,  dms_simo2d     ) 
     994               dms_simo2d(:,:)      = 0.0 !! 
     995            ENDIF 
     996            IF( med_diag%DMS_ARAN%dgsave ) THEN 
     997               CALL wrk_alloc( jpi, jpj,   dms_aran2d    ) 
     998               dms_aran2d(:,:)      = 0.0 !! 
     999            ENDIF 
     1000            IF( med_diag%DMS_HALL%dgsave ) THEN 
     1001               CALL wrk_alloc( jpi, jpj,   dms_hall2d    ) 
     1002               dms_hall2d(:,:)      = 0.0 !! 
     1003            ENDIF 
     1004         ENDIF    
     1005         !! 
     1006         !! AXY (24/11/16): extra MOCSY diagnostics, 2D 
     1007         IF( med_diag%ATM_XCO2%dgsave ) THEN 
     1008            CALL wrk_alloc( jpi, jpj, f_xco2a_2d      ) 
     1009            f_xco2a_2d(:,:)      = 0.0 !! 
     1010         ENDIF 
     1011         IF( med_diag%OCN_FCO2%dgsave ) THEN 
     1012            CALL wrk_alloc( jpi, jpj, f_fco2w_2d      ) 
     1013            f_fco2w_2d(:,:)      = 0.0 !! 
     1014         ENDIF 
     1015         IF( med_diag%ATM_FCO2%dgsave ) THEN 
     1016            CALL wrk_alloc( jpi, jpj, f_fco2a_2d      ) 
     1017            f_fco2a_2d(:,:)      = 0.0 !! 
     1018         ENDIF 
     1019         IF( med_diag%OCN_RHOSW%dgsave ) THEN 
     1020            CALL wrk_alloc( jpi, jpj, f_ocnrhosw_2d   ) 
     1021            f_ocnrhosw_2d(:,:)      = 0.0 !! 
     1022         ENDIF 
     1023         IF( med_diag%OCN_SCHCO2%dgsave ) THEN 
     1024            CALL wrk_alloc( jpi, jpj, f_ocnschco2_2d  ) 
     1025            f_ocnschco2_2d(:,:)      = 0.0 !! 
     1026         ENDIF 
     1027         IF( med_diag%OCN_KWCO2%dgsave ) THEN 
     1028            CALL wrk_alloc( jpi, jpj, f_ocnkwco2_2d   ) 
     1029            f_ocnkwco2_2d(:,:)      = 0.0 !! 
     1030         ENDIF 
     1031         IF( med_diag%OCN_K0%dgsave ) THEN 
     1032            CALL wrk_alloc( jpi, jpj, f_ocnk0_2d      ) 
     1033            f_ocnk0_2d(:,:)      = 0.0 !! 
     1034         ENDIF 
     1035         IF( med_diag%CO2STARAIR%dgsave ) THEN 
     1036            CALL wrk_alloc( jpi, jpj, f_co2starair_2d ) 
     1037            f_co2starair_2d(:,:)      = 0.0 !! 
     1038         ENDIF 
     1039         IF( med_diag%OCN_DPCO2%dgsave ) THEN 
     1040            CALL wrk_alloc( jpi, jpj, f_ocndpco2_2d   ) 
     1041            f_ocndpco2_2d(:,:)      = 0.0 !! 
     1042         ENDIF 
     1043# endif   
     1044         IF( med_diag%TPP3%dgsave ) THEN 
     1045            CALL wrk_alloc( jpi, jpj, jpk,       tpp3d ) 
     1046            tpp3d(:,:,:)      = 0.0 !!  
     1047         ENDIF 
     1048         IF( med_diag%DETFLUX3%dgsave ) THEN 
     1049            CALL wrk_alloc( jpi, jpj, jpk,        detflux3d ) 
     1050            detflux3d(:,:,:)      = 0.0 !!  
     1051         ENDIF 
     1052         IF( med_diag%REMIN3N%dgsave ) THEN 
     1053             CALL wrk_alloc( jpi, jpj, jpk,        remin3dn ) 
     1054             remin3dn(:,:,:)      = 0.0 !!  
     1055          ENDIF 
     1056          !!  
     1057          !! AXY (10/11/16): CMIP6 diagnostics, 2D 
     1058          !! JPALM -- 17-11-16 -- put fgco2 alloc out of diag request 
     1059          !!                   needed for coupling/passed through restart 
     1060          !! IF( med_diag%FGCO2%dgsave ) THEN 
     1061             CALL wrk_alloc( jpi, jpj,   fgco2    ) 
     1062             fgco2(:,:)      = 0.0 !! 
     1063          !! ENDIF 
     1064          IF( med_diag%INTDISSIC%dgsave ) THEN 
     1065             CALL wrk_alloc( jpi, jpj,   intdissic    ) 
     1066             intdissic(:,:)  = 0.0 !! 
     1067          ENDIF           
     1068          IF( med_diag%INTDISSIN%dgsave ) THEN 
     1069             CALL wrk_alloc( jpi, jpj,   intdissin    ) 
     1070             intdissin(:,:)  = 0.0 !! 
     1071          ENDIF           
     1072          IF( med_diag%INTDISSISI%dgsave ) THEN 
     1073             CALL wrk_alloc( jpi, jpj,   intdissisi    ) 
     1074             intdissisi(:,:)  = 0.0 !! 
     1075          ENDIF           
     1076          IF( med_diag%INTTALK%dgsave ) THEN 
     1077             CALL wrk_alloc( jpi, jpj,   inttalk    ) 
     1078             inttalk(:,:)  = 0.0 !! 
     1079          ENDIF           
     1080          IF( med_diag%O2min%dgsave ) THEN 
     1081             CALL wrk_alloc( jpi, jpj,   o2min    ) 
     1082             o2min(:,:)  = 1.e3 !! set to high value as we're looking for min(o2) 
     1083          ENDIF           
     1084          IF( med_diag%ZO2min%dgsave ) THEN 
     1085             CALL wrk_alloc( jpi, jpj,   zo2min    ) 
     1086             zo2min(:,:)  = 0.0 !! 
     1087          ENDIF           
     1088          IF( med_diag%FBDDTALK%dgsave  ) THEN 
     1089             CALL wrk_alloc( jpi, jpj, fbddtalk  ) 
     1090             fbddtalk(:,:)  = 0.0 !!  
     1091          ENDIF 
     1092          IF( med_diag%FBDDTDIC%dgsave  ) THEN 
     1093             CALL wrk_alloc( jpi, jpj, fbddtdic  ) 
     1094             fbddtdic(:,:)  = 0.0 !!  
     1095          ENDIF 
     1096          IF( med_diag%FBDDTDIFE%dgsave ) THEN 
     1097             CALL wrk_alloc( jpi, jpj, fbddtdife ) 
     1098             fbddtdife(:,:) = 0.0 !!  
     1099          ENDIF 
     1100          IF( med_diag%FBDDTDIN%dgsave  ) THEN 
     1101             CALL wrk_alloc( jpi, jpj, fbddtdin  ) 
     1102             fbddtdin(:,:)  = 0.0 !!  
     1103          ENDIF 
     1104          IF( med_diag%FBDDTDISI%dgsave ) THEN 
     1105             CALL wrk_alloc( jpi, jpj, fbddtdisi ) 
     1106             fbddtdisi(:,:) = 0.0 !!  
     1107          ENDIF 
     1108          !!  
     1109          !! AXY (10/11/16): CMIP6 diagnostics, 3D 
     1110          IF( med_diag%TPPD3%dgsave     ) THEN 
     1111             CALL wrk_alloc( jpi, jpj, jpk, tppd3     ) 
     1112             tppd3(:,:,:)     = 0.0 !!  
     1113          ENDIF 
     1114          IF( med_diag%BDDTALK3%dgsave  ) THEN 
     1115             CALL wrk_alloc( jpi, jpj, jpk, bddtalk3  ) 
     1116             bddtalk3(:,:,:)  = 0.0 !!  
     1117          ENDIF 
     1118          IF( med_diag%BDDTDIC3%dgsave  ) THEN 
     1119             CALL wrk_alloc( jpi, jpj, jpk, bddtdic3  ) 
     1120             bddtdic3(:,:,:)  = 0.0 !!  
     1121          ENDIF 
     1122          IF( med_diag%BDDTDIFE3%dgsave ) THEN 
     1123             CALL wrk_alloc( jpi, jpj, jpk, bddtdife3 ) 
     1124             bddtdife3(:,:,:) = 0.0 !!  
     1125          ENDIF 
     1126          IF( med_diag%BDDTDIN3%dgsave  ) THEN 
     1127             CALL wrk_alloc( jpi, jpj, jpk, bddtdin3  ) 
     1128             bddtdin3(:,:,:)  = 0.0 !!  
     1129          ENDIF 
     1130          IF( med_diag%BDDTDISI3%dgsave ) THEN 
     1131             CALL wrk_alloc( jpi, jpj, jpk, bddtdisi3 ) 
     1132             bddtdisi3(:,:,:) = 0.0 !!  
     1133          ENDIF 
     1134          IF( med_diag%FD_NIT3%dgsave   ) THEN 
     1135             CALL wrk_alloc( jpi, jpj, jpk, fd_nit3   ) 
     1136             fd_nit3(:,:,:)   = 0.0 !!  
     1137          ENDIF 
     1138          IF( med_diag%FD_SIL3%dgsave   ) THEN 
     1139             CALL wrk_alloc( jpi, jpj, jpk, fd_sil3   ) 
     1140             fd_sil3(:,:,:)   = 0.0 !!  
     1141          ENDIF 
     1142          IF( med_diag%FD_CAR3%dgsave   ) THEN 
     1143             CALL wrk_alloc( jpi, jpj, jpk, fd_car3   ) 
     1144             fd_car3(:,:,:)   = 0.0 !!  
     1145          ENDIF 
     1146          IF( med_diag%FD_CAL3%dgsave   ) THEN 
     1147             CALL wrk_alloc( jpi, jpj, jpk, fd_cal3   ) 
     1148             fd_cal3(:,:,:)   = 0.0 !!  
     1149          ENDIF 
     1150          IF( med_diag%DCALC3%dgsave    ) THEN 
     1151             CALL wrk_alloc( jpi, jpj, jpk, dcalc3    ) 
     1152             dcalc3(:,:,: )   = 0.0 !!  
     1153          ENDIF 
     1154          IF( med_diag%EXPC3%dgsave     ) THEN 
     1155             CALL wrk_alloc( jpi, jpj, jpk, expc3   ) 
     1156             expc3(:,:,: )    = 0.0 !!  
     1157          ENDIF 
     1158          IF( med_diag%EXPN3%dgsave     ) THEN 
     1159             CALL wrk_alloc( jpi, jpj, jpk, expn3   ) 
     1160             expn3(:,:,: )    = 0.0 !!  
     1161          ENDIF 
     1162          IF( med_diag%FEDISS3%dgsave   ) THEN 
     1163             CALL wrk_alloc( jpi, jpj, jpk, fediss3   ) 
     1164             fediss3(:,:,: )  = 0.0 !!  
     1165          ENDIF 
     1166          IF( med_diag%FESCAV3%dgsave   ) THEN 
     1167             CALL wrk_alloc( jpi, jpj, jpk, fescav3   ) 
     1168             fescav3(:,:,: )  = 0.0 !!  
     1169          ENDIF 
     1170          IF( med_diag%MIGRAZP3%dgsave   ) THEN 
     1171             CALL wrk_alloc( jpi, jpj, jpk, migrazp3  ) 
     1172             migrazp3(:,:,: )  = 0.0 !!  
     1173          ENDIF 
     1174          IF( med_diag%MIGRAZD3%dgsave   ) THEN 
     1175             CALL wrk_alloc( jpi, jpj, jpk, migrazd3  ) 
     1176             migrazd3(:,:,: )  = 0.0 !!  
     1177          ENDIF 
     1178          IF( med_diag%MEGRAZP3%dgsave   ) THEN 
     1179             CALL wrk_alloc( jpi, jpj, jpk, megrazp3  ) 
     1180             megrazp3(:,:,: )  = 0.0 !!  
     1181          ENDIF 
     1182          IF( med_diag%MEGRAZD3%dgsave   ) THEN 
     1183             CALL wrk_alloc( jpi, jpj, jpk, megrazd3  ) 
     1184             megrazd3(:,:,: )  = 0.0 !!  
     1185          ENDIF 
     1186          IF( med_diag%MEGRAZZ3%dgsave   ) THEN 
     1187             CALL wrk_alloc( jpi, jpj, jpk, megrazz3  ) 
     1188             megrazz3(:,:,: )  = 0.0 !!  
     1189          ENDIF 
     1190          IF( med_diag%O2SAT3%dgsave     ) THEN 
     1191             CALL wrk_alloc( jpi, jpj, jpk, o2sat3    ) 
     1192             o2sat3(:,:,: )    = 0.0 !!  
     1193          ENDIF 
     1194          IF( med_diag%PBSI3%dgsave      ) THEN 
     1195             CALL wrk_alloc( jpi, jpj, jpk, pbsi3     ) 
     1196             pbsi3(:,:,: )     = 0.0 !!  
     1197          ENDIF 
     1198          IF( med_diag%PCAL3%dgsave      ) THEN 
     1199             CALL wrk_alloc( jpi, jpj, jpk, pcal3     ) 
     1200             pcal3(:,:,: )     = 0.0 !!  
     1201          ENDIF 
     1202          IF( med_diag%REMOC3%dgsave     ) THEN 
     1203             CALL wrk_alloc( jpi, jpj, jpk, remoc3    ) 
     1204             remoc3(:,:,: )    = 0.0 !!  
     1205          ENDIF 
     1206          IF( med_diag%PNLIMJ3%dgsave    ) THEN 
     1207             CALL wrk_alloc( jpi, jpj, jpk, pnlimj3   ) 
     1208             pnlimj3(:,:,: )   = 0.0 !!  
     1209          ENDIF 
     1210          IF( med_diag%PNLIMN3%dgsave    ) THEN 
     1211             CALL wrk_alloc( jpi, jpj, jpk, pnlimn3   ) 
     1212             pnlimn3(:,:,: )   = 0.0 !!  
     1213          ENDIF 
     1214          IF( med_diag%PNLIMFE3%dgsave   ) THEN 
     1215             CALL wrk_alloc( jpi, jpj, jpk, pnlimfe3  ) 
     1216             pnlimfe3(:,:,: )  = 0.0 !!  
     1217          ENDIF 
     1218          IF( med_diag%PDLIMJ3%dgsave    ) THEN 
     1219             CALL wrk_alloc( jpi, jpj, jpk, pdlimj3   ) 
     1220             pdlimj3(:,:,: )   = 0.0 !!  
     1221          ENDIF 
     1222          IF( med_diag%PDLIMN3%dgsave    ) THEN 
     1223             CALL wrk_alloc( jpi, jpj, jpk, pdlimn3   ) 
     1224             pdlimn3(:,:,: )   = 0.0 !!  
     1225          ENDIF 
     1226          IF( med_diag%PDLIMFE3%dgsave   ) THEN 
     1227             CALL wrk_alloc( jpi, jpj, jpk, pdlimfe3  ) 
     1228             pdlimfe3(:,:,: )  = 0.0 !!  
     1229          ENDIF 
     1230          IF( med_diag%PDLIMSI3%dgsave   ) THEN 
     1231             CALL wrk_alloc( jpi, jpj, jpk, pdlimsi3  ) 
     1232             pdlimsi3(:,:,: )  = 0.0 !!  
     1233          ENDIF 
     1234 
     1235       ENDIF 
     1236       !! lk_iomput                                    
    5691237       !! 
    570        CALL wrk_alloc( jpi, jpj,      zw2d ) 
    571        zw2d(:,:)      = 0.0   !! 
    572        IF ( med_diag%PRN%dgsave ) THEN 
    573           CALL wrk_alloc( jpi, jpj,   fprn2d    ) 
    574           fprn2d(:,:)      = 0.0 !! 
    575        ENDIF 
    576        IF ( med_diag%MPN%dgsave ) THEN 
    577           CALL wrk_alloc( jpi, jpj,   fdpn2d    ) 
    578           fdpn2d(:,:)      = 0.0 !! 
    579        ENDIF 
    580        IF ( med_diag%PRD%dgsave ) THEN 
    581           CALL wrk_alloc( jpi, jpj,   fprd2d    ) 
    582           fprd2d(:,:)      = 0.0 !! 
    583        ENDIF 
    584        IF( med_diag%MPD%dgsave ) THEN 
    585           CALL wrk_alloc( jpi, jpj,   fdpd2d    ) 
    586           fdpd2d(:,:)      = 0.0 !! 
    587        ENDIF 
    588        IF( med_diag%OPAL%dgsave ) THEN 
    589           CALL wrk_alloc( jpi, jpj,   fprds2d    ) 
    590           fprds2d(:,:)      = 0.0 !! 
    591        ENDIF 
    592        IF( med_diag%OPALDISS%dgsave ) THEN 
    593           CALL wrk_alloc( jpi, jpj,   fsdiss2d    ) 
    594           fsdiss2d(:,:)      = 0.0 !! 
    595        ENDIF 
    596        IF( med_diag%GMIPn%dgsave ) THEN 
    597           CALL wrk_alloc( jpi, jpj,   fgmipn2d    ) 
    598           fgmipn2d(:,:)      = 0.0 !! 
    599        ENDIF 
    600        IF( med_diag%GMID%dgsave ) THEN 
    601           CALL wrk_alloc( jpi, jpj,   fgmid2d    ) 
    602           fgmid2d(:,:)      = 0.0 !! 
    603        ENDIF 
    604        IF( med_diag%MZMI%dgsave ) THEN 
    605           CALL wrk_alloc( jpi, jpj,   fdzmi2d    ) 
    606           fdzmi2d(:,:)      = 0.0 !! 
    607        ENDIF 
    608        IF( med_diag%GMEPN%dgsave ) THEN 
    609           CALL wrk_alloc( jpi, jpj,   fgmepn2d    ) 
    610           fgmepn2d(:,:)      = 0.0 !! 
    611        ENDIF 
    612        IF( med_diag%GMEPD%dgsave ) THEN 
    613           CALL wrk_alloc( jpi, jpj,   fgmepd2d    ) 
    614           fgmepd2d(:,:)      = 0.0 !! 
    615        ENDIF 
    616        IF( med_diag%GMEZMI%dgsave ) THEN 
    617           CALL wrk_alloc( jpi, jpj,   fgmezmi2d    ) 
    618           fgmezmi2d(:,:)      = 0.0 !! 
    619        ENDIF 
    620        IF( med_diag%GMED%dgsave ) THEN 
    621           CALL wrk_alloc( jpi, jpj,   fgmed2d    ) 
    622           fgmed2d(:,:)      = 0.0 !! 
    623        ENDIF 
    624        IF( med_diag%MZME%dgsave ) THEN 
    625           CALL wrk_alloc( jpi, jpj,   fdzme2d    ) 
    626           fdzme2d(:,:)      = 0.0 !! 
    627        ENDIF 
    628        IF( med_diag%DETN%dgsave ) THEN 
    629           CALL wrk_alloc( jpi, jpj,   fslown2d    ) 
    630           fslown2d(:,:)      = 0.0 !! 
    631        ENDIF 
    632        IF( med_diag%MDET%dgsave ) THEN 
    633           CALL wrk_alloc( jpi, jpj,   fdd2d    ) 
    634           fdd2d(:,:)      = 0.0 !! 
    635        ENDIF 
    636        IF( med_diag%AEOLIAN%dgsave ) THEN 
    637           CALL wrk_alloc( jpi, jpj,   ffetop2d    ) 
    638           ffetop2d(:,:)      = 0.0 !! 
    639        ENDIF 
    640        IF( med_diag%BENTHIC%dgsave ) THEN 
    641           CALL wrk_alloc( jpi, jpj,    ffebot2d   ) 
    642           ffebot2d(:,:)      = 0.0 !! 
    643        ENDIF 
    644        IF( med_diag%SCAVENGE%dgsave ) THEN 
    645           CALL wrk_alloc( jpi, jpj,   ffescav2d    ) 
    646           ffescav2d(:,:)      = 0.0 !! 
    647        ENDIF 
    648        IF( med_diag%PN_JLIM%dgsave ) THEN 
    649           CALL wrk_alloc( jpi, jpj,   fjln2d    ) 
    650           fjln2d(:,:)      = 0.0 !! 
    651        ENDIF 
    652        IF( med_diag%PN_NLIM%dgsave ) THEN 
    653           CALL wrk_alloc( jpi, jpj,   fnln2d    ) 
    654           fnln2d(:,:)      = 0.0 !! 
    655        ENDIF 
    656        IF( med_diag%PN_FELIM%dgsave ) THEN 
    657           CALL wrk_alloc( jpi, jpj,   ffln2d    ) 
    658           ffln2d(:,:)      = 0.0 !! 
    659        ENDIF 
    660        IF( med_diag%PD_JLIM%dgsave ) THEN 
    661           CALL wrk_alloc( jpi, jpj,   fjld2d    ) 
    662           fjld2d(:,:)      = 0.0 !! 
    663        ENDIF 
    664        IF( med_diag%PD_NLIM%dgsave ) THEN 
    665           CALL wrk_alloc( jpi, jpj,   fnld2d    ) 
    666           fnld2d(:,:)      = 0.0 !! 
    667        ENDIF 
    668        IF( med_diag%PD_FELIM%dgsave ) THEN 
    669           CALL wrk_alloc( jpi, jpj,   ffld2d    ) 
    670           ffld2d(:,:)      = 0.0 !! 
    671        ENDIF 
    672        IF( med_diag%PD_SILIM%dgsave ) THEN 
    673           CALL wrk_alloc( jpi, jpj,   fsld2d2    ) 
    674           fsld2d2(:,:)      = 0.0 !! 
    675        ENDIF 
    676        IF( med_diag%PDSILIM2%dgsave ) THEN 
    677           CALL wrk_alloc( jpi, jpj,   fsld2d    ) 
    678           fsld2d(:,:)      = 0.0 !! 
    679        ENDIF 
    680        !! 
    681        !! skip SDT_XXXX diagnostics here 
    682        !! 
    683        IF( med_diag%TOTREG_N%dgsave ) THEN 
    684           CALL wrk_alloc( jpi, jpj,   fregen2d    ) 
    685           fregen2d(:,:)      = 0.0 !! 
    686        ENDIF 
    687        IF( med_diag%TOTRG_SI%dgsave ) THEN 
    688           CALL wrk_alloc( jpi, jpj,   fregensi2d    ) 
    689           fregensi2d(:,:)      = 0.0 !! 
    690        ENDIF 
    691        !! 
    692        !! skip REG_XXXX diagnostics here 
    693        !! 
    694        IF( med_diag%FASTN%dgsave ) THEN 
    695           CALL wrk_alloc( jpi, jpj,   ftempn2d    ) 
    696           ftempn2d(:,:)      = 0.0 !! 
    697        ENDIF 
    698        IF( med_diag%FASTSI%dgsave ) THEN 
    699           CALL wrk_alloc( jpi, jpj,   ftempsi2d    ) 
    700           ftempsi2d(:,:)      = 0.0 !! 
    701        ENDIF 
    702        IF( med_diag%FASTFE%dgsave ) THEN 
    703           CALL wrk_alloc( jpi, jpj,  ftempfe2d     ) 
    704           ftempfe2d(:,:)      = 0.0 !! 
    705        ENDIF 
    706        IF( med_diag%FASTC%dgsave ) THEN 
    707           CALL wrk_alloc( jpi, jpj,  ftempc2d     ) 
    708           ftempc2d(:,:)      = 0.0 !! 
    709        ENDIF 
    710        IF( med_diag%FASTCA%dgsave ) THEN 
    711           CALL wrk_alloc( jpi, jpj,   ftempca2d    ) 
    712           ftempca2d(:,:)      = 0.0 !! 
    713        ENDIF 
    714        !! 
    715        !! skip FDT_XXXX, RG_XXXXF, FDS_XXXX, RGS_XXXXF diagnostics here 
    716        !! 
    717        IF( med_diag%REMINN%dgsave ) THEN 
    718           CALL wrk_alloc( jpi, jpj,    freminn2d   ) 
    719           freminn2d(:,:)      = 0.0 !! 
    720        ENDIF 
    721        IF( med_diag%REMINSI%dgsave ) THEN 
    722           CALL wrk_alloc( jpi, jpj,    freminsi2d   ) 
    723           freminsi2d(:,:)      = 0.0 !! 
    724        ENDIF 
    725        IF( med_diag%REMINFE%dgsave ) THEN 
    726           CALL wrk_alloc( jpi, jpj,    freminfe2d   ) 
    727           freminfe2d(:,:)      = 0.0 !! 
    728        ENDIF 
    729        IF( med_diag%REMINC%dgsave ) THEN 
    730           CALL wrk_alloc( jpi, jpj,   freminc2d    ) 
    731           freminc2d(:,:)      = 0.0 !!  
    732        ENDIF 
    733        IF( med_diag%REMINCA%dgsave ) THEN 
    734           CALL wrk_alloc( jpi, jpj,   freminca2d    ) 
    735           freminca2d(:,:)      = 0.0 !! 
    736        ENDIF 
    737 # if defined key_roam 
    738        !! 
    739        !! skip SEAFLRXX, MED_XXXX, INTFLX_XX, INT_XX, ML_XXX, OCAL_XXX, FE_XXXX, MED_XZE, WIND diagnostics here 
    740        !! 
    741        IF( med_diag%RR_0100%dgsave ) THEN 
    742           CALL wrk_alloc( jpi, jpj,    ffastca2d   ) 
    743           ffastca2d(:,:)      = 0.0 !! 
    744        ENDIF 
    745  
    746        IF( med_diag%ATM_PCO2%dgsave ) THEN 
    747           CALL wrk_alloc( jpi, jpj,    f_pco2a2d   ) 
    748           f_pco2a2d(:,:)      = 0.0 !! 
    749        ENDIF 
    750        !! 
    751        !! skip OCN_PH diagnostic here 
    752        !! 
    753        IF( med_diag%OCN_PCO2%dgsave ) THEN 
    754           CALL wrk_alloc( jpi, jpj,    f_pco2w2d   ) 
    755           f_pco2w2d(:,:)      = 0.0 !! 
    756        ENDIF 
    757        !! 
    758        !! skip OCNH2CO3, OCN_HCO3, OCN_CO3 diagnostics here 
    759        !! 
    760        IF( med_diag%CO2FLUX%dgsave ) THEN 
    761           CALL wrk_alloc( jpi, jpj,   f_co2flux2d    ) 
    762           f_co2flux2d(:,:)      = 0.0 !! 
    763        ENDIF 
    764        !! 
    765        !! skip OM_XXX diagnostics here 
    766        !! 
    767        IF( med_diag%TCO2%dgsave ) THEN 
    768           CALL wrk_alloc( jpi, jpj,   f_TDIC2d    ) 
    769           f_TDIC2d(:,:)      = 0.0 !! 
    770        ENDIF 
    771        IF( med_diag%TALK%dgsave ) THEN 
    772           CALL wrk_alloc( jpi, jpj,    f_TALK2d   ) 
    773           f_TALK2d(:,:)      = 0.0 !! 
    774        ENDIF 
    775        IF( med_diag%KW660%dgsave ) THEN 
    776           CALL wrk_alloc( jpi, jpj,    f_kw6602d   ) 
    777           f_kw6602d(:,:)      = 0.0 !! 
    778        ENDIF 
    779        IF( med_diag%ATM_PP0%dgsave ) THEN 
    780           CALL wrk_alloc( jpi, jpj,    f_pp02d   ) 
    781           f_pp02d(:,:)      = 0.0 !! 
    782        ENDIF 
    783        IF( med_diag%O2FLUX%dgsave ) THEN 
    784           CALL wrk_alloc( jpi, jpj,   f_o2flux2d    ) 
    785           f_o2flux2d(:,:)      = 0.0 !! 
    786        ENDIF 
    787        IF( med_diag%O2SAT%dgsave ) THEN 
    788           CALL wrk_alloc( jpi, jpj,    f_o2sat2d   ) 
    789           f_o2sat2d(:,:)      = 0.0 !! 
    790        ENDIF 
    791        !! 
    792        !! skip XXX_CCD diagnostics here 
    793        !!  
    794        IF( med_diag%SFR_OCAL%dgsave ) THEN 
    795           CALL wrk_alloc( jpi, jpj,    sfr_ocal2d  ) 
    796           sfr_ocal2d(:,:)      = 0.0 !! 
    797        ENDIF 
    798        IF( med_diag%SFR_OARG%dgsave ) THEN 
    799           CALL wrk_alloc( jpi, jpj,    sfr_oarg2d  ) 
    800           sfr_oarg2d(:,:)      = 0.0 !! 
    801        ENDIF 
    802        !! 
    803        !! skip XX_PROD, XX_CONS, O2_ANOX, RR_XXXX diagnostics here 
    804        !!  
    805        IF( med_diag%IBEN_N%dgsave ) THEN 
    806           CALL wrk_alloc( jpi, jpj,    iben_n2d  ) 
    807           iben_n2d(:,:)      = 0.0 !! 
    808        ENDIF 
    809        IF( med_diag%IBEN_FE%dgsave ) THEN 
    810           CALL wrk_alloc( jpi, jpj,   iben_fe2d   ) 
    811           iben_fe2d(:,:)      = 0.0 !! 
    812        ENDIF 
    813        IF( med_diag%IBEN_C%dgsave ) THEN 
    814           CALL wrk_alloc( jpi, jpj,   iben_c2d   ) 
    815           iben_c2d(:,:)      = 0.0 !! 
    816        ENDIF 
    817        IF( med_diag%IBEN_SI%dgsave ) THEN 
    818           CALL wrk_alloc( jpi, jpj,   iben_si2d   ) 
    819           iben_si2d(:,:)      = 0.0 !! 
    820        ENDIF 
    821        IF( med_diag%IBEN_CA%dgsave ) THEN 
    822           CALL wrk_alloc( jpi, jpj,   iben_ca2d   ) 
    823           iben_ca2d(:,:)      = 0.0 !! 
    824        ENDIF 
    825        IF( med_diag%OBEN_N%dgsave ) THEN 
    826           CALL wrk_alloc( jpi, jpj,    oben_n2d  ) 
    827           oben_n2d(:,:)      = 0.0 !! 
    828        ENDIF 
    829        IF( med_diag%OBEN_FE%dgsave ) THEN 
    830           CALL wrk_alloc( jpi, jpj,    oben_fe2d  ) 
    831           oben_fe2d(:,:)      = 0.0 !! 
    832        ENDIF 
    833        IF( med_diag%OBEN_C%dgsave ) THEN 
    834           CALL wrk_alloc( jpi, jpj,    oben_c2d  ) 
    835           oben_c2d(:,:)      = 0.0 !! 
    836        ENDIF 
    837        IF( med_diag%OBEN_SI%dgsave ) THEN 
    838           CALL wrk_alloc( jpi, jpj,    oben_si2d  ) 
    839           oben_si2d(:,:)      = 0.0 !! 
    840        ENDIF 
    841        IF( med_diag%OBEN_CA%dgsave ) THEN 
    842           CALL wrk_alloc( jpi, jpj,    oben_ca2d  ) 
    843           oben_ca2d(:,:)      = 0.0 !! 
    844        ENDIF 
    845        !! 
    846        !! skip BEN_XX diagnostics here 
    847        !! 
    848        IF( med_diag%RIV_N%dgsave ) THEN 
    849           CALL wrk_alloc( jpi, jpj,    rivn2d   ) 
    850           rivn2d(:,:)      = 0.0 !! 
    851        ENDIF 
    852        IF( med_diag%RIV_SI%dgsave ) THEN 
    853           CALL wrk_alloc( jpi, jpj,    rivsi2d   ) 
    854           rivsi2d(:,:)      = 0.0 !! 
    855        ENDIF 
    856        IF( med_diag%RIV_C%dgsave ) THEN 
    857           CALL wrk_alloc( jpi, jpj,   rivc2d    ) 
    858           rivc2d(:,:)      = 0.0 !! 
    859        ENDIF 
    860        IF( med_diag%RIV_ALK%dgsave ) THEN 
    861           CALL wrk_alloc( jpi, jpj,    rivalk2d   ) 
    862           rivalk2d(:,:)      = 0.0 !! 
    863        ENDIF 
    864        IF( med_diag%DETC%dgsave ) THEN 
    865           CALL wrk_alloc( jpi, jpj,    fslowc2d   ) 
    866           fslowc2d(:,:)      = 0.0 !! 
    867        ENDIF 
    868        !! 
    869        !! skip SDC_XXXX, INVTXXX diagnostics here 
    870        !! 
    871        IF( med_diag%LYSO_CA%dgsave ) THEN 
    872           CALL wrk_alloc( jpi, jpj,    lyso_ca2d  ) 
    873           lyso_ca2d(:,:)      = 0.0 !! 
    874        ENDIF 
    875        !! 
    876        !! skip COM_RESP diagnostic here 
    877        !! 
    878        IF( med_diag%PN_LLOSS%dgsave ) THEN 
    879           CALL wrk_alloc( jpi, jpj,    fdpn22d   ) 
    880           fdpn22d(:,:)      = 0.0 !! 
    881        ENDIF 
    882        IF( med_diag%PD_LLOSS%dgsave ) THEN 
    883           CALL wrk_alloc( jpi, jpj,    fdpd22d   ) 
    884           fdpd22d(:,:)      = 0.0 !! 
    885        ENDIF 
    886        IF( med_diag%ZI_LLOSS%dgsave ) THEN 
    887           CALL wrk_alloc( jpi, jpj,    fdzmi22d   ) 
    888           fdzmi22d(:,:)      = 0.0 !! 
    889        ENDIF 
    890        IF( med_diag%ZE_LLOSS%dgsave ) THEN 
    891           CALL wrk_alloc( jpi, jpj,   fdzme22d    ) 
    892           fdzme22d(:,:)      = 0.0 !! 
    893        ENDIF 
    894        IF( med_diag%ZI_MES_N%dgsave ) THEN    
    895           CALL wrk_alloc( jpi, jpj,   zimesn2d    ) 
    896           zimesn2d(:,:)      = 0.0 !! 
    897        ENDIF 
    898        IF( med_diag%ZI_MES_D%dgsave ) THEN 
    899           CALL wrk_alloc( jpi, jpj,    zimesd2d   ) 
    900           zimesd2d(:,:)      = 0.0 !! 
    901        ENDIF 
    902        IF( med_diag%ZI_MES_C%dgsave ) THEN 
    903           CALL wrk_alloc( jpi, jpj,    zimesc2d   ) 
    904           zimesc2d(:,:)      = 0.0 !! 
    905        ENDIF 
    906        IF( med_diag%ZI_MESDC%dgsave ) THEN 
    907           CALL wrk_alloc( jpi, jpj,    zimesdc2d   ) 
    908           zimesdc2d(:,:)      = 0.0 !! 
    909        ENDIF 
    910        IF( med_diag%ZI_EXCR%dgsave ) THEN 
    911           CALL wrk_alloc( jpi, jpj,     ziexcr2d  ) 
    912           ziexcr2d(:,:)      = 0.0 !! 
    913        ENDIF 
    914        IF( med_diag%ZI_RESP%dgsave ) THEN 
    915           CALL wrk_alloc( jpi, jpj,    ziresp2d   ) 
    916           ziresp2d(:,:)      = 0.0 !! 
    917        ENDIF 
    918        IF( med_diag%ZI_GROW%dgsave ) THEN 
    919           CALL wrk_alloc( jpi, jpj,    zigrow2d   ) 
    920           zigrow2d(:,:)      = 0.0 !! 
    921        ENDIF 
    922        IF( med_diag%ZE_MES_N%dgsave ) THEN 
    923           CALL wrk_alloc( jpi, jpj,   zemesn2d    ) 
    924           zemesn2d(:,:)      = 0.0 !! 
    925        ENDIF 
    926        IF( med_diag%ZE_MES_D%dgsave ) THEN 
    927           CALL wrk_alloc( jpi, jpj,    zemesd2d   ) 
    928           zemesd2d(:,:)      = 0.0 !! 
    929        ENDIF 
    930        IF( med_diag%ZE_MES_C%dgsave ) THEN 
    931           CALL wrk_alloc( jpi, jpj,    zemesc2d   ) 
    932           zemesc2d(:,:)      = 0.0 !! 
    933        ENDIF 
    934        IF( med_diag%ZE_MESDC%dgsave ) THEN 
    935           CALL wrk_alloc( jpi, jpj,    zemesdc2d   ) 
    936           zemesdc2d(:,:)      = 0.0 !! 
    937        ENDIF 
    938        IF( med_diag%ZE_EXCR%dgsave ) THEN 
    939           CALL wrk_alloc( jpi, jpj,    zeexcr2d   ) 
    940           zeexcr2d(:,:)      = 0.0 !! 
    941        ENDIF 
    942        IF( med_diag%ZE_RESP%dgsave ) THEN 
    943           CALL wrk_alloc( jpi, jpj,    zeresp2d   ) 
    944           zeresp2d(:,:)      = 0.0 !! 
    945        ENDIF 
    946        IF( med_diag%ZE_GROW%dgsave ) THEN 
    947           CALL wrk_alloc( jpi, jpj,    zegrow2d   ) 
    948           zegrow2d(:,:)      = 0.0 !! 
    949        ENDIF 
    950        IF( med_diag%MDETC%dgsave ) THEN 
    951           CALL wrk_alloc( jpi, jpj,   mdetc2d    ) 
    952           mdetc2d(:,:)      = 0.0 !! 
    953        ENDIF 
    954        IF( med_diag%GMIDC%dgsave ) THEN 
    955           CALL wrk_alloc( jpi, jpj,    gmidc2d   ) 
    956           gmidc2d(:,:)      = 0.0 !! 
    957        ENDIF 
    958        IF( med_diag%GMEDC%dgsave ) THEN 
    959           CALL wrk_alloc( jpi, jpj,    gmedc2d   ) 
    960           gmedc2d(:,:)      = 0.0 !! 
    961        ENDIF 
    962        !! 
    963        !! skip INT_XXX diagnostics here 
    964        !! 
    965        IF (jdms .eq. 1) THEN 
    966           IF( med_diag%DMS_SURF%dgsave ) THEN 
    967              CALL wrk_alloc( jpi, jpj,   dms_surf2d    ) 
    968              dms_surf2d(:,:)      = 0.0 !! 
    969           ENDIF 
    970           IF( med_diag%DMS_ANDR%dgsave ) THEN 
    971              CALL wrk_alloc( jpi, jpj,   dms_andr2d    ) 
    972              dms_andr2d(:,:)      = 0.0 !! 
    973           ENDIF 
    974           IF( med_diag%DMS_SIMO%dgsave ) THEN 
    975              CALL wrk_alloc( jpi, jpj,  dms_simo2d     ) 
    976              dms_simo2d(:,:)      = 0.0 !! 
    977           ENDIF 
    978           IF( med_diag%DMS_ARAN%dgsave ) THEN 
    979              CALL wrk_alloc( jpi, jpj,   dms_aran2d    ) 
    980              dms_aran2d(:,:)      = 0.0 !! 
    981           ENDIF 
    982           IF( med_diag%DMS_HALL%dgsave ) THEN 
    983              CALL wrk_alloc( jpi, jpj,   dms_hall2d    ) 
    984              dms_hall2d(:,:)      = 0.0 !! 
    985           ENDIF 
    986        ENDIF 
    987        !! 
    988        !! AXY (24/11/16): extra MOCSY diagnostics, 2D 
    989        IF( med_diag%ATM_XCO2%dgsave ) THEN 
    990           CALL wrk_alloc( jpi, jpj, f_xco2a_2d      ) 
    991           f_xco2a_2d(:,:)      = 0.0 !! 
    992        ENDIF 
    993        IF( med_diag%OCN_FCO2%dgsave ) THEN 
    994           CALL wrk_alloc( jpi, jpj, f_fco2w_2d      ) 
    995           f_fco2w_2d(:,:)      = 0.0 !! 
    996        ENDIF 
    997        IF( med_diag%ATM_FCO2%dgsave ) THEN 
    998           CALL wrk_alloc( jpi, jpj, f_fco2a_2d      ) 
    999           f_fco2a_2d(:,:)      = 0.0 !! 
    1000        ENDIF 
    1001        IF( med_diag%OCN_RHOSW%dgsave ) THEN 
    1002           CALL wrk_alloc( jpi, jpj, f_ocnrhosw_2d   ) 
    1003           f_ocnrhosw_2d(:,:)      = 0.0 !! 
    1004        ENDIF 
    1005        IF( med_diag%OCN_SCHCO2%dgsave ) THEN 
    1006           CALL wrk_alloc( jpi, jpj, f_ocnschco2_2d  ) 
    1007           f_ocnschco2_2d(:,:)      = 0.0 !! 
    1008        ENDIF 
    1009        IF( med_diag%OCN_KWCO2%dgsave ) THEN 
    1010           CALL wrk_alloc( jpi, jpj, f_ocnkwco2_2d   ) 
    1011           f_ocnkwco2_2d(:,:)      = 0.0 !! 
    1012        ENDIF 
    1013        IF( med_diag%OCN_K0%dgsave ) THEN 
    1014           CALL wrk_alloc( jpi, jpj, f_ocnk0_2d      ) 
    1015           f_ocnk0_2d(:,:)      = 0.0 !! 
    1016        ENDIF 
    1017        IF( med_diag%CO2STARAIR%dgsave ) THEN 
    1018           CALL wrk_alloc( jpi, jpj, f_co2starair_2d ) 
    1019           f_co2starair_2d(:,:)      = 0.0 !! 
    1020        ENDIF 
    1021        IF( med_diag%OCN_DPCO2%dgsave ) THEN 
    1022           CALL wrk_alloc( jpi, jpj, f_ocndpco2_2d   ) 
    1023           f_ocndpco2_2d(:,:)      = 0.0 !! 
    1024        ENDIF 
    1025 # endif   
    1026        IF( med_diag%TPP3%dgsave ) THEN 
    1027           CALL wrk_alloc( jpi, jpj, jpk,       tpp3d ) 
    1028           tpp3d(:,:,:)      = 0.0 !!  
    1029        ENDIF 
    1030        IF( med_diag%DETFLUX3%dgsave ) THEN 
    1031           CALL wrk_alloc( jpi, jpj, jpk,        detflux3d ) 
    1032           detflux3d(:,:,:)      = 0.0 !!  
    1033        ENDIF 
    1034        IF( med_diag%REMIN3N%dgsave ) THEN 
    1035           CALL wrk_alloc( jpi, jpj, jpk,        remin3dn ) 
    1036           remin3dn(:,:,:)      = 0.0 !!  
    1037        ENDIF 
    1038        !!  
    1039        !! AXY (10/11/16): CMIP6 diagnostics, 2D 
    1040        !! JPALM -- 17-11-16 -- put fgco2 alloc out of diag request 
    1041        !!                   needed for coupling/passed through restart 
    1042        !! IF( med_diag%FGCO2%dgsave ) THEN 
    1043        CALL wrk_alloc( jpi, jpj,   fgco2    ) 
    1044        fgco2(:,:)      = 0.0  !! 
    1045        !! ENDIF 
    1046        IF( med_diag%INTDISSIC%dgsave ) THEN 
    1047           CALL wrk_alloc( jpi, jpj,   intdissic    ) 
    1048           intdissic(:,:)  = 0.0 !! 
    1049        ENDIF 
    1050        IF( med_diag%INTDISSIN%dgsave ) THEN 
    1051           CALL wrk_alloc( jpi, jpj,   intdissin    ) 
    1052           intdissin(:,:)  = 0.0 !! 
    1053        ENDIF 
    1054        IF( med_diag%INTDISSISI%dgsave ) THEN 
    1055           CALL wrk_alloc( jpi, jpj,   intdissisi    ) 
    1056           intdissisi(:,:)  = 0.0 !! 
    1057        ENDIF 
    1058        IF( med_diag%INTTALK%dgsave ) THEN 
    1059           CALL wrk_alloc( jpi, jpj,   inttalk    ) 
    1060           inttalk(:,:)  = 0.0 !! 
    1061        ENDIF 
    1062        IF( med_diag%O2min%dgsave ) THEN 
    1063           CALL wrk_alloc( jpi, jpj,   o2min    ) 
    1064           o2min(:,:)  = 1.e3  !! set to high value as we're looking for min(o2) 
    1065        ENDIF 
    1066        IF( med_diag%ZO2min%dgsave ) THEN 
    1067           CALL wrk_alloc( jpi, jpj,   zo2min    ) 
    1068           zo2min(:,:)  = 0.0  !! 
    1069        ENDIF 
    1070        IF( med_diag%FBDDTALK%dgsave  ) THEN 
    1071           CALL wrk_alloc( jpi, jpj, fbddtalk  ) 
    1072           fbddtalk(:,:)  = 0.0 !!  
    1073        ENDIF 
    1074        IF( med_diag%FBDDTDIC%dgsave  ) THEN 
    1075           CALL wrk_alloc( jpi, jpj, fbddtdic  ) 
    1076           fbddtdic(:,:)  = 0.0 !!  
    1077        ENDIF 
    1078        IF( med_diag%FBDDTDIFE%dgsave ) THEN 
    1079           CALL wrk_alloc( jpi, jpj, fbddtdife ) 
    1080           fbddtdife(:,:) = 0.0 !!  
    1081        ENDIF 
    1082        IF( med_diag%FBDDTDIN%dgsave  ) THEN 
    1083           CALL wrk_alloc( jpi, jpj, fbddtdin  ) 
    1084           fbddtdin(:,:)  = 0.0 !!  
    1085        ENDIF 
    1086        IF( med_diag%FBDDTDISI%dgsave ) THEN 
    1087           CALL wrk_alloc( jpi, jpj, fbddtdisi ) 
    1088           fbddtdisi(:,:) = 0.0 !!  
    1089        ENDIF 
    1090        !!  
    1091        !! AXY (10/11/16): CMIP6 diagnostics, 3D 
    1092        IF( med_diag%TPPD3%dgsave     ) THEN 
    1093           CALL wrk_alloc( jpi, jpj, jpk, tppd3     ) 
    1094           tppd3(:,:,:)     = 0.0 !!  
    1095        ENDIF 
    1096        IF( med_diag%BDDTALK3%dgsave  ) THEN 
    1097           CALL wrk_alloc( jpi, jpj, jpk, bddtalk3  ) 
    1098           bddtalk3(:,:,:)  = 0.0 !!  
    1099        ENDIF 
    1100        IF( med_diag%BDDTDIC3%dgsave  ) THEN 
    1101           CALL wrk_alloc( jpi, jpj, jpk, bddtdic3  ) 
    1102           bddtdic3(:,:,:)  = 0.0 !!  
    1103        ENDIF 
    1104        IF( med_diag%BDDTDIFE3%dgsave ) THEN 
    1105           CALL wrk_alloc( jpi, jpj, jpk, bddtdife3 ) 
    1106           bddtdife3(:,:,:) = 0.0 !!  
    1107        ENDIF 
    1108        IF( med_diag%BDDTDIN3%dgsave  ) THEN 
    1109           CALL wrk_alloc( jpi, jpj, jpk, bddtdin3  ) 
    1110           bddtdin3(:,:,:)  = 0.0 !!  
    1111        ENDIF 
    1112        IF( med_diag%BDDTDISI3%dgsave ) THEN 
    1113           CALL wrk_alloc( jpi, jpj, jpk, bddtdisi3 ) 
    1114           bddtdisi3(:,:,:) = 0.0 !!  
    1115        ENDIF 
    1116        IF( med_diag%FD_NIT3%dgsave   ) THEN 
    1117           CALL wrk_alloc( jpi, jpj, jpk, fd_nit3   ) 
    1118           fd_nit3(:,:,:)   = 0.0 !!  
    1119        ENDIF 
    1120        IF( med_diag%FD_SIL3%dgsave   ) THEN 
    1121           CALL wrk_alloc( jpi, jpj, jpk, fd_sil3   ) 
    1122           fd_sil3(:,:,:)   = 0.0 !!  
    1123        ENDIF 
    1124        IF( med_diag%FD_CAR3%dgsave   ) THEN 
    1125           CALL wrk_alloc( jpi, jpj, jpk, fd_car3   ) 
    1126           fd_car3(:,:,:)   = 0.0 !!  
    1127        ENDIF 
    1128        IF( med_diag%FD_CAL3%dgsave   ) THEN 
    1129           CALL wrk_alloc( jpi, jpj, jpk, fd_cal3   ) 
    1130           fd_cal3(:,:,:)   = 0.0 !!  
    1131        ENDIF 
    1132        IF( med_diag%DCALC3%dgsave    ) THEN 
    1133           CALL wrk_alloc( jpi, jpj, jpk, dcalc3    ) 
    1134           dcalc3(:,:,: )   = 0.0 !!  
    1135        ENDIF 
    1136        IF( med_diag%EXPC3%dgsave     ) THEN 
    1137           CALL wrk_alloc( jpi, jpj, jpk, expc3   ) 
    1138           expc3(:,:,: )    = 0.0 !!  
    1139        ENDIF 
    1140        IF( med_diag%EXPN3%dgsave     ) THEN 
    1141           CALL wrk_alloc( jpi, jpj, jpk, expn3   ) 
    1142           expn3(:,:,: )    = 0.0 !!  
    1143        ENDIF 
    1144        IF( med_diag%FEDISS3%dgsave   ) THEN 
    1145           CALL wrk_alloc( jpi, jpj, jpk, fediss3   ) 
    1146           fediss3(:,:,: )  = 0.0 !!  
    1147        ENDIF 
    1148        IF( med_diag%FESCAV3%dgsave   ) THEN 
    1149           CALL wrk_alloc( jpi, jpj, jpk, fescav3   ) 
    1150           fescav3(:,:,: )  = 0.0 !!  
    1151        ENDIF 
    1152        IF( med_diag%MIGRAZP3%dgsave   ) THEN 
    1153           CALL wrk_alloc( jpi, jpj, jpk, migrazp3  ) 
    1154           migrazp3(:,:,: )  = 0.0 !!  
    1155        ENDIF 
    1156        IF( med_diag%MIGRAZD3%dgsave   ) THEN 
    1157           CALL wrk_alloc( jpi, jpj, jpk, migrazd3  ) 
    1158           migrazd3(:,:,: )  = 0.0 !!  
    1159        ENDIF 
    1160        IF( med_diag%MEGRAZP3%dgsave   ) THEN 
    1161           CALL wrk_alloc( jpi, jpj, jpk, megrazp3  ) 
    1162           megrazp3(:,:,: )  = 0.0 !!  
    1163        ENDIF 
    1164        IF( med_diag%MEGRAZD3%dgsave   ) THEN 
    1165           CALL wrk_alloc( jpi, jpj, jpk, megrazd3  ) 
    1166           megrazd3(:,:,: )  = 0.0 !!  
    1167        ENDIF 
    1168        IF( med_diag%MEGRAZZ3%dgsave   ) THEN 
    1169           CALL wrk_alloc( jpi, jpj, jpk, megrazz3  ) 
    1170           megrazz3(:,:,: )  = 0.0 !!  
    1171        ENDIF 
    1172        IF( med_diag%O2SAT3%dgsave     ) THEN 
    1173           CALL wrk_alloc( jpi, jpj, jpk, o2sat3    ) 
    1174           o2sat3(:,:,: )    = 0.0 !!  
    1175        ENDIF 
    1176        IF( med_diag%PBSI3%dgsave      ) THEN 
    1177           CALL wrk_alloc( jpi, jpj, jpk, pbsi3     ) 
    1178           pbsi3(:,:,: )     = 0.0 !!  
    1179        ENDIF 
    1180        IF( med_diag%PCAL3%dgsave      ) THEN 
    1181           CALL wrk_alloc( jpi, jpj, jpk, pcal3     ) 
    1182           pcal3(:,:,: )     = 0.0 !!  
    1183        ENDIF 
    1184        IF( med_diag%REMOC3%dgsave     ) THEN 
    1185           CALL wrk_alloc( jpi, jpj, jpk, remoc3    ) 
    1186           remoc3(:,:,: )    = 0.0 !!  
    1187        ENDIF 
    1188        IF( med_diag%PNLIMJ3%dgsave    ) THEN 
    1189           CALL wrk_alloc( jpi, jpj, jpk, pnlimj3   ) 
    1190           pnlimj3(:,:,: )   = 0.0 !!  
    1191        ENDIF 
    1192        IF( med_diag%PNLIMN3%dgsave    ) THEN 
    1193           CALL wrk_alloc( jpi, jpj, jpk, pnlimn3   ) 
    1194           pnlimn3(:,:,: )   = 0.0 !!  
    1195        ENDIF 
    1196        IF( med_diag%PNLIMFE3%dgsave   ) THEN 
    1197           CALL wrk_alloc( jpi, jpj, jpk, pnlimfe3  ) 
    1198           pnlimfe3(:,:,: )  = 0.0 !!  
    1199        ENDIF 
    1200        IF( med_diag%PDLIMJ3%dgsave    ) THEN 
    1201           CALL wrk_alloc( jpi, jpj, jpk, pdlimj3   ) 
    1202           pdlimj3(:,:,: )   = 0.0 !!  
    1203        ENDIF 
    1204        IF( med_diag%PDLIMN3%dgsave    ) THEN 
    1205           CALL wrk_alloc( jpi, jpj, jpk, pdlimn3   ) 
    1206           pdlimn3(:,:,: )   = 0.0 !!  
    1207        ENDIF 
    1208        IF( med_diag%PDLIMFE3%dgsave   ) THEN 
    1209           CALL wrk_alloc( jpi, jpj, jpk, pdlimfe3  ) 
    1210           pdlimfe3(:,:,: )  = 0.0 !!  
    1211        ENDIF 
    1212        IF( med_diag%PDLIMSI3%dgsave   ) THEN 
    1213           CALL wrk_alloc( jpi, jpj, jpk, pdlimsi3  ) 
    1214           pdlimsi3(:,:,: )  = 0.0 !!  
    1215        ENDIF 
    1216     ENDIF                     !! lk_iomput                                    
    1217     !! 
    12181238# if defined key_axy_nancheck 
    1219     DO jn = 1,jptra 
    1220        fq2 = SUM(trn(:,:,:,jn)) 
    1221        if ( ieee_is_nan( fq2 ) ) then 
    1222           !! there's a NaN here 
    1223           if (lwp) write(numout,*) 'NAN detected in field', jn, 'at time', kt, 'at position:' 
    1224           DO jk = 1,jpk 
    1225              DO jj = 1,jpj 
    1226                 DO ji = 1,jpi 
    1227                    if ( ieee_is_nan( trn(ji,jj,jk,jn) ) ) then 
    1228                       if (lwp) write (numout,'(a,1pe12.2,4i6)') 'NAN-CHECK', & 
    1229                            &        tmask(ji,jj,jk), ji, jj, jk, jn 
    1230                    endif 
     1239       DO jn = 1,jptra 
     1240          !! fq0 = MINVAL(trn(:,:,:,jn)) 
     1241          !! fq1 = MAXVAL(trn(:,:,:,jn)) 
     1242          fq2 = SUM(trn(:,:,:,jn)) 
     1243          !! if (lwp) write (numout,'(a,2i6,3(1x,1pe15.5))') 'NAN-CHECK', & 
     1244          !! &        kt, jn, fq0, fq1, fq2 
     1245          !! AXY (30/01/14): much to our surprise, the next line doesn't work on HECTOR 
     1246          !!                 and has been replaced here with a specialist routine 
     1247          !! if (fq2 /= fq2 ) then 
     1248          if ( ieee_is_nan( fq2 ) ) then 
     1249             !! there's a NaN here 
     1250             if (lwp) write(numout,*) 'NAN detected in field', jn, 'at time', kt, 'at position:' 
     1251             DO jk = 1,jpk 
     1252                DO jj = 1,jpj 
     1253                   DO ji = 1,jpi 
     1254                      !! AXY (30/01/14): "isnan" problem on HECTOR 
     1255                      !! if (trn(ji,jj,jk,jn) /= trn(ji,jj,jk,jn)) then 
     1256                      if ( ieee_is_nan( trn(ji,jj,jk,jn) ) ) then 
     1257                         if (lwp) write (numout,'(a,1pe12.2,4i6)') 'NAN-CHECK', & 
     1258                         &        tmask(ji,jj,jk), ji, jj, jk, jn 
     1259                      endif 
     1260                   enddo 
    12311261                enddo 
    12321262             enddo 
    1233           enddo 
    1234           CALL ctl_stop( 'trcbio_medusa, NAN in incoming tracer field' ) 
    1235        endif 
    1236     ENDDO 
    1237     CALL flush(numout) 
     1263             CALL ctl_stop( 'trcbio_medusa, NAN in incoming tracer field' ) 
     1264          endif 
     1265       ENDDO 
     1266       CALL flush(numout) 
    12381267# endif 
    12391268 
    12401269# if defined key_debug_medusa 
    1241     IF ( lwp ) write (numout,*) 'trc_bio_medusa: variables initialised and checked' 
    1242     CALL flush(numout) 
     1270      IF (lwp) write (numout,*) 'trc_bio_medusa: variables initialised and checked' 
     1271      CALL flush(numout) 
    12431272# endif  
    12441273 
    12451274# if defined key_roam 
    1246     !!---------------------------------------------------------------------- 
    1247     !! calculate atmospheric pCO2 
    1248     !!---------------------------------------------------------------------- 
    1249     !! 
     1275      !!---------------------------------------------------------------------- 
     1276      !! calculate atmospheric pCO2 
     1277      !!---------------------------------------------------------------------- 
     1278      !! 
     1279      !! what's atmospheric pCO2 doing? (data start in 1859) 
     1280      iyr1  = nyear - 1859 + 1 
     1281      iyr2  = iyr1 + 1 
     1282      if (iyr1 .le. 1) then 
     1283         !! before 1860 
     1284         f_xco2a = hist_pco2(1) 
     1285      elseif (iyr2 .ge. 242) then 
     1286         !! after 2099 
     1287         f_xco2a = hist_pco2(242) 
     1288      else 
     1289         !! just right 
     1290         fq0 = hist_pco2(iyr1) 
     1291         fq1 = hist_pco2(iyr2) 
     1292         fq2 = real(nsec_day) / (60.0 * 60.0 * 24.0) 
     1293         !! AXY (14/06/12): tweaked to make more sense (and be correct) 
     1294#  if defined key_bs_axy_yrlen 
     1295         fq3 = (real(nday_year) - 1.0 + fq2) / 360.0  !! bugfix: for 360d year with HadGEM2-ES forcing 
     1296#  else 
     1297         fq3 = (real(nday_year) - 1.0 + fq2) / 365.0  !! original use of 365 days (not accounting for leap year or 360d year) 
     1298#  endif 
     1299         fq4 = (fq0 * (1.0 - fq3)) + (fq1 * fq3) 
     1300         f_xco2a = fq4 
     1301      endif 
    12501302#  if defined key_axy_pi_co2 
    1251     f_xco2a = 284.725         !! OCMIP pre-industrial pCO2 
    1252 #  else 
    1253     f_xco2a = 284.725         !! OCMIP pre-industrial pCO2 
     1303      f_xco2a = 284.725          !! OCMIP pre-industrial pCO2 
    12541304#  endif 
    1255     IF(lwp) WRITE(numout,*) ' MEDUSA atm pCO2  =', f_xco2a 
     1305      !! IF(lwp) WRITE(numout,*) ' MEDUSA nyear     =', nyear 
     1306      !! IF(lwp) WRITE(numout,*) ' MEDUSA nsec_day  =', real(nsec_day) 
     1307      !! IF(lwp) WRITE(numout,*) ' MEDUSA nday_year =', real(nday_year) 
     1308      !! AXY (29/01/14): remove surplus diagnostics 
     1309      !! IF(lwp) WRITE(numout,*) ' MEDUSA fq0       =', fq0 
     1310      !! IF(lwp) WRITE(numout,*) ' MEDUSA fq1       =', fq1 
     1311      !! IF(lwp) WRITE(numout,*) ' MEDUSA fq2       =', fq2 
     1312      !! IF(lwp) WRITE(numout,*) ' MEDUSA fq3       =', fq3 
     1313      IF(lwp) WRITE(numout,*) ' MEDUSA atm pCO2  =', f_xco2a 
    12561314# endif 
    12571315 
    12581316# if defined key_debug_medusa 
    1259     IF ( lwp ) write (numout,*) 'trc_bio_medusa: ready for carbonate chemistry' 
    1260     IF ( lwp ) write (numout,*) 'trc_bio_medusa: kt = ', kt 
    1261     IF ( lwp ) write (numout,*) 'trc_bio_medusa: nittrc000 = ', nittrc000 
    1262     CALL flush(numout) 
     1317      IF (lwp) write (numout,*) 'trc_bio_medusa: ready for carbonate chemistry' 
     1318      IF (lwp) write (numout,*) 'trc_bio_medusa: kt = ', kt 
     1319      IF (lwp) write (numout,*) 'trc_bio_medusa: nittrc000 = ', nittrc000 
     1320      CALL flush(numout) 
    12631321# endif  
    12641322 
    1265     !!====================================================================== 
    1266     !! AXY (07/04/17): possible subroutine block; ocean interior carbonate chemistry 
    1267     !!====================================================================== 
    12681323# if defined key_roam 
    1269     !! AXY (20/11/14): alter to call on first MEDUSA timestep and then every 
    1270     !!                 month (this is hardwired as 960 timesteps but should 
    1271     !!                 be calculated and done properly 
    1272     !! IF( kt == nit000 .or. mod(kt,1920) == 0 ) THEN 
    1273     !! IF( kt == nittrc000 .or. mod(kt,960) == 0 ) THEN  
    1274     !!============================= 
    1275     !! Jpalm -- 07-10-2016 -- need to change carb-chem frequency call : 
    1276     !!          we don't want to call on the first time-step of all run submission,  
    1277     !!          but only on the very first time-step, and then every month 
    1278     !!          So we call on nittrc000 if not restarted run,  
    1279     !!          else if one month after last call. 
    1280     !!          assume one month is 30d --> 3600*24*30 : 2592000s 
    1281     !!          try to call carb-chem at 1st month's tm-stp : x * 30d + 1*rdt(i.e: mod = rdt)    
    1282     !!          ++ need to pass carb-chem output var through restarts 
    1283     IF ( ( kt == nittrc000 .AND. .NOT.ln_rsttr ) .OR. mod(kt*rdt,2592000.) == rdt ) THEN 
    1284        !!---------------------------------------------------------------------- 
    1285        !! Calculate the carbonate chemistry for the whole ocean on the first 
    1286        !! simulation timestep and every month subsequently; the resulting 3D 
    1287        !! field of omega calcite is used to determine the depth of the CCD 
    1288        !!---------------------------------------------------------------------- 
    1289        !! 
    1290        IF(lwp) WRITE(numout,*) ' MEDUSA calculating all carbonate chemistry at kt =', kt 
    1291        CALL flush(numout) 
    1292        !! blank flags 
    1293        i2_omcal(:,:) = 0 
    1294        i2_omarg(:,:) = 0 
    1295        !! loop over 3D space 
    1296        DO jk = 1,jpk 
    1297           DO jj = 2,jpjm1 
    1298              DO ji = 2,jpim1 
    1299                 !! OPEN wet point IF..THEN loop 
    1300                 if (tmask(ji,jj,jk).eq.1) then 
    1301                    IF ( lk_oasis ) THEN 
    1302                       f_xco2a = PCO2a_in_cpl(ji,jj)   !! use 2D atm xCO2 from atm coupling 
    1303                    ENDIF 
    1304                    !! AXY (06/04/17): where am I? 
    1305                    flatx = gphit(ji,jj) 
    1306                    !! do carbonate chemistry 
    1307                    !! 
    1308                    fdep2 = fsdept(ji,jj,jk)           !! set up level midpoint 
    1309                    !! AXY (28/11/16): seafloor depth; previously mbathy(ji,jj) - 1, now mbathy(ji,jj) 
    1310                    jmbathy = mbathy(ji,jj) 
    1311                    !! 
    1312                    !! set up required state variables 
    1313                    zdic = max(0.,trn(ji,jj,jk,jpdic))        !! dissolved inorganic carbon 
    1314                    zalk = max(0.,trn(ji,jj,jk,jpalk))        !! alkalinity 
    1315                    ztmp = tsn(ji,jj,jk,jp_tem)               !! temperature 
    1316                    zsal = tsn(ji,jj,jk,jp_sal)               !! salinity 
    1317                    zsil = max(0.,trn(ji,jj,jk,jpsil))        !! silicic acid 
    1318                    zpho = max(0.,trn(ji,jj,jk,jpdin)) / 16.0 !! phosphate via DIN and Redfield 
    1319                    !! 
    1320                    !! AXY (28/02/14): check input fields 
    1321                    if (ztmp .lt. -3.0 .or. ztmp .gt. 40.0 ) then 
    1322                       IF(lwp) WRITE(numout,*) ' trc_bio_medusa: T WARNING 3D, ', & 
    1323                            tsb(ji,jj,jk,jp_tem), tsn(ji,jj,jk,jp_tem), ' at (',    & 
    1324                            ji, ',', jj, ',', jk, ') at time', kt 
    1325                       IF(lwp) WRITE(numout,*) ' trc_bio_medusa: T SWITCHING 3D, ', & 
    1326                            tsn(ji,jj,jk,jp_tem), ' -> ', tsb(ji,jj,jk,jp_tem) 
    1327                       ztmp = tsb(ji,jj,jk,jp_tem)     !! temperature 
    1328                    endif 
    1329                    if (zsal .lt. 0.0 .or. zsal .gt. 45.0 ) then 
    1330                       IF(lwp) WRITE(numout,*) ' trc_bio_medusa: S WARNING 3D, ', & 
    1331                            tsb(ji,jj,jk,jp_sal), tsn(ji,jj,jk,jp_sal), ' at (',    & 
    1332                            ji, ',', jj, ',', jk, ') at time', kt 
    1333                    endif 
    1334                    !! 
    1335                    !! blank input variables not used at this stage (they relate to air-sea flux) 
    1336                    f_kw660 = 1.0 
    1337                    f_pp0   = 1.0 
    1338                    !! 
    1339                    !! calculate carbonate chemistry at grid cell midpoint 
    1340                    !! AXY (22/06/15): use Orr & Epitalon (2015) MOCSY-2 carbonate 
    1341                    !!                 chemistry package 
    1342                    CALL mocsy_interface( ztmp, zsal, zalk, zdic, zsil, zpho,         &    ! inputs 
    1343                         f_pp0, fdep2, flatx, f_kw660, f_xco2a, 1,                         &    ! inputs 
    1344                         f_ph, f_pco2w, f_fco2w, f_h2co3, f_hco3, f_co3, f_omarg(ji,jj),   &    ! outputs 
    1345                         f_omcal(ji,jj), f_BetaD, f_rhosw, f_opres, f_insitut,             &    ! outputs 
    1346                         f_pco2atm, f_fco2atm, f_schmidtco2, f_kwco2, f_K0,                &    ! outputs 
    1347                         f_co2starair, f_co2flux, f_dpco2 )                                     ! outputs 
    1348                    !! 
    1349                    f_TDIC = (zdic / f_rhosw) * 1000. ! mmol / m3 -> umol / kg 
    1350                    f_TALK = (zalk / f_rhosw) * 1000. !  meq / m3 ->  ueq / kg 
    1351                    f_dcf  = f_rhosw 
    1352                    !! 
    1353                    !! store 3D outputs 
    1354                    f3_pH(ji,jj,jk)    = f_ph 
    1355                    f3_h2co3(ji,jj,jk) = f_h2co3 
    1356                    f3_hco3(ji,jj,jk)  = f_hco3 
    1357                    f3_co3(ji,jj,jk)   = f_co3 
    1358                    f3_omcal(ji,jj,jk) = f_omcal(ji,jj) 
    1359                    f3_omarg(ji,jj,jk) = f_omarg(ji,jj) 
    1360                    !! 
    1361                    !! CCD calculation: calcite 
    1362                    if (i2_omcal(ji,jj) .eq. 0 .and. f_omcal(ji,jj) .lt. 1.0) then 
    1363                       if (jk .eq. 1) then 
    1364                          f2_ccd_cal(ji,jj) = fdep2 
    1365                       else 
    1366                          fq0 = f3_omcal(ji,jj,jk-1) - f_omcal(ji,jj) 
    1367                          fq1 = f3_omcal(ji,jj,jk-1) - 1.0 
    1368                          fq2 = fq1 / (fq0 + tiny(fq0)) 
    1369                          fq3 = fdep2 - fsdept(ji,jj,jk-1) 
    1370                          fq4 = fq2 * fq3 
    1371                          f2_ccd_cal(ji,jj) = fsdept(ji,jj,jk-1) + fq4 
    1372                       endif 
    1373                       i2_omcal(ji,jj)   = 1 
    1374                    endif 
    1375                    if ( i2_omcal(ji,jj) .eq. 0 .and. jk .eq. jmbathy ) then 
    1376                       !! reached seafloor and still no dissolution; set to seafloor (W-point) 
    1377                       f2_ccd_cal(ji,jj) = fsdepw(ji,jj,jk+1) 
    1378                       i2_omcal(ji,jj)   = 1 
    1379                    endif 
    1380                    !! 
    1381                    !! CCD calculation: aragonite 
    1382                    if (i2_omarg(ji,jj) .eq. 0 .and. f_omarg(ji,jj) .lt. 1.0) then 
    1383                       if (jk .eq. 1) then 
    1384                          f2_ccd_arg(ji,jj) = fdep2 
    1385                       else 
    1386                          fq0 = f3_omarg(ji,jj,jk-1) - f_omarg(ji,jj) 
    1387                          fq1 = f3_omarg(ji,jj,jk-1) - 1.0 
    1388                          fq2 = fq1 / (fq0 + tiny(fq0)) 
    1389                          fq3 = fdep2 - fsdept(ji,jj,jk-1) 
    1390                          fq4 = fq2 * fq3 
    1391                          f2_ccd_arg(ji,jj) = fsdept(ji,jj,jk-1) + fq4 
    1392                       endif 
    1393                       i2_omarg(ji,jj)   = 1 
    1394                    endif 
    1395                    if ( i2_omarg(ji,jj) .eq. 0 .and. jk .eq. jmbathy ) then 
    1396                       !! reached seafloor and still no dissolution; set to seafloor (W-point) 
    1397                       f2_ccd_arg(ji,jj) = fsdepw(ji,jj,jk+1) 
    1398                       i2_omarg(ji,jj)   = 1 
    1399                    endif 
    1400                 endif 
    1401              ENDDO 
    1402           ENDDO 
    1403        ENDDO 
    1404     ENDIF 
    1405 # endif 
    1406  
    1407 # if defined key_debug_medusa 
    1408     IF ( lwp ) write (numout,*) 'trc_bio_medusa: ready for full domain calculations' 
    1409     CALL flush(numout) 
    1410 # endif  
    1411  
    1412     !!---------------------------------------------------------------------- 
    1413     !! MEDUSA has unified equation through the water column 
    1414     !! (Diff. from LOBSTER which has two sets: bio- and non-bio layers)  
    1415     !! Statement below in LOBSTER is different: DO jk = 1, jpkbm1           
    1416     !!---------------------------------------------------------------------- 
    1417     !! 
    1418     !! NOTE: the ordering of the loops below differs from that of some other 
    1419     !! models; looping over the vertical dimension is the outermost loop and 
    1420     !! this complicates some calculations (e.g. storage of vertical fluxes 
    1421     !! that can otherwise be done via a singular variable require 2D fields 
    1422     !! here); however, these issues are relatively easily resolved, but the 
    1423     !! loops CANNOT be reordered without potentially causing code efficiency 
    1424     !! problems (e.g. array indexing means that reordering the loops would 
    1425     !! require skipping between widely-spaced memory location; potentially 
    1426     !! outside those immediately cached) 
    1427     !! 
    1428     !! OPEN vertical loop 
    1429     DO jk = 1,jpk 
    1430        !! OPEN horizontal loops 
    1431        DO jj = 2,jpjm1 
    1432           DO ji = 2,jpim1 
    1433              !! OPEN wet point IF..THEN loop 
    1434              if (tmask(ji,jj,jk).eq.1) then                
    1435                 !!====================================================================== 
    1436                 !! SETUP LOCAL GRID CELL 
    1437                 !!====================================================================== 
    1438                 !! 
    1439                 !!--------------------------------------------------------------------- 
    1440                 !! Some notes on grid vertical structure 
    1441                 !! - fsdepw(ji,jj,jk) is the depth of the upper surface of level jk 
    1442                 !! - fsde3w(ji,jj,jk) is *approximately* the midpoint of level jk 
    1443                 !! - fse3t(ji,jj,jk)  is the thickness of level jk 
    1444                 !!--------------------------------------------------------------------- 
    1445                 !! 
    1446                 !! AXY (11/12/08): set up level thickness 
    1447                 fthk  = fse3t(ji,jj,jk) 
    1448                 !! AXY (25/02/10): set up level depth (top of level) 
    1449                 fdep  = fsdepw(ji,jj,jk) 
    1450                 !! AXY (01/03/10): set up level depth (bottom of level) 
    1451                 fdep1 = fdep + fthk 
    1452                 !! AXY (17/05/13): where am I? 
    1453                 flatx = gphit(ji,jj) 
    1454                 flonx = glamt(ji,jj) 
    1455                 !! AXY (28/11/16): local seafloor depth 
    1456                 !!                 previously mbathy(ji,jj) - 1, now mbathy(ji,jj) 
    1457                 jmbathy = mbathy(ji,jj) 
    1458                 !! 
    1459                 !! set up model tracers 
    1460                 !! negative values of state variables are not allowed to 
    1461                 !! contribute to the calculated fluxes 
    1462                 zchn = max(0.,trn(ji,jj,jk,jpchn)) !! non-diatom chlorophyll 
    1463                 zchd = max(0.,trn(ji,jj,jk,jpchd)) !! diatom chlorophyll 
    1464                 zphn = max(0.,trn(ji,jj,jk,jpphn)) !! non-diatoms 
    1465                 zphd = max(0.,trn(ji,jj,jk,jpphd)) !! diatoms 
    1466                 zpds = max(0.,trn(ji,jj,jk,jppds)) !! diatom silicon 
    1467                 !! AXY (28/01/10): probably need to take account of chl/biomass connection 
    1468                 if (zchn.eq.0.) zphn = 0. 
    1469                 if (zchd.eq.0.) zphd = 0. 
    1470                 if (zphn.eq.0.) zchn = 0. 
    1471                 if (zphd.eq.0.) zchd = 0. 
    1472                 !! AXY (23/01/14): duh - why did I forget diatom silicon? 
    1473                 if (zpds.eq.0.) zphd = 0. 
    1474                 if (zphd.eq.0.) zpds = 0. 
    1475                 zzmi = max(0.,trn(ji,jj,jk,jpzmi)) !! microzooplankton 
    1476                 zzme = max(0.,trn(ji,jj,jk,jpzme)) !! mesozooplankton 
    1477                 zdet = max(0.,trn(ji,jj,jk,jpdet)) !! detrital nitrogen 
    1478                 zdin = max(0.,trn(ji,jj,jk,jpdin)) !! dissolved inorganic nitrogen 
    1479                 zsil = max(0.,trn(ji,jj,jk,jpsil)) !! dissolved silicic acid 
    1480                 zfer = max(0.,trn(ji,jj,jk,jpfer)) !! dissolved "iron" 
    1481 # if defined key_roam 
    1482                 zdtc = max(0.,trn(ji,jj,jk,jpdtc)) !! detrital carbon 
    1483                 zdic = max(0.,trn(ji,jj,jk,jpdic)) !! dissolved inorganic carbon 
    1484                 zalk = max(0.,trn(ji,jj,jk,jpalk)) !! alkalinity 
    1485                 zoxy = max(0.,trn(ji,jj,jk,jpoxy)) !! oxygen 
    1486 #  if defined key_axy_carbchem 
    1487                 zpho = max(0.,trn(ji,jj,jk,jpdin)) / 16.0 !! phosphate via DIN and Redfield 
     1324      !! AXY (20/11/14): alter to call on first MEDUSA timestep and then every 
     1325      !!                 month (this is hardwired as 960 timesteps but should 
     1326      !!                 be calculated and done properly 
     1327      !! IF( kt == nit000 .or. mod(kt,1920) == 0 ) THEN 
     1328      !! IF( kt == nittrc000 .or. mod(kt,960) == 0 ) THEN  
     1329      !!============================= 
     1330      !! Jpalm -- 07-10-2016 -- need to change carb-chem frequency call : 
     1331      !!          we don't want to call on the first time-step of all run submission,  
     1332      !!          but only on the very first time-step, and then every month 
     1333      !!          So we call on nittrc000 if not restarted run,  
     1334      !!          else if one month after last call. 
     1335      !!          assume one month is 30d --> 3600*24*30 : 2592000s 
     1336      !!          try to call carb-chem at 1st month's tm-stp : x * 30d + 1*rdt(i.e: mod = rdt)    
     1337      !!          ++ need to pass carb-chem output var through restarts 
     1338      If ( ( kt == nittrc000 .AND. .NOT.ln_rsttr ) .OR. mod(kt*rdt,2592000.) == rdt ) THEN 
     1339         !!---------------------------------------------------------------------- 
     1340         !! Calculate the carbonate chemistry for the whole ocean on the first 
     1341         !! simulation timestep and every month subsequently; the resulting 3D 
     1342         !! field of omega calcite is used to determine the depth of the CCD 
     1343         !!---------------------------------------------------------------------- 
     1344         !! 
     1345         IF(lwp) WRITE(numout,*) ' MEDUSA calculating all carbonate chemistry at kt =', kt 
     1346         CALL flush(numout) 
     1347         !! blank flags 
     1348         i2_omcal(:,:) = 0 
     1349         i2_omarg(:,:) = 0 
     1350         !! loop over 3D space 
     1351         DO jk = 1,jpk 
     1352            DO jj = 2,jpjm1 
     1353               DO ji = 2,jpim1 
     1354                  !! OPEN wet point IF..THEN loop 
     1355                  if (tmask(ji,jj,jk).eq.1) then 
     1356                     IF (lk_oasis) THEN 
     1357                        f_xco2a = PCO2a_in_cpl(ji,jj)        !! use 2D atm xCO2 from atm coupling 
     1358                     ENDIF 
     1359                     !! do carbonate chemistry 
     1360                     !! 
     1361                     fdep2 = fsdept(ji,jj,jk)           !! set up level midpoint 
     1362                     !! AXY (28/11/16): local seafloor depth 
     1363                     !!                 previously mbathy(ji,jj) - 1, now mbathy(ji,jj) 
     1364                     jmbathy = mbathy(ji,jj) 
     1365                     !! 
     1366                     !! set up required state variables 
     1367                     zdic = max(0.,trn(ji,jj,jk,jpdic)) !! dissolved inorganic carbon 
     1368                     zalk = max(0.,trn(ji,jj,jk,jpalk)) !! alkalinity 
     1369                     ztmp = tsn(ji,jj,jk,jp_tem)        !! temperature 
     1370                     zsal = tsn(ji,jj,jk,jp_sal)        !! salinity 
     1371#  if defined key_mocsy 
     1372                     zsil = max(0.,trn(ji,jj,jk,jpsil))        !! silicic acid 
     1373                     zpho = max(0.,trn(ji,jj,jk,jpdin)) / 16.0 !! phosphate via DIN and Redfield 
    14881374#  endif 
    1489                 !! 
    1490                 !! also need physical parameters for gas exchange calculations 
    1491                 ztmp = tsn(ji,jj,jk,jp_tem) 
    1492                 zsal = tsn(ji,jj,jk,jp_sal) 
    1493                 !! 
    1494                 !! AXY (28/02/14): check input fields 
    1495                 if (ztmp .lt. -3.0 .or. ztmp .gt. 40.0 ) then 
    1496                    IF(lwp) WRITE(numout,*) ' trc_bio_medusa: T WARNING 2D, ', & 
     1375           !! 
     1376           !! AXY (28/02/14): check input fields 
     1377           if (ztmp .lt. -3.0 .or. ztmp .gt. 40.0 ) then 
     1378                        IF(lwp) WRITE(numout,*) ' trc_bio_medusa: T WARNING 3D, ', & 
    14971379                        tsb(ji,jj,jk,jp_tem), tsn(ji,jj,jk,jp_tem), ' at (',    & 
    14981380                        ji, ',', jj, ',', jk, ') at time', kt 
    1499                    IF(lwp) WRITE(numout,*) ' trc_bio_medusa: T SWITCHING 2D, ', & 
    1500                         tsn(ji,jj,jk,jp_tem), ' -> ', tsb(ji,jj,jk,jp_tem) 
    1501                    ztmp = tsb(ji,jj,jk,jp_tem) !! temperature 
    1502                 endif 
    1503                 if (zsal .lt. 0.0 .or. zsal .gt. 45.0 ) then 
    1504                    IF(lwp) WRITE(numout,*) ' trc_bio_medusa: S WARNING 2D, ', & 
     1381         IF(lwp) WRITE(numout,*) ' trc_bio_medusa: T SWITCHING 3D, ', & 
     1382         tsn(ji,jj,jk,jp_tem), ' -> ', tsb(ji,jj,jk,jp_tem) 
     1383                        ztmp = tsb(ji,jj,jk,jp_tem)    !! temperature 
     1384                     endif 
     1385           if (zsal .lt. 0.0 .or. zsal .gt. 45.0 ) then 
     1386                        IF(lwp) WRITE(numout,*) ' trc_bio_medusa: S WARNING 3D, ', & 
    15051387                        tsb(ji,jj,jk,jp_sal), tsn(ji,jj,jk,jp_sal), ' at (',    & 
    15061388                        ji, ',', jj, ',', jk, ') at time', kt 
    1507                 endif 
     1389                     endif 
     1390                     !! 
     1391                     !! blank input variables not used at this stage (they relate to air-sea flux) 
     1392                     f_kw660 = 1.0 
     1393                     f_pp0   = 1.0 
     1394                     !! 
     1395                     !! calculate carbonate chemistry at grid cell midpoint 
     1396#  if defined key_mocsy 
     1397                     !! AXY (22/06/15): use Orr & Epitalon (2015) MOCSY-2 carbonate 
     1398                     !!                 chemistry package 
     1399                     CALL mocsy_interface( ztmp, zsal, zalk, zdic, zsil, zpho,         &    ! inputs 
     1400                     f_pp0, fdep2, gphit(ji,jj), f_kw660, f_xco2a, 1,                  &    ! inputs 
     1401                     f_ph, f_pco2w, f_fco2w, f_h2co3, f_hco3, f_co3, f_omarg(ji,jj),   &    ! outputs 
     1402                     f_omcal(ji,jj), f_BetaD, f_rhosw, f_opres, f_insitut,             &    ! outputs 
     1403                     f_pco2atm, f_fco2atm, f_schmidtco2, f_kwco2, f_K0,                &    ! outputs 
     1404                     f_co2starair, f_co2flux, f_dpco2 )                                     ! outputs 
     1405                     !! 
     1406                     f_TDIC = (zdic / f_rhosw) * 1000. ! mmol / m3 -> umol / kg 
     1407                     f_TALK = (zalk / f_rhosw) * 1000. !  meq / m3 ->  ueq / kg 
     1408                     f_dcf  = f_rhosw 
     1409#  else 
     1410                     !! AXY (22/06/15): use old PML carbonate chemistry package (the 
     1411                     !!                 MEDUSA-2 default) 
     1412                     CALL trc_co2_medusa( ztmp, zsal, zdic, zalk, fdep2, f_kw660,      &    ! inputs 
     1413                     f_xco2a, f_ph, f_pco2w, f_h2co3, f_hco3, f_co3, f_omcal(ji,jj),   &    ! outputs 
     1414                     f_omarg(ji,jj), f_co2flux, f_TDIC, f_TALK, f_dcf, f_henry, iters)      ! outputs 
     1415                     !!  
     1416                     !! AXY (28/02/14): check output fields 
     1417                     if (iters .eq. 25) then 
     1418                        IF(lwp) WRITE(numout,*) ' trc_bio_medusa: 3D ITERS WARNING, ', & 
     1419                        iters, ' AT (', ji, ', ', jj, ', ', jk, ') AT ', kt 
     1420                     endif 
     1421#  endif 
     1422                     !! 
     1423                     !! store 3D outputs 
     1424                     f3_pH(ji,jj,jk)    = f_ph 
     1425                     f3_h2co3(ji,jj,jk) = f_h2co3 
     1426                     f3_hco3(ji,jj,jk)  = f_hco3 
     1427                     f3_co3(ji,jj,jk)   = f_co3 
     1428                     f3_omcal(ji,jj,jk) = f_omcal(ji,jj) 
     1429                     f3_omarg(ji,jj,jk) = f_omarg(ji,jj) 
     1430                     !! 
     1431                     !! CCD calculation: calcite 
     1432                     if (i2_omcal(ji,jj) .eq. 0 .and. f_omcal(ji,jj) .lt. 1.0) then 
     1433                        if (jk .eq. 1) then 
     1434                           f2_ccd_cal(ji,jj) = fdep2 
     1435                        else 
     1436                           fq0 = f3_omcal(ji,jj,jk-1) - f_omcal(ji,jj) 
     1437                           fq1 = f3_omcal(ji,jj,jk-1) - 1.0 
     1438                           fq2 = fq1 / (fq0 + tiny(fq0)) 
     1439                           fq3 = fdep2 - fsdept(ji,jj,jk-1) 
     1440                           fq4 = fq2 * fq3 
     1441                           f2_ccd_cal(ji,jj) = fsdept(ji,jj,jk-1) + fq4 
     1442                        endif 
     1443                        i2_omcal(ji,jj)   = 1 
     1444                     endif 
     1445                     if ( i2_omcal(ji,jj) .eq. 0 .and. jk .eq. jmbathy ) then 
     1446                        !! reached seafloor and still no dissolution; set to seafloor (W-point) 
     1447                        f2_ccd_cal(ji,jj) = fsdepw(ji,jj,jk+1) 
     1448                        i2_omcal(ji,jj)   = 1 
     1449                     endif 
     1450                     !! 
     1451                     !! CCD calculation: aragonite 
     1452                     if (i2_omarg(ji,jj) .eq. 0 .and. f_omarg(ji,jj) .lt. 1.0) then 
     1453                        if (jk .eq. 1) then 
     1454                           f2_ccd_arg(ji,jj) = fdep2 
     1455                        else 
     1456                           fq0 = f3_omarg(ji,jj,jk-1) - f_omarg(ji,jj) 
     1457                           fq1 = f3_omarg(ji,jj,jk-1) - 1.0 
     1458                           fq2 = fq1 / (fq0 + tiny(fq0)) 
     1459                           fq3 = fdep2 - fsdept(ji,jj,jk-1) 
     1460                           fq4 = fq2 * fq3 
     1461                           f2_ccd_arg(ji,jj) = fsdept(ji,jj,jk-1) + fq4 
     1462                        endif 
     1463                        i2_omarg(ji,jj)   = 1 
     1464                     endif 
     1465                     if ( i2_omarg(ji,jj) .eq. 0 .and. jk .eq. jmbathy ) then 
     1466                        !! reached seafloor and still no dissolution; set to seafloor (W-point) 
     1467                        f2_ccd_arg(ji,jj) = fsdepw(ji,jj,jk+1) 
     1468                        i2_omarg(ji,jj)   = 1 
     1469                     endif 
     1470                  endif 
     1471               ENDDO 
     1472            ENDDO 
     1473         ENDDO 
     1474      ENDIF 
     1475# endif 
     1476 
     1477# if defined key_debug_medusa 
     1478      IF (lwp) write (numout,*) 'trc_bio_medusa: ready for full domain calculations' 
     1479      CALL flush(numout) 
     1480# endif  
     1481 
     1482      !!---------------------------------------------------------------------- 
     1483      !! MEDUSA has unified equation through the water column 
     1484      !! (Diff. from LOBSTER which has two sets: bio- and non-bio layers)  
     1485      !! Statement below in LOBSTER is different: DO jk = 1, jpkbm1           
     1486      !!---------------------------------------------------------------------- 
     1487      !! 
     1488      !! NOTE: the ordering of the loops below differs from that of some other 
     1489      !! models; looping over the vertical dimension is the outermost loop and 
     1490      !! this complicates some calculations (e.g. storage of vertical fluxes 
     1491      !! that can otherwise be done via a singular variable require 2D fields 
     1492      !! here); however, these issues are relatively easily resolved, but the 
     1493      !! loops CANNOT be reordered without potentially causing code efficiency 
     1494      !! problems (e.g. array indexing means that reordering the loops would 
     1495      !! require skipping between widely-spaced memory location; potentially 
     1496      !! outside those immediately cached) 
     1497      !! 
     1498      !! OPEN vertical loop 
     1499      DO jk = 1,jpk 
     1500         !! OPEN horizontal loops 
     1501         DO jj = 2,jpjm1 
     1502         DO ji = 2,jpim1 
     1503            !! OPEN wet point IF..THEN loop 
     1504            if (tmask(ji,jj,jk).eq.1) then                
     1505               !!====================================================================== 
     1506               !! SETUP LOCAL GRID CELL 
     1507               !!====================================================================== 
     1508               !! 
     1509               !!--------------------------------------------------------------------- 
     1510               !! Some notes on grid vertical structure 
     1511               !! - fsdepw(ji,jj,jk) is the depth of the upper surface of level jk 
     1512               !! - fsde3w(ji,jj,jk) is *approximately* the midpoint of level jk 
     1513               !! - fse3t(ji,jj,jk)  is the thickness of level jk 
     1514               !!--------------------------------------------------------------------- 
     1515               !! 
     1516               !! AXY (11/12/08): set up level thickness 
     1517               fthk  = fse3t(ji,jj,jk) 
     1518               !! AXY (25/02/10): set up level depth (top of level) 
     1519               fdep  = fsdepw(ji,jj,jk) 
     1520               !! AXY (01/03/10): set up level depth (bottom of level) 
     1521               fdep1 = fdep + fthk 
     1522               !! AXY (28/11/16): local seafloor depth 
     1523               !!                 previously mbathy(ji,jj) - 1, now mbathy(ji,jj) 
     1524               jmbathy = mbathy(ji,jj) 
     1525               !! 
     1526               !! set up model tracers 
     1527               !! negative values of state variables are not allowed to 
     1528               !! contribute to the calculated fluxes 
     1529               zchn = max(0.,trn(ji,jj,jk,jpchn)) !! non-diatom chlorophyll 
     1530               zchd = max(0.,trn(ji,jj,jk,jpchd)) !! diatom chlorophyll 
     1531               zphn = max(0.,trn(ji,jj,jk,jpphn)) !! non-diatoms 
     1532               zphd = max(0.,trn(ji,jj,jk,jpphd)) !! diatoms 
     1533               zpds = max(0.,trn(ji,jj,jk,jppds)) !! diatom silicon 
     1534               !! AXY (28/01/10): probably need to take account of chl/biomass connection 
     1535               if (zchn.eq.0.) zphn = 0. 
     1536               if (zchd.eq.0.) zphd = 0. 
     1537               if (zphn.eq.0.) zchn = 0. 
     1538               if (zphd.eq.0.) zchd = 0. 
     1539          !! AXY (23/01/14): duh - why did I forget diatom silicon? 
     1540          if (zpds.eq.0.) zphd = 0. 
     1541          if (zphd.eq.0.) zpds = 0. 
     1542               zzmi = max(0.,trn(ji,jj,jk,jpzmi)) !! microzooplankton 
     1543               zzme = max(0.,trn(ji,jj,jk,jpzme)) !! mesozooplankton 
     1544               zdet = max(0.,trn(ji,jj,jk,jpdet)) !! detrital nitrogen 
     1545               zdin = max(0.,trn(ji,jj,jk,jpdin)) !! dissolved inorganic nitrogen 
     1546               zsil = max(0.,trn(ji,jj,jk,jpsil)) !! dissolved silicic acid 
     1547               zfer = max(0.,trn(ji,jj,jk,jpfer)) !! dissolved "iron" 
     1548# if defined key_roam 
     1549               zdtc = max(0.,trn(ji,jj,jk,jpdtc)) !! detrital carbon 
     1550               zdic = max(0.,trn(ji,jj,jk,jpdic)) !! dissolved inorganic carbon 
     1551               zalk = max(0.,trn(ji,jj,jk,jpalk)) !! alkalinity 
     1552               zoxy = max(0.,trn(ji,jj,jk,jpoxy)) !! oxygen 
     1553#  if defined key_axy_carbchem && defined key_mocsy 
     1554               zpho = max(0.,trn(ji,jj,jk,jpdin)) / 16.0 !! phosphate via DIN and Redfield 
     1555#  endif 
     1556               !! 
     1557               !! also need physical parameters for gas exchange calculations 
     1558               ztmp = tsn(ji,jj,jk,jp_tem) 
     1559               zsal = tsn(ji,jj,jk,jp_sal) 
     1560               !! 
     1561          !! AXY (28/02/14): check input fields 
     1562               if (ztmp .lt. -3.0 .or. ztmp .gt. 40.0 ) then 
     1563                  IF(lwp) WRITE(numout,*) ' trc_bio_medusa: T WARNING 2D, ', & 
     1564                  tsb(ji,jj,jk,jp_tem), tsn(ji,jj,jk,jp_tem), ' at (',    & 
     1565                  ji, ',', jj, ',', jk, ') at time', kt 
     1566        IF(lwp) WRITE(numout,*) ' trc_bio_medusa: T SWITCHING 2D, ', & 
     1567                  tsn(ji,jj,jk,jp_tem), ' -> ', tsb(ji,jj,jk,jp_tem) 
     1568                  ztmp = tsb(ji,jj,jk,jp_tem) !! temperature 
     1569               endif 
     1570               if (zsal .lt. 0.0 .or. zsal .gt. 45.0 ) then 
     1571                  IF(lwp) WRITE(numout,*) ' trc_bio_medusa: S WARNING 2D, ', & 
     1572                  tsb(ji,jj,jk,jp_sal), tsn(ji,jj,jk,jp_sal), ' at (',    & 
     1573                  ji, ',', jj, ',', jk, ') at time', kt 
     1574               endif 
    15081575# else 
    1509                 zdtc = zdet * xthetad              !! implicit detrital carbon 
     1576               zdtc = zdet * xthetad              !! implicit detrital carbon 
    15101577# endif 
    15111578# if defined key_debug_medusa 
    1512                 if (idf.eq.1) then 
    1513                    !! AXY (15/01/10) 
    1514                    if (trn(ji,jj,jk,jpdin).lt.0.) then 
    1515                       IF ( lwp ) write (numout,*) '------------------------------' 
    1516                       IF ( lwp ) write (numout,*) 'NEGATIVE DIN ERROR =', trn(ji,jj,jk,jpdin) 
    1517                       IF ( lwp ) write (numout,*) 'NEGATIVE DIN ERROR @', ji, jj, jk, kt 
    1518                    endif 
    1519                    if (trn(ji,jj,jk,jpsil).lt.0.) then 
    1520                       IF ( lwp ) write (numout,*) '------------------------------' 
    1521                       IF ( lwp ) write (numout,*) 'NEGATIVE SIL ERROR =', trn(ji,jj,jk,jpsil) 
    1522                       IF ( lwp ) write (numout,*) 'NEGATIVE SIL ERROR @', ji, jj, jk, kt 
    1523                    endif 
     1579               if (idf.eq.1) then 
     1580               !! AXY (15/01/10) 
     1581                  if (trn(ji,jj,jk,jpdin).lt.0.) then 
     1582                     IF (lwp) write (numout,*) '------------------------------' 
     1583                     IF (lwp) write (numout,*) 'NEGATIVE DIN ERROR =', trn(ji,jj,jk,jpdin) 
     1584                     IF (lwp) write (numout,*) 'NEGATIVE DIN ERROR @', ji, jj, jk, kt 
     1585                  endif 
     1586                  if (trn(ji,jj,jk,jpsil).lt.0.) then 
     1587                     IF (lwp) write (numout,*) '------------------------------' 
     1588                     IF (lwp) write (numout,*) 'NEGATIVE SIL ERROR =', trn(ji,jj,jk,jpsil) 
     1589                     IF (lwp) write (numout,*) 'NEGATIVE SIL ERROR @', ji, jj, jk, kt 
     1590                  endif 
    15241591#  if defined key_roam 
    1525                    if (trn(ji,jj,jk,jpdic).lt.0.) then 
    1526                       IF ( lwp ) write (numout,*) '------------------------------' 
    1527                       IF ( lwp ) write (numout,*) 'NEGATIVE DIC ERROR =', trn(ji,jj,jk,jpdic) 
    1528                       IF ( lwp ) write (numout,*) 'NEGATIVE DIC ERROR @', ji, jj, jk, kt 
    1529                    endif 
    1530                    if (trn(ji,jj,jk,jpalk).lt.0.) then 
    1531                       IF ( lwp ) write (numout,*) '------------------------------' 
    1532                       IF ( lwp ) write (numout,*) 'NEGATIVE ALK ERROR =', trn(ji,jj,jk,jpalk) 
    1533                       IF ( lwp ) write (numout,*) 'NEGATIVE ALK ERROR @', ji, jj, jk, kt 
    1534                    endif 
    1535                    if (trn(ji,jj,jk,jpoxy).lt.0.) then 
    1536                       IF ( lwp ) write (numout,*) '------------------------------' 
    1537                       IF ( lwp ) write (numout,*) 'NEGATIVE OXY ERROR =', trn(ji,jj,jk,jpoxy) 
    1538                       IF ( lwp ) write (numout,*) 'NEGATIVE OXY ERROR @', ji, jj, jk, kt 
    1539                    endif 
     1592                  if (trn(ji,jj,jk,jpdic).lt.0.) then 
     1593                     IF (lwp) write (numout,*) '------------------------------' 
     1594                     IF (lwp) write (numout,*) 'NEGATIVE DIC ERROR =', trn(ji,jj,jk,jpdic) 
     1595                     IF (lwp) write (numout,*) 'NEGATIVE DIC ERROR @', ji, jj, jk, kt 
     1596                  endif 
     1597                  if (trn(ji,jj,jk,jpalk).lt.0.) then 
     1598                     IF (lwp) write (numout,*) '------------------------------' 
     1599                     IF (lwp) write (numout,*) 'NEGATIVE ALK ERROR =', trn(ji,jj,jk,jpalk) 
     1600                     IF (lwp) write (numout,*) 'NEGATIVE ALK ERROR @', ji, jj, jk, kt 
     1601                  endif 
     1602                  if (trn(ji,jj,jk,jpoxy).lt.0.) then 
     1603                     IF (lwp) write (numout,*) '------------------------------' 
     1604                     IF (lwp) write (numout,*) 'NEGATIVE OXY ERROR =', trn(ji,jj,jk,jpoxy) 
     1605                     IF (lwp) write (numout,*) 'NEGATIVE OXY ERROR @', ji, jj, jk, kt 
     1606                  endif 
    15401607#  endif 
    1541                 endif 
    1542 # endif 
    1543                 !! sum tracers for inventory checks 
    1544                 IF( lk_iomput ) THEN 
    1545                    IF ( med_diag%INVTN%dgsave )   THEN 
    1546                       ftot_n(ji,jj)  = ftot_n(ji,jj) + & 
    1547                            (fthk * ( zphn + zphd + zzmi + zzme + zdet + zdin ) ) 
    1548                    ENDIF 
    1549                    IF ( med_diag%INVTSI%dgsave )  THEN 
    1550                       ftot_si(ji,jj) = ftot_si(ji,jj) + &  
    1551                            (fthk * ( zpds + zsil ) ) 
    1552                    ENDIF 
    1553                    IF ( med_diag%INVTFE%dgsave )  THEN 
    1554                       ftot_fe(ji,jj) = ftot_fe(ji,jj) + &  
    1555                            (fthk * ( xrfn * ( zphn + zphd + zzmi + zzme + zdet ) + zfer ) ) 
    1556                    ENDIF 
     1608               endif 
     1609# endif 
     1610# if defined key_debug_medusa 
     1611               !! report state variable values 
     1612               if (idf.eq.1.AND.idfval.eq.1) then 
     1613                  IF (lwp) write (numout,*) '------------------------------' 
     1614                  IF (lwp) write (numout,*) 'fthk(',jk,') = ', fthk 
     1615                  IF (lwp) write (numout,*) 'zphn(',jk,') = ', zphn 
     1616                  IF (lwp) write (numout,*) 'zphd(',jk,') = ', zphd 
     1617                  IF (lwp) write (numout,*) 'zpds(',jk,') = ', zpds 
     1618                  IF (lwp) write (numout,*) 'zzmi(',jk,') = ', zzmi 
     1619                  IF (lwp) write (numout,*) 'zzme(',jk,') = ', zzme 
     1620                  IF (lwp) write (numout,*) 'zdet(',jk,') = ', zdet 
     1621                  IF (lwp) write (numout,*) 'zdin(',jk,') = ', zdin 
     1622                  IF (lwp) write (numout,*) 'zsil(',jk,') = ', zsil 
     1623                  IF (lwp) write (numout,*) 'zfer(',jk,') = ', zfer 
     1624#  if defined key_roam 
     1625                  IF (lwp) write (numout,*) 'zdtc(',jk,') = ', zdtc 
     1626                  IF (lwp) write (numout,*) 'zdic(',jk,') = ', zdic 
     1627                  IF (lwp) write (numout,*) 'zalk(',jk,') = ', zalk 
     1628                  IF (lwp) write (numout,*) 'zoxy(',jk,') = ', zoxy                   
     1629#  endif 
     1630               endif 
     1631# endif 
     1632 
     1633# if defined key_debug_medusa 
     1634               if (idf.eq.1.AND.idfval.eq.1.AND.jk.eq.1) then 
     1635                  IF (lwp) write (numout,*) '------------------------------' 
     1636                  IF (lwp) write (numout,*) 'dust      = ', dust(ji,jj) 
     1637               endif 
     1638# endif 
     1639 
     1640               !! sum tracers for inventory checks 
     1641               IF( lk_iomput ) THEN 
     1642                  IF ( med_diag%INVTN%dgsave )   THEN 
     1643                     ftot_n(ji,jj)  = ftot_n(ji,jj) + & 
     1644                             (fthk * ( zphn + zphd + zzmi + zzme + zdet + zdin ) ) 
     1645                  ENDIF 
     1646                  IF ( med_diag%INVTSI%dgsave )  THEN 
     1647                     ftot_si(ji,jj) = ftot_si(ji,jj) + &  
     1648                             (fthk * ( zpds + zsil ) ) 
     1649                  ENDIF 
     1650                  IF ( med_diag%INVTFE%dgsave )  THEN 
     1651                     ftot_fe(ji,jj) = ftot_fe(ji,jj) + &  
     1652                             (fthk * ( xrfn * ( zphn + zphd + zzmi + zzme + zdet ) + zfer ) ) 
     1653                  ENDIF 
    15571654# if defined key_roam 
    1558                    IF ( med_diag%INVTC%dgsave )  THEN 
    1559                       ftot_c(ji,jj)  = ftot_c(ji,jj) + &  
    1560                            (fthk * ( (xthetapn * zphn) + (xthetapd * zphd) + & 
    1561                            (xthetazmi * zzmi) + (xthetazme * zzme) + zdtc +   & 
    1562                            zdic ) ) 
    1563                    ENDIF 
    1564                    IF ( med_diag%INVTALK%dgsave ) THEN 
    1565                       ftot_a(ji,jj)  = ftot_a(ji,jj) + (fthk * ( zalk ) ) 
    1566                    ENDIF 
    1567                    IF ( med_diag%INVTO2%dgsave )  THEN 
    1568                       ftot_o2(ji,jj) = ftot_o2(ji,jj) + (fthk * ( zoxy ) ) 
    1569                    ENDIF 
    1570                    !! 
    1571                    !! AXY (10/11/16): CMIP6 diagnostics 
    1572                    IF ( med_diag%INTDISSIC%dgsave ) THEN 
    1573                       intdissic(ji,jj) = intdissic(ji,jj) + (fthk * zdic) 
    1574                    ENDIF 
    1575                    IF ( med_diag%INTDISSIN%dgsave ) THEN 
    1576                       intdissin(ji,jj) = intdissin(ji,jj) + (fthk * zdin) 
    1577                    ENDIF 
    1578                    IF ( med_diag%INTDISSISI%dgsave ) THEN 
    1579                       intdissisi(ji,jj) = intdissisi(ji,jj) + (fthk * zsil) 
    1580                    ENDIF 
    1581                    IF ( med_diag%INTTALK%dgsave ) THEN 
    1582                       inttalk(ji,jj) = inttalk(ji,jj) + (fthk * zalk) 
    1583                    ENDIF 
    1584                    IF ( med_diag%O2min%dgsave ) THEN 
    1585                       if ( zoxy < o2min(ji,jj) ) then 
    1586                          o2min(ji,jj)  = zoxy 
    1587                          IF ( med_diag%ZO2min%dgsave ) THEN 
    1588                             zo2min(ji,jj) = (fdep + fdep1) / 2. !! layer midpoint 
    1589                          ENDIF 
    1590                       endif 
    1591                    ENDIF 
    1592 # endif 
    1593                 ENDIF 
    1594  
    1595                 CALL flush(numout) 
    1596  
    1597                 !!====================================================================== 
    1598                 !! LOCAL GRID CELL CALCULATIONS 
    1599                 !!====================================================================== 
    1600                 !! 
    1601                 !!====================================================================== 
    1602                 !! AXY (07/04/17): possible subroutine block; air-sea gas exchange 
    1603                 !!====================================================================== 
     1655                  IF ( med_diag%INVTC%dgsave )  THEN 
     1656                     ftot_c(ji,jj)  = ftot_c(ji,jj) + &  
     1657                             (fthk * ( (xthetapn * zphn) + (xthetapd * zphd) + & 
     1658                             (xthetazmi * zzmi) + (xthetazme * zzme) + zdtc +   & 
     1659                             zdic ) ) 
     1660                  ENDIF 
     1661                  IF ( med_diag%INVTALK%dgsave ) THEN 
     1662                     ftot_a(ji,jj)  = ftot_a(ji,jj) + (fthk * ( zalk ) ) 
     1663                  ENDIF 
     1664                  IF ( med_diag%INVTO2%dgsave )  THEN 
     1665                     ftot_o2(ji,jj) = ftot_o2(ji,jj) + (fthk * ( zoxy ) ) 
     1666                  ENDIF 
     1667                  !! 
     1668                  !! AXY (10/11/16): CMIP6 diagnostics 
     1669                  IF ( med_diag%INTDISSIC%dgsave ) THEN 
     1670                     intdissic(ji,jj) = intdissic(ji,jj) + (fthk * zdic) 
     1671                  ENDIF 
     1672                  IF ( med_diag%INTDISSIN%dgsave ) THEN 
     1673                     intdissin(ji,jj) = intdissin(ji,jj) + (fthk * zdin) 
     1674                  ENDIF 
     1675                  IF ( med_diag%INTDISSISI%dgsave ) THEN 
     1676                     intdissisi(ji,jj) = intdissisi(ji,jj) + (fthk * zsil) 
     1677                  ENDIF 
     1678                  IF ( med_diag%INTTALK%dgsave ) THEN 
     1679                     inttalk(ji,jj) = inttalk(ji,jj) + (fthk * zalk) 
     1680                  ENDIF 
     1681                  IF ( med_diag%O2min%dgsave ) THEN 
     1682                     if ( zoxy < o2min(ji,jj) ) then 
     1683                        o2min(ji,jj)  = zoxy 
     1684                        IF ( med_diag%ZO2min%dgsave ) THEN 
     1685                           zo2min(ji,jj) = (fdep + fdep1) / 2. !! layer midpoint 
     1686                        ENDIF 
     1687                     endif 
     1688                  ENDIF 
     1689# endif 
     1690               ENDIF 
     1691 
     1692               CALL flush(numout) 
     1693 
     1694               !!====================================================================== 
     1695               !! LOCAL GRID CELL CALCULATIONS 
     1696               !!====================================================================== 
     1697               !! 
    16041698# if defined key_roam 
    1605                 if ( jk .eq. 1 ) then 
    1606                    !!---------------------------------------------------------------------- 
    1607                    !! Air-sea gas exchange 
    1608                    !!---------------------------------------------------------------------- 
    1609                    !! 
    1610                    !! AXY (17/07/14): zwind_i and zwind_j do not exist in this 
    1611                    !!                 version of NEMO because it does not include 
    1612                    !!                 the SBC changes that our local version has 
    1613                    !!                 for accessing the HadGEM2 forcing; they  
    1614                    !!                 could be added, but an alternative approach 
    1615                    !!                 is to make use of wndm from oce_trc.F90 
    1616                    !!                 which is wind speed at 10m (which is what 
    1617                    !!                 is required here; this may need to be 
    1618                    !!                 revisited when MEDUSA properly interacts 
    1619                    !!                 with UKESM1 physics 
    1620                    !! 
    1621                    f_wind  = wndm(ji,jj) 
    1622                    IF ( lk_oasis ) THEN 
    1623                       f_xco2a = PCO2a_in_cpl(ji,jj)        !! use 2D atm xCO2 from atm coupling 
    1624                    ENDIF 
    1625                    !! 
    1626                    !! AXY (23/06/15): as part of an effort to update the carbonate chemistry 
    1627                    !!                 in MEDUSA, the gas transfer velocity used in the carbon 
    1628                    !!                 and oxygen cycles has been harmonised and is calculated 
    1629                    !!                 by the same function here; this harmonisation includes 
    1630                    !!                 changes to the PML carbonate chemistry scheme so that 
    1631                    !!                 it too makes use of the same gas transfer velocity; the 
    1632                    !!                 preferred parameterisation of this is Wanninkhof (2014), 
    1633                    !!                 option 7 
    1634                    !! 
     1699               if ( jk .eq. 1 ) then 
     1700                  !!---------------------------------------------------------------------- 
     1701                  !! Air-sea gas exchange 
     1702                  !!---------------------------------------------------------------------- 
     1703                  !! 
     1704                  !! AXY (17/07/14): zwind_i and zwind_j do not exist in this 
     1705                  !!                 version of NEMO because it does not include 
     1706                  !!                 the SBC changes that our local version has 
     1707                  !!                 for accessing the HadGEM2 forcing; they  
     1708                  !!                 could be added, but an alternative approach 
     1709                  !!                 is to make use of wndm from oce_trc.F90 
     1710                  !!                 which is wind speed at 10m (which is what 
     1711                  !!                 is required here; this may need to be 
     1712                  !!                 revisited when MEDUSA properly interacts 
     1713                  !!                 with UKESM1 physics 
     1714                  !! 
     1715                  f_wind  = wndm(ji,jj) 
     1716                  IF (lk_oasis) THEN 
     1717                     f_xco2a = PCO2a_in_cpl(ji,jj)        !! use 2D atm xCO2 from atm coupling 
     1718                  ENDIF 
     1719                  !! 
     1720                  !! AXY (23/06/15): as part of an effort to update the carbonate chemistry 
     1721                  !!                 in MEDUSA, the gas transfer velocity used in the carbon 
     1722                  !!                 and oxygen cycles has been harmonised and is calculated 
     1723                  !!                 by the same function here; this harmonisation includes 
     1724                  !!                 changes to the PML carbonate chemistry scheme so that 
     1725                  !!                 it too makes use of the same gas transfer velocity; the 
     1726                  !!                 preferred parameterisation of this is Wanninkhof (2014), 
     1727                  !!                 option 7 
     1728                  !! 
    16351729#   if defined key_debug_medusa 
    1636                    IF ( lwp ) write (numout,*) 'trc_bio_medusa: entering gas_transfer' 
    1637                    CALL flush(numout) 
     1730                     IF (lwp) write (numout,*) 'trc_bio_medusa: entering gas_transfer' 
     1731                     CALL flush(numout) 
    16381732#   endif 
    1639                    CALL gas_transfer( f_wind, 1, 7, &  ! inputs 
    1640                         f_kw660 )        ! outputs 
     1733                  CALL gas_transfer( f_wind, 1, 7, &  ! inputs 
     1734                                     f_kw660 )        ! outputs 
    16411735#   if defined key_debug_medusa 
    1642                    IF ( lwp ) write (numout,*) 'trc_bio_medusa: exiting gas_transfer' 
    1643                    CALL flush(numout) 
     1736                     IF (lwp) write (numout,*) 'trc_bio_medusa: exiting gas_transfer' 
     1737                     CALL flush(numout) 
    16441738#   endif 
    1645                    !! 
    1646                    !! air pressure (atm); ultimately this will use air pressure at the base 
    1647                    !! of the UKESM1 atmosphere  
    1648                    !!                                      
    1649                    f_pp0   = 1.0 
    1650                    !! 
    1651                    !! IF(lwp) WRITE(numout,*) ' MEDUSA ztmp    =', ztmp 
    1652                    !! IF(lwp) WRITE(numout,*) ' MEDUSA zwind_i =', zwind_i(ji,jj) 
    1653                    !! IF(lwp) WRITE(numout,*) ' MEDUSA zwind_j =', zwind_j(ji,jj) 
    1654                    !! IF(lwp) WRITE(numout,*) ' MEDUSA f_wind  =', f_wind 
    1655                    !! IF(lwp) WRITE(numout,*) ' MEDUSA fr_i    =', fr_i(ji,jj) 
    1656                    !! 
     1739                  !! 
     1740                  !! air pressure (atm); ultimately this will use air pressure at the base 
     1741                  !! of the UKESM1 atmosphere  
     1742                  !!                                      
     1743                  f_pp0   = 1.0 
     1744                  !! 
     1745                  !! IF(lwp) WRITE(numout,*) ' MEDUSA ztmp    =', ztmp 
     1746                  !! IF(lwp) WRITE(numout,*) ' MEDUSA zwind_i =', zwind_i(ji,jj) 
     1747                  !! IF(lwp) WRITE(numout,*) ' MEDUSA zwind_j =', zwind_j(ji,jj) 
     1748                  !! IF(lwp) WRITE(numout,*) ' MEDUSA f_wind  =', f_wind 
     1749                  !! IF(lwp) WRITE(numout,*) ' MEDUSA fr_i    =', fr_i(ji,jj) 
     1750                  !! 
    16571751#  if defined key_axy_carbchem 
    1658                    !! 
    1659                    !! AXY (22/06/15): use Orr & Epitalon (2015) MOCSY-2 carbonate 
    1660                    !!                 chemistry package; note that depth is set to 
    1661                    !!                 zero in this call 
    1662                    CALL mocsy_interface( ztmp, zsal, zalk, zdic, zsil, zpho,        &  ! inputs 
    1663                         f_pp0, 0.0, flatx, f_kw660, f_xco2a, 1,                          &  ! inputs 
    1664                         f_ph, f_pco2w, f_fco2w, f_h2co3, f_hco3, f_co3, f_omarg(ji,jj),  &  ! outputs 
    1665                         f_omcal(ji,jj), f_BetaD, f_rhosw, f_opres, f_insitut,            &  ! outputs 
    1666                         f_pco2atm, f_fco2atm, f_schmidtco2, f_kwco2, f_K0,               &  ! outputs 
    1667                         f_co2starair, f_co2flux, f_dpco2 )                                  ! outputs 
    1668                    !! 
    1669                    f_TDIC = (zdic / f_rhosw) * 1000. ! mmol / m3 -> umol / kg 
    1670                    f_TALK = (zalk / f_rhosw) * 1000. !  meq / m3 ->  ueq / kg 
    1671                    f_dcf  = f_rhosw 
     1752#   if defined key_mocsy 
     1753                  !! 
     1754                  !! AXY (22/06/15): use Orr & Epitalon (2015) MOCSY-2 carbonate 
     1755                  !!                 chemistry package; note that depth is set to 
     1756                  !!                 zero in this call 
     1757                  CALL mocsy_interface( ztmp, zsal, zalk, zdic, zsil, zpho,        &  ! inputs 
     1758                  f_pp0, 0.0, gphit(ji,jj), f_kw660, f_xco2a, 1,                   &  ! inputs 
     1759                  f_ph, f_pco2w, f_fco2w, f_h2co3, f_hco3, f_co3, f_omarg(ji,jj),  &  ! outputs 
     1760                  f_omcal(ji,jj), f_BetaD, f_rhosw, f_opres, f_insitut,            &  ! outputs 
     1761                  f_pco2atm, f_fco2atm, f_schmidtco2, f_kwco2, f_K0,               &  ! outputs 
     1762                  f_co2starair, f_co2flux, f_dpco2 )                                  ! outputs 
     1763                  !! 
     1764                  f_TDIC = (zdic / f_rhosw) * 1000. ! mmol / m3 -> umol / kg 
     1765                  f_TALK = (zalk / f_rhosw) * 1000. !  meq / m3 ->  ueq / kg 
     1766                  f_dcf  = f_rhosw 
     1767#   else                   
     1768                  iters = 0 
     1769                  !! 
     1770                  !! carbon dioxide (CO2); Jerry Blackford code (ostensibly OCMIP-2, but not) 
     1771                  CALL trc_co2_medusa( ztmp, zsal, zdic, zalk, 0.0, f_kw660, f_xco2a,  &  ! inputs 
     1772                  f_ph, f_pco2w, f_h2co3, f_hco3, f_co3, f_omcal(ji,jj),               &  ! outputs 
     1773                  f_omarg(ji,jj), f_co2flux, f_TDIC, f_TALK, f_dcf, f_henry, iters )      ! outputs 
     1774                  !! 
     1775                  !! AXY (09/01/14): removed iteration and NaN checks; these have 
     1776                  !!                 been moved to trc_co2_medusa together with a 
     1777                  !!                 fudge that amends erroneous values (this is 
     1778                  !!                 intended to be a temporary fudge!); the 
     1779                  !!                 output warnings are retained here so that 
     1780                  !!                 failure position can be determined 
     1781                  if (iters .eq. 25) then 
     1782                     IF(lwp) WRITE(numout,*) ' trc_bio_medusa: ITERS WARNING, ', & 
     1783                     iters, ' AT (', ji, ', ', jj, ', ', jk, ') AT ', kt 
     1784                  endif 
     1785#   endif 
    16721786#  else 
    1673                    !! AXY (18/04/13): switch off carbonate chemistry calculations; provide 
    1674                    !!                 quasi-sensible alternatives 
    1675                    f_ph           = 8.1 
    1676                    f_pco2w        = f_xco2a 
    1677                    f_h2co3        = 0.005 * zdic 
    1678                    f_hco3         = 0.865 * zdic 
    1679                    f_co3          = 0.130 * zdic 
    1680                    f_omcal(ji,jj) = 4. 
    1681                    f_omarg(ji,jj) = 2. 
    1682                    f_co2flux      = 0. 
    1683                    f_TDIC         = zdic 
    1684                    f_TALK         = zalk 
    1685                    f_dcf          = 1.026 
    1686                    f_henry        = 1. 
    1687                    !! AXY (23/06/15): add in some extra MOCSY diagnostics 
    1688                    f_fco2w        = f_xco2a 
    1689                    f_BetaD        = 1. 
    1690                    f_rhosw        = 1.026 
    1691                    f_opres        = 0. 
    1692                    f_insitut      = ztmp 
    1693                    f_pco2atm      = f_xco2a 
    1694                    f_fco2atm      = f_xco2a 
    1695                    f_schmidtco2   = 660. 
    1696                    f_kwco2        = 0. 
    1697                    f_K0           = 0. 
    1698                    f_co2starair   = f_xco2a 
    1699                    f_dpco2        = 0. 
     1787                  !! AXY (18/04/13): switch off carbonate chemistry calculations; provide 
     1788                  !!                 quasi-sensible alternatives 
     1789                  f_ph           = 8.1 
     1790                  f_pco2w        = f_xco2a 
     1791                  f_h2co3        = 0.005 * zdic 
     1792                  f_hco3         = 0.865 * zdic 
     1793                  f_co3          = 0.130 * zdic 
     1794                  f_omcal(ji,jj) = 4. 
     1795                  f_omarg(ji,jj) = 2. 
     1796                  f_co2flux      = 0. 
     1797                  f_TDIC         = zdic 
     1798                  f_TALK         = zalk 
     1799                  f_dcf          = 1.026 
     1800                  f_henry        = 1. 
     1801                  !! AXY (23/06/15): add in some extra MOCSY diagnostics 
     1802                  f_fco2w        = f_xco2a 
     1803                  f_BetaD        = 1. 
     1804                  f_rhosw        = 1.026 
     1805                  f_opres        = 0. 
     1806                  f_insitut      = ztmp 
     1807                  f_pco2atm      = f_xco2a 
     1808                  f_fco2atm      = f_xco2a 
     1809                  f_schmidtco2   = 660. 
     1810                  f_kwco2        = 0. 
     1811                  f_K0           = 0. 
     1812                  f_co2starair   = f_xco2a 
     1813                  f_dpco2        = 0. 
    17001814#  endif 
    1701                    !! 
    1702                    !! mmol/m2/s -> mmol/m3/d; correct for sea-ice; divide through by layer thickness 
    1703                    f_co2flux = (1. - fr_i(ji,jj)) * f_co2flux * 86400. / fthk 
    1704                    !! 
    1705                    !! oxygen (O2); OCMIP-2 code 
    1706                    !! AXY (23/06/15): amend input list for oxygen to account for common gas 
    1707                    !!                 transfer velocity 
    1708                    !! CALL trc_oxy_medusa( ztmp, zsal, f_uwind, f_vwind, f_pp0, zoxy / 1000., fthk,  &  ! inputs 
    1709                    !! f_kw660, f_o2flux, f_o2sat )                                                      ! outputs 
    1710                    CALL trc_oxy_medusa( ztmp, zsal, f_kw660, f_pp0, zoxy,  &  ! inputs 
    1711                         f_kwo2, f_o2flux, f_o2sat )                                ! outputs 
    1712                    !! 
    1713                    !! mmol/m2/s -> mol/m3/d; correct for sea-ice; divide through by layer thickness 
    1714                    f_o2flux  = (1. - fr_i(ji,jj)) * f_o2flux * 86400. / fthk 
    1715                    !! 
    1716                    !! Jpalm (08-2014) 
    1717                    !! DMS surface concentration calculation; initialy added using MET-OFFICE subroutine 
    1718                    !! air-sea flux calculated in atmospheric chemistry from atm and ocn concentrations 
    1719                    !! 
    1720                    !! AXY (13/03/15): this is amended to calculate all of the DMS 
    1721                    !!                 estimates examined during UKESM1 (see comments 
    1722                    !!                 in trcdms_medusa.F90) 
    1723                    !! 
    1724                    !! AXY (28/03/17): amended to pass DIN limitation instead of DIN concentration; 
    1725                    !!                 accounts for differences in nutrient half-saturations; changes  
    1726                    !!                 also made in trc_dms_medusa 
    1727                    !! 
    1728                    IF (jdms .eq. 1) THEN 
    1729                       !! 
    1730                       !! calculate weighted half-saturation for DIN uptake 
    1731                       dms_wtkn = ((zphn * xnln) + (zphd * xnld)) / (zphn + zphd) 
    1732                       !! 
    1733                       !! feed in correct inputs 
    1734                       if (jdms_input .eq. 0) then 
    1735                          !! use instantaneous inputs 
    1736                          dms_nlim = zdin / (zdin + dms_wtkn) 
    1737                          !! 
    1738                          CALL trc_dms_medusa( zchn, zchd, hmld(ji,jj), qsr(ji,jj), dms_nlim, &  ! inputs 
    1739                               dms_andr, dms_simo, dms_aran, dms_hall )                               ! outputs 
    1740                       else 
    1741                          !! use diel-average inputs 
    1742                          dms_nlim = zn_dms_din(ji,jj) / (zn_dms_din(ji,jj) + dms_wtkn)  
    1743                          !! 
    1744                          CALL trc_dms_medusa( zn_dms_chn(ji,jj), zn_dms_chd(ji,jj), &  ! inputs 
    1745                               zn_dms_mld(ji,jj), zn_dms_qsr(ji,jj), dms_nlim,            &  ! inputs 
    1746                               dms_andr, dms_simo, dms_aran, dms_hall )                      ! outputs 
    1747                       endif 
    1748                       !! 
    1749                       !! assign correct output to variable passed to atmosphere 
    1750                       if     (jdms_model .eq. 1) then 
    1751                          dms_surf = dms_andr 
    1752                       elseif (jdms_model .eq. 2) then 
    1753                          dms_surf = dms_simo 
    1754                       elseif (jdms_model .eq. 3) then 
    1755                          dms_surf = dms_aran 
    1756                       elseif (jdms_model .eq. 4) then 
    1757                          dms_surf = dms_hall 
    1758                       endif 
    1759                       !! 
    1760                       !! 2D diag through iom_use 
    1761                       IF( lk_iomput ) THEN 
    1762                          IF( med_diag%DMS_SURF%dgsave ) THEN 
    1763                             dms_surf2d(ji,jj) = dms_surf 
    1764                          ENDIF 
    1765                          IF( med_diag%DMS_ANDR%dgsave ) THEN 
    1766                             dms_andr2d(ji,jj) = dms_andr 
    1767                          ENDIF 
    1768                          IF( med_diag%DMS_SIMO%dgsave ) THEN 
    1769                             dms_simo2d(ji,jj) = dms_simo 
    1770                          ENDIF 
    1771                          IF( med_diag%DMS_ARAN%dgsave ) THEN 
    1772                             dms_aran2d(ji,jj) = dms_aran 
    1773                          ENDIF 
    1774                          IF( med_diag%DMS_HALL%dgsave ) THEN 
    1775                             dms_hall2d(ji,jj) = dms_hall 
    1776                          ENDIF 
     1815                  !! 
     1816                  !! mmol/m2/s -> mmol/m3/d; correct for sea-ice; divide through by layer thickness 
     1817                  f_co2flux = (1. - fr_i(ji,jj)) * f_co2flux * 86400. / fthk 
     1818                  !! 
     1819                  !! oxygen (O2); OCMIP-2 code 
     1820                  !! AXY (23/06/15): amend input list for oxygen to account for common gas 
     1821                  !!                 transfer velocity 
     1822                  !! CALL trc_oxy_medusa( ztmp, zsal, f_uwind, f_vwind, f_pp0, zoxy / 1000., fthk,  &  ! inputs 
     1823                  !! f_kw660, f_o2flux, f_o2sat )                                                      ! outputs 
     1824                  CALL trc_oxy_medusa( ztmp, zsal, f_kw660, f_pp0, zoxy,  &  ! inputs 
     1825                  f_kwo2, f_o2flux, f_o2sat )                                ! outputs 
     1826                  !! 
     1827                  !! mmol/m2/s -> mol/m3/d; correct for sea-ice; divide through by layer thickness 
     1828                  f_o2flux  = (1. - fr_i(ji,jj)) * f_o2flux * 86400. / fthk 
     1829                  !! 
     1830                  !! Jpalm (08-2014) 
     1831                  !! DMS surface concentration calculation 
     1832                  !! initialy added for UKESM1 model. 
     1833                  !! using MET-OFFICE subroutine. 
     1834                  !! DMS module only needs Chl concentration and MLD 
     1835                  !! to get an aproximate value of DMS concentration. 
     1836                  !! air-sea fluxes are calculated by atmospheric chemitry model 
     1837                  !! from atm and oc-surface concentrations. 
     1838                  !! 
     1839                  !! AXY (13/03/15): this is amended to calculate all of the DMS 
     1840                  !!                 estimates examined during UKESM1 (see comments 
     1841                  !!                 in trcdms_medusa.F90) 
     1842                  !! 
     1843                  IF (jdms .eq. 1) THEN 
     1844                     !! 
     1845                     !! feed in correct inputs 
     1846                     if (jdms_input .eq. 0) then 
     1847                        !! use instantaneous inputs 
     1848                        CALL trc_dms_medusa( zchn, zchd, hmld(ji,jj), qsr(ji,jj), zdin, &  ! inputs 
     1849                        dms_andr, dms_simo, dms_aran, dms_hall )                           ! outputs 
     1850                     else 
     1851                        !! use diel-average inputs 
     1852                        CALL trc_dms_medusa( zn_dms_chn(ji,jj), zn_dms_chd(ji,jj), &  ! inputs 
     1853                        zn_dms_mld(ji,jj), zn_dms_qsr(ji,jj), zn_dms_din(ji,jj),   &  ! inputs 
     1854                        dms_andr, dms_simo, dms_aran, dms_hall )                      ! outputs 
     1855                     endif 
     1856                     !! 
     1857                     !! assign correct output to variable passed to atmosphere 
     1858                     if     (jdms_model .eq. 1) then 
     1859                        dms_surf = dms_andr 
     1860                     elseif (jdms_model .eq. 2) then 
     1861                        dms_surf = dms_simo 
     1862                     elseif (jdms_model .eq. 3) then 
     1863                        dms_surf = dms_aran 
     1864                     elseif (jdms_model .eq. 4) then 
     1865                        dms_surf = dms_hall 
     1866                     endif 
     1867                     !! 
     1868                     !! 2D diag through iom_use 
     1869                     IF( lk_iomput ) THEN 
     1870                       IF( med_diag%DMS_SURF%dgsave ) THEN 
     1871                         dms_surf2d(ji,jj) = dms_surf 
     1872                       ENDIF 
     1873                       IF( med_diag%DMS_ANDR%dgsave ) THEN 
     1874                         dms_andr2d(ji,jj) = dms_andr 
     1875                       ENDIF 
     1876                       IF( med_diag%DMS_SIMO%dgsave ) THEN 
     1877                         dms_simo2d(ji,jj) = dms_simo 
     1878                       ENDIF 
     1879                       IF( med_diag%DMS_ARAN%dgsave ) THEN 
     1880                         dms_aran2d(ji,jj) = dms_aran 
     1881                       ENDIF 
     1882                       IF( med_diag%DMS_HALL%dgsave ) THEN 
     1883                         dms_hall2d(ji,jj) = dms_hall 
     1884                       ENDIF 
    17771885#   if defined key_debug_medusa 
    1778                          IF ( lwp ) write (numout,*) 'trc_bio_medusa: finish calculating dms' 
    1779                          CALL flush(numout) 
     1886                       IF (lwp) write (numout,*) 'trc_bio_medusa: finish calculating dms' 
     1887                     CALL flush(numout) 
    17801888#   endif  
    1781                       ENDIF 
    1782                       !! End iom 
    1783                    ENDIF 
    1784                    !! End DMS Loop 
    1785                    !! 
    1786                    !! store 2D outputs 
    1787                    !! 
    1788                    !! JPALM -- 17-11-16 -- put fgco2 out of diag request 
    1789                    !!                    is needed for coupling; pass through restart 
    1790                    !! IF( med_diag%FGCO2%dgsave ) THEN 
    1791                    !! convert from  mol/m2/day to kg/m2/s 
    1792                    fgco2(ji,jj) = f_co2flux * fthk * CO2flux_conv  !! mmol-C/m3/d -> kg-CO2/m2/s 
    1793                    !! ENDIF 
    1794                    IF ( lk_iomput ) THEN 
     1889                     ENDIF 
     1890                     !! End iom 
     1891                  ENDIF 
     1892                  !! End DMS Loop 
     1893                  !! 
     1894                  !! store 2D outputs 
     1895                  !! 
     1896                  !! JPALM -- 17-11-16 -- put fgco2 out of diag request 
     1897                  !!                    is needed for coupling; pass through restart 
     1898                  !! IF( med_diag%FGCO2%dgsave ) THEN 
     1899                     !! convert from  mol/m2/day to kg/m2/s 
     1900                     fgco2(ji,jj) = f_co2flux * fthk * CO2flux_conv  !! mmol-C/m3/d -> kg-CO2/m2/s 
     1901                  !! ENDIF 
     1902                  IF ( lk_iomput ) THEN 
    17951903                      IF( med_diag%ATM_PCO2%dgsave ) THEN 
    17961904                         f_pco2a2d(ji,jj) = f_pco2atm 
     
    18481956                         f_ocndpco2_2d(ji,jj) = f_dpco2 
    18491957                      ENDIF 
    1850                    ENDIF 
    1851                    !!  
    1852                 endif 
    1853                 !! End jk = 1 loop within ROAM key  
    1854  
    1855                 !! AXY (11/11/16): CMIP6 oxygen saturation 3D diagnostic 
    1856                 IF ( med_diag%O2SAT3%dgsave ) THEN 
    1857                    call oxy_sato( ztmp, zsal, f_o2sat3 ) 
    1858                    o2sat3(ji, jj, jk) = f_o2sat3 
    1859                 ENDIF 
    1860  
    1861 # endif 
    1862  
    1863                 !!====================================================================== 
    1864                 !! AXY (07/04/17): possible subroutine block; riverine inputs (or delete; it's unused presently) 
    1865                 !!====================================================================== 
    1866                 if ( jk .eq. 1 ) then 
    1867                    !!---------------------------------------------------------------------- 
    1868                    !! River inputs 
    1869                    !!---------------------------------------------------------------------- 
    1870                    !! 
    1871                    !! runoff comes in as        kg / m2 / s 
    1872                    !! used and written out as   m3 / m2 / d (= m / d) 
    1873                    !! where                     1000 kg / m2 / d = 1 m3 / m2 / d = 1 m / d 
    1874                    !! 
    1875                    !! AXY (17/07/14): the compiler doesn't like this line for some reason; 
    1876                    !!                 as MEDUSA doesn't even use runoff for riverine inputs, 
    1877                    !!                 a temporary solution is to switch off runoff entirely 
    1878                    !!                 here; again, this change is one of several that will  
    1879                    !!                 need revisiting once MEDUSA has bedded down in UKESM1; 
    1880                    !!                 particularly so if the land scheme provides information 
    1881                    !!                 concerning nutrient fluxes 
    1882                    !! 
    1883                    !! f_runoff(ji,jj) = sf_rnf(1)%fnow(ji,jj,1) / 1000. * 60. * 60. * 24. 
    1884                    f_runoff(ji,jj) = 0.0 
    1885                    !! 
    1886                    !! nutrients are added via rivers to the model in one of two ways: 
    1887                    !!   1. via river concentration; i.e. the average nutrient concentration 
    1888                    !!      of a river water is described by a spatial file, and this is 
    1889                    !!      multiplied by runoff to give a nutrient flux 
    1890                    !!   2. via direct river flux; i.e. the average nutrient flux due to 
    1891                    !!      rivers is described by a spatial file, and this is simply applied 
    1892                    !!      as a direct nutrient flux (i.e. it does not relate or respond to 
    1893                    !!      model runoff) 
    1894                    !! nutrient fields are derived from the GlobalNEWS 2 database; carbon and 
    1895                    !! alkalinity are derived from continent-scale DIC estimates (Huang et al.,  
    1896                    !! 2012) and some Arctic river alkalinity estimates (Katya?) 
    1897                    !!  
    1898                    !! as of 19/07/12, riverine nutrients can now be spread vertically across  
    1899                    !! several grid cells rather than just poured into the surface box; this 
    1900                    !! block of code is still executed, however, to set up the total amounts 
    1901                    !! of nutrient entering via rivers 
    1902                    !! 
    1903                    !! nitrogen 
    1904                    if (jriver_n .eq. 1) then 
    1905                       !! river concentration specified; use runoff to calculate input 
    1906                       f_riv_n(ji,jj) = f_runoff(ji,jj) * riv_n(ji,jj) 
    1907                    elseif (jriver_n .eq. 2) then 
    1908                       !! river flux specified; independent of runoff 
    1909                       f_riv_n(ji,jj) = riv_n(ji,jj) 
    1910                    endif 
    1911                    !! 
    1912                    !! silicon 
    1913                    if (jriver_si .eq. 1) then 
    1914                       !! river concentration specified; use runoff to calculate input 
    1915                       f_riv_si(ji,jj) = f_runoff(ji,jj) * riv_si(ji,jj) 
    1916                    elseif (jriver_si .eq. 2) then 
    1917                       !! river flux specified; independent of runoff 
    1918                       f_riv_si(ji,jj) = riv_si(ji,jj) 
    1919                    endif 
    1920                    !! 
    1921                    !! carbon 
    1922                    if (jriver_c .eq. 1) then 
    1923                       !! river concentration specified; use runoff to calculate input 
    1924                       f_riv_c(ji,jj) = f_runoff(ji,jj) * riv_c(ji,jj) 
    1925                    elseif (jriver_c .eq. 2) then 
    1926                       !! river flux specified; independent of runoff 
    1927                       f_riv_c(ji,jj) = riv_c(ji,jj) 
    1928                    endif 
    1929                    !! 
    1930                    !! alkalinity 
    1931                    if (jriver_alk .eq. 1) then 
    1932                       !! river concentration specified; use runoff to calculate input 
    1933                       f_riv_alk(ji,jj) = f_runoff(ji,jj) * riv_alk(ji,jj) 
    1934                    elseif (jriver_alk .eq. 2) then 
    1935                       !! river flux specified; independent of runoff 
    1936                       f_riv_alk(ji,jj) = riv_alk(ji,jj) 
    1937                    endif 
    1938  
    1939                 endif 
    1940  
    1941                 !!====================================================================== 
    1942                 !! AXY (07/04/17): possible subroutine block; phytoplankton growth 
    1943                 !!====================================================================== 
    1944  
    1945                 !!---------------------------------------------------------------------- 
    1946                 !! Chlorophyll calculations 
    1947                 !!---------------------------------------------------------------------- 
    1948                 !! 
    1949                 !! non-diatoms 
    1950                 if (zphn.GT.rsmall) then 
    1951                    fthetan = max(tiny(zchn), (zchn * xxi) / (zphn + tiny(zphn))) 
    1952                    faln    = xaln * fthetan 
    1953                 else 
    1954                    fthetan = 0. 
    1955                    faln    = 0. 
    1956                 endif 
    1957                 !! 
    1958                 !! diatoms 
    1959                 if (zphd.GT.rsmall) then 
    1960                    fthetad = max(tiny(zchd), (zchd * xxi) / (zphd + tiny(zphd))) 
    1961                    fald    = xald * fthetad 
    1962                 else 
    1963                    fthetad = 0. 
    1964                    fald    = 0. 
    1965                 endif 
    1966  
    1967                 !!---------------------------------------------------------------------- 
    1968                 !! Phytoplankton light limitation 
    1969                 !!---------------------------------------------------------------------- 
    1970                 !! 
    1971                 !! It is assumed xpar is the depth-averaged (vertical layer) PAR  
    1972                 !! Light limitation (check self-shading) in W/m2 
    1973                 !! 
    1974                 !! Note that there is no temperature dependence in phytoplankton 
    1975                 !! growth rate or any other function.  
    1976                 !! In calculation of Chl/Phy ratio tiny(phyto) is introduced to avoid 
    1977                 !! NaNs in case of Phy==0.   
    1978                 !! 
    1979                 !! fthetad and fthetan are Chl:C ratio (gChl/gC) in diat and non-diat:  
    1980                 !! for 1:1 Chl:P ratio (mgChl/mmolN) theta=0.012 
    1981                 !! 
    1982                 !! AXY (16/07/09) 
    1983                 !! temperature for new Eppley style phytoplankton growth 
    1984                 loc_T   = tsn(ji,jj,jk,jp_tem) 
    1985                 fun_T   = 1.066**(1.0 * loc_T) 
    1986                 !! AXY (16/05/11): add in new Q10 (1.5, not 2.0) for 
    1987                 !phytoplankton 
    1988                 !!                 growth; remin. unaffected 
    1989                 fun_Q10 = xq10**((loc_T - 0.0) / 10.0) 
    1990                 if (jphy.eq.1) then 
    1991                    xvpnT = xvpn * fun_T 
    1992                    xvpdT = xvpd * fun_T 
    1993                 elseif (jphy.eq.2) then 
    1994                    xvpnT = xvpn * fun_Q10 
    1995                    xvpdT = xvpd * fun_Q10 
    1996                 else 
    1997                    xvpnT = xvpn 
    1998                    xvpdT = xvpd 
    1999                 endif 
    2000                 !! 
    2001                 !! non-diatoms 
    2002                 fchn1   = (xvpnT * xvpnT) + (faln * faln * xpar(ji,jj,jk) * xpar(ji,jj,jk)) 
    2003                 if (fchn1.GT.rsmall) then 
    2004                    fchn    = xvpnT / (sqrt(fchn1) + tiny(fchn1)) 
    2005                 else 
    2006                    fchn    = 0. 
    2007                 endif 
    2008                 fjln    = fchn * faln * xpar(ji,jj,jk) !! non-diatom J term 
    2009                 fjlim_pn = fjln / xvpnT 
    2010                 !! 
    2011                 !! diatoms 
    2012                 fchd1   = (xvpdT * xvpdT) + (fald * fald * xpar(ji,jj,jk) * xpar(ji,jj,jk)) 
    2013                 if (fchd1.GT.rsmall) then 
    2014                    fchd    = xvpdT / (sqrt(fchd1) + tiny(fchd1)) 
    2015                 else 
    2016                    fchd    = 0. 
    2017                 endif 
    2018                 fjld    = fchd * fald * xpar(ji,jj,jk) !! diatom J term 
    2019                 fjlim_pd = fjld / xvpdT 
    2020  
    2021                 !!---------------------------------------------------------------------- 
    2022                 !! Phytoplankton nutrient limitation 
    2023                 !!---------------------------------------------------------------------- 
    2024                 !! 
    2025                 !! non-diatoms (N, Fe) 
    2026                 fnln = zdin / (zdin + xnln) !! non-diatom Qn term 
    2027                 ffln = zfer / (zfer + xfln) !! non-diatom Qf term 
    2028                 !! 
    2029                 !! diatoms (N, Si, Fe) 
    2030                 fnld = zdin / (zdin + xnld) !! diatom Qn term 
    2031                 fsld = zsil / (zsil + xsld) !! diatom Qs term 
    2032                 ffld = zfer / (zfer + xfld) !! diatom Qf term 
    2033  
    2034                 !!---------------------------------------------------------------------- 
    2035                 !! Primary production (non-diatoms) 
    2036                 !! (note: still needs multiplying by phytoplankton concentration) 
    2037                 !!---------------------------------------------------------------------- 
    2038                 !! 
    2039                 if (jliebig .eq. 0) then 
    2040                    !! multiplicative nutrient limitation 
    2041                    fpnlim = fnln * ffln 
    2042                 elseif (jliebig .eq. 1) then 
    2043                    !! Liebig Law (= most limiting) nutrient limitation 
    2044                    fpnlim = min(fnln, ffln) 
    2045                 endif 
    2046                 fprn = fjln * fpnlim 
    2047  
    2048                 !!---------------------------------------------------------------------- 
    2049                 !! Primary production (diatoms) 
    2050                 !! (note: still needs multiplying by phytoplankton concentration) 
    2051                 !! 
    2052                 !! production here is split between nitrogen production and that of 
    2053                 !! silicon; depending upon the "intracellular" ratio of Si:N, model 
    2054                 !! diatoms will uptake nitrogen/silicon differentially; this borrows 
    2055                 !! from the diatom model of Mongin et al. (2006) 
    2056                 !!---------------------------------------------------------------------- 
    2057                 !! 
    2058                 if (jliebig .eq. 0) then 
    2059                    !! multiplicative nutrient limitation 
    2060                    fpdlim = fnld * ffld 
    2061                 elseif (jliebig .eq. 1) then 
    2062                    !! Liebig Law (= most limiting) nutrient limitation 
    2063                    fpdlim = min(fnld, ffld) 
    2064                 endif 
    2065                 !! 
    2066                 if (zphd.GT.rsmall .AND. zpds.GT.rsmall) then 
    2067                    !! "intracellular" elemental ratios 
    2068                    ! fsin  = zpds / (zphd + tiny(zphd)) 
    2069                    ! fnsi  = zphd / (zpds + tiny(zpds)) 
    2070                    fsin = 0.0 
    2071                    IF( zphd .GT. rsmall) fsin  = zpds / zphd 
    2072                    fnsi = 0.0 
    2073                    IF( zpds .GT. rsmall) fnsi  = zphd / zpds 
    2074                    !! AXY (23/02/10): these next variables derive from Mongin et al. (2003) 
    2075                    fsin1 = 3.0 * xsin0 !! = 0.6 
    2076                    fnsi1 = 1.0 / fsin1 !! = 1.667 
    2077                    fnsi2 = 1.0 / xsin0 !! = 5.0 
    2078                    !! 
    2079                    !! conditionalities based on ratios 
    2080                    !! nitrogen (and iron and carbon) 
    2081                    if (fsin.le.xsin0) then 
    2082                       fprd  = 0.0 
    2083                       fsld2 = 0.0 
    2084                    elseif (fsin.lt.fsin1) then 
    2085                       fprd  = xuif * ((fsin - xsin0) / (fsin + tiny(fsin))) * (fjld * fpdlim) 
    2086                       fsld2 = xuif * ((fsin - xsin0) / (fsin + tiny(fsin))) 
    2087                    elseif (fsin.ge.fsin1) then 
    2088                       fprd  = (fjld * fpdlim) 
    2089                       fsld2 = 1.0 
    2090                    endif 
    2091                    !! 
    2092                    !! silicon 
    2093                    if (fsin.lt.fnsi1) then 
    2094                       fprds = (fjld * fsld) 
    2095                    elseif (fsin.lt.fnsi2) then 
    2096                       fprds = xuif * ((fnsi - xnsi0) / (fnsi + tiny(fnsi))) * (fjld * fsld) 
    2097                    else 
    2098                       fprds = 0.0 
    2099                    endif 
    2100                 else 
    2101                    fsin  = 0.0 
    2102                    fnsi  = 0.0 
    2103                    fprd  = 0.0 
    2104                    fsld2 = 0.0 
    2105                    fprds = 0.0 
    2106                 endif 
    2107  
    2108                 !!---------------------------------------------------------------------- 
    2109                 !! Mixed layer primary production 
    2110                 !! this block calculates the amount of primary production that occurs 
    2111                 !! within the upper mixed layer; this allows the separate diagnosis 
    2112                 !! of "sub-surface" primary production; it does assume that short- 
    2113                 !! term variability in mixed layer depth doesn't mess with things 
    2114                 !! though 
    2115                 !!---------------------------------------------------------------------- 
    2116                 !! 
    2117                 if (fdep1.le.hmld(ji,jj)) then 
    2118                    !! this level is entirely in the mixed layer 
    2119                    fq0 = 1.0 
    2120                 elseif (fdep.ge.hmld(ji,jj)) then 
    2121                    !! this level is entirely below the mixed layer 
    2122                    fq0 = 0.0 
    2123                 else 
    2124                    !! this level straddles the mixed layer 
    2125                    fq0 = (hmld(ji,jj) - fdep) / fthk 
    2126                 endif 
    2127                 !! 
    2128                 fprn_ml(ji,jj) = fprn_ml(ji,jj) + (fprn * zphn * fthk * fq0) 
    2129                 fprd_ml(ji,jj) = fprd_ml(ji,jj) + (fprd * zphd * fthk * fq0) 
    2130  
    2131                 !!---------------------------------------------------------------------- 
    2132                 !! Vertical Integral -- 
    2133                 !!---------------------------------------------------------------------- 
    2134                 ftot_pn(ji,jj)  = ftot_pn(ji,jj)  + (zphn * fthk)   !! vertical integral non-diatom phytoplankton 
    2135                 ftot_pd(ji,jj)  = ftot_pd(ji,jj)  + (zphd * fthk)   !! vertical integral diatom phytoplankton 
    2136                 ftot_zmi(ji,jj) = ftot_zmi(ji,jj) + (zzmi * fthk)   !! vertical integral microzooplankton 
    2137                 ftot_zme(ji,jj) = ftot_zme(ji,jj) + (zzme * fthk)   !! vertical integral mesozooplankton 
    2138                 ftot_det(ji,jj) = ftot_det(ji,jj) + (zdet * fthk)   !! vertical integral slow detritus, nitrogen 
    2139                 ftot_dtc(ji,jj) = ftot_dtc(ji,jj) + (zdtc * fthk)   !! vertical integral slow detritus, carbon 
    2140  
    2141                 !!---------------------------------------------------------------------- 
    2142                 !! More chlorophyll calculations 
    2143                 !!---------------------------------------------------------------------- 
    2144                 !! 
    2145                 !! frn = (xthetam / fthetan) * (fprn / (fthetan * xpar(ji,jj,jk))) 
    2146                 !! frd = (xthetam / fthetad) * (fprd / (fthetad * xpar(ji,jj,jk))) 
    2147                 frn = (xthetam * fchn * fnln * ffln       ) / (fthetan + tiny(fthetan)) 
    2148                 !! AXY (12/05/09): there's potentially a problem here; fsld, silicic acid  
    2149                 !!   limitation, is used in the following line to regulate chlorophyll  
    2150                 !!   growth in a manner that is inconsistent with its use in the regulation  
    2151                 !!   of biomass growth; the Mongin term term used in growth is more complex 
    2152                 !!   than the simple multiplicative function used below 
    2153                 !! frd = (xthetam * fchd * fnld * ffld * fsld) / (fthetad + tiny(fthetad)) 
    2154                 !! AXY (12/05/09): this replacement line uses the new variable, fsld2, to 
    2155                 !!   regulate chlorophyll growth 
    2156                 frd = (xthetamd * fchd * fnld * ffld * fsld2) / (fthetad + tiny(fthetad)) 
    2157  
    2158                 !!====================================================================== 
    2159                 !! AXY (07/04/17): possible subroutine block; zooplankton grazing 
    2160                 !!====================================================================== 
    2161  
    2162                 !!---------------------------------------------------------------------- 
    2163                 !! Zooplankton Grazing  
    2164                 !! this code supplements the base grazing model with one that 
    2165                 !! considers the C:N ratio of grazed food and balances this against 
    2166                 !! the requirements of zooplankton growth; this model is derived  
    2167                 !! from that of Anderson & Pondaven (2003) 
    2168                 !! 
    2169                 !! the current version of the code assumes a fixed C:N ratio for 
    2170                 !! detritus (in contrast to Anderson & Pondaven, 2003), though the 
    2171                 !! full equations are retained for future extension 
    2172                 !!---------------------------------------------------------------------- 
    2173                 !! 
    2174                 !!---------------------------------------------------------------------- 
    2175                 !! Microzooplankton first 
    2176                 !!---------------------------------------------------------------------- 
    2177                 !! 
    2178                 fmi1    = (xkmi * xkmi) + (xpmipn * zphn * zphn) + (xpmid * zdet * zdet) 
    2179                 fmi     = xgmi * zzmi / fmi1 
    2180                 fgmipn  = fmi * xpmipn * zphn * zphn   !! grazing on non-diatoms 
    2181                 fgmid   = fmi * xpmid  * zdet * zdet   !! grazing on detrital nitrogen 
     1958                  ENDIF 
     1959                  !!  
     1960               endif 
     1961               !! End jk = 1 loop within ROAM key  
     1962 
     1963               !! AXY (11/11/16): CMIP6 oxygen saturation 3D diagnostic 
     1964               IF ( med_diag%O2SAT3%dgsave ) THEN 
     1965                  call oxy_sato( ztmp, zsal, f_o2sat3 ) 
     1966                  o2sat3(ji, jj, jk) = f_o2sat3 
     1967               ENDIF 
     1968 
     1969# endif 
     1970 
     1971               if ( jk .eq. 1 ) then 
     1972                  !!---------------------------------------------------------------------- 
     1973                  !! River inputs 
     1974                  !!---------------------------------------------------------------------- 
     1975                  !! 
     1976                  !! runoff comes in as        kg / m2 / s 
     1977                  !! used and written out as   m3 / m2 / d (= m / d) 
     1978                  !! where                     1000 kg / m2 / d = 1 m3 / m2 / d = 1 m / d 
     1979                  !! 
     1980                  !! AXY (17/07/14): the compiler doesn't like this line for some reason; 
     1981                  !!                 as MEDUSA doesn't even use runoff for riverine inputs, 
     1982                  !!                 a temporary solution is to switch off runoff entirely 
     1983                  !!                 here; again, this change is one of several that will  
     1984                  !!                 need revisiting once MEDUSA has bedded down in UKESM1; 
     1985                  !!                 particularly so if the land scheme provides information 
     1986                  !!                 concerning nutrient fluxes 
     1987                  !! 
     1988                  !! f_runoff(ji,jj) = sf_rnf(1)%fnow(ji,jj,1) / 1000. * 60. * 60. * 24. 
     1989                  f_runoff(ji,jj) = 0.0 
     1990                  !! 
     1991                  !! nutrients are added via rivers to the model in one of two ways: 
     1992                  !!   1. via river concentration; i.e. the average nutrient concentration 
     1993                  !!      of a river water is described by a spatial file, and this is 
     1994                  !!      multiplied by runoff to give a nutrient flux 
     1995                  !!   2. via direct river flux; i.e. the average nutrient flux due to 
     1996                  !!      rivers is described by a spatial file, and this is simply applied 
     1997                  !!      as a direct nutrient flux (i.e. it does not relate or respond to 
     1998                  !!      model runoff) 
     1999                  !! nutrient fields are derived from the GlobalNEWS 2 database; carbon and 
     2000                  !! alkalinity are derived from continent-scale DIC estimates (Huang et al.,  
     2001                  !! 2012) and some Arctic river alkalinity estimates (Katya?) 
     2002                  !!  
     2003                  !! as of 19/07/12, riverine nutrients can now be spread vertically across  
     2004                  !! several grid cells rather than just poured into the surface box; this 
     2005                  !! block of code is still executed, however, to set up the total amounts 
     2006                  !! of nutrient entering via rivers 
     2007                  !! 
     2008                  !! nitrogen 
     2009                  if (jriver_n .eq. 1) then 
     2010                     !! river concentration specified; use runoff to calculate input 
     2011                     f_riv_n(ji,jj) = f_runoff(ji,jj) * riv_n(ji,jj) 
     2012                  elseif (jriver_n .eq. 2) then 
     2013                     !! river flux specified; independent of runoff 
     2014                     f_riv_n(ji,jj) = riv_n(ji,jj) 
     2015                  endif 
     2016                  !! 
     2017                  !! silicon 
     2018                  if (jriver_si .eq. 1) then 
     2019                     !! river concentration specified; use runoff to calculate input 
     2020                     f_riv_si(ji,jj) = f_runoff(ji,jj) * riv_si(ji,jj) 
     2021                  elseif (jriver_si .eq. 2) then 
     2022                     !! river flux specified; independent of runoff 
     2023                     f_riv_si(ji,jj) = riv_si(ji,jj) 
     2024                  endif 
     2025                  !! 
     2026                  !! carbon 
     2027                  if (jriver_c .eq. 1) then 
     2028                     !! river concentration specified; use runoff to calculate input 
     2029                     f_riv_c(ji,jj) = f_runoff(ji,jj) * riv_c(ji,jj) 
     2030                  elseif (jriver_c .eq. 2) then 
     2031                     !! river flux specified; independent of runoff 
     2032                     f_riv_c(ji,jj) = riv_c(ji,jj) 
     2033                  endif 
     2034                  !! 
     2035                  !! alkalinity 
     2036                  if (jriver_alk .eq. 1) then 
     2037                     !! river concentration specified; use runoff to calculate input 
     2038                     f_riv_alk(ji,jj) = f_runoff(ji,jj) * riv_alk(ji,jj) 
     2039                  elseif (jriver_alk .eq. 2) then 
     2040                     !! river flux specified; independent of runoff 
     2041                     f_riv_alk(ji,jj) = riv_alk(ji,jj) 
     2042                  endif 
     2043 
     2044               endif 
     2045 
     2046               !!---------------------------------------------------------------------- 
     2047               !! Chlorophyll calculations 
     2048               !!---------------------------------------------------------------------- 
     2049               !! 
     2050               !! non-diatoms 
     2051          if (zphn.GT.rsmall) then 
     2052                  fthetan = max(tiny(zchn), (zchn * xxi) / (zphn + tiny(zphn))) 
     2053                  faln    = xaln * fthetan 
     2054               else 
     2055                  fthetan = 0. 
     2056                  faln    = 0. 
     2057               endif 
     2058               !! 
     2059               !! diatoms 
     2060          if (zphd.GT.rsmall) then 
     2061                  fthetad = max(tiny(zchd), (zchd * xxi) / (zphd + tiny(zphd))) 
     2062                  fald    = xald * fthetad 
     2063               else 
     2064                  fthetad = 0. 
     2065                  fald    = 0. 
     2066               endif 
     2067 
     2068# if defined key_debug_medusa 
     2069               !! report biological calculations 
     2070               if (idf.eq.1.AND.idfval.eq.1) then 
     2071                  IF (lwp) write (numout,*) '------------------------------' 
     2072                  IF (lwp) write (numout,*) 'faln(',jk,') = ', faln 
     2073                  IF (lwp) write (numout,*) 'fald(',jk,') = ', fald 
     2074               endif 
     2075# endif 
     2076 
     2077               !!---------------------------------------------------------------------- 
     2078               !! Phytoplankton light limitation 
     2079               !!---------------------------------------------------------------------- 
     2080               !! 
     2081               !! It is assumed xpar is the depth-averaged (vertical layer) PAR  
     2082               !! Light limitation (check self-shading) in W/m2 
     2083               !! 
     2084               !! Note that there is no temperature dependence in phytoplankton 
     2085               !! growth rate or any other function.  
     2086               !! In calculation of Chl/Phy ratio tiny(phyto) is introduced to avoid 
     2087               !! NaNs in case of Phy==0.   
     2088               !! 
     2089               !! fthetad and fthetan are Chl:C ratio (gChl/gC) in diat and non-diat:  
     2090               !! for 1:1 Chl:P ratio (mgChl/mmolN) theta=0.012 
     2091               !! 
     2092               !! AXY (16/07/09) 
     2093               !! temperature for new Eppley style phytoplankton growth 
     2094               loc_T   = tsn(ji,jj,jk,jp_tem) 
     2095               fun_T   = 1.066**(1.0 * loc_T) 
     2096               !! AXY (16/05/11): add in new Q10 (1.5, not 2.0) for 
     2097               !phytoplankton 
     2098               !!                 growth; remin. unaffected 
     2099               fun_Q10 = jq10**((loc_T - 0.0) / 10.0) 
     2100               if (jphy.eq.1) then 
     2101                  xvpnT = xvpn * fun_T 
     2102                  xvpdT = xvpd * fun_T 
     2103               elseif (jphy.eq.2) then 
     2104                  xvpnT = xvpn * fun_Q10 
     2105                  xvpdT = xvpd * fun_Q10 
     2106               else 
     2107                  xvpnT = xvpn 
     2108                  xvpdT = xvpd 
     2109               endif 
     2110               !! 
     2111               !! non-diatoms 
     2112               fchn1   = (xvpnT * xvpnT) + (faln * faln * xpar(ji,jj,jk) * xpar(ji,jj,jk)) 
     2113               if (fchn1.GT.rsmall) then 
     2114                  fchn    = xvpnT / (sqrt(fchn1) + tiny(fchn1)) 
     2115               else 
     2116                  fchn    = 0. 
     2117               endif 
     2118               fjln    = fchn * faln * xpar(ji,jj,jk) !! non-diatom J term 
     2119               fjlim_pn = fjln / xvpnT 
     2120               !! 
     2121               !! diatoms 
     2122               fchd1   = (xvpdT * xvpdT) + (fald * fald * xpar(ji,jj,jk) * xpar(ji,jj,jk)) 
     2123               if (fchd1.GT.rsmall) then 
     2124                  fchd    = xvpdT / (sqrt(fchd1) + tiny(fchd1)) 
     2125               else 
     2126                  fchd    = 0. 
     2127               endif 
     2128               fjld    = fchd * fald * xpar(ji,jj,jk) !! diatom J term 
     2129               fjlim_pd = fjld / xvpdT 
     2130       
     2131# if defined key_debug_medusa 
     2132               !! report phytoplankton light limitation 
     2133               if (idf.eq.1.AND.idfval.eq.1) then 
     2134                  IF (lwp) write (numout,*) '------------------------------' 
     2135                  IF (lwp) write (numout,*) 'fchn(',jk,') = ', fchn 
     2136                  IF (lwp) write (numout,*) 'fchd(',jk,') = ', fchd 
     2137                  IF (lwp) write (numout,*) 'fjln(',jk,') = ', fjln 
     2138                  IF (lwp) write (numout,*) 'fjld(',jk,') = ', fjld 
     2139               endif 
     2140# endif 
     2141 
     2142               !!---------------------------------------------------------------------- 
     2143               !! Phytoplankton nutrient limitation 
     2144               !!---------------------------------------------------------------------- 
     2145               !! 
     2146               !! non-diatoms (N, Fe) 
     2147               fnln = zdin / (zdin + xnln) !! non-diatom Qn term 
     2148               ffln = zfer / (zfer + xfln) !! non-diatom Qf term 
     2149               !! 
     2150               !! diatoms (N, Si, Fe) 
     2151               fnld = zdin / (zdin + xnld) !! diatom Qn term 
     2152               fsld = zsil / (zsil + xsld) !! diatom Qs term 
     2153               ffld = zfer / (zfer + xfld) !! diatom Qf term 
     2154 
     2155# if defined key_debug_medusa 
     2156               !! report phytoplankton nutrient limitation 
     2157               if (idf.eq.1.AND.idfval.eq.1) then 
     2158                  IF (lwp) write (numout,*) '------------------------------' 
     2159                  IF (lwp) write (numout,*) 'fnln(',jk,') = ', fnln 
     2160                  IF (lwp) write (numout,*) 'fnld(',jk,') = ', fnld 
     2161                  IF (lwp) write (numout,*) 'ffln(',jk,') = ', ffln 
     2162                  IF (lwp) write (numout,*) 'ffld(',jk,') = ', ffld 
     2163                  IF (lwp) write (numout,*) 'fsld(',jk,') = ', fsld 
     2164               endif 
     2165# endif 
     2166 
     2167               !!---------------------------------------------------------------------- 
     2168               !! Primary production (non-diatoms) 
     2169               !! (note: still needs multiplying by phytoplankton concentration) 
     2170               !!---------------------------------------------------------------------- 
     2171               !! 
     2172               if (jliebig .eq. 0) then 
     2173                  !! multiplicative nutrient limitation 
     2174                  fpnlim = fnln * ffln 
     2175               elseif (jliebig .eq. 1) then 
     2176                  !! Liebig Law (= most limiting) nutrient limitation 
     2177                  fpnlim = min(fnln, ffln) 
     2178               endif 
     2179               fprn = fjln * fpnlim 
     2180 
     2181               !!---------------------------------------------------------------------- 
     2182               !! Primary production (diatoms) 
     2183               !! (note: still needs multiplying by phytoplankton concentration) 
     2184               !! 
     2185               !! production here is split between nitrogen production and that of 
     2186               !! silicon; depending upon the "intracellular" ratio of Si:N, model 
     2187               !! diatoms will uptake nitrogen/silicon differentially; this borrows 
     2188               !! from the diatom model of Mongin et al. (2006) 
     2189               !!---------------------------------------------------------------------- 
     2190               !! 
     2191               if (jliebig .eq. 0) then 
     2192                  !! multiplicative nutrient limitation 
     2193                  fpdlim = fnld * ffld 
     2194               elseif (jliebig .eq. 1) then 
     2195                  !! Liebig Law (= most limiting) nutrient limitation 
     2196                  fpdlim = min(fnld, ffld) 
     2197               endif 
     2198               !! 
     2199          if (zphd.GT.rsmall .AND. zpds.GT.rsmall) then 
     2200                  !! "intracellular" elemental ratios 
     2201                  ! fsin  = zpds / (zphd + tiny(zphd)) 
     2202                  ! fnsi  = zphd / (zpds + tiny(zpds)) 
     2203                  fsin = 0.0 
     2204                  IF( zphd .GT. rsmall) fsin  = zpds / zphd 
     2205                  fnsi = 0.0 
     2206                  IF( zpds .GT. rsmall) fnsi  = zphd / zpds 
     2207                  !! AXY (23/02/10): these next variables derive from Mongin et al. (2003) 
     2208                  fsin1 = 3.0 * xsin0 !! = 0.6 
     2209                  fnsi1 = 1.0 / fsin1 !! = 1.667 
     2210                  fnsi2 = 1.0 / xsin0 !! = 5.0 
     2211                  !! 
     2212                  !! conditionalities based on ratios 
     2213                  !! nitrogen (and iron and carbon) 
     2214                  if (fsin.le.xsin0) then 
     2215                     fprd  = 0.0 
     2216                     fsld2 = 0.0 
     2217                  elseif (fsin.lt.fsin1) then 
     2218                     fprd  = xuif * ((fsin - xsin0) / (fsin + tiny(fsin))) * (fjld * fpdlim) 
     2219                     fsld2 = xuif * ((fsin - xsin0) / (fsin + tiny(fsin))) 
     2220                  elseif (fsin.ge.fsin1) then 
     2221                     fprd  = (fjld * fpdlim) 
     2222                     fsld2 = 1.0 
     2223                  endif 
     2224                  !! 
     2225                  !! silicon 
     2226                  if (fsin.lt.fnsi1) then 
     2227                     fprds = (fjld * fsld) 
     2228                  elseif (fsin.lt.fnsi2) then 
     2229                     fprds = xuif * ((fnsi - xnsi0) / (fnsi + tiny(fnsi))) * (fjld * fsld) 
     2230                  else 
     2231                     fprds = 0.0 
     2232                  endif      
     2233               else 
     2234                  fsin  = 0.0 
     2235                  fnsi  = 0.0 
     2236                  fprd  = 0.0 
     2237                  fsld2 = 0.0 
     2238                  fprds = 0.0 
     2239               endif 
     2240 
     2241# if defined key_debug_medusa 
     2242               !! report phytoplankton growth (including diatom silicon submodel) 
     2243               if (idf.eq.1.AND.idfval.eq.1) then 
     2244                  IF (lwp) write (numout,*) '------------------------------' 
     2245                  IF (lwp) write (numout,*) 'fsin(',jk,')   = ', fsin 
     2246                  IF (lwp) write (numout,*) 'fnsi(',jk,')   = ', fnsi 
     2247                  IF (lwp) write (numout,*) 'fsld2(',jk,')  = ', fsld2 
     2248                  IF (lwp) write (numout,*) 'fprn(',jk,')   = ', fprn 
     2249                  IF (lwp) write (numout,*) 'fprd(',jk,')   = ', fprd 
     2250                  IF (lwp) write (numout,*) 'fprds(',jk,')  = ', fprds 
     2251               endif 
     2252# endif 
     2253 
     2254               !!---------------------------------------------------------------------- 
     2255               !! Mixed layer primary production 
     2256               !! this block calculates the amount of primary production that occurs 
     2257               !! within the upper mixed layer; this allows the separate diagnosis 
     2258               !! of "sub-surface" primary production; it does assume that short- 
     2259               !! term variability in mixed layer depth doesn't mess with things 
     2260               !! though 
     2261               !!---------------------------------------------------------------------- 
     2262               !! 
     2263               if (fdep1.le.hmld(ji,jj)) then 
     2264                  !! this level is entirely in the mixed layer 
     2265                  fq0 = 1.0 
     2266               elseif (fdep.ge.hmld(ji,jj)) then 
     2267                  !! this level is entirely below the mixed layer 
     2268                  fq0 = 0.0 
     2269               else 
     2270                  !! this level straddles the mixed layer 
     2271                  fq0 = (hmld(ji,jj) - fdep) / fthk 
     2272               endif 
     2273               !! 
     2274               fprn_ml(ji,jj) = fprn_ml(ji,jj) + (fprn * zphn * fthk * fq0) 
     2275               fprd_ml(ji,jj) = fprd_ml(ji,jj) + (fprd * zphd * fthk * fq0) 
     2276                
     2277               !!---------------------------------------------------------------------- 
     2278               !! Vertical Integral -- 
     2279               !!---------------------------------------------------------------------- 
     2280               ftot_pn(ji,jj)  = ftot_pn(ji,jj)  + (zphn * fthk)   !! vertical integral non-diatom phytoplankton 
     2281               ftot_pd(ji,jj)  = ftot_pd(ji,jj)  + (zphd * fthk)   !! vertical integral diatom phytoplankton 
     2282               ftot_zmi(ji,jj) = ftot_zmi(ji,jj) + (zzmi * fthk)   !! vertical integral microzooplankton 
     2283               ftot_zme(ji,jj) = ftot_zme(ji,jj) + (zzme * fthk)   !! vertical integral mesozooplankton 
     2284               ftot_det(ji,jj) = ftot_det(ji,jj) + (zdet * fthk)   !! vertical integral slow detritus, nitrogen 
     2285               ftot_dtc(ji,jj) = ftot_dtc(ji,jj) + (zdtc * fthk)   !! vertical integral slow detritus, carbon 
     2286                
     2287               !!---------------------------------------------------------------------- 
     2288               !! More chlorophyll calculations 
     2289               !!---------------------------------------------------------------------- 
     2290               !! 
     2291               !! frn = (xthetam / fthetan) * (fprn / (fthetan * xpar(ji,jj,jk))) 
     2292               !! frd = (xthetam / fthetad) * (fprd / (fthetad * xpar(ji,jj,jk))) 
     2293               frn = (xthetam * fchn * fnln * ffln       ) / (fthetan + tiny(fthetan)) 
     2294               !! AXY (12/05/09): there's potentially a problem here; fsld, silicic acid  
     2295               !!   limitation, is used in the following line to regulate chlorophyll  
     2296               !!   growth in a manner that is inconsistent with its use in the regulation  
     2297               !!   of biomass growth; the Mongin term term used in growth is more complex 
     2298               !!   than the simple multiplicative function used below 
     2299               !! frd = (xthetam * fchd * fnld * ffld * fsld) / (fthetad + tiny(fthetad)) 
     2300               !! AXY (12/05/09): this replacement line uses the new variable, fsld2, to 
     2301               !!   regulate chlorophyll growth 
     2302               frd = (xthetamd * fchd * fnld * ffld * fsld2) / (fthetad + tiny(fthetad)) 
     2303 
     2304# if defined key_debug_medusa 
     2305               !! report chlorophyll calculations 
     2306               if (idf.eq.1.AND.idfval.eq.1) then 
     2307                  IF (lwp) write (numout,*) '------------------------------' 
     2308                  IF (lwp) write (numout,*) 'fthetan(',jk,') = ', fthetan 
     2309                  IF (lwp) write (numout,*) 'fthetad(',jk,') = ', fthetad 
     2310                  IF (lwp) write (numout,*) 'frn(',jk,')     = ', frn 
     2311                  IF (lwp) write (numout,*) 'frd(',jk,')     = ', frd 
     2312               endif 
     2313# endif 
     2314 
     2315               !!---------------------------------------------------------------------- 
     2316               !! Zooplankton Grazing  
     2317               !! this code supplements the base grazing model with one that 
     2318               !! considers the C:N ratio of grazed food and balances this against 
     2319               !! the requirements of zooplankton growth; this model is derived  
     2320               !! from that of Anderson & Pondaven (2003) 
     2321               !! 
     2322               !! the current version of the code assumes a fixed C:N ratio for 
     2323               !! detritus (in contrast to Anderson & Pondaven, 2003), though the 
     2324               !! full equations are retained for future extension 
     2325               !!---------------------------------------------------------------------- 
     2326               !! 
     2327               !!---------------------------------------------------------------------- 
     2328               !! Microzooplankton first 
     2329               !!---------------------------------------------------------------------- 
     2330               !! 
     2331               fmi1    = (xkmi * xkmi) + (xpmipn * zphn * zphn) + (xpmid * zdet * zdet) 
     2332               fmi     = xgmi * zzmi / fmi1 
     2333               fgmipn  = fmi * xpmipn * zphn * zphn   !! grazing on non-diatoms 
     2334               fgmid   = fmi * xpmid  * zdet * zdet   !! grazing on detrital nitrogen 
    21822335# if defined key_roam 
    2183                 fgmidc  = rsmall !acc 
    2184                 IF ( zdet .GT. rsmall ) fgmidc  = (zdtc / (zdet + tiny(zdet))) * fgmid  !! grazing on detrital carbon 
     2336               fgmidc  = rsmall !acc 
     2337               IF ( zdet .GT. rsmall ) fgmidc  = (zdtc / (zdet + tiny(zdet))) * fgmid  !! grazing on detrital carbon 
    21852338# else 
    2186                 !! AXY (26/11/08): implicit detrital carbon change 
    2187                 fgmidc  = xthetad * fgmid              !! grazing on detrital carbon 
    2188 # endif 
    2189                 !! 
    2190                 !! which translates to these incoming N and C fluxes 
    2191                 finmi   = (1.0 - xphi) * (fgmipn + fgmid) 
    2192                 ficmi   = (1.0 - xphi) * ((xthetapn * fgmipn) + fgmidc) 
    2193                 !! 
    2194                 !! the ideal food C:N ratio for microzooplankton 
    2195                 !! xbetan = 0.77; xthetaz = 5.625; xbetac = 0.64; xkc = 0.80 
    2196                 fstarmi = (xbetan * xthetazmi) / (xbetac * xkc) 
    2197                 !! 
    2198                 !! process these to determine proportioning of grazed N and C 
    2199                 !! (since there is no explicit consideration of respiration, 
    2200                 !! only growth and excretion are calculated here) 
    2201                 fmith   = (ficmi / (finmi + tiny(finmi))) 
    2202                 if (fmith.ge.fstarmi) then 
    2203                    fmigrow = xbetan * finmi 
    2204                    fmiexcr = 0.0 
    2205                 else 
    2206                    fmigrow = (xbetac * xkc * ficmi) / xthetazmi 
    2207                    fmiexcr = ficmi * ((xbetan / (fmith + tiny(fmith))) - ((xbetac * xkc) / xthetazmi)) 
    2208                 endif 
     2339               !! AXY (26/11/08): implicit detrital carbon change 
     2340               fgmidc  = xthetad * fgmid              !! grazing on detrital carbon 
     2341# endif 
     2342               !! 
     2343               !! which translates to these incoming N and C fluxes 
     2344               finmi   = (1.0 - xphi) * (fgmipn + fgmid) 
     2345               ficmi   = (1.0 - xphi) * ((xthetapn * fgmipn) + fgmidc) 
     2346               !! 
     2347               !! the ideal food C:N ratio for microzooplankton 
     2348               !! xbetan = 0.77; xthetaz = 5.625; xbetac = 0.64; xkc = 0.80 
     2349               fstarmi = (xbetan * xthetazmi) / (xbetac * xkc) 
     2350               !! 
     2351               !! process these to determine proportioning of grazed N and C 
     2352               !! (since there is no explicit consideration of respiration, 
     2353               !! only growth and excretion are calculated here) 
     2354               fmith   = (ficmi / (finmi + tiny(finmi))) 
     2355               if (fmith.ge.fstarmi) then 
     2356                  fmigrow = xbetan * finmi 
     2357                  fmiexcr = 0.0 
     2358               else 
     2359                  fmigrow = (xbetac * xkc * ficmi) / xthetazmi 
     2360                  fmiexcr = ficmi * ((xbetan / (fmith + tiny(fmith))) - ((xbetac * xkc) / xthetazmi)) 
     2361               endif 
    22092362# if defined key_roam 
    2210                 fmiresp = (xbetac * ficmi) - (xthetazmi * fmigrow) 
    2211 # endif 
    2212  
    2213                 !!---------------------------------------------------------------------- 
    2214                 !! Mesozooplankton second 
    2215                 !!---------------------------------------------------------------------- 
    2216                 !! 
    2217                 fme1    = (xkme * xkme) + (xpmepn * zphn * zphn) + (xpmepd * zphd * zphd) + &  
    2218                      (xpmezmi * zzmi * zzmi) + (xpmed * zdet * zdet) 
    2219                 fme     = xgme * zzme / fme1 
    2220                 fgmepn  = fme * xpmepn  * zphn * zphn  !! grazing on non-diatoms 
    2221                 fgmepd  = fme * xpmepd  * zphd * zphd  !! grazing on diatoms 
    2222                 fgmepds = fsin * fgmepd                !! grazing on diatom silicon 
    2223                 fgmezmi = fme * xpmezmi * zzmi * zzmi  !! grazing on microzooplankton 
    2224                 fgmed   = fme * xpmed   * zdet * zdet  !! grazing on detrital nitrogen 
     2363               fmiresp = (xbetac * ficmi) - (xthetazmi * fmigrow) 
     2364# endif 
     2365 
     2366# if defined key_debug_medusa 
     2367               !! report microzooplankton grazing 
     2368               if (idf.eq.1.AND.idfval.eq.1) then 
     2369                  IF (lwp) write (numout,*) '------------------------------' 
     2370                  IF (lwp) write (numout,*) 'fmi1(',jk,')    = ', fmi1 
     2371                  IF (lwp) write (numout,*) 'fmi(',jk,')     = ', fmi 
     2372                  IF (lwp) write (numout,*) 'fgmipn(',jk,')  = ', fgmipn 
     2373                  IF (lwp) write (numout,*) 'fgmid(',jk,')   = ', fgmid 
     2374                  IF (lwp) write (numout,*) 'fgmidc(',jk,')  = ', fgmidc 
     2375                  IF (lwp) write (numout,*) 'finmi(',jk,')   = ', finmi 
     2376                  IF (lwp) write (numout,*) 'ficmi(',jk,')   = ', ficmi 
     2377                  IF (lwp) write (numout,*) 'fstarmi(',jk,') = ', fstarmi 
     2378                  IF (lwp) write (numout,*) 'fmith(',jk,')   = ', fmith 
     2379                  IF (lwp) write (numout,*) 'fmigrow(',jk,') = ', fmigrow 
     2380                  IF (lwp) write (numout,*) 'fmiexcr(',jk,') = ', fmiexcr 
     2381#  if defined key_roam 
     2382                  IF (lwp) write (numout,*) 'fmiresp(',jk,') = ', fmiresp 
     2383#  endif 
     2384               endif 
     2385# endif 
     2386 
     2387               !!---------------------------------------------------------------------- 
     2388               !! Mesozooplankton second 
     2389               !!---------------------------------------------------------------------- 
     2390               !! 
     2391               fme1    = (xkme * xkme) + (xpmepn * zphn * zphn) + (xpmepd * zphd * zphd) + &  
     2392                         (xpmezmi * zzmi * zzmi) + (xpmed * zdet * zdet) 
     2393               fme     = xgme * zzme / fme1 
     2394               fgmepn  = fme * xpmepn  * zphn * zphn  !! grazing on non-diatoms 
     2395               fgmepd  = fme * xpmepd  * zphd * zphd  !! grazing on diatoms 
     2396               fgmepds = fsin * fgmepd                !! grazing on diatom silicon 
     2397               fgmezmi = fme * xpmezmi * zzmi * zzmi  !! grazing on microzooplankton 
     2398               fgmed   = fme * xpmed   * zdet * zdet  !! grazing on detrital nitrogen 
    22252399# if defined key_roam 
    2226                 fgmedc  = rsmall !acc 
    2227                 IF ( zdet .GT. rsmall ) fgmedc  = (zdtc / (zdet + tiny(zdet))) * fgmed  !! grazing on detrital carbon 
     2400               fgmedc  = rsmall !acc 
     2401               IF ( zdet .GT. rsmall ) fgmedc  = (zdtc / (zdet + tiny(zdet))) * fgmed  !! grazing on detrital carbon 
    22282402# else 
    2229                 !! AXY (26/11/08): implicit detrital carbon change 
    2230                 fgmedc  = xthetad * fgmed              !! grazing on detrital carbon 
    2231 # endif 
    2232                 !! 
    2233                 !! which translates to these incoming N and C fluxes 
    2234                 finme   = (1.0 - xphi) * (fgmepn + fgmepd + fgmezmi + fgmed) 
    2235                 ficme   = (1.0 - xphi) * ((xthetapn * fgmepn) + (xthetapd * fgmepd) + & 
    2236                      (xthetazmi * fgmezmi) + fgmedc) 
    2237                 !! 
    2238                 !! the ideal food C:N ratio for mesozooplankton 
    2239                 !! xbetan = 0.77; xthetaz = 5.625; xbetac = 0.64; xkc = 0.80 
    2240                 fstarme = (xbetan * xthetazme) / (xbetac * xkc) 
    2241                 !! 
    2242                 !! process these to determine proportioning of grazed N and C 
    2243                 !! (since there is no explicit consideration of respiration, 
    2244                 !! only growth and excretion are calculated here) 
    2245                 fmeth   = (ficme / (finme + tiny(finme))) 
    2246                 if (fmeth.ge.fstarme) then 
    2247                    fmegrow = xbetan * finme 
    2248                    fmeexcr = 0.0 
    2249                 else 
    2250                    fmegrow = (xbetac * xkc * ficme) / xthetazme 
    2251                    fmeexcr = ficme * ((xbetan / (fmeth + tiny(fmeth))) - ((xbetac * xkc) / xthetazme)) 
    2252                 endif 
     2403               !! AXY (26/11/08): implicit detrital carbon change 
     2404               fgmedc  = xthetad * fgmed              !! grazing on detrital carbon 
     2405# endif 
     2406               !! 
     2407               !! which translates to these incoming N and C fluxes 
     2408               finme   = (1.0 - xphi) * (fgmepn + fgmepd + fgmezmi + fgmed) 
     2409               ficme   = (1.0 - xphi) * ((xthetapn * fgmepn) + (xthetapd * fgmepd) + & 
     2410                        (xthetazmi * fgmezmi) + fgmedc) 
     2411               !! 
     2412               !! the ideal food C:N ratio for mesozooplankton 
     2413               !! xbetan = 0.77; xthetaz = 5.625; xbetac = 0.64; xkc = 0.80 
     2414               fstarme = (xbetan * xthetazme) / (xbetac * xkc) 
     2415               !! 
     2416               !! process these to determine proportioning of grazed N and C 
     2417               !! (since there is no explicit consideration of respiration, 
     2418               !! only growth and excretion are calculated here) 
     2419               fmeth   = (ficme / (finme + tiny(finme))) 
     2420               if (fmeth.ge.fstarme) then 
     2421                  fmegrow = xbetan * finme 
     2422                  fmeexcr = 0.0 
     2423               else 
     2424                  fmegrow = (xbetac * xkc * ficme) / xthetazme 
     2425                  fmeexcr = ficme * ((xbetan / (fmeth + tiny(fmeth))) - ((xbetac * xkc) / xthetazme)) 
     2426               endif 
    22532427# if defined key_roam 
    2254                 fmeresp = (xbetac * ficme) - (xthetazme * fmegrow) 
    2255 # endif 
    2256  
    2257                 fzmi_i(ji,jj)  = fzmi_i(ji,jj)  + fthk * (  & 
    2258                      fgmipn + fgmid ) 
    2259                 fzmi_o(ji,jj)  = fzmi_o(ji,jj)  + fthk * (  & 
    2260                      fmigrow + (xphi * (fgmipn + fgmid)) + fmiexcr + ((1.0 - xbetan) * finmi) ) 
    2261                 fzme_i(ji,jj)  = fzme_i(ji,jj)  + fthk * (  & 
    2262                      fgmepn + fgmepd + fgmezmi + fgmed ) 
    2263                 fzme_o(ji,jj)  = fzme_o(ji,jj)  + fthk * (  & 
    2264                      fmegrow + (xphi * (fgmepn + fgmepd + fgmezmi + fgmed)) + fmeexcr + ((1.0 - xbetan) * finme) ) 
    2265  
    2266                 !!====================================================================== 
    2267                 !! AXY (07/04/17): possible subroutine block; miscellaneous plankton losses 
    2268                 !!====================================================================== 
    2269  
    2270                 !!---------------------------------------------------------------------- 
    2271                 !! Plankton metabolic losses 
    2272                 !! Linear loss processes assumed to be metabolic in origin 
    2273                 !!---------------------------------------------------------------------- 
    2274                 !! 
    2275                 fdpn2  = xmetapn  * zphn 
    2276                 fdpd2  = xmetapd  * zphd 
    2277                 fdpds2 = xmetapd  * zpds 
    2278                 fdzmi2 = xmetazmi * zzmi 
    2279                 fdzme2 = xmetazme * zzme 
    2280  
    2281                 !!---------------------------------------------------------------------- 
    2282                 !! Plankton mortality losses 
    2283                 !! EKP (26/02/09): phytoplankton hyperbolic mortality term introduced  
    2284                 !! to improve performance in gyres 
    2285                 !!---------------------------------------------------------------------- 
    2286                 !! 
    2287                 !! non-diatom phytoplankton 
    2288                 if (jmpn.eq.1) fdpn = xmpn * zphn               !! linear 
    2289                 if (jmpn.eq.2) fdpn = xmpn * zphn * zphn        !! quadratic 
    2290                 if (jmpn.eq.3) fdpn = xmpn * zphn * &           !! hyperbolic 
    2291                      (zphn / (xkphn + zphn)) 
    2292                 if (jmpn.eq.4) fdpn = xmpn * zphn * &           !! sigmoid 
    2293                      ((zphn * zphn) / (xkphn + (zphn * zphn))) 
    2294                 !! 
    2295                 !! diatom phytoplankton 
    2296                 if (jmpd.eq.1) fdpd = xmpd * zphd               !! linear 
    2297                 if (jmpd.eq.2) fdpd = xmpd * zphd * zphd        !! quadratic 
    2298                 if (jmpd.eq.3) fdpd = xmpd * zphd * &           !! hyperbolic 
    2299                      (zphd / (xkphd + zphd)) 
    2300                 if (jmpd.eq.4) fdpd = xmpd * zphd * &           !! sigmoid 
    2301                      ((zphd * zphd) / (xkphd + (zphd * zphd))) 
    2302                 fdpds = fdpd * fsin 
    2303                 !! 
    2304                 !! microzooplankton 
    2305                 if (jmzmi.eq.1) fdzmi = xmzmi * zzmi            !! linear 
    2306                 if (jmzmi.eq.2) fdzmi = xmzmi * zzmi * zzmi     !! quadratic 
    2307                 if (jmzmi.eq.3) fdzmi = xmzmi * zzmi * &        !! hyperbolic 
    2308                      (zzmi / (xkzmi + zzmi)) 
    2309                 if (jmzmi.eq.4) fdzmi = xmzmi * zzmi * &        !! sigmoid 
    2310                      ((zzmi * zzmi) / (xkzmi + (zzmi * zzmi))) 
    2311                 !! 
    2312                 !! mesozooplankton 
    2313                 if (jmzme.eq.1) fdzme = xmzme * zzme            !! linear 
    2314                 if (jmzme.eq.2) fdzme = xmzme * zzme * zzme     !! quadratic 
    2315                 if (jmzme.eq.3) fdzme = xmzme * zzme * &        !! hyperbolic 
    2316                      (zzme / (xkzme + zzme)) 
    2317                 if (jmzme.eq.4) fdzme = xmzme * zzme * &        !! sigmoid 
    2318                      ((zzme * zzme) / (xkzme + (zzme * zzme))) 
    2319  
    2320                 !!====================================================================== 
    2321                 !! AXY (07/04/17): possible subroutine block; detritus processes (fuse with later?) 
    2322                 !!====================================================================== 
    2323  
    2324                 !!---------------------------------------------------------------------- 
    2325                 !! Detritus remineralisation 
    2326                 !! Constant or temperature-dependent 
    2327                 !!---------------------------------------------------------------------- 
    2328                 !! 
    2329                 if (jmd.eq.1) then 
    2330                    !! temperature-dependent 
    2331                    fdd  = xmd  * fun_T * zdet 
     2428               fmeresp = (xbetac * ficme) - (xthetazme * fmegrow) 
     2429# endif 
     2430 
     2431# if defined key_debug_medusa 
     2432               !! report mesozooplankton grazing 
     2433               if (idf.eq.1.AND.idfval.eq.1) then 
     2434                  IF (lwp) write (numout,*) '------------------------------' 
     2435                  IF (lwp) write (numout,*) 'fme1(',jk,')    = ', fme1 
     2436                  IF (lwp) write (numout,*) 'fme(',jk,')     = ', fme 
     2437                  IF (lwp) write (numout,*) 'fgmepn(',jk,')  = ', fgmepn 
     2438                  IF (lwp) write (numout,*) 'fgmepd(',jk,')  = ', fgmepd 
     2439                  IF (lwp) write (numout,*) 'fgmepds(',jk,') = ', fgmepds 
     2440                  IF (lwp) write (numout,*) 'fgmezmi(',jk,') = ', fgmezmi 
     2441                  IF (lwp) write (numout,*) 'fgmed(',jk,')   = ', fgmed 
     2442                  IF (lwp) write (numout,*) 'fgmedc(',jk,')  = ', fgmedc 
     2443                  IF (lwp) write (numout,*) 'finme(',jk,')   = ', finme 
     2444                  IF (lwp) write (numout,*) 'ficme(',jk,')   = ', ficme 
     2445                  IF (lwp) write (numout,*) 'fstarme(',jk,') = ', fstarme 
     2446                  IF (lwp) write (numout,*) 'fmeth(',jk,')   = ', fmeth 
     2447                  IF (lwp) write (numout,*) 'fmegrow(',jk,') = ', fmegrow 
     2448                  IF (lwp) write (numout,*) 'fmeexcr(',jk,') = ', fmeexcr 
     2449#  if defined key_roam 
     2450                  IF (lwp) write (numout,*) 'fmeresp(',jk,') = ', fmeresp 
     2451#  endif 
     2452               endif 
     2453# endif 
     2454 
     2455               fzmi_i(ji,jj)  = fzmi_i(ji,jj)  + fthk * (  & 
     2456                  fgmipn + fgmid ) 
     2457               fzmi_o(ji,jj)  = fzmi_o(ji,jj)  + fthk * (  & 
     2458                  fmigrow + (xphi * (fgmipn + fgmid)) + fmiexcr + ((1.0 - xbetan) * finmi) ) 
     2459               fzme_i(ji,jj)  = fzme_i(ji,jj)  + fthk * (  & 
     2460                  fgmepn + fgmepd + fgmezmi + fgmed ) 
     2461               fzme_o(ji,jj)  = fzme_o(ji,jj)  + fthk * (  & 
     2462                  fmegrow + (xphi * (fgmepn + fgmepd + fgmezmi + fgmed)) + fmeexcr + ((1.0 - xbetan) * finme) ) 
     2463 
     2464               !!---------------------------------------------------------------------- 
     2465               !! Plankton metabolic losses 
     2466               !! Linear loss processes assumed to be metabolic in origin 
     2467               !!---------------------------------------------------------------------- 
     2468               !! 
     2469               fdpn2  = xmetapn  * zphn 
     2470               fdpd2  = xmetapd  * zphd 
     2471               fdpds2 = xmetapd  * zpds 
     2472               fdzmi2 = xmetazmi * zzmi 
     2473               fdzme2 = xmetazme * zzme 
     2474 
     2475               !!---------------------------------------------------------------------- 
     2476               !! Plankton mortality losses 
     2477               !! EKP (26/02/09): phytoplankton hyperbolic mortality term introduced  
     2478               !! to improve performance in gyres 
     2479               !!---------------------------------------------------------------------- 
     2480               !! 
     2481               !! non-diatom phytoplankton 
     2482               if (jmpn.eq.1) fdpn = xmpn * zphn               !! linear 
     2483               if (jmpn.eq.2) fdpn = xmpn * zphn * zphn        !! quadratic 
     2484               if (jmpn.eq.3) fdpn = xmpn * zphn * &           !! hyperbolic 
     2485                  (zphn / (xkphn + zphn)) 
     2486               if (jmpn.eq.4) fdpn = xmpn * zphn * &           !! sigmoid 
     2487                  ((zphn * zphn) / (xkphn + (zphn * zphn))) 
     2488               !! 
     2489               !! diatom phytoplankton 
     2490               if (jmpd.eq.1) fdpd = xmpd * zphd               !! linear 
     2491               if (jmpd.eq.2) fdpd = xmpd * zphd * zphd        !! quadratic 
     2492               if (jmpd.eq.3) fdpd = xmpd * zphd * &           !! hyperbolic 
     2493                  (zphd / (xkphd + zphd)) 
     2494               if (jmpd.eq.4) fdpd = xmpd * zphd * &           !! sigmoid 
     2495                  ((zphd * zphd) / (xkphd + (zphd * zphd))) 
     2496               fdpds = fdpd * fsin 
     2497               !! 
     2498               !! microzooplankton 
     2499               if (jmzmi.eq.1) fdzmi = xmzmi * zzmi            !! linear 
     2500               if (jmzmi.eq.2) fdzmi = xmzmi * zzmi * zzmi     !! quadratic 
     2501               if (jmzmi.eq.3) fdzmi = xmzmi * zzmi * &        !! hyperbolic 
     2502                  (zzmi / (xkzmi + zzmi)) 
     2503               if (jmzmi.eq.4) fdzmi = xmzmi * zzmi * &        !! sigmoid 
     2504                  ((zzmi * zzmi) / (xkzmi + (zzmi * zzmi))) 
     2505               !! 
     2506               !! mesozooplankton 
     2507               if (jmzme.eq.1) fdzme = xmzme * zzme            !! linear 
     2508               if (jmzme.eq.2) fdzme = xmzme * zzme * zzme     !! quadratic 
     2509               if (jmzme.eq.3) fdzme = xmzme * zzme * &        !! hyperbolic 
     2510                  (zzme / (xkzme + zzme)) 
     2511               if (jmzme.eq.4) fdzme = xmzme * zzme * &        !! sigmoid 
     2512                  ((zzme * zzme) / (xkzme + (zzme * zzme))) 
     2513 
     2514               !!---------------------------------------------------------------------- 
     2515               !! Detritus remineralisation 
     2516               !! Constant or temperature-dependent 
     2517               !!---------------------------------------------------------------------- 
     2518               !! 
     2519               if (jmd.eq.1) then 
     2520                  !! temperature-dependent 
     2521                  fdd  = xmd  * fun_T * zdet 
    23322522# if defined key_roam 
    2333                    fddc = xmdc * fun_T * zdtc 
    2334 # endif 
    2335                 elseif (jmd.eq.2) then 
    2336                    !! AXY (16/05/13): add in Q10-based parameterisation (def in nmlst) 
    2337                    !! temperature-dependent 
    2338                    fdd  = xmd  * fun_Q10 * zdet 
     2523                  fddc = xmdc * fun_T * zdtc 
     2524# endif 
     2525               elseif (jmd.eq.2) then 
     2526                  !! AXY (16/05/13): add in Q10-based parameterisation (def in nmlst) 
     2527                  !! temperature-dependent 
     2528                  fdd  = xmd  * fun_Q10 * zdet 
    23392529#if defined key_roam 
    2340                    fddc = xmdc * fun_Q10 * zdtc 
     2530                  fddc = xmdc * fun_Q10 * zdtc 
    23412531#endif 
    2342                 else 
    2343                    !! temperature-independent 
    2344                    fdd  = xmd  * zdet 
     2532               else 
     2533                  !! temperature-independent 
     2534                  fdd  = xmd  * zdet 
    23452535# if defined key_roam 
    2346                    fddc = xmdc * zdtc 
    2347 # endif 
    2348                 endif 
    2349                 !! 
    2350                 !! AXY (22/07/09): accelerate detrital remineralisation in the bottom box 
    2351                 if ((jk.eq.jmbathy) .and. jsfd.eq.1) then 
    2352                    fdd  = 1.0  * zdet 
     2536                  fddc = xmdc * zdtc 
     2537# endif 
     2538               endif 
     2539               !! 
     2540               !! AXY (22/07/09): accelerate detrital remineralisation in the bottom box 
     2541               if ((jk.eq.jmbathy) .and. jsfd.eq.1) then 
     2542                  fdd  = 1.0  * zdet 
    23532543# if defined key_roam 
    2354                    fddc = 1.0  * zdtc 
    2355 # endif 
    2356                 endif 
    2357  
    2358                 !!---------------------------------------------------------------------- 
    2359                 !! Detritus addition to benthos 
    2360                 !! If activated, slow detritus in the bottom box will enter the 
    2361                 !! benthic pool 
    2362                 !!---------------------------------------------------------------------- 
    2363                 !! 
    2364                 if ((jk.eq.jmbathy) .and. jorgben.eq.1) then 
    2365                    !! this is the BOTTOM OCEAN BOX -> into the benthic pool! 
    2366                    !! 
    2367                    f_sbenin_n(ji,jj)  = (zdet * vsed * 86400.) 
    2368                    f_sbenin_fe(ji,jj) = (zdet * vsed * 86400. * xrfn) 
     2544                  fddc = 1.0  * zdtc 
     2545# endif 
     2546               endif 
     2547                
     2548# if defined key_debug_medusa 
     2549               !! report plankton mortality and remineralisation 
     2550               if (idf.eq.1.AND.idfval.eq.1) then 
     2551                  IF (lwp) write (numout,*) '------------------------------' 
     2552                  IF (lwp) write (numout,*) 'fdpn2(',jk,') = ', fdpn2 
     2553                  IF (lwp) write (numout,*) 'fdpd2(',jk,') = ', fdpd2 
     2554                  IF (lwp) write (numout,*) 'fdpds2(',jk,')= ', fdpds2 
     2555                  IF (lwp) write (numout,*) 'fdzmi2(',jk,')= ', fdzmi2 
     2556                  IF (lwp) write (numout,*) 'fdzme2(',jk,')= ', fdzme2 
     2557                  IF (lwp) write (numout,*) 'fdpn(',jk,')  = ', fdpn 
     2558                  IF (lwp) write (numout,*) 'fdpd(',jk,')  = ', fdpd 
     2559                  IF (lwp) write (numout,*) 'fdpds(',jk,') = ', fdpds 
     2560                  IF (lwp) write (numout,*) 'fdzmi(',jk,') = ', fdzmi 
     2561                  IF (lwp) write (numout,*) 'fdzme(',jk,') = ', fdzme 
     2562                  IF (lwp) write (numout,*) 'fdd(',jk,')   = ', fdd 
     2563#  if defined key_roam 
     2564                  IF (lwp) write (numout,*) 'fddc(',jk,')  = ', fddc 
     2565#  endif 
     2566               endif 
     2567# endif 
     2568 
     2569               !!---------------------------------------------------------------------- 
     2570               !! Detritus addition to benthos 
     2571               !! If activated, slow detritus in the bottom box will enter the 
     2572               !! benthic pool 
     2573               !!---------------------------------------------------------------------- 
     2574               !! 
     2575               if ((jk.eq.jmbathy) .and. jorgben.eq.1) then 
     2576                  !! this is the BOTTOM OCEAN BOX -> into the benthic pool! 
     2577                  !! 
     2578                  f_sbenin_n(ji,jj)  = (zdet * vsed * 86400.) 
     2579                  f_sbenin_fe(ji,jj) = (zdet * vsed * 86400. * xrfn) 
    23692580# if defined key_roam 
    2370                    f_sbenin_c(ji,jj)  = (zdtc * vsed * 86400.) 
     2581                  f_sbenin_c(ji,jj)  = (zdtc * vsed * 86400.) 
    23712582# else 
    2372                    f_sbenin_c(ji,jj)  = (zdet * vsed * 86400. * xthetad) 
    2373 # endif 
    2374                 endif 
    2375  
    2376                 !!====================================================================== 
    2377                 !! AXY (07/04/17): possible subroutine block; iron chemistry and scavenging 
    2378                 !!====================================================================== 
    2379  
    2380                 !!---------------------------------------------------------------------- 
    2381                 !! Iron chemistry and fractionation 
    2382                 !! following the Parekh et al. (2004) scheme adopted by the Met. 
    2383                 !! Office, Medusa models total iron but considers "free" and 
    2384                 !! ligand-bound forms for the purposes of scavenging (only "free" 
    2385                 !! iron can be scavenged 
    2386                 !!---------------------------------------------------------------------- 
    2387                 !! 
    2388                 !! total iron concentration (mmol Fe / m3 -> umol Fe / m3) 
    2389                 xFeT        = zfer * 1.e3 
    2390                 !! 
    2391                 !! calculate fractionation (based on Diat-HadOCC; in turn based on Parekh et al., 2004) 
    2392                 xb_coef_tmp = xk_FeL * (xLgT - xFeT) - 1.0 
    2393                 xb2M4ac     = max(((xb_coef_tmp * xb_coef_tmp) + (4.0 * xk_FeL * xLgT)), 0.0) 
    2394                 !! 
    2395                 !! "free" ligand concentration 
    2396                 xLgF        = 0.5 * (xb_coef_tmp + (xb2M4ac**0.5)) / xk_FeL 
    2397                 !! 
    2398                 !! ligand-bound iron concentration 
    2399                 xFeL        = xLgT - xLgF 
    2400                 !! 
    2401                 !! "free" iron concentration (and convert to mmol Fe / m3) 
    2402                 xFeF        = (xFeT - xFeL) * 1.e-3 
    2403                 xFree(ji,jj)= xFeF / (zfer + tiny(zfer)) 
    2404                 !! 
    2405                 !! scavenging of iron 
    2406                 !! AXY (05/04/17): formerly several schemes, now the only appropriate 
    2407                 !! one, with all other options returning no scavenging (trc_nam_medusa 
    2408                 !! reports on this) 
    2409                 !! 
    2410                 if (jiron.eq.1) then 
    2411                    !!---------------------------------------------------------------------- 
    2412                    !! Scheme 1: Dutkiewicz et al. (2005) 
    2413                    !! This scheme includes a single scavenging term based solely on a 
    2414                    !! fixed rate and the availablility of "free" iron 
    2415                    !!---------------------------------------------------------------------- 
    2416                    !! 
    2417                    ffescav     = xk_sc_Fe * xFeF                     ! = mmol/m3/d 
    2418                    !! 
    2419                    !!---------------------------------------------------------------------- 
    2420                    !! 
    2421                    !! Mick's code contains a further (optional) implicit "scavenging" of  
    2422                    !! iron that sets an upper bound on "free" iron concentration, and  
    2423                    !! essentially caps the concentration of total iron as xFeL + "free"  
    2424                    !! iron; since the former is constrained by a fixed total ligand  
    2425                    !! concentration (= 1.0 umol/m3), and the latter isn't allowed above  
    2426                    !! this upper bound, total iron is constrained to a maximum of ... 
    2427                    !! 
    2428                    !!    xFeL + min(xFeF, 0.3 umol/m3) = 1.0 + 0.3 = 1.3 umol / m3 
    2429                    !!  
    2430                    !! In Mick's code, the actual value of total iron is reset to this 
    2431                    !! sum (i.e. TFe = FeL + Fe'; but Fe' <= 0.3 umol/m3); this isn't 
    2432                    !! our favoured approach to tracer updating here (not least because 
    2433                    !! of the leapfrog), so here the amount scavenged is augmented by an 
    2434                    !! additional amount that serves to drag total iron back towards that 
    2435                    !! expected from this limitation on iron concentration ... 
    2436                    !! 
    2437                    xmaxFeF     = min((xFeF * 1.e3), 0.3)             ! = umol/m3 
    2438                    !! 
    2439                    !! Here, the difference between current total Fe and (FeL + Fe') is 
    2440                    !! calculated and added to the scavenging flux already calculated 
    2441                    !! above ... 
    2442                    !! 
    2443                    fdeltaFe    = (xFeT - (xFeL + xmaxFeF)) * 1.e-3   ! = mmol/m3 
    2444                    !! 
    2445                    !! This assumes that the "excess" iron is dissipated with a time- 
    2446                    !! scale of 1 day; seems reasonable to me ... (famous last words) 
    2447                    !! 
    2448                    ffescav     = ffescav + fdeltaFe                  ! = mmol/m3/d 
    2449                    !! 
     2583                  f_sbenin_c(ji,jj)  = (zdet * vsed * 86400. * xthetad) 
     2584# endif 
     2585               endif 
     2586 
     2587               !!---------------------------------------------------------------------- 
     2588               !! Iron chemistry and fractionation 
     2589               !! following the Parekh et al. (2004) scheme adopted by the Met. 
     2590               !! Office, Medusa models total iron but considers "free" and 
     2591               !! ligand-bound forms for the purposes of scavenging (only "free" 
     2592               !! iron can be scavenged 
     2593               !!---------------------------------------------------------------------- 
     2594               !! 
     2595               !! total iron concentration (mmol Fe / m3 -> umol Fe / m3) 
     2596               xFeT        = zfer * 1.e3 
     2597               !! 
     2598               !! calculate fractionation (based on Diat-HadOCC; in turn based on Parekh et al., 2004) 
     2599               xb_coef_tmp = xk_FeL * (xLgT - xFeT) - 1.0 
     2600               xb2M4ac     = max(((xb_coef_tmp * xb_coef_tmp) + (4.0 * xk_FeL * xLgT)), 0.0) 
     2601               !! 
     2602               !! "free" ligand concentration 
     2603               xLgF        = 0.5 * (xb_coef_tmp + (xb2M4ac**0.5)) / xk_FeL 
     2604               !! 
     2605               !! ligand-bound iron concentration 
     2606               xFeL        = xLgT - xLgF 
     2607               !! 
     2608               !! "free" iron concentration (and convert to mmol Fe / m3) 
     2609               xFeF        = (xFeT - xFeL) * 1.e-3 
     2610               xFree(ji,jj)= xFeF / (zfer + tiny(zfer)) 
     2611               !! 
     2612               !! scavenging of iron (multiple schemes); I'm only really happy with the  
     2613               !! first one at the moment - the others involve assumptions (sometimes 
     2614               !! guessed at by me) that are potentially questionable 
     2615               !! 
     2616               if (jiron.eq.1) then 
     2617                  !!---------------------------------------------------------------------- 
     2618                  !! Scheme 1: Dutkiewicz et al. (2005) 
     2619                  !! This scheme includes a single scavenging term based solely on a 
     2620                  !! fixed rate and the availablility of "free" iron 
     2621                  !!---------------------------------------------------------------------- 
     2622                  !! 
     2623                  ffescav     = xk_sc_Fe * xFeF                     ! = mmol/m3/d 
     2624                  !! 
     2625                  !!---------------------------------------------------------------------- 
     2626                  !! 
     2627                  !! Mick's code contains a further (optional) implicit "scavenging" of  
     2628                  !! iron that sets an upper bound on "free" iron concentration, and  
     2629                  !! essentially caps the concentration of total iron as xFeL + "free"  
     2630                  !! iron; since the former is constrained by a fixed total ligand  
     2631                  !! concentration (= 1.0 umol/m3), and the latter isn't allowed above  
     2632                  !! this upper bound, total iron is constrained to a maximum of ... 
     2633                  !! 
     2634                  !!    xFeL + min(xFeF, 0.3 umol/m3) = 1.0 + 0.3 = 1.3 umol / m3 
     2635                  !!  
     2636                  !! In Mick's code, the actual value of total iron is reset to this 
     2637                  !! sum (i.e. TFe = FeL + Fe'; but Fe' <= 0.3 umol/m3); this isn't 
     2638                  !! our favoured approach to tracer updating here (not least because 
     2639                  !! of the leapfrog), so here the amount scavenged is augmented by an 
     2640                  !! additional amount that serves to drag total iron back towards that 
     2641                  !! expected from this limitation on iron concentration ... 
     2642                  !! 
     2643                  xmaxFeF     = min((xFeF * 1.e3), 0.3)             ! = umol/m3 
     2644                  !! 
     2645                  !! Here, the difference between current total Fe and (FeL + Fe') is 
     2646                  !! calculated and added to the scavenging flux already calculated 
     2647                  !! above ... 
     2648                  !! 
     2649                  fdeltaFe    = (xFeT - (xFeL + xmaxFeF)) * 1.e-3   ! = mmol/m3 
     2650                  !! 
     2651                  !! This assumes that the "excess" iron is dissipated with a time- 
     2652                  !! scale of 1 day; seems reasonable to me ... (famous last words) 
     2653                  !! 
     2654                  ffescav     = ffescav + fdeltaFe                  ! = mmol/m3/d 
     2655                  !! 
    24502656# if defined key_deep_fe_fix 
    2451                    !! AXY (17/01/13) 
    2452                    !! stop scavenging for iron concentrations below 0.5 umol / m3 
    2453                    !! at depths greater than 1000 m; this aims to end MEDUSA's 
    2454                    !! continual loss of iron at depth without impacting things 
    2455                    !! at the surface too much; the justification for this is that 
    2456                    !! it appears to be what Mick Follows et al. do in their work 
    2457                    !! (as evidenced by the iron initial condition they supplied 
    2458                    !! me with); to be honest, it looks like Follow et al. do this 
    2459                    !! at shallower depths than 1000 m, but I'll stick with this 
    2460                    !! for now; I suspect that this seemingly arbitrary approach 
    2461                    !! effectively "parameterises" the particle-based scavenging 
    2462                    !! rates that other models use (i.e. at depth there are no 
    2463                    !! sinking particles, so scavenging stops); it might be fun 
    2464                    !! justifying this in a paper though! 
    2465                    !! 
    2466                    if ((fdep.gt.1000.) .and. (xFeT.lt.0.5)) then 
    2467                       ffescav = 0. 
    2468                    endif 
    2469 # endif 
    2470                 else 
    2471                    !!---------------------------------------------------------------------- 
    2472                    !! No Scheme: you coward! 
    2473                    !! This scheme puts its head in the sand and eskews any decision about 
    2474                    !! how iron is removed from the ocean; prepare to get deluged in iron 
    2475                    !! you fool! 
    2476                    !!---------------------------------------------------------------------- 
    2477                    ffescav     = 0. 
    2478                 endif 
    2479  
    2480                 !!---------------------------------------------------------------------- 
    2481                 !! Other iron cycle processes 
    2482                 !!---------------------------------------------------------------------- 
    2483                 !! 
    2484                 !! aeolian iron deposition 
    2485                 if (jk.eq.1) then 
    2486                    !! zirondep   is in mmol-Fe / m2 / day 
    2487                    !! ffetop     is in mmol-dissolved-Fe / m3 / day 
    2488                    ffetop  = zirondep(ji,jj) * xfe_sol / fthk  
    2489                 else 
    2490                    ffetop  = 0.0 
    2491                 endif 
    2492                 !! 
    2493                 !! seafloor iron addition 
    2494                 !! AXY (10/07/12): amended to only apply sedimentary flux up to ~500 m down 
    2495                 !! if (jk.eq.(mbathy(ji,jj)-1).AND.jk.lt.i1100) then 
    2496                 if ((jk.eq.jmbathy).AND.jk.le.i0500) then 
    2497                    !! Moore et al. (2004) cite a coastal California value of 5 umol/m2/d, but adopt a 
    2498                    !! global value of 2 umol/m2/d for all areas < 1100 m; here we use this latter value 
    2499                    !! but apply it everywhere 
    2500                    !! AXY (21/07/09): actually, let's just apply it below 1100 m (levels 1-37) 
    2501                    ffebot  = (xfe_sed / fthk) 
    2502                 else 
    2503                    ffebot  = 0.0 
    2504                 endif 
    2505  
    2506                 !!====================================================================== 
    2507                 !! AXY (07/04/17): possible subroutine block; miscellaneous processes (fuse?) 
    2508                 !!====================================================================== 
    2509  
    2510                 !!---------------------------------------------------------------------- 
    2511                 !! Miscellaneous 
    2512                 !!---------------------------------------------------------------------- 
    2513                 !! 
    2514                 !! diatom frustule dissolution 
    2515                 fsdiss  = xsdiss * zpds 
    2516  
    2517                 !!---------------------------------------------------------------------- 
    2518                 !! Slow detritus creation 
    2519                 !!---------------------------------------------------------------------- 
    2520                 !! this variable integrates the creation of slow sinking detritus 
    2521                 !! to allow the split between fast and slow detritus to be  
    2522                 !! diagnosed 
    2523                 fslown  = fdpn + fdzmi + ((1.0 - xfdfrac1) * fdpd) + & 
    2524                      ((1.0 - xfdfrac2) * fdzme) + ((1.0 - xbetan) * (finmi + finme)) 
    2525                 !! 
    2526                 !! this variable records the slow detrital sinking flux at this 
    2527                 !! particular depth; it is used in the output of this flux at 
    2528                 !! standard depths in the diagnostic outputs; needs to be 
    2529                 !! adjusted from per second to per day because of parameter vsed 
    2530                 fslownflux(ji,jj) = zdet * vsed * 86400. 
     2657                  !! AXY (17/01/13) 
     2658                  !! stop scavenging for iron concentrations below 0.5 umol / m3 
     2659                  !! at depths greater than 1000 m; this aims to end MEDUSA's 
     2660                  !! continual loss of iron at depth without impacting things 
     2661                  !! at the surface too much; the justification for this is that 
     2662                  !! it appears to be what Mick Follows et al. do in their work 
     2663                  !! (as evidenced by the iron initial condition they supplied 
     2664                  !! me with); to be honest, it looks like Follow et al. do this 
     2665                  !! at shallower depths than 1000 m, but I'll stick with this 
     2666                  !! for now; I suspect that this seemingly arbitrary approach 
     2667                  !! effectively "parameterises" the particle-based scavenging 
     2668                  !! rates that other models use (i.e. at depth there are no 
     2669                  !! sinking particles, so scavenging stops); it might be fun 
     2670                  !! justifying this in a paper though! 
     2671                  !! 
     2672                  if ((fdep.gt.1000.) .and. (xFeT.lt.0.5)) then 
     2673                     ffescav = 0. 
     2674                  endif 
     2675# endif 
     2676                  !! 
     2677               elseif (jiron.eq.2) then 
     2678                  !!---------------------------------------------------------------------- 
     2679                  !! Scheme 2: Moore et al. (2004) 
     2680                  !! This scheme includes a single scavenging term that accounts for 
     2681                  !! both suspended and sinking particles in the water column; this 
     2682                  !! term scavenges total iron rather than "free" iron 
     2683                  !!---------------------------------------------------------------------- 
     2684                  !! 
     2685                  !! total iron concentration (mmol Fe / m3 -> umol Fe / m3) 
     2686                  xFeT        = zfer * 1.e3 
     2687                  !! 
     2688                  !! this has a base scavenging rate (12% / y) which is modified by local 
     2689                  !! particle concentration and sinking flux (and dust - but I'm ignoring 
     2690                  !! that here for now) and which is accelerated when Fe concentration gets 
     2691                  !! 0.6 nM (= 0.6 umol/m3 = 0.0006 mmol/m3), and decreased as concentrations 
     2692                  !! below 0.4 nM (= 0.4 umol/m3 = 0.0004 mmol/m3) 
     2693                  !! 
     2694                  !! base scavenging rate (0.12 / y) 
     2695                  fbase_scav = 0.12 / 365.25 
     2696                  !! 
     2697                  !! calculate sinking particle part of scaling factor 
     2698                  !! this takes local fast sinking carbon (mmol C / m2 / d) and 
     2699                  !! gets it into nmol C / cm3 / s ("rdt" below is the number of seconds in 
     2700                  !! a model timestep) 
     2701                  !! 
     2702                  !! fscal_sink = ffastc(ji,jj) * 1.e2 / (86400.) 
     2703                  !! 
     2704                  !! ... actually, re-reading Moore et al.'s equations, it looks like he uses 
     2705                  !! his sinking flux directly, without scaling it by time-step or anything, 
     2706                  !! so I'll copy this here ... 
     2707                  !! 
     2708                  fscal_sink = ffastc(ji,jj) * 1.e2 
     2709                  !! 
     2710                  !! calculate particle part of scaling factor 
     2711                  !! this totals up the carbon in suspended particles (Pn, Pd, Zmi, Zme, D), 
     2712                  !! which comes out in mmol C / m3 (= nmol C / cm3), and then multiplies it 
     2713                  !! by a magic factor, 0.002, to get it into nmol C / cm2 / s 
     2714                  !! 
     2715                  fscal_part = ((xthetapn * zphn) + (xthetapd * zphd) + (xthetazmi * zzmi) + & 
     2716                  (xthetazme * zzme) + (xthetad * zdet)) * 0.002 
     2717                  !! 
     2718                  !! calculate scaling factor for base scavenging rate 
     2719                  !! this uses the (now correctly scaled) sinking flux and standing 
     2720                  !! particle concentration, divides through by some sort of reference 
     2721                  !! value (= 0.0066 nmol C / cm2 / s) and then uses this, or not if its 
     2722                  !! too high, to rescale the base scavenging rate 
     2723                  !! 
     2724                  fscal_scav = fbase_scav * min(((fscal_sink + fscal_part) / 0.0066), 4.0) 
     2725                  !! 
     2726                  !! the resulting scavenging rate is then scaled further according to the 
     2727                  !! local iron concentration (i.e. diminished in low iron regions; enhanced 
     2728                  !! in high iron regions; less alone in intermediate iron regions) 
     2729                  !! 
     2730                  if (xFeT.lt.0.4) then 
     2731                     !! 
     2732                     !! low iron region 
     2733                     !! 
     2734                     fscal_scav = fscal_scav * (xFeT / 0.4) 
     2735                     !! 
     2736                  elseif (xFeT.gt.0.6) then 
     2737                     !! 
     2738                     !! high iron region 
     2739                     !! 
     2740                     fscal_scav = fscal_scav + ((xFeT / 0.6) * (6.0 / 1.4)) 
     2741                     !! 
     2742                  else 
     2743                     !! 
     2744                     !! intermediate iron region: do nothing 
     2745                     !! 
     2746                  endif 
     2747                  !!  
     2748                  !! apply the calculated scavenging rate ... 
     2749                  !! 
     2750                  ffescav = fscal_scav * zfer 
     2751                  !! 
     2752               elseif (jiron.eq.3) then 
     2753                  !!---------------------------------------------------------------------- 
     2754                  !! Scheme 3: Moore et al. (2008) 
     2755                  !! This scheme includes a single scavenging term that accounts for 
     2756                  !! sinking particles in the water column, and includes organic C, 
     2757                  !! biogenic opal, calcium carbonate and dust in this (though the 
     2758                  !! latter is ignored here until I work out what units the incoming 
     2759                  !! "dust" flux is in); this term scavenges total iron rather than  
     2760                  !! "free" iron 
     2761                  !!---------------------------------------------------------------------- 
     2762                  !! 
     2763                  !! total iron concentration (mmol Fe / m3 -> umol Fe / m3) 
     2764                  xFeT        = zfer * 1.e3 
     2765                  !! 
     2766                  !! this has a base scavenging rate which is modified by local 
     2767                  !! particle sinking flux (including dust - but I'm ignoring that  
     2768                  !! here for now) and which is accelerated when Fe concentration 
     2769                  !! is > 0.6 nM (= 0.6 umol/m3 = 0.0006 mmol/m3), and decreased as  
     2770                  !! concentrations < 0.5 nM (= 0.5 umol/m3 = 0.0005 mmol/m3) 
     2771                  !! 
     2772                  !! base scavenging rate (Fe_b in paper; units may be wrong there) 
     2773                  fbase_scav = 0.00384 ! (ng)^-1 cm 
     2774                  !! 
     2775                  !! calculate sinking particle part of scaling factor; this converts 
     2776                  !! mmol / m2 / d fluxes of organic carbon, silicon and calcium 
     2777                  !! carbonate into ng / cm2 / s fluxes; it is assumed here that the 
     2778                  !! mass conversions simply consider the mass of the main element 
     2779                  !! (C, Si and Ca) and *not* the mass of the molecules that they are 
     2780                  !! part of; Moore et al. (2008) is unclear on the conversion that 
     2781                  !! should be used 
     2782                  !! 
     2783                  !! milli -> nano; mol -> gram; /m2 -> /cm2; /d -> /s 
     2784                  fscal_csink  = (ffastc(ji,jj)  * 1.e6 * xmassc  * 1.e-4 / 86400.)      ! ng C  / cm2 / s 
     2785                  fscal_sisink = (ffastsi(ji,jj) * 1.e6 * xmasssi * 1.e-4 / 86400.)      ! ng Si / cm2 / s 
     2786                  fscal_casink = (ffastca(ji,jj) * 1.e6 * xmassca * 1.e-4 / 86400.)      ! ng Ca / cm2 / s 
     2787                  !!  
     2788                  !! sum up these sinking fluxes and convert to ng / cm by dividing 
     2789                  !! through by a sinking rate of 100 m / d = 1.157 cm / s 
     2790                  fscal_sink   = ((fscal_csink * 6.) + fscal_sisink + fscal_casink) / & 
     2791                  (100. * 1.e3 / 86400)                                                  ! ng / cm 
     2792                  !! 
     2793                  !! now calculate the scavenging rate based upon the base rate and 
     2794                  !! this particle flux scaling; according to the published units, 
     2795                  !! the result actually has *no* units, but as it must be expressed 
     2796                  !! per unit time for it to make any sense, I'm assuming a missing 
     2797                  !! "per second" 
     2798                  fscal_scav = fbase_scav * fscal_sink                                   ! / s 
     2799                  !! 
     2800                  !! the resulting scavenging rate is then scaled further according to the 
     2801                  !! local iron concentration (i.e. diminished in low iron regions; enhanced 
     2802                  !! in high iron regions; less alone in intermediate iron regions) 
     2803                  !! 
     2804                  if (xFeT.lt.0.5) then 
     2805                     !! 
     2806                     !! low iron region (0.5 instead of the 0.4 in Moore et al., 2004) 
     2807                     !! 
     2808                     fscal_scav = fscal_scav * (xFeT / 0.5) 
     2809                     !! 
     2810                  elseif (xFeT.gt.0.6) then 
     2811                     !! 
     2812                     !! high iron region (functional form different in Moore et al., 2004) 
     2813                     !! 
     2814                     fscal_scav = fscal_scav + ((xFeT - 0.6) * 0.00904) 
     2815                     !! 
     2816                  else 
     2817                     !! 
     2818                     !! intermediate iron region: do nothing 
     2819                     !! 
     2820                  endif 
     2821                  !!  
     2822                  !! apply the calculated scavenging rate ... 
     2823                  !! 
     2824                  ffescav = fscal_scav * zfer 
     2825                  !! 
     2826               elseif (jiron.eq.4) then 
     2827                  !!---------------------------------------------------------------------- 
     2828                  !! Scheme 4: Galbraith et al. (2010) 
     2829                  !! This scheme includes two scavenging terms, one for organic, 
     2830                  !! particle-based scavenging, and another for inorganic scavenging; 
     2831                  !! both terms scavenge "free" iron only 
     2832                  !!---------------------------------------------------------------------- 
     2833                  !! 
     2834                  !! Galbraith et al. (2010) present a more straightforward outline of  
     2835                  !! the scheme in Parekh et al. (2005) ... 
     2836                  !!  
     2837                  !! sinking particulate carbon available for scavenging 
     2838                  !! this assumes a sinking rate of 100 m / d (Moore & Braucher, 2008), 
     2839                  xCscav1     = (ffastc(ji,jj) * xmassc) / 100. ! = mg C / m3 
     2840                  !!  
     2841                  !! scale by Honeyman et al. (1981) exponent coefficient 
     2842                  !! multiply by 1.e-3 to express C flux in g C rather than mg C 
     2843                  xCscav2     = (xCscav1 * 1.e-3)**0.58 
     2844                  !! 
     2845                  !! multiply by Galbraith et al. (2010) scavenging rate 
     2846                  xk_org      = 0.5 ! ((g C m/3)^-1) / d 
     2847                  xORGscav    = xk_org * xCscav2 * xFeF 
     2848                  !! 
     2849                  !! Galbraith et al. (2010) also include an inorganic bit ... 
     2850                  !!  
     2851                  !! this occurs at a fixed rate, again based on the availability of 
     2852                  !! "free" iron 
     2853                  !! 
     2854                  !! k_inorg  = 1000 d**-1 nmol Fe**-0.5 kg**-0.5 
     2855                  !! 
     2856                  !! to implement this here, scale xFeF by 1026 to put in units of 
     2857                  !! umol/m3 which approximately equal nmol/kg 
     2858                  !! 
     2859                  xk_inorg    = 1000. ! ((nmol Fe / kg)^1.5) 
     2860                  xINORGscav  = (xk_inorg * (xFeF * 1026.)**1.5) * 1.e-3 
     2861                  !! 
     2862                  !! sum these two terms together 
     2863                  ffescav     = xORGscav + xINORGscav 
     2864               else 
     2865                  !!---------------------------------------------------------------------- 
     2866                  !! No Scheme: you coward! 
     2867                  !! This scheme puts its head in the sand and eskews any decision about 
     2868                  !! how iron is removed from the ocean; prepare to get deluged in iron 
     2869                  !! you fool! 
     2870                  !!---------------------------------------------------------------------- 
     2871                  ffescav     = 0. 
     2872               endif 
     2873 
     2874               !!---------------------------------------------------------------------- 
     2875               !! Other iron cycle processes 
     2876               !!---------------------------------------------------------------------- 
     2877               !! 
     2878               !! aeolian iron deposition 
     2879               if (jk.eq.1) then 
     2880                  !! zirondep   is in mmol-Fe / m2 / day 
     2881                  !! ffetop     is in mmol-dissolved-Fe / m3 / day 
     2882                  ffetop  = zirondep(ji,jj) * xfe_sol / fthk  
     2883               else 
     2884                  ffetop  = 0.0 
     2885               endif 
     2886               !! 
     2887               !! seafloor iron addition 
     2888               !! AXY (10/07/12): amended to only apply sedimentary flux up to ~500 m down 
     2889               !! if (jk.eq.(mbathy(ji,jj)-1).AND.jk.lt.i1100) then 
     2890               if ((jk.eq.jmbathy).AND.jk.le.i0500) then 
     2891                  !! Moore et al. (2004) cite a coastal California value of 5 umol/m2/d, but adopt a 
     2892                  !! global value of 2 umol/m2/d for all areas < 1100 m; here we use this latter value 
     2893                  !! but apply it everywhere 
     2894                  !! AXY (21/07/09): actually, let's just apply it below 1100 m (levels 1-37) 
     2895                  ffebot  = (xfe_sed / fthk) 
     2896               else 
     2897                  ffebot  = 0.0 
     2898               endif 
     2899 
     2900               !! AXY (16/12/09): remove iron addition/removal processes 
     2901               !! For the purposes of the quarter degree run, the iron cycle is being pegged to the 
     2902               !! initial condition supplied by Mick Follows via restoration with a 30 day period; 
     2903               !! iron addition at the seafloor is still permitted with the idea that this extra 
     2904               !! iron will be removed by the restoration away from the source 
     2905               !! ffescav = 0.0 
     2906               !! ffetop  = 0.0 
     2907               !! ffebot  = 0.0 
     2908 
     2909# if defined key_debug_medusa 
     2910               !! report miscellaneous calculations 
     2911               if (idf.eq.1.AND.idfval.eq.1) then 
     2912                  IF (lwp) write (numout,*) '------------------------------' 
     2913                  IF (lwp) write (numout,*) 'xfe_sol  = ', xfe_sol 
     2914                  IF (lwp) write (numout,*) 'xfe_mass = ', xfe_mass 
     2915                  IF (lwp) write (numout,*) 'ffetop(',jk,')  = ', ffetop 
     2916                  IF (lwp) write (numout,*) 'ffebot(',jk,')  = ', ffebot 
     2917                  IF (lwp) write (numout,*) 'xFree(',jk,')   = ', xFree(ji,jj) 
     2918                  IF (lwp) write (numout,*) 'ffescav(',jk,') = ', ffescav 
     2919               endif 
     2920# endif 
     2921 
     2922               !!---------------------------------------------------------------------- 
     2923               !! Miscellaneous 
     2924               !!---------------------------------------------------------------------- 
     2925               !! 
     2926               !! diatom frustule dissolution 
     2927               fsdiss  = xsdiss * zpds 
     2928 
     2929# if defined key_debug_medusa 
     2930               !! report miscellaneous calculations 
     2931               if (idf.eq.1.AND.idfval.eq.1) then 
     2932                  IF (lwp) write (numout,*) '------------------------------' 
     2933                  IF (lwp) write (numout,*) 'fsdiss(',jk,')  = ', fsdiss 
     2934               endif 
     2935# endif 
     2936 
     2937               !!---------------------------------------------------------------------- 
     2938               !! Slow detritus creation 
     2939               !!---------------------------------------------------------------------- 
     2940               !! this variable integrates the creation of slow sinking detritus 
     2941               !! to allow the split between fast and slow detritus to be  
     2942               !! diagnosed 
     2943               fslown  = fdpn + fdzmi + ((1.0 - xfdfrac1) * fdpd) + & 
     2944               ((1.0 - xfdfrac2) * fdzme) + ((1.0 - xbetan) * (finmi + finme)) 
     2945               !! 
     2946               !! this variable records the slow detrital sinking flux at this 
     2947               !! particular depth; it is used in the output of this flux at 
     2948               !! standard depths in the diagnostic outputs; needs to be 
     2949               !! adjusted from per second to per day because of parameter vsed 
     2950               fslownflux(ji,jj) = zdet * vsed * 86400. 
    25312951# if defined key_roam 
    2532                 !! 
    2533                 !! and the same for detrital carbon 
    2534                 fslowc  = (xthetapn * fdpn) + (xthetazmi * fdzmi) + & 
    2535                      (xthetapd * (1.0 - xfdfrac1) * fdpd) + & 
    2536                      (xthetazme * (1.0 - xfdfrac2) * fdzme) + & 
    2537                      ((1.0 - xbetac) * (ficmi + ficme)) 
    2538                 !! 
    2539                 !! this variable records the slow detrital sinking flux at this 
    2540                 !! particular depth; it is used in the output of this flux at 
    2541                 !! standard depths in the diagnostic outputs; needs to be 
    2542                 !! adjusted from per second to per day because of parameter vsed 
    2543                 fslowcflux(ji,jj) = zdtc * vsed * 86400. 
    2544 # endif 
    2545  
    2546                 !!---------------------------------------------------------------------- 
    2547                 !! Nutrient regeneration 
    2548                 !! this variable integrates total nitrogen regeneration down the 
    2549                 !! watercolumn; its value is stored and output as a 2D diagnostic; 
    2550                 !! the corresponding dissolution flux of silicon (from sources 
    2551                 !! other than fast detritus) is also integrated; note that, 
    2552                 !! confusingly, the linear loss terms from plankton compartments 
    2553                 !! are labelled as fdX2 when one might have expected fdX or fdX1 
    2554                 !!---------------------------------------------------------------------- 
    2555                 !! 
    2556                 !! nitrogen 
    2557                 fregen   = (( (xphi * (fgmipn + fgmid)) +                &  ! messy feeding 
    2558                      (xphi * (fgmepn + fgmepd + fgmezmi + fgmed)) +           &  ! messy feeding 
    2559                      fmiexcr + fmeexcr + fdd +                                &  ! excretion + D remin. 
    2560                      fdpn2 + fdpd2 + fdzmi2 + fdzme2) * fthk)                    ! linear mortality 
    2561                 !! 
    2562                 !! silicon 
    2563                 fregensi = (( fsdiss + ((1.0 - xfdfrac1) * fdpds) +      &  ! dissolution + non-lin. mortality 
    2564                      ((1.0 - xfdfrac3) * fgmepds) +                           &  ! egestion by zooplankton 
    2565                      fdpds2) * fthk)                                             ! linear mortality 
     2952               !! 
     2953               !! and the same for detrital carbon 
     2954               fslowc  = (xthetapn * fdpn) + (xthetazmi * fdzmi) + & 
     2955               (xthetapd * (1.0 - xfdfrac1) * fdpd) + & 
     2956               (xthetazme * (1.0 - xfdfrac2) * fdzme) + & 
     2957               ((1.0 - xbetac) * (ficmi + ficme)) 
     2958               !! 
     2959               !! this variable records the slow detrital sinking flux at this 
     2960               !! particular depth; it is used in the output of this flux at 
     2961               !! standard depths in the diagnostic outputs; needs to be 
     2962               !! adjusted from per second to per day because of parameter vsed 
     2963               fslowcflux(ji,jj) = zdtc * vsed * 86400. 
     2964# endif 
     2965 
     2966               !!---------------------------------------------------------------------- 
     2967               !! Nutrient regeneration 
     2968               !! this variable integrates total nitrogen regeneration down the 
     2969               !! watercolumn; its value is stored and output as a 2D diagnostic; 
     2970               !! the corresponding dissolution flux of silicon (from sources 
     2971               !! other than fast detritus) is also integrated; note that, 
     2972               !! confusingly, the linear loss terms from plankton compartments 
     2973               !! are labelled as fdX2 when one might have expected fdX or fdX1 
     2974               !!---------------------------------------------------------------------- 
     2975               !! 
     2976               !! nitrogen 
     2977               fregen   = (( (xphi * (fgmipn + fgmid)) +                &  ! messy feeding 
     2978               (xphi * (fgmepn + fgmepd + fgmezmi + fgmed)) +           &  ! messy feeding 
     2979               fmiexcr + fmeexcr + fdd +                                &  ! excretion + D remin. 
     2980               fdpn2 + fdpd2 + fdzmi2 + fdzme2) * fthk)                    ! linear mortality 
     2981               !! 
     2982               !! silicon 
     2983               fregensi = (( fsdiss + ((1.0 - xfdfrac1) * fdpds) +      &  ! dissolution + non-lin. mortality 
     2984               ((1.0 - xfdfrac3) * fgmepds) +                           &  ! egestion by zooplankton 
     2985               fdpds2) * fthk)                                             ! linear mortality 
    25662986# if defined key_roam 
    2567                 !! 
    2568                 !! carbon 
    2569                 fregenc  = (( (xphi * ((xthetapn * fgmipn) + fgmidc)) +  &  ! messy feeding 
    2570                      (xphi * ((xthetapn * fgmepn) + (xthetapd * fgmepd) +     &  ! messy feeding 
    2571                      (xthetazmi * fgmezmi) + fgmedc)) +                       &  ! messy feeding 
    2572                      fmiresp + fmeresp + fddc +                               &  ! respiration + D remin. 
    2573                      (xthetapn * fdpn2) + (xthetapd * fdpd2) +                &  ! linear mortality 
    2574                      (xthetazmi * fdzmi2) + (xthetazme * fdzme2)) * fthk)        ! linear mortality 
    2575 # endif 
    2576  
    2577  
    2578                 !!====================================================================== 
    2579                 !! AXY (07/04/17): possible subroutine block; fast-sinking detritus 
    2580                 !!====================================================================== 
    2581  
    2582                 !!---------------------------------------------------------------------- 
    2583                 !! Fast-sinking detritus terms 
    2584                 !! "local" variables declared so that conservation can be checked; 
    2585                 !! the calculated terms are added to the fast-sinking flux later on 
    2586                 !! only after the flux entering this level has experienced some 
    2587                 !! remineralisation 
    2588                 !! note: these fluxes need to be scaled by the level thickness 
    2589                 !!---------------------------------------------------------------------- 
    2590                 !! 
    2591                 !! nitrogen:   diatom and mesozooplankton mortality 
    2592                 ftempn         = b0 * ((xfdfrac1 * fdpd)  + (xfdfrac2 * fdzme)) 
    2593                 !! 
    2594                 !! silicon:    diatom mortality and grazed diatoms 
    2595                 ftempsi        = b0 * ((xfdfrac1 * fdpds) + (xfdfrac3 * fgmepds)) 
    2596                 !! 
    2597                 !! iron:       diatom and mesozooplankton mortality 
    2598                 ftempfe        = b0 * (((xfdfrac1 * fdpd) + (xfdfrac2 * fdzme)) * xrfn) 
    2599                 !! 
    2600                 !! carbon:     diatom and mesozooplankton mortality 
    2601                 ftempc         = b0 * ((xfdfrac1 * xthetapd * fdpd) + &  
    2602                      (xfdfrac2 * xthetazme * fdzme)) 
    2603                 !! 
     2987               !! 
     2988               !! carbon 
     2989               fregenc  = (( (xphi * ((xthetapn * fgmipn) + fgmidc)) +  &  ! messy feeding 
     2990               (xphi * ((xthetapn * fgmepn) + (xthetapd * fgmepd) +     &  ! messy feeding 
     2991               (xthetazmi * fgmezmi) + fgmedc)) +                       &  ! messy feeding 
     2992               fmiresp + fmeresp + fddc +                               &  ! respiration + D remin. 
     2993               (xthetapn * fdpn2) + (xthetapd * fdpd2) +                &  ! linear mortality 
     2994               (xthetazmi * fdzmi2) + (xthetazme * fdzme2)) * fthk)        ! linear mortality 
     2995# endif 
     2996 
     2997               !!---------------------------------------------------------------------- 
     2998               !! Fast-sinking detritus terms 
     2999               !! "local" variables declared so that conservation can be checked; 
     3000               !! the calculated terms are added to the fast-sinking flux later on 
     3001               !! only after the flux entering this level has experienced some 
     3002               !! remineralisation 
     3003               !! note: these fluxes need to be scaled by the level thickness 
     3004               !!---------------------------------------------------------------------- 
     3005               !! 
     3006               !! nitrogen:   diatom and mesozooplankton mortality 
     3007               ftempn         = b0 * ((xfdfrac1 * fdpd)  + (xfdfrac2 * fdzme)) 
     3008               !! 
     3009               !! silicon:    diatom mortality and grazed diatoms 
     3010               ftempsi        = b0 * ((xfdfrac1 * fdpds) + (xfdfrac3 * fgmepds)) 
     3011               !! 
     3012               !! iron:       diatom and mesozooplankton mortality 
     3013               ftempfe        = b0 * (((xfdfrac1 * fdpd) + (xfdfrac2 * fdzme)) * xrfn) 
     3014               !! 
     3015               !! carbon:     diatom and mesozooplankton mortality 
     3016               ftempc         = b0 * ((xfdfrac1 * xthetapd * fdpd) + &  
     3017                                (xfdfrac2 * xthetazme * fdzme)) 
     3018               !! 
    26043019# if defined key_roam 
    2605                 if (jrratio.eq.0) then 
    2606                    !! CaCO3:      latitudinally-based fraction of total primary production 
    2607                    !!               absolute latitude of current grid cell 
    2608                    flat           = abs(gphit(ji,jj)) 
    2609                    !!               0.10 at equator; 0.02 at pole 
    2610                    fcaco3         = xcaco3a + ((xcaco3b - xcaco3a) * ((90.0 - flat) / 90.0)) 
    2611                 elseif (jrratio.eq.1) then 
    2612                    !! CaCO3:      Ridgwell et al. (2007) submodel, version 1 
    2613                    !!             this uses SURFACE omega calcite to regulate rain ratio 
    2614                    if (f_omcal(ji,jj).ge.1.0) then 
    2615                       fq1 = (f_omcal(ji,jj) - 1.0)**0.81 
    2616                    else 
    2617                       fq1 = 0. 
    2618                    endif 
    2619                    fcaco3 = xridg_r0 * fq1 
    2620                 elseif (jrratio.eq.2) then 
    2621                    !! CaCO3:      Ridgwell et al. (2007) submodel, version 2 
    2622                    !!             this uses FULL 3D omega calcite to regulate rain ratio 
    2623                    if (f3_omcal(ji,jj,jk).ge.1.0) then 
    2624                       fq1 = (f3_omcal(ji,jj,jk) - 1.0)**0.81 
    2625                    else 
    2626                       fq1 = 0. 
    2627                    endif 
    2628                    fcaco3 = xridg_r0 * fq1 
    2629                 endif 
     3020               if (jrratio.eq.0) then 
     3021                  !! CaCO3:      latitudinally-based fraction of total primary production 
     3022                  !!               absolute latitude of current grid cell 
     3023                  flat           = abs(gphit(ji,jj)) 
     3024                  !!               0.10 at equator; 0.02 at pole 
     3025                  fcaco3         = xcaco3a + ((xcaco3b - xcaco3a) * ((90.0 - flat) / 90.0)) 
     3026               elseif (jrratio.eq.1) then 
     3027                  !! CaCO3:      Ridgwell et al. (2007) submodel, version 1 
     3028                  !!             this uses SURFACE omega calcite to regulate rain ratio 
     3029                  if (f_omcal(ji,jj).ge.1.0) then 
     3030                     fq1 = (f_omcal(ji,jj) - 1.0)**0.81 
     3031                  else 
     3032                     fq1 = 0. 
     3033                  endif 
     3034                  fcaco3 = xridg_r0 * fq1 
     3035               elseif (jrratio.eq.2) then 
     3036                  !! CaCO3:      Ridgwell et al. (2007) submodel, version 2 
     3037                  !!             this uses FULL 3D omega calcite to regulate rain ratio 
     3038                  if (f3_omcal(ji,jj,jk).ge.1.0) then 
     3039                     fq1 = (f3_omcal(ji,jj,jk) - 1.0)**0.81 
     3040                  else 
     3041                     fq1 = 0. 
     3042                  endif 
     3043                  fcaco3 = xridg_r0 * fq1 
     3044               endif 
    26303045# else 
    2631                 !! CaCO3:      latitudinally-based fraction of total primary production 
    2632                 !!               absolute latitude of current grid cell 
    2633                 flat           = abs(gphit(ji,jj)) 
    2634                 !!               0.10 at equator; 0.02 at pole 
    2635                 fcaco3         = xcaco3a + ((xcaco3b - xcaco3a) * ((90.0 - flat) / 90.0)) 
    2636 # endif 
    2637                 !! AXY (09/03/09): convert CaCO3 production from function of  
    2638                 !! primary production into a function of fast-sinking material;  
    2639                 !! technically, this is what Dunne et al. (2007) do anyway; they  
    2640                 !! convert total primary production estimated from surface  
    2641                 !! chlorophyll to an export flux for which they apply conversion  
    2642                 !! factors to estimate the various elemental fractions (Si, Ca) 
    2643                 ftempca        = ftempc * fcaco3 
     3046               !! CaCO3:      latitudinally-based fraction of total primary production 
     3047               !!               absolute latitude of current grid cell 
     3048               flat           = abs(gphit(ji,jj)) 
     3049               !!               0.10 at equator; 0.02 at pole 
     3050               fcaco3         = xcaco3a + ((xcaco3b - xcaco3a) * ((90.0 - flat) / 90.0)) 
     3051# endif 
     3052               !! AXY (09/03/09): convert CaCO3 production from function of  
     3053               !! primary production into a function of fast-sinking material;  
     3054               !! technically, this is what Dunne et al. (2007) do anyway; they  
     3055               !! convert total primary production estimated from surface  
     3056               !! chlorophyll to an export flux for which they apply conversion  
     3057               !! factors to estimate the various elemental fractions (Si, Ca) 
     3058               ftempca        = ftempc * fcaco3 
    26443059 
    26453060# if defined key_debug_medusa 
    2646                 !! integrate total fast detritus production 
    2647                 if (idf.eq.1) then 
    2648                    fifd_n(ji,jj)  = fifd_n(ji,jj)  + (ftempn  * fthk) 
    2649                    fifd_si(ji,jj) = fifd_si(ji,jj) + (ftempsi * fthk) 
    2650                    fifd_fe(ji,jj) = fifd_fe(ji,jj) + (ftempfe * fthk) 
     3061               !! integrate total fast detritus production 
     3062               if (idf.eq.1) then 
     3063                  fifd_n(ji,jj)  = fifd_n(ji,jj)  + (ftempn  * fthk) 
     3064                  fifd_si(ji,jj) = fifd_si(ji,jj) + (ftempsi * fthk) 
     3065                  fifd_fe(ji,jj) = fifd_fe(ji,jj) + (ftempfe * fthk) 
    26513066#  if defined key_roam 
    2652                    fifd_c(ji,jj)  = fifd_c(ji,jj)  + (ftempc  * fthk) 
     3067                  fifd_c(ji,jj)  = fifd_c(ji,jj)  + (ftempc  * fthk) 
    26533068#  endif 
    2654                 endif 
    2655 # endif 
    2656  
    2657                 !!---------------------------------------------------------------------- 
    2658                 !! This version of MEDUSA offers a choice of three methods for 
    2659                 !! handling the remineralisation of fast detritus.  All three 
    2660                 !! do so in broadly the same way: 
    2661                 !! 
    2662                 !!   1.  Fast detritus is stored as a 2D array                   [ ffastX  ] 
    2663                 !!   2.  Fast detritus is added level-by-level                   [ ftempX  ] 
    2664                 !!   3.  Fast detritus is not remineralised in the top box       [ freminX ] 
    2665                 !!   4.  Remaining fast detritus is remineralised in the bottom  [ fsedX   ] 
    2666                 !!       box 
    2667                 !! 
    2668                 !! The three remineralisation methods are: 
    2669                 !!    
    2670                 !!   1.  Ballast model (i.e. that published in Yool et al., 2011) 
    2671                 !!  (1b. Ballast-sans-ballast model) 
    2672                 !!   2.  Martin et al. (1987) 
    2673                 !!   3.  Henson et al. (2011) 
    2674                 !!  
    2675                 !! The first of these couples C, N and Fe remineralisation to 
    2676                 !! the remineralisation of particulate Si and CaCO3, but the  
    2677                 !! latter two treat remineralisation of C, N, Fe, Si and CaCO3 
    2678                 !! completely separately.  At present a switch within the code 
    2679                 !! regulates which submodel is used, but this should be moved 
    2680                 !! to the namelist file. 
    2681                 !!  
    2682                 !! The ballast-sans-ballast submodel is an original development 
    2683                 !! feature of MEDUSA in which the ballast submodel's general 
    2684                 !! framework and parameterisation is used, but in which there 
    2685                 !! is no protection of organic material afforded by ballasting 
    2686                 !! minerals.  While similar, it is not the same as the Martin  
    2687                 !! et al. (1987) submodel. 
    2688                 !! 
    2689                 !! Since the three submodels behave the same in terms of 
    2690                 !! accumulating sinking material and remineralising it all at 
    2691                 !! the seafloor, these portions of the code below are common to 
    2692                 !! all three. 
    2693                 !!---------------------------------------------------------------------- 
    2694  
    2695                 if (jexport.eq.1) then 
    2696                    !!====================================================================== 
    2697                    !! BALLAST SUBMODEL 
    2698                    !!====================================================================== 
    2699                    !!  
    2700                    !!---------------------------------------------------------------------- 
    2701                    !! Fast-sinking detritus fluxes, pt. 1: REMINERALISATION 
    2702                    !! aside from explicitly modelled, slow-sinking detritus, the 
    2703                    !! model includes an implicit representation of detrital 
    2704                    !! particles that sink too quickly to be modelled with 
    2705                    !! explicit state variables; this sinking flux is instead 
    2706                    !! instantaneously remineralised down the water column using 
    2707                    !! the version of Armstrong et al. (2002)'s ballast model 
    2708                    !! used by Dunne et al. (2007); the version of this model 
    2709                    !! here considers silicon and calcium carbonate ballast 
    2710                    !! minerals; this section of the code redistributes the fast 
    2711                    !! sinking material generated locally down the water column; 
    2712                    !! this differs from Dunne et al. (2007) in that fast sinking 
    2713                    !! material is distributed at *every* level below that it is 
    2714                    !! generated, rather than at every level below some fixed 
    2715                    !! depth; this scheme is also different in that sinking material  
    2716                    !! generated in one level is aggregated with that generated by 
    2717                    !! shallower levels; this should make the ballast model more 
    2718                    !! self-consistent (famous last words) 
    2719                    !!---------------------------------------------------------------------- 
    2720                    !! 
    2721                    if (jk.eq.1) then 
    2722                       !! this is the SURFACE OCEAN BOX (no remineralisation) 
    2723                       !! 
    2724                       freminc  = 0.0 
    2725                       freminn  = 0.0 
    2726                       freminfe = 0.0 
    2727                       freminsi = 0.0 
    2728                       freminca = 0.0 
    2729                    elseif (jk.le.jmbathy) then 
    2730                       !! this is an OCEAN BOX (remineralise some material) 
    2731                       !! 
    2732                       !! set up CCD depth to be used depending on user choice 
    2733                       if (jocalccd.eq.0) then 
    2734                          !! use default CCD field 
    2735                          fccd_dep = ocal_ccd(ji,jj) 
    2736                       elseif (jocalccd.eq.1) then 
    2737                          !! use calculated CCD field 
    2738                          fccd_dep = f2_ccd_cal(ji,jj) 
    2739                       endif 
    2740                       !! 
    2741                       !! === organic carbon === 
    2742                       fq0      = ffastc(ji,jj)                        !! how much organic C enters this box        (mol) 
    2743                       if (iball.eq.1) then 
    2744                          fq1      = (fq0 * xmassc)                    !! how much it weighs                        (mass) 
    2745                          fq2      = (ffastca(ji,jj) * xmassca)        !! how much CaCO3 enters this box            (mass) 
    2746                          fq3      = (ffastsi(ji,jj) * xmasssi)        !! how much  opal enters this box            (mass) 
    2747                          fq4      = (fq2 * xprotca) + (fq3 * xprotsi) !! total protected organic C                 (mass) 
    2748                          !! this next term is calculated for C but used for N and Fe as well 
    2749                          !! it needs to be protected in case ALL C is protected 
    2750                          if (fq4.lt.fq1) then 
    2751                             fprotf   = (fq4 / (fq1 + tiny(fq1)))      !! protected fraction of total organic C     (non-dim) 
    2752                          else 
    2753                             fprotf   = 1.0                            !! all organic C is protected                (non-dim) 
    2754                          endif 
    2755                          fq5      = (1.0 - fprotf)                    !! unprotected fraction of total organic C   (non-dim) 
    2756                          fq6      = (fq0 * fq5)                       !! how much organic C is unprotected         (mol) 
    2757                          fq7      = (fq6 * exp(-(fthk / xfastc)))     !! how much unprotected C leaves this box    (mol) 
    2758                          fq8      = (fq7 + (fq0 * fprotf))            !! how much total C leaves this box          (mol) 
    2759                          freminc  = (fq0 - fq8) / fthk                !! C remineralisation in this box            (mol) 
    2760                          ffastc(ji,jj) = fq8                           
    2761                       else 
    2762                          fq1      = fq0 * exp(-(fthk / xfastc))       !! how much organic C leaves this box        (mol) 
    2763                          freminc  = (fq0 - fq1) / fthk                !! C remineralisation in this box            (mol) 
    2764                          ffastc(ji,jj)  = fq1 
    2765                       endif 
    2766                       !! 
    2767                       !! === organic nitrogen === 
    2768                       fq0      = ffastn(ji,jj)                        !! how much organic N enters this box        (mol) 
    2769                       if (iball.eq.1) then 
    2770                          fq5      = (1.0 - fprotf)                    !! unprotected fraction of total organic N   (non-dim) 
    2771                          fq6      = (fq0 * fq5)                       !! how much organic N is unprotected         (mol) 
    2772                          fq7      = (fq6 * exp(-(fthk / xfastc)))     !! how much unprotected N leaves this box    (mol) 
    2773                          fq8      = (fq7 + (fq0 * fprotf))            !! how much total N leaves this box          (mol) 
    2774                          freminn  = (fq0 - fq8) / fthk                !! N remineralisation in this box            (mol) 
    2775                          ffastn(ji,jj)  = fq8 
    2776                       else 
    2777                          fq1      = fq0 * exp(-(fthk / xfastc))       !! how much organic N leaves this box        (mol) 
    2778                          freminn  = (fq0 - fq1) / fthk                !! N remineralisation in this box            (mol) 
    2779                          ffastn(ji,jj)  = fq1 
    2780                       endif 
    2781                       !! 
    2782                       !! === organic iron === 
    2783                       fq0      = ffastfe(ji,jj)                       !! how much organic Fe enters this box       (mol) 
    2784                       if (iball.eq.1) then 
    2785                          fq5      = (1.0 - fprotf)                    !! unprotected fraction of total organic Fe  (non-dim) 
    2786                          fq6      = (fq0 * fq5)                       !! how much organic Fe is unprotected        (mol) 
    2787                          fq7      = (fq6 * exp(-(fthk / xfastc)))     !! how much unprotected Fe leaves this box   (mol) 
    2788                          fq8      = (fq7 + (fq0 * fprotf))            !! how much total Fe leaves this box         (mol)             
    2789                          freminfe = (fq0 - fq8) / fthk                !! Fe remineralisation in this box           (mol) 
    2790                          ffastfe(ji,jj) = fq8 
    2791                       else 
    2792                          fq1      = fq0 * exp(-(fthk / xfastc))       !! how much total Fe leaves this box         (mol)       
    2793                          freminfe = (fq0 - fq1) / fthk                !! Fe remineralisation in this box           (mol) 
    2794                          ffastfe(ji,jj) = fq1 
    2795                       endif 
    2796                       !! 
    2797                       !! === biogenic silicon === 
    2798                       fq0      = ffastsi(ji,jj)                       !! how much  opal centers this box           (mol)  
    2799                       fq1      = fq0 * exp(-(fthk / xfastsi))         !! how much  opal leaves this box            (mol) 
    2800                       freminsi = (fq0 - fq1) / fthk                   !! Si remineralisation in this box           (mol) 
    2801                       ffastsi(ji,jj) = fq1 
    2802                       !! 
    2803                       !! === biogenic calcium carbonate === 
    2804                       fq0      = ffastca(ji,jj)                       !! how much CaCO3 enters this box            (mol) 
    2805                       if (fdep.le.fccd_dep) then 
    2806                          !! whole grid cell above CCD 
    2807                          fq1      = fq0                               !! above lysocline, no Ca dissolves          (mol) 
    2808                          freminca = 0.0                               !! above lysocline, no Ca dissolves          (mol) 
    2809                          fccd(ji,jj) = real(jk)                       !! which is the last level above the CCD?    (#) 
    2810                       elseif (fdep.ge.fccd_dep) then 
    2811                          !! whole grid cell below CCD 
    2812                          fq1      = fq0 * exp(-(fthk / xfastca))      !! how much CaCO3 leaves this box            (mol) 
    2813                          freminca = (fq0 - fq1) / fthk                !! Ca remineralisation in this box           (mol) 
    2814                       else 
    2815                          !! partial grid cell below CCD 
    2816                          fq2      = fdep1 - fccd_dep                  !! amount of grid cell below CCD             (m) 
    2817                          fq1      = fq0 * exp(-(fq2 / xfastca))       !! how much CaCO3 leaves this box            (mol) 
    2818                          freminca = (fq0 - fq1) / fthk                !! Ca remineralisation in this box           (mol) 
    2819                       endif 
    2820                       ffastca(ji,jj) = fq1  
    2821                    else 
    2822                       !! this is BELOW THE LAST OCEAN BOX (do nothing) 
    2823                       freminc  = 0.0 
    2824                       freminn  = 0.0 
    2825                       freminfe = 0.0 
    2826                       freminsi = 0.0 
    2827                       freminca = 0.0               
    2828                    endif 
    2829  
    2830                 elseif (jexport.eq.2.or.jexport.eq.3) then 
    2831                    if (jexport.eq.2) then 
    2832                       !!====================================================================== 
    2833                       !! MARTIN ET AL. (1987) SUBMODEL 
    2834                       !!====================================================================== 
    2835                       !!  
    2836                       !!---------------------------------------------------------------------- 
    2837                       !! This submodel uses the classic Martin et al. (1987) curve 
    2838                       !! to determine the attenuation of fast-sinking detritus down 
    2839                       !! the water column.  All three organic elements, C, N and Fe, 
    2840                       !! are handled identically, and their quantities in sinking 
    2841                       !! particles attenuate according to a power relationship 
    2842                       !! governed by parameter "b".  This is assigned a canonical  
    2843                       !! value of -0.858.  Biogenic opal and calcium carbonate are 
    2844                       !! attentuated using the same function as in the ballast 
    2845                       !! submodel 
    2846                       !!---------------------------------------------------------------------- 
    2847                       !! 
    2848                       fb_val = -0.858 
    2849                    elseif (jexport.eq.3) then 
    2850                       !!====================================================================== 
    2851                       !! HENSON ET AL. (2011) SUBMODEL 
    2852                       !!====================================================================== 
    2853                       !! 
    2854                       !!---------------------------------------------------------------------- 
    2855                       !! This submodel reconfigures the Martin et al. (1987) curve by 
    2856                       !! allowing the "b" value to vary geographically.  Its value is 
    2857                       !! set, following Henson et al. (2011), as a function of local 
    2858                       !! sea surface temperature: 
    2859                       !!   b = -1.06 + (0.024 * SST) 
    2860                       !! This means that remineralisation length scales are longer in 
    2861                       !! warm, tropical areas and shorter in cold, polar areas.  This 
    2862                       !! does seem back-to-front (i.e. one would expect GREATER 
    2863                       !! remineralisation in warmer waters), but is an outcome of  
    2864                       !! analysis of sediment trap data, and it may reflect details 
    2865                       !! of ecosystem structure that pertain to particle production 
    2866                       !! rather than simply Q10. 
    2867                       !!---------------------------------------------------------------------- 
    2868                       !! 
    2869                       fl_sst = tsn(ji,jj,1,jp_tem) 
    2870                       fb_val = -1.06 + (0.024 * fl_sst) 
    2871                    endif 
    2872                    !!    
    2873                    if (jk.eq.1) then 
    2874                       !! this is the SURFACE OCEAN BOX (no remineralisation) 
    2875                       !! 
    2876                       freminc  = 0.0 
    2877                       freminn  = 0.0 
    2878                       freminfe = 0.0 
    2879                       freminsi = 0.0 
    2880                       freminca = 0.0 
    2881                    elseif (jk.le.jmbathy) then 
    2882                       !! this is an OCEAN BOX (remineralise some material) 
    2883                       !! 
    2884                       !! === organic carbon === 
    2885                       fq0      = ffastc(ji,jj)                        !! how much organic C enters this box        (mol) 
    2886                       fq1      = fq0 * ((fdep1/fdep)**fb_val)         !! how much organic C leaves this box        (mol) 
    2887                       freminc  = (fq0 - fq1) / fthk                   !! C remineralisation in this box            (mol) 
    2888                       ffastc(ji,jj)  = fq1 
    2889                       !! 
    2890                       !! === organic nitrogen === 
    2891                       fq0      = ffastn(ji,jj)                        !! how much organic N enters this box        (mol) 
    2892                       fq1      = fq0 * ((fdep1/fdep)**fb_val)         !! how much organic N leaves this box        (mol) 
    2893                       freminn  = (fq0 - fq1) / fthk                   !! N remineralisation in this box            (mol) 
    2894                       ffastn(ji,jj)  = fq1 
    2895                       !! 
    2896                       !! === organic iron === 
    2897                       fq0      = ffastfe(ji,jj)                       !! how much organic Fe enters this box       (mol) 
    2898                       fq1      = fq0 * ((fdep1/fdep)**fb_val)         !! how much organic Fe leaves this box       (mol) 
    2899                       freminfe = (fq0 - fq1) / fthk                   !! Fe remineralisation in this box           (mol) 
    2900                       ffastfe(ji,jj) = fq1 
    2901                       !! 
    2902                       !! === biogenic silicon === 
    2903                       fq0      = ffastsi(ji,jj)                       !! how much  opal centers this box           (mol)  
    2904                       fq1      = fq0 * exp(-(fthk / xfastsi))         !! how much  opal leaves this box            (mol) 
    2905                       freminsi = (fq0 - fq1) / fthk                   !! Si remineralisation in this box           (mol) 
    2906                       ffastsi(ji,jj) = fq1 
    2907                       !! 
    2908                       !! === biogenic calcium carbonate === 
    2909                       fq0      = ffastca(ji,jj)                       !! how much CaCO3 enters this box            (mol) 
    2910                       if (fdep.le.ocal_ccd(ji,jj)) then 
    2911                          !! whole grid cell above CCD 
    2912                          fq1      = fq0                               !! above lysocline, no Ca dissolves          (mol) 
    2913                          freminca = 0.0                               !! above lysocline, no Ca dissolves          (mol) 
    2914                          fccd(ji,jj) = real(jk)                       !! which is the last level above the CCD?    (#) 
    2915                       elseif (fdep.ge.ocal_ccd(ji,jj)) then 
    2916                          !! whole grid cell below CCD 
    2917                          fq1      = fq0 * exp(-(fthk / xfastca))      !! how much CaCO3 leaves this box            (mol) 
    2918                          freminca = (fq0 - fq1) / fthk                !! Ca remineralisation in this box           (mol) 
    2919                       else 
    2920                          !! partial grid cell below CCD 
    2921                          fq2      = fdep1 - ocal_ccd(ji,jj)           !! amount of grid cell below CCD             (m) 
    2922                          fq1      = fq0 * exp(-(fq2 / xfastca))       !! how much CaCO3 leaves this box            (mol) 
    2923                          freminca = (fq0 - fq1) / fthk                !! Ca remineralisation in this box           (mol) 
    2924                       endif 
    2925                       ffastca(ji,jj) = fq1  
    2926                    else 
    2927                       !! this is BELOW THE LAST OCEAN BOX (do nothing) 
    2928                       freminc  = 0.0 
    2929                       freminn  = 0.0 
    2930                       freminfe = 0.0 
    2931                       freminsi = 0.0 
    2932                       freminca = 0.0               
    2933                    endif 
    2934  
    2935                 endif 
    2936  
    2937                 !!---------------------------------------------------------------------- 
    2938                 !! Fast-sinking detritus fluxes, pt. 2: UPDATE FAST FLUXES 
    2939                 !! here locally calculated additions to the fast-sinking flux are added 
    2940                 !! to the total fast-sinking flux; this is done here such that material 
    2941                 !! produced in a particular layer is only remineralised below this 
    2942                 !! layer 
    2943                 !!---------------------------------------------------------------------- 
    2944                 !! 
    2945                 !! add sinking material generated in this layer to running totals 
    2946                 !! 
    2947                 !! === organic carbon ===                          (diatom and mesozooplankton mortality) 
    2948                 ffastc(ji,jj)  = ffastc(ji,jj)  + (ftempc  * fthk) 
    2949                 !! 
    2950                 !! === organic nitrogen ===                        (diatom and mesozooplankton mortality) 
    2951                 ffastn(ji,jj)  = ffastn(ji,jj)  + (ftempn  * fthk) 
    2952                 !! 
    2953                 !! === organic iron ===                            (diatom and mesozooplankton mortality) 
    2954                 ffastfe(ji,jj) = ffastfe(ji,jj) + (ftempfe * fthk) 
    2955                 !! 
    2956                 !! === biogenic silicon ===                        (diatom mortality and grazed diatoms) 
    2957                 ffastsi(ji,jj) = ffastsi(ji,jj) + (ftempsi * fthk) 
    2958                 !! 
    2959                 !! === biogenic calcium carbonate ===              (latitudinally-based fraction of total primary production) 
    2960                 ffastca(ji,jj) = ffastca(ji,jj) + (ftempca * fthk) 
    2961  
    2962                 !!---------------------------------------------------------------------- 
    2963                 !! Fast-sinking detritus fluxes, pt. 3: SEAFLOOR 
    2964                 !! remineralise all remaining fast-sinking detritus to dissolved 
    2965                 !! nutrients; the sedimentation fluxes calculated here allow the 
    2966                 !! separation of what's remineralised sinking through the final 
    2967                 !! ocean box from that which is added to the final box by the 
    2968                 !! remineralisation of material that reaches the seafloor (i.e. 
    2969                 !! the model assumes that *all* material that hits the seafloor 
    2970                 !! is remineralised and that none is permanently buried; hey, 
    2971                 !! this is a giant GCM model that can't be run for long enough 
    2972                 !! to deal with burial fluxes!) 
    2973                 !! 
    2974                 !! in a change to this process, in part so that MEDUSA behaves 
    2975                 !! a little more like ERSEM et al., fast-sinking detritus (N, Fe 
    2976                 !! and C) is converted to slow sinking detritus at the seafloor 
    2977                 !! instead of being remineralised; the rationale is that in 
    2978                 !! shallower shelf regions (... that are not fully mixed!) this 
    2979                 !! allows the detrital material to return slowly to dissolved  
    2980                 !! nutrient rather than instantaneously as now; the alternative 
    2981                 !! would be to explicitly handle seafloor organic material - a 
    2982                 !! headache I don't wish to experience at this point; note that 
    2983                 !! fast-sinking Si and Ca detritus is just remineralised as  
    2984                 !! per usual 
    2985                 !!  
    2986                 !! AXY (13/01/12) 
    2987                 !! in a further change to this process, again so that MEDUSA is 
    2988                 !! a little more like ERSEM et al., material that reaches the 
    2989                 !! seafloor can now be added to sediment pools and stored for 
    2990                 !! slow release; there are new 2D arrays for organic nitrogen, 
    2991                 !! iron and carbon and inorganic silicon and carbon that allow 
    2992                 !! fast and slow detritus that reaches the seafloor to be held 
    2993                 !! and released back to the water column more slowly; these arrays 
    2994                 !! are transferred via the tracer restart files between repeat 
    2995                 !! submissions of the model 
    2996                 !!---------------------------------------------------------------------- 
    2997                 !!  
    2998                 ffast2slowc  = 0.0 
    2999                 ffast2slown  = 0.0 
    3000                 ffast2slowfe = 0.0 
    3001                 !! 
    3002                 if (jk.eq.jmbathy) then 
    3003                    !! this is the BOTTOM OCEAN BOX (remineralise everything) 
    3004                    !! 
    3005                    !! AXY (17/01/12): tweaked to include benthos pools 
    3006                    !!  
    3007                    !! === organic carbon === 
    3008                    if (jfdfate.eq.0 .and. jorgben.eq.0) then 
    3009                       freminc  = freminc + (ffastc(ji,jj) / fthk)    !! C remineralisation in this box            (mol/m3) 
    3010                    elseif (jfdfate.eq.1 .and. jorgben.eq.0) then 
    3011                       ffast2slowc = ffastc(ji,jj) / fthk             !! fast C -> slow C                          (mol/m3) 
    3012                       fslowc      = fslowc + ffast2slowc 
    3013                    elseif (jfdfate.eq.0 .and. jorgben.eq.1) then 
    3014                       f_fbenin_c(ji,jj)  = ffastc(ji,jj)             !! fast C -> benthic C                       (mol/m2) 
    3015                    endif 
    3016                    fsedc(ji,jj)   = ffastc(ji,jj)                          !! record seafloor C                         (mol/m2) 
    3017                    ffastc(ji,jj)  = 0.0 
    3018                    !! 
    3019                    !! === organic nitrogen === 
    3020                    if (jfdfate.eq.0 .and. jorgben.eq.0) then 
    3021                       freminn  = freminn + (ffastn(ji,jj) / fthk)    !! N remineralisation in this box            (mol/m3) 
    3022                    elseif (jfdfate.eq.1 .and. jorgben.eq.0) then 
    3023                       ffast2slown = ffastn(ji,jj) / fthk             !! fast N -> slow N                          (mol/m3) 
    3024                       fslown      = fslown + ffast2slown 
    3025                    elseif (jfdfate.eq.0 .and. jorgben.eq.1) then 
    3026                       f_fbenin_n(ji,jj)  = ffastn(ji,jj)             !! fast N -> benthic N                       (mol/m2) 
    3027                    endif 
    3028                    fsedn(ji,jj)   = ffastn(ji,jj)                          !! record seafloor N                         (mol/m2) 
    3029                    ffastn(ji,jj)  = 0.0 
    3030                    !! 
    3031                    !! === organic iron === 
    3032                    if (jfdfate.eq.0 .and. jorgben.eq.0) then 
    3033                       freminfe = freminfe + (ffastfe(ji,jj) / fthk)  !! Fe remineralisation in this box           (mol/m3) 
    3034                    elseif (jfdfate.eq.1 .and. jorgben.eq.0) then 
    3035                       ffast2slowfe = ffastn(ji,jj) / fthk            !! fast Fe -> slow Fe                        (mol/m3) 
    3036                    elseif (jfdfate.eq.0 .and. jorgben.eq.1) then 
    3037                       f_fbenin_fe(ji,jj) = ffastfe(ji,jj)            !! fast Fe -> benthic Fe                     (mol/m2) 
    3038                    endif 
    3039                    fsedfe(ji,jj)  = ffastfe(ji,jj)                         !! record seafloor Fe                        (mol/m2) 
    3040                    ffastfe(ji,jj) = 0.0 
    3041                    !! 
    3042                    !! === biogenic silicon === 
    3043                    if (jinorgben.eq.0) then 
    3044                       freminsi = freminsi + (ffastsi(ji,jj) / fthk)  !! Si remineralisation in this box           (mol/m3) 
    3045                    elseif (jinorgben.eq.1) then 
    3046                       f_fbenin_si(ji,jj) = ffastsi(ji,jj)            !! fast Si -> benthic Si                     (mol/m2) 
    3047                    endif 
    3048                    fsedsi(ji,jj)   = ffastsi(ji,jj)                         !! record seafloor Si                        (mol/m2) 
    3049                    ffastsi(ji,jj) = 0.0 
    3050                    !! 
    3051                    !! === biogenic calcium carbonate === 
    3052                    if (jinorgben.eq.0) then 
    3053                       freminca = freminca + (ffastca(ji,jj) / fthk)  !! Ca remineralisation in this box           (mol/m3)  
    3054                    elseif (jinorgben.eq.1) then 
    3055                       f_fbenin_ca(ji,jj) = ffastca(ji,jj)            !! fast Ca -> benthic Ca                     (mol/m2) 
    3056                    endif 
    3057                    fsedca(ji,jj)   = ffastca(ji,jj)                         !! record seafloor Ca                        (mol/m2) 
    3058                    ffastca(ji,jj) = 0.0 
    3059                 endif 
    3060  
     3069               endif 
     3070 
     3071               !! report quantities of fast-sinking detritus for each component 
     3072               if (idf.eq.1.AND.idfval.eq.1) then 
     3073                  IF (lwp) write (numout,*) '------------------------------' 
     3074                  IF (lwp) write (numout,*) 'fdpd(',jk,')    = ', fdpd 
     3075                  IF (lwp) write (numout,*) 'fdzme(',jk,')   = ', fdzme 
     3076                  IF (lwp) write (numout,*) 'ftempn(',jk,')  = ', ftempn 
     3077                  IF (lwp) write (numout,*) 'ftempsi(',jk,') = ', ftempsi 
     3078                  IF (lwp) write (numout,*) 'ftempfe(',jk,') = ', ftempfe 
     3079                  IF (lwp) write (numout,*) 'ftempc(',jk,')  = ', ftempc 
     3080                  IF (lwp) write (numout,*) 'ftempca(',jk,') = ', ftempca 
     3081                  IF (lwp) write (numout,*) 'flat(',jk,')    = ', flat 
     3082                  IF (lwp) write (numout,*) 'fcaco3(',jk,')  = ', fcaco3 
     3083               endif 
     3084# endif 
     3085 
     3086               !!---------------------------------------------------------------------- 
     3087               !! This version of MEDUSA offers a choice of three methods for 
     3088               !! handling the remineralisation of fast detritus.  All three 
     3089               !! do so in broadly the same way: 
     3090               !! 
     3091               !!   1.  Fast detritus is stored as a 2D array                   [ ffastX  ] 
     3092               !!   2.  Fast detritus is added level-by-level                   [ ftempX  ] 
     3093               !!   3.  Fast detritus is not remineralised in the top box       [ freminX ] 
     3094               !!   4.  Remaining fast detritus is remineralised in the bottom  [ fsedX   ] 
     3095               !!       box 
     3096               !! 
     3097               !! The three remineralisation methods are: 
     3098               !!    
     3099               !!   1.  Ballast model (i.e. that published in Yool et al., 2011) 
     3100               !!  (1b. Ballast-sans-ballast model) 
     3101               !!   2.  Martin et al. (1987) 
     3102               !!   3.  Henson et al. (2011) 
     3103               !!  
     3104               !! The first of these couples C, N and Fe remineralisation to 
     3105               !! the remineralisation of particulate Si and CaCO3, but the  
     3106               !! latter two treat remineralisation of C, N, Fe, Si and CaCO3 
     3107               !! completely separately.  At present a switch within the code 
     3108               !! regulates which submodel is used, but this should be moved 
     3109               !! to the namelist file. 
     3110               !!  
     3111               !! The ballast-sans-ballast submodel is an original development 
     3112               !! feature of MEDUSA in which the ballast submodel's general 
     3113               !! framework and parameterisation is used, but in which there 
     3114               !! is no protection of organic material afforded by ballasting 
     3115               !! minerals.  While similar, it is not the same as the Martin  
     3116               !! et al. (1987) submodel. 
     3117               !! 
     3118               !! Since the three submodels behave the same in terms of 
     3119               !! accumulating sinking material and remineralising it all at 
     3120               !! the seafloor, these portions of the code below are common to 
     3121               !! all three. 
     3122               !!---------------------------------------------------------------------- 
     3123 
     3124               if (jexport.eq.1) then 
     3125                  !!====================================================================== 
     3126                  !! BALLAST SUBMODEL 
     3127                  !!====================================================================== 
     3128                  !!  
     3129                  !!---------------------------------------------------------------------- 
     3130                  !! Fast-sinking detritus fluxes, pt. 1: REMINERALISATION 
     3131                  !! aside from explicitly modelled, slow-sinking detritus, the 
     3132                  !! model includes an implicit representation of detrital 
     3133                  !! particles that sink too quickly to be modelled with 
     3134                  !! explicit state variables; this sinking flux is instead 
     3135                  !! instantaneously remineralised down the water column using 
     3136                  !! the version of Armstrong et al. (2002)'s ballast model 
     3137                  !! used by Dunne et al. (2007); the version of this model 
     3138                  !! here considers silicon and calcium carbonate ballast 
     3139                  !! minerals; this section of the code redistributes the fast 
     3140                  !! sinking material generated locally down the water column; 
     3141                  !! this differs from Dunne et al. (2007) in that fast sinking 
     3142                  !! material is distributed at *every* level below that it is 
     3143                  !! generated, rather than at every level below some fixed 
     3144                  !! depth; this scheme is also different in that sinking material  
     3145                  !! generated in one level is aggregated with that generated by 
     3146                  !! shallower levels; this should make the ballast model more 
     3147                  !! self-consistent (famous last words) 
     3148                  !!---------------------------------------------------------------------- 
     3149                  !! 
     3150                  if (jk.eq.1) then 
     3151                     !! this is the SURFACE OCEAN BOX (no remineralisation) 
     3152                     !! 
     3153                     freminc  = 0.0 
     3154                     freminn  = 0.0 
     3155                     freminfe = 0.0 
     3156                     freminsi = 0.0 
     3157                     freminca = 0.0 
     3158                  elseif (jk.le.jmbathy) then 
     3159                     !! this is an OCEAN BOX (remineralise some material) 
     3160                     !! 
     3161                     !! set up CCD depth to be used depending on user choice 
     3162                     if (jocalccd.eq.0) then 
     3163                        !! use default CCD field 
     3164                        fccd_dep = ocal_ccd(ji,jj) 
     3165                     elseif (jocalccd.eq.1) then 
     3166                        !! use calculated CCD field 
     3167                        fccd_dep = f2_ccd_cal(ji,jj) 
     3168                     endif 
     3169                     !! 
     3170                     !! === organic carbon === 
     3171                     fq0      = ffastc(ji,jj)                        !! how much organic C enters this box        (mol) 
     3172                     if (iball.eq.1) then 
     3173                        fq1      = (fq0 * xmassc)                    !! how much it weighs                        (mass) 
     3174                        fq2      = (ffastca(ji,jj) * xmassca)        !! how much CaCO3 enters this box            (mass) 
     3175                        fq3      = (ffastsi(ji,jj) * xmasssi)        !! how much  opal enters this box            (mass) 
     3176                        fq4      = (fq2 * xprotca) + (fq3 * xprotsi) !! total protected organic C                 (mass) 
     3177                        !! this next term is calculated for C but used for N and Fe as well 
     3178                        !! it needs to be protected in case ALL C is protected 
     3179                        if (fq4.lt.fq1) then 
     3180                           fprotf   = (fq4 / (fq1 + tiny(fq1)))      !! protected fraction of total organic C     (non-dim) 
     3181                        else 
     3182                           fprotf   = 1.0                            !! all organic C is protected                (non-dim) 
     3183                        endif 
     3184                        fq5      = (1.0 - fprotf)                    !! unprotected fraction of total organic C   (non-dim) 
     3185                        fq6      = (fq0 * fq5)                       !! how much organic C is unprotected         (mol) 
     3186                        fq7      = (fq6 * exp(-(fthk / xfastc)))     !! how much unprotected C leaves this box    (mol) 
     3187                        fq8      = (fq7 + (fq0 * fprotf))            !! how much total C leaves this box          (mol) 
     3188                        freminc  = (fq0 - fq8) / fthk                !! C remineralisation in this box            (mol) 
     3189                        ffastc(ji,jj) = fq8                           
    30613190# if defined key_debug_medusa 
    3062                 if (idf.eq.1) then 
    3063                    !!---------------------------------------------------------------------- 
    3064                    !! Integrate total fast detritus remineralisation 
    3065                    !!---------------------------------------------------------------------- 
    3066                    !! 
    3067                    fofd_n(ji,jj)  = fofd_n(ji,jj)  + (freminn  * fthk) 
    3068                    fofd_si(ji,jj) = fofd_si(ji,jj) + (freminsi * fthk) 
    3069                    fofd_fe(ji,jj) = fofd_fe(ji,jj) + (freminfe * fthk) 
     3191                        !! report in/out/remin fluxes of carbon for this level 
     3192                           if (idf.eq.1.AND.idfval.eq.1) then 
     3193                              IF (lwp) write (numout,*) '------------------------------' 
     3194                              IF (lwp) write (numout,*) 'totalC(',jk,')  = ', fq1 
     3195                              IF (lwp) write (numout,*) 'prtctC(',jk,')  = ', fq4 
     3196                              IF (lwp) write (numout,*) 'fprotf(',jk,')  = ', fprotf 
     3197                              IF (lwp) write (numout,*) '------------------------------' 
     3198                              IF (lwp) write (numout,*) 'IN   C(',jk,')  = ', fq0 
     3199                              IF (lwp) write (numout,*) 'LOST C(',jk,')  = ', freminc * fthk 
     3200                              IF (lwp) write (numout,*) 'OUT  C(',jk,')  = ', fq8 
     3201                              IF (lwp) write (numout,*) 'NEW  C(',jk,')  = ', ftempc * fthk 
     3202                           endif 
     3203# endif 
     3204                        else 
     3205                        fq1      = fq0 * exp(-(fthk / xfastc))       !! how much organic C leaves this box        (mol) 
     3206                        freminc  = (fq0 - fq1) / fthk                !! C remineralisation in this box            (mol) 
     3207                        ffastc(ji,jj)  = fq1 
     3208                     endif 
     3209                     !! 
     3210                     !! === organic nitrogen === 
     3211                     fq0      = ffastn(ji,jj)                        !! how much organic N enters this box        (mol) 
     3212                     if (iball.eq.1) then 
     3213                        fq5      = (1.0 - fprotf)                    !! unprotected fraction of total organic N   (non-dim) 
     3214                        fq6      = (fq0 * fq5)                       !! how much organic N is unprotected         (mol) 
     3215                        fq7      = (fq6 * exp(-(fthk / xfastc)))     !! how much unprotected N leaves this box    (mol) 
     3216                        fq8      = (fq7 + (fq0 * fprotf))            !! how much total N leaves this box          (mol) 
     3217                        freminn  = (fq0 - fq8) / fthk                !! N remineralisation in this box            (mol) 
     3218                        ffastn(ji,jj)  = fq8 
     3219# if defined key_debug_medusa 
     3220                        !! report in/out/remin fluxes of carbon for this level 
     3221                        if (idf.eq.1.AND.idfval.eq.1) then 
     3222                           IF (lwp) write (numout,*) '------------------------------' 
     3223                           IF (lwp) write (numout,*) 'totalN(',jk,')  = ', fq1 
     3224                           IF (lwp) write (numout,*) 'prtctN(',jk,')  = ', fq4 
     3225                           IF (lwp) write (numout,*) 'fprotf(',jk,')  = ', fprotf 
     3226                           IF (lwp) write (numout,*) '------------------------------' 
     3227                           if (freminn < 0.0) then 
     3228                              IF (lwp) write (numout,*) '** FREMIN ERROR **' 
     3229                           endif 
     3230                           IF (lwp) write (numout,*) 'IN   N(',jk,')  = ', fq0 
     3231                           IF (lwp) write (numout,*) 'LOST N(',jk,')  = ', freminn * fthk 
     3232                           IF (lwp) write (numout,*) 'OUT  N(',jk,')  = ', fq8 
     3233                           IF (lwp) write (numout,*) 'NEW  N(',jk,')  = ', ftempn * fthk 
     3234                        endif 
     3235# endif 
     3236                     else 
     3237                        fq1      = fq0 * exp(-(fthk / xfastc))       !! how much organic N leaves this box        (mol) 
     3238                        freminn  = (fq0 - fq1) / fthk                !! N remineralisation in this box            (mol) 
     3239                        ffastn(ji,jj)  = fq1 
     3240                     endif 
     3241                     !! 
     3242                     !! === organic iron === 
     3243                     fq0      = ffastfe(ji,jj)                       !! how much organic Fe enters this box       (mol) 
     3244                     if (iball.eq.1) then 
     3245                        fq5      = (1.0 - fprotf)                    !! unprotected fraction of total organic Fe  (non-dim) 
     3246                        fq6      = (fq0 * fq5)                       !! how much organic Fe is unprotected        (mol) 
     3247                        fq7      = (fq6 * exp(-(fthk / xfastc)))     !! how much unprotected Fe leaves this box   (mol) 
     3248                        fq8      = (fq7 + (fq0 * fprotf))            !! how much total Fe leaves this box         (mol)             
     3249                        freminfe = (fq0 - fq8) / fthk                !! Fe remineralisation in this box           (mol) 
     3250                        ffastfe(ji,jj) = fq8 
     3251                     else 
     3252                        fq1      = fq0 * exp(-(fthk / xfastc))       !! how much total Fe leaves this box         (mol)       
     3253                        freminfe = (fq0 - fq1) / fthk                !! Fe remineralisation in this box           (mol) 
     3254                        ffastfe(ji,jj) = fq1 
     3255                     endif 
     3256                     !! 
     3257                     !! === biogenic silicon === 
     3258                     fq0      = ffastsi(ji,jj)                       !! how much  opal centers this box           (mol)  
     3259                     fq1      = fq0 * exp(-(fthk / xfastsi))         !! how much  opal leaves this box            (mol) 
     3260                     freminsi = (fq0 - fq1) / fthk                   !! Si remineralisation in this box           (mol) 
     3261                     ffastsi(ji,jj) = fq1 
     3262                     !! 
     3263                     !! === biogenic calcium carbonate === 
     3264                     fq0      = ffastca(ji,jj)                       !! how much CaCO3 enters this box            (mol) 
     3265                     if (fdep.le.fccd_dep) then 
     3266                        !! whole grid cell above CCD 
     3267                        fq1      = fq0                               !! above lysocline, no Ca dissolves          (mol) 
     3268                        freminca = 0.0                               !! above lysocline, no Ca dissolves          (mol) 
     3269                        fccd(ji,jj) = real(jk)                       !! which is the last level above the CCD?    (#) 
     3270                     elseif (fdep.ge.fccd_dep) then 
     3271                        !! whole grid cell below CCD 
     3272                        fq1      = fq0 * exp(-(fthk / xfastca))      !! how much CaCO3 leaves this box            (mol) 
     3273                        freminca = (fq0 - fq1) / fthk                !! Ca remineralisation in this box           (mol) 
     3274                     else 
     3275                        !! partial grid cell below CCD 
     3276                        fq2      = fdep1 - fccd_dep                  !! amount of grid cell below CCD             (m) 
     3277                        fq1      = fq0 * exp(-(fq2 / xfastca))       !! how much CaCO3 leaves this box            (mol) 
     3278                        freminca = (fq0 - fq1) / fthk                !! Ca remineralisation in this box           (mol) 
     3279                     endif 
     3280                     ffastca(ji,jj) = fq1  
     3281                  else 
     3282                     !! this is BELOW THE LAST OCEAN BOX (do nothing) 
     3283                     freminc  = 0.0 
     3284                     freminn  = 0.0 
     3285                     freminfe = 0.0 
     3286                     freminsi = 0.0 
     3287                     freminca = 0.0               
     3288                  endif 
     3289 
     3290               elseif (jexport.eq.2.or.jexport.eq.3) then 
     3291                  if (jexport.eq.2) then 
     3292                     !!====================================================================== 
     3293                     !! MARTIN ET AL. (1987) SUBMODEL 
     3294                     !!====================================================================== 
     3295                     !!  
     3296                     !!---------------------------------------------------------------------- 
     3297                     !! This submodel uses the classic Martin et al. (1987) curve 
     3298                     !! to determine the attenuation of fast-sinking detritus down 
     3299                     !! the water column.  All three organic elements, C, N and Fe, 
     3300                     !! are handled identically, and their quantities in sinking 
     3301                     !! particles attenuate according to a power relationship 
     3302                     !! governed by parameter "b".  This is assigned a canonical  
     3303                     !! value of -0.858.  Biogenic opal and calcium carbonate are 
     3304                     !! attentuated using the same function as in the ballast 
     3305                     !! submodel 
     3306                     !!---------------------------------------------------------------------- 
     3307                     !! 
     3308                     fb_val = -0.858 
     3309                  elseif (jexport.eq.3) then 
     3310                     !!====================================================================== 
     3311                     !! HENSON ET AL. (2011) SUBMODEL 
     3312                     !!====================================================================== 
     3313                     !! 
     3314                     !!---------------------------------------------------------------------- 
     3315                     !! This submodel reconfigures the Martin et al. (1987) curve by 
     3316                     !! allowing the "b" value to vary geographically.  Its value is 
     3317                     !! set, following Henson et al. (2011), as a function of local 
     3318                     !! sea surface temperature: 
     3319                     !!   b = -1.06 + (0.024 * SST) 
     3320                     !! This means that remineralisation length scales are longer in 
     3321                     !! warm, tropical areas and shorter in cold, polar areas.  This 
     3322                     !! does seem back-to-front (i.e. one would expect GREATER 
     3323                     !! remineralisation in warmer waters), but is an outcome of  
     3324                     !! analysis of sediment trap data, and it may reflect details 
     3325                     !! of ecosystem structure that pertain to particle production 
     3326                     !! rather than simply Q10. 
     3327                     !!---------------------------------------------------------------------- 
     3328                     !! 
     3329                     fl_sst = tsn(ji,jj,1,jp_tem) 
     3330                     fb_val = -1.06 + (0.024 * fl_sst) 
     3331                  endif 
     3332                  !!    
     3333                  if (jk.eq.1) then 
     3334                     !! this is the SURFACE OCEAN BOX (no remineralisation) 
     3335                     !! 
     3336                     freminc  = 0.0 
     3337                     freminn  = 0.0 
     3338                     freminfe = 0.0 
     3339                     freminsi = 0.0 
     3340                     freminca = 0.0 
     3341                  elseif (jk.le.jmbathy) then 
     3342                     !! this is an OCEAN BOX (remineralise some material) 
     3343                     !! 
     3344                     !! === organic carbon === 
     3345                     fq0      = ffastc(ji,jj)                        !! how much organic C enters this box        (mol) 
     3346                     fq1      = fq0 * ((fdep1/fdep)**fb_val)         !! how much organic C leaves this box        (mol) 
     3347                     freminc  = (fq0 - fq1) / fthk                   !! C remineralisation in this box            (mol) 
     3348                     ffastc(ji,jj)  = fq1 
     3349                     !! 
     3350                     !! === organic nitrogen === 
     3351                     fq0      = ffastn(ji,jj)                        !! how much organic N enters this box        (mol) 
     3352                     fq1      = fq0 * ((fdep1/fdep)**fb_val)         !! how much organic N leaves this box        (mol) 
     3353                     freminn  = (fq0 - fq1) / fthk                   !! N remineralisation in this box            (mol) 
     3354                     ffastn(ji,jj)  = fq1 
     3355                     !! 
     3356                     !! === organic iron === 
     3357                     fq0      = ffastfe(ji,jj)                       !! how much organic Fe enters this box       (mol) 
     3358                     fq1      = fq0 * ((fdep1/fdep)**fb_val)         !! how much organic Fe leaves this box       (mol) 
     3359                     freminfe = (fq0 - fq1) / fthk                   !! Fe remineralisation in this box           (mol) 
     3360                     ffastfe(ji,jj) = fq1 
     3361                     !! 
     3362                     !! === biogenic silicon === 
     3363                     fq0      = ffastsi(ji,jj)                       !! how much  opal centers this box           (mol)  
     3364                     fq1      = fq0 * exp(-(fthk / xfastsi))         !! how much  opal leaves this box            (mol) 
     3365                     freminsi = (fq0 - fq1) / fthk                   !! Si remineralisation in this box           (mol) 
     3366                     ffastsi(ji,jj) = fq1 
     3367                     !! 
     3368                     !! === biogenic calcium carbonate === 
     3369                     fq0      = ffastca(ji,jj)                       !! how much CaCO3 enters this box            (mol) 
     3370                     if (fdep.le.ocal_ccd(ji,jj)) then 
     3371                        !! whole grid cell above CCD 
     3372                        fq1      = fq0                               !! above lysocline, no Ca dissolves          (mol) 
     3373                        freminca = 0.0                               !! above lysocline, no Ca dissolves          (mol) 
     3374                        fccd(ji,jj) = real(jk)                       !! which is the last level above the CCD?    (#) 
     3375                     elseif (fdep.ge.ocal_ccd(ji,jj)) then 
     3376                        !! whole grid cell below CCD 
     3377                        fq1      = fq0 * exp(-(fthk / xfastca))      !! how much CaCO3 leaves this box            (mol) 
     3378                        freminca = (fq0 - fq1) / fthk                !! Ca remineralisation in this box           (mol) 
     3379                     else 
     3380                        !! partial grid cell below CCD 
     3381                        fq2      = fdep1 - ocal_ccd(ji,jj)           !! amount of grid cell below CCD             (m) 
     3382                        fq1      = fq0 * exp(-(fq2 / xfastca))       !! how much CaCO3 leaves this box            (mol) 
     3383                        freminca = (fq0 - fq1) / fthk                !! Ca remineralisation in this box           (mol) 
     3384                     endif 
     3385                     ffastca(ji,jj) = fq1  
     3386                  else 
     3387                     !! this is BELOW THE LAST OCEAN BOX (do nothing) 
     3388                     freminc  = 0.0 
     3389                     freminn  = 0.0 
     3390                     freminfe = 0.0 
     3391                     freminsi = 0.0 
     3392                     freminca = 0.0               
     3393                  endif 
     3394 
     3395               endif 
     3396 
     3397               !!---------------------------------------------------------------------- 
     3398               !! Fast-sinking detritus fluxes, pt. 2: UPDATE FAST FLUXES 
     3399               !! here locally calculated additions to the fast-sinking flux are added 
     3400               !! to the total fast-sinking flux; this is done here such that material 
     3401               !! produced in a particular layer is only remineralised below this 
     3402               !! layer 
     3403               !!---------------------------------------------------------------------- 
     3404               !! 
     3405               !! add sinking material generated in this layer to running totals 
     3406               !! 
     3407               !! === organic carbon ===                          (diatom and mesozooplankton mortality) 
     3408               ffastc(ji,jj)  = ffastc(ji,jj)  + (ftempc  * fthk) 
     3409               !! 
     3410               !! === organic nitrogen ===                        (diatom and mesozooplankton mortality) 
     3411               ffastn(ji,jj)  = ffastn(ji,jj)  + (ftempn  * fthk) 
     3412               !! 
     3413               !! === organic iron ===                            (diatom and mesozooplankton mortality) 
     3414               ffastfe(ji,jj) = ffastfe(ji,jj) + (ftempfe * fthk) 
     3415               !! 
     3416               !! === biogenic silicon ===                        (diatom mortality and grazed diatoms) 
     3417               ffastsi(ji,jj) = ffastsi(ji,jj) + (ftempsi * fthk) 
     3418               !! 
     3419               !! === biogenic calcium carbonate ===              (latitudinally-based fraction of total primary production) 
     3420               ffastca(ji,jj) = ffastca(ji,jj) + (ftempca * fthk) 
     3421 
     3422               !!---------------------------------------------------------------------- 
     3423               !! Fast-sinking detritus fluxes, pt. 3: SEAFLOOR 
     3424               !! remineralise all remaining fast-sinking detritus to dissolved 
     3425               !! nutrients; the sedimentation fluxes calculated here allow the 
     3426               !! separation of what's remineralised sinking through the final 
     3427               !! ocean box from that which is added to the final box by the 
     3428               !! remineralisation of material that reaches the seafloor (i.e. 
     3429               !! the model assumes that *all* material that hits the seafloor 
     3430               !! is remineralised and that none is permanently buried; hey, 
     3431               !! this is a giant GCM model that can't be run for long enough 
     3432               !! to deal with burial fluxes!) 
     3433               !! 
     3434               !! in a change to this process, in part so that MEDUSA behaves 
     3435               !! a little more like ERSEM et al., fast-sinking detritus (N, Fe 
     3436               !! and C) is converted to slow sinking detritus at the seafloor 
     3437               !! instead of being remineralised; the rationale is that in 
     3438               !! shallower shelf regions (... that are not fully mixed!) this 
     3439               !! allows the detrital material to return slowly to dissolved  
     3440               !! nutrient rather than instantaneously as now; the alternative 
     3441               !! would be to explicitly handle seafloor organic material - a 
     3442               !! headache I don't wish to experience at this point; note that 
     3443               !! fast-sinking Si and Ca detritus is just remineralised as  
     3444               !! per usual 
     3445               !!  
     3446               !! AXY (13/01/12) 
     3447               !! in a further change to this process, again so that MEDUSA is 
     3448               !! a little more like ERSEM et al., material that reaches the 
     3449               !! seafloor can now be added to sediment pools and stored for 
     3450               !! slow release; there are new 2D arrays for organic nitrogen, 
     3451               !! iron and carbon and inorganic silicon and carbon that allow 
     3452               !! fast and slow detritus that reaches the seafloor to be held 
     3453               !! and released back to the water column more slowly; these arrays 
     3454               !! are transferred via the tracer restart files between repeat 
     3455               !! submissions of the model 
     3456               !!---------------------------------------------------------------------- 
     3457               !!  
     3458               ffast2slowc  = 0.0 
     3459               ffast2slown  = 0.0 
     3460               ffast2slowfe = 0.0 
     3461               !! 
     3462               if (jk.eq.jmbathy) then 
     3463                  !! this is the BOTTOM OCEAN BOX (remineralise everything) 
     3464                  !! 
     3465                  !! AXY (17/01/12): tweaked to include benthos pools 
     3466                  !!  
     3467                  !! === organic carbon === 
     3468                  if (jfdfate.eq.0 .and. jorgben.eq.0) then 
     3469                     freminc  = freminc + (ffastc(ji,jj) / fthk)    !! C remineralisation in this box            (mol/m3) 
     3470                  elseif (jfdfate.eq.1 .and. jorgben.eq.0) then 
     3471                     ffast2slowc = ffastc(ji,jj) / fthk             !! fast C -> slow C                          (mol/m3) 
     3472                     fslowc      = fslowc + ffast2slowc 
     3473                  elseif (jfdfate.eq.0 .and. jorgben.eq.1) then 
     3474                     f_fbenin_c(ji,jj)  = ffastc(ji,jj)             !! fast C -> benthic C                       (mol/m2) 
     3475                  endif 
     3476                  fsedc(ji,jj)   = ffastc(ji,jj)                          !! record seafloor C                         (mol/m2) 
     3477                  ffastc(ji,jj)  = 0.0 
     3478                  !! 
     3479                  !! === organic nitrogen === 
     3480                  if (jfdfate.eq.0 .and. jorgben.eq.0) then 
     3481                     freminn  = freminn + (ffastn(ji,jj) / fthk)    !! N remineralisation in this box            (mol/m3) 
     3482                  elseif (jfdfate.eq.1 .and. jorgben.eq.0) then 
     3483                     ffast2slown = ffastn(ji,jj) / fthk             !! fast N -> slow N                          (mol/m3) 
     3484                     fslown      = fslown + ffast2slown 
     3485                  elseif (jfdfate.eq.0 .and. jorgben.eq.1) then 
     3486                     f_fbenin_n(ji,jj)  = ffastn(ji,jj)             !! fast N -> benthic N                       (mol/m2) 
     3487                  endif 
     3488                  fsedn(ji,jj)   = ffastn(ji,jj)                          !! record seafloor N                         (mol/m2) 
     3489                  ffastn(ji,jj)  = 0.0 
     3490                  !! 
     3491                  !! === organic iron === 
     3492                  if (jfdfate.eq.0 .and. jorgben.eq.0) then 
     3493                     freminfe = freminfe + (ffastfe(ji,jj) / fthk)  !! Fe remineralisation in this box           (mol/m3) 
     3494                  elseif (jfdfate.eq.1 .and. jorgben.eq.0) then 
     3495                     ffast2slowfe = ffastn(ji,jj) / fthk            !! fast Fe -> slow Fe                        (mol/m3) 
     3496                  elseif (jfdfate.eq.0 .and. jorgben.eq.1) then 
     3497                     f_fbenin_fe(ji,jj) = ffastfe(ji,jj)            !! fast Fe -> benthic Fe                     (mol/m2) 
     3498                  endif 
     3499                  fsedfe(ji,jj)  = ffastfe(ji,jj)                         !! record seafloor Fe                        (mol/m2) 
     3500                  ffastfe(ji,jj) = 0.0 
     3501                  !! 
     3502                  !! === biogenic silicon === 
     3503                  if (jinorgben.eq.0) then 
     3504                     freminsi = freminsi + (ffastsi(ji,jj) / fthk)  !! Si remineralisation in this box           (mol/m3) 
     3505                  elseif (jinorgben.eq.1) then 
     3506                     f_fbenin_si(ji,jj) = ffastsi(ji,jj)            !! fast Si -> benthic Si                     (mol/m2) 
     3507                  endif 
     3508                  fsedsi(ji,jj)   = ffastsi(ji,jj)                         !! record seafloor Si                        (mol/m2) 
     3509                  ffastsi(ji,jj) = 0.0 
     3510                  !! 
     3511                  !! === biogenic calcium carbonate === 
     3512                  if (jinorgben.eq.0) then 
     3513                     freminca = freminca + (ffastca(ji,jj) / fthk)  !! Ca remineralisation in this box           (mol/m3)  
     3514                  elseif (jinorgben.eq.1) then 
     3515                     f_fbenin_ca(ji,jj) = ffastca(ji,jj)            !! fast Ca -> benthic Ca                     (mol/m2) 
     3516                  endif 
     3517                  fsedca(ji,jj)   = ffastca(ji,jj)                         !! record seafloor Ca                        (mol/m2) 
     3518                  ffastca(ji,jj) = 0.0 
     3519               endif 
     3520 
     3521# if defined key_debug_medusa 
     3522               if (idf.eq.1) then 
     3523                  !!---------------------------------------------------------------------- 
     3524                  !! Integrate total fast detritus remineralisation 
     3525                  !!---------------------------------------------------------------------- 
     3526                  !! 
     3527                  fofd_n(ji,jj)  = fofd_n(ji,jj)  + (freminn  * fthk) 
     3528                  fofd_si(ji,jj) = fofd_si(ji,jj) + (freminsi * fthk) 
     3529                  fofd_fe(ji,jj) = fofd_fe(ji,jj) + (freminfe * fthk) 
    30703530#  if defined key_roam 
    3071                    fofd_c(ji,jj)  = fofd_c(ji,jj)  + (freminc  * fthk) 
     3531                  fofd_c(ji,jj)  = fofd_c(ji,jj)  + (freminc  * fthk) 
    30723532#  endif 
    3073                 endif 
    3074 # endif 
    3075  
    3076                 !!---------------------------------------------------------------------- 
    3077                 !! Sort out remineralisation tally of fast-sinking detritus 
    3078                 !!---------------------------------------------------------------------- 
    3079                 !! 
    3080                 !! update fast-sinking regeneration arrays 
    3081                 fregenfast(ji,jj)   = fregenfast(ji,jj)   + (freminn  * fthk) 
    3082                 fregenfastsi(ji,jj) = fregenfastsi(ji,jj) + (freminsi * fthk) 
     3533               endif 
     3534# endif 
     3535 
     3536               !!---------------------------------------------------------------------- 
     3537               !! Sort out remineralisation tally of fast-sinking detritus 
     3538               !!---------------------------------------------------------------------- 
     3539               !! 
     3540               !! update fast-sinking regeneration arrays 
     3541               fregenfast(ji,jj)   = fregenfast(ji,jj)   + (freminn  * fthk) 
     3542               fregenfastsi(ji,jj) = fregenfastsi(ji,jj) + (freminsi * fthk) 
    30833543# if defined key_roam 
    3084                 fregenfastc(ji,jj)  = fregenfastc(ji,jj)  + (freminc  * fthk) 
    3085 # endif 
    3086  
    3087                 !!---------------------------------------------------------------------- 
    3088                 !! Benthic remineralisation fluxes 
    3089                 !!---------------------------------------------------------------------- 
    3090                 !! 
    3091                 if (jk.eq.jmbathy) then 
    3092                    !! 
    3093                    !! organic components 
    3094                    if (jorgben.eq.1) then 
    3095                       f_benout_n(ji,jj)  = xsedn  * zn_sed_n(ji,jj) 
    3096                       f_benout_fe(ji,jj) = xsedfe * zn_sed_fe(ji,jj) 
    3097                       f_benout_c(ji,jj)  = xsedc  * zn_sed_c(ji,jj) 
    3098                    endif 
    3099                    !! 
    3100                    !! inorganic components 
    3101                    if (jinorgben.eq.1) then 
    3102                       f_benout_si(ji,jj) = xsedsi * zn_sed_si(ji,jj) 
    3103                       f_benout_ca(ji,jj) = xsedca * zn_sed_ca(ji,jj) 
    3104                       !! 
    3105                       !! account for CaCO3 that dissolves when it shouldn't 
    3106                       if ( fdep .le. fccd_dep ) then 
    3107                          f_benout_lyso_ca(ji,jj) = xsedca * zn_sed_ca(ji,jj) 
    3108                       endif 
    3109                    endif 
    3110                 endif 
    3111                 CALL flush(numout) 
    3112  
    3113                 !!====================================================================== 
    3114                 !! AXY (07/04/17): possible subroutine block; business and updating 
    3115                 !!====================================================================== 
    3116  
    3117                 !!====================================================================== 
    3118                 !! LOCAL GRID CELL TRENDS 
    3119                 !!====================================================================== 
    3120                 !! 
    3121                 !!---------------------------------------------------------------------- 
    3122                 !! Determination of trends 
    3123                 !!---------------------------------------------------------------------- 
    3124                 !! 
    3125                 !!---------------------------------------------------------------------- 
    3126                 !! chlorophyll 
    3127                 btra(jpchn) = b0 * ( & 
    3128                      + ((frn * fprn * zphn) - fgmipn - fgmepn - fdpn - fdpn2) * (fthetan / xxi) ) 
    3129                 btra(jpchd) = b0 * ( & 
    3130                      + ((frd * fprd * zphd) - fgmepd - fdpd - fdpd2) * (fthetad / xxi) ) 
    3131                 !! 
    3132                 !!---------------------------------------------------------------------- 
    3133                 !! phytoplankton 
    3134                 btra(jpphn) = b0 * ( & 
    3135                      + (fprn * zphn) - fgmipn - fgmepn - fdpn - fdpn2 ) 
    3136                 btra(jpphd) = b0 * ( & 
    3137                      + (fprd * zphd) - fgmepd - fdpd - fdpd2 ) 
    3138                 btra(jppds) = b0 * ( & 
    3139                      + (fprds * zpds) - fgmepds - fdpds - fsdiss - fdpds2 ) 
    3140                 !! 
    3141                 !!---------------------------------------------------------------------- 
    3142                 !! zooplankton 
    3143                 btra(jpzmi) = b0 * ( & 
    3144                      + fmigrow - fgmezmi - fdzmi - fdzmi2 ) 
    3145                 btra(jpzme) = b0 * ( & 
    3146                      + fmegrow - fdzme - fdzme2 ) 
    3147                 !! 
    3148                 !!---------------------------------------------------------------------- 
    3149                 !! detritus 
    3150                 btra(jpdet) = b0 * ( & 
    3151                      + fdpn + ((1.0 - xfdfrac1) * fdpd)              &  ! mort. losses 
    3152                      + fdzmi + ((1.0 - xfdfrac2) * fdzme)            &  ! mort. losses 
    3153                      + ((1.0 - xbetan) * (finmi + finme))            &  ! assim. inefficiency 
    3154                      - fgmid - fgmed - fdd                           &  ! grazing and remin. 
    3155                      + ffast2slown )                                    ! seafloor fast->slow 
    3156                 !! 
    3157                 !!---------------------------------------------------------------------- 
    3158                 !! dissolved inorganic nitrogen nutrient 
    3159                 fn_cons = 0.0  & 
    3160                      - (fprn * zphn) - (fprd * zphd)                    ! primary production 
    3161                 fn_prod = 0.0  & 
    3162                      + (xphi * (fgmipn + fgmid))                     &  ! messy feeding remin. 
    3163                      + (xphi * (fgmepn + fgmepd + fgmezmi + fgmed))  &  ! messy feeding remin. 
    3164                      + fmiexcr + fmeexcr + fdd + freminn             &  ! excretion and remin. 
    3165                      + fdpn2 + fdpd2 + fdzmi2 + fdzme2                  ! metab. losses 
    3166                 !!  
    3167                 !! riverine flux 
    3168                 if ( jriver_n .gt. 0 ) then 
    3169                    f_riv_loc_n = f_riv_n(ji,jj) * friver_dep(jk,jmbathy) / fthk 
    3170                    fn_prod = fn_prod + f_riv_loc_n 
    3171                 endif 
    3172                 !!   
    3173                 !! benthic remineralisation 
    3174                 if (jk.eq.jmbathy .and. jorgben.eq.1 .and. ibenthic.eq.1) then 
    3175                    fn_prod = fn_prod + (f_benout_n(ji,jj) / fthk) 
    3176                 endif 
    3177                 !! 
    3178                 btra(jpdin) = b0 * ( & 
    3179                      fn_prod + fn_cons ) 
    3180                 !! 
    3181                 fnit_cons(ji,jj) = fnit_cons(ji,jj) + ( fthk * (  &  ! consumption of dissolved nitrogen 
    3182                      fn_cons ) ) 
    3183                 fnit_prod(ji,jj) = fnit_prod(ji,jj) + ( fthk * (  &  ! production of dissolved nitrogen 
    3184                      fn_prod ) ) 
    3185                 !! 
    3186                 !!---------------------------------------------------------------------- 
    3187                 !! dissolved silicic acid nutrient 
    3188                 fs_cons = 0.0  & 
    3189                      - (fprds * zpds)                                   ! opal production 
    3190                 fs_prod = 0.0  & 
    3191                      + fsdiss                                        &  ! opal dissolution 
    3192                      + ((1.0 - xfdfrac1) * fdpds)                    &  ! mort. loss 
    3193                      + ((1.0 - xfdfrac3) * fgmepds)                  &  ! egestion of grazed Si 
    3194                      + freminsi + fdpds2                                ! fast diss. and metab. losses 
    3195                 !!  
    3196                 !! riverine flux 
    3197                 if ( jriver_si .gt. 0 ) then 
    3198                    f_riv_loc_si = f_riv_si(ji,jj) * friver_dep(jk,jmbathy) / fthk 
    3199                    fs_prod = fs_prod + f_riv_loc_si 
    3200                 endif 
    3201                 !!   
    3202                 !! benthic remineralisation 
    3203                 if (jk.eq.jmbathy .and. jinorgben.eq.1 .and. ibenthic.eq.1) then 
    3204                    fs_prod = fs_prod + (f_benout_si(ji,jj) / fthk) 
    3205                 endif 
    3206                 !! 
    3207                 btra(jpsil) = b0 * ( & 
    3208                      fs_prod + fs_cons ) 
    3209                 !! 
    3210                 fsil_cons(ji,jj) = fsil_cons(ji,jj) + ( fthk * (  &  ! consumption of dissolved silicon 
    3211                      fs_cons ) ) 
    3212                 fsil_prod(ji,jj) = fsil_prod(ji,jj) + ( fthk * (  &  ! production of dissolved silicon 
    3213                      fs_prod ) ) 
    3214                 !! 
    3215                 !!---------------------------------------------------------------------- 
    3216                 !! dissolved "iron" nutrient 
    3217                 btra(jpfer) = b0 * ( & 
    3218                      + (xrfn * btra(jpdin)) + ffetop + ffebot - ffescav ) 
     3544               fregenfastc(ji,jj)  = fregenfastc(ji,jj)  + (freminc  * fthk) 
     3545# endif 
     3546 
     3547               !!---------------------------------------------------------------------- 
     3548               !! Benthic remineralisation fluxes 
     3549               !!---------------------------------------------------------------------- 
     3550               !! 
     3551               if (jk.eq.jmbathy) then 
     3552                  !! 
     3553                  !! organic components 
     3554                  if (jorgben.eq.1) then 
     3555                     f_benout_n(ji,jj)  = xsedn  * zn_sed_n(ji,jj) 
     3556                     f_benout_fe(ji,jj) = xsedfe * zn_sed_fe(ji,jj) 
     3557                     f_benout_c(ji,jj)  = xsedc  * zn_sed_c(ji,jj) 
     3558                  endif 
     3559                  !! 
     3560                  !! inorganic components 
     3561                  if (jinorgben.eq.1) then 
     3562                     f_benout_si(ji,jj) = xsedsi * zn_sed_si(ji,jj) 
     3563                     f_benout_ca(ji,jj) = xsedca * zn_sed_ca(ji,jj) 
     3564                     !! 
     3565                     !! account for CaCO3 that dissolves when it shouldn't 
     3566                     if ( fdep .le. fccd_dep ) then 
     3567                        f_benout_lyso_ca(ji,jj) = xsedca * zn_sed_ca(ji,jj) 
     3568                     endif 
     3569                  endif 
     3570               endif 
     3571               CALL flush(numout) 
     3572 
     3573               !!====================================================================== 
     3574               !! LOCAL GRID CELL TRENDS 
     3575               !!====================================================================== 
     3576               !! 
     3577               !!---------------------------------------------------------------------- 
     3578               !! Determination of trends 
     3579               !!---------------------------------------------------------------------- 
     3580               !! 
     3581               !!---------------------------------------------------------------------- 
     3582               !! chlorophyll 
     3583               btra(jpchn) = b0 * ( & 
     3584                 + ((frn * fprn * zphn) - fgmipn - fgmepn - fdpn - fdpn2) * (fthetan / xxi) ) 
     3585               btra(jpchd) = b0 * ( & 
     3586                 + ((frd * fprd * zphd) - fgmepd - fdpd - fdpd2) * (fthetad / xxi) ) 
     3587               !! 
     3588               !!---------------------------------------------------------------------- 
     3589               !! phytoplankton 
     3590               btra(jpphn) = b0 * ( & 
     3591                 + (fprn * zphn) - fgmipn - fgmepn - fdpn - fdpn2 ) 
     3592               btra(jpphd) = b0 * ( & 
     3593                 + (fprd * zphd) - fgmepd - fdpd - fdpd2 ) 
     3594               btra(jppds) = b0 * ( & 
     3595                 + (fprds * zpds) - fgmepds - fdpds - fsdiss - fdpds2 ) 
     3596               !! 
     3597               !!---------------------------------------------------------------------- 
     3598               !! zooplankton 
     3599               btra(jpzmi) = b0 * ( & 
     3600                 + fmigrow - fgmezmi - fdzmi - fdzmi2 ) 
     3601               btra(jpzme) = b0 * ( & 
     3602                 + fmegrow - fdzme - fdzme2 ) 
     3603               !! 
     3604               !!---------------------------------------------------------------------- 
     3605               !! detritus 
     3606               btra(jpdet) = b0 * ( & 
     3607                 + fdpn + ((1.0 - xfdfrac1) * fdpd)              &  ! mort. losses 
     3608                 + fdzmi + ((1.0 - xfdfrac2) * fdzme)            &  ! mort. losses 
     3609                 + ((1.0 - xbetan) * (finmi + finme))            &  ! assim. inefficiency 
     3610                 - fgmid - fgmed - fdd                           &  ! grazing and remin. 
     3611                 + ffast2slown )                                    ! seafloor fast->slow 
     3612               !! 
     3613               !!---------------------------------------------------------------------- 
     3614               !! dissolved inorganic nitrogen nutrient 
     3615               fn_cons = 0.0  & 
     3616                 - (fprn * zphn) - (fprd * zphd)                    ! primary production 
     3617               fn_prod = 0.0  & 
     3618                 + (xphi * (fgmipn + fgmid))                     &  ! messy feeding remin. 
     3619                 + (xphi * (fgmepn + fgmepd + fgmezmi + fgmed))  &  ! messy feeding remin. 
     3620                 + fmiexcr + fmeexcr + fdd + freminn             &  ! excretion and remin. 
     3621                 + fdpn2 + fdpd2 + fdzmi2 + fdzme2                  ! metab. losses 
     3622               !!  
     3623               !! riverine flux 
     3624               if ( jriver_n .gt. 0 ) then 
     3625                  f_riv_loc_n = f_riv_n(ji,jj) * friver_dep(jk,jmbathy) / fthk 
     3626                  fn_prod = fn_prod + f_riv_loc_n 
     3627               endif 
     3628               !!   
     3629               !! benthic remineralisation 
     3630               if (jk.eq.jmbathy .and. jorgben.eq.1 .and. ibenthic.eq.1) then 
     3631                  fn_prod = fn_prod + (f_benout_n(ji,jj) / fthk) 
     3632               endif 
     3633               !! 
     3634               btra(jpdin) = b0 * ( & 
     3635                 fn_prod + fn_cons ) 
     3636               !! 
     3637               fnit_cons(ji,jj) = fnit_cons(ji,jj) + ( fthk * (  &  ! consumption of dissolved nitrogen 
     3638                 fn_cons ) ) 
     3639               fnit_prod(ji,jj) = fnit_prod(ji,jj) + ( fthk * (  &  ! production of dissolved nitrogen 
     3640                 fn_prod ) ) 
     3641               !! 
     3642               !!---------------------------------------------------------------------- 
     3643               !! dissolved silicic acid nutrient 
     3644               fs_cons = 0.0  & 
     3645                 - (fprds * zpds)                                   ! opal production 
     3646               fs_prod = 0.0  & 
     3647                 + fsdiss                                        &  ! opal dissolution 
     3648                 + ((1.0 - xfdfrac1) * fdpds)                    &  ! mort. loss 
     3649                 + ((1.0 - xfdfrac3) * fgmepds)                  &  ! egestion of grazed Si 
     3650                 + freminsi + fdpds2                                ! fast diss. and metab. losses 
     3651               !!  
     3652               !! riverine flux 
     3653               if ( jriver_si .gt. 0 ) then 
     3654                  f_riv_loc_si = f_riv_si(ji,jj) * friver_dep(jk,jmbathy) / fthk 
     3655                  fs_prod = fs_prod + f_riv_loc_si 
     3656               endif 
     3657               !!   
     3658               !! benthic remineralisation 
     3659               if (jk.eq.jmbathy .and. jinorgben.eq.1 .and. ibenthic.eq.1) then 
     3660                  fs_prod = fs_prod + (f_benout_si(ji,jj) / fthk) 
     3661               endif 
     3662               !! 
     3663               btra(jpsil) = b0 * ( & 
     3664                 fs_prod + fs_cons ) 
     3665               !! 
     3666               fsil_cons(ji,jj) = fsil_cons(ji,jj) + ( fthk * (  &  ! consumption of dissolved silicon 
     3667                 fs_cons ) ) 
     3668               fsil_prod(ji,jj) = fsil_prod(ji,jj) + ( fthk * (  &  ! production of dissolved silicon 
     3669                 fs_prod ) ) 
     3670               !! 
     3671               !!---------------------------------------------------------------------- 
     3672               !! dissolved "iron" nutrient 
     3673               btra(jpfer) = b0 * ( & 
     3674               + (xrfn * btra(jpdin)) + ffetop + ffebot - ffescav ) 
    32193675 
    32203676# if defined key_roam 
    3221                 !! 
    3222                 !!---------------------------------------------------------------------- 
    3223                 !! AXY (26/11/08): implicit detrital carbon change 
    3224                 btra(jpdtc) = b0 * ( & 
    3225                      + (xthetapn * fdpn) + ((1.0 - xfdfrac1) * (xthetapd * fdpd))      &  ! mort. losses 
    3226                      + (xthetazmi * fdzmi) + ((1.0 - xfdfrac2) * (xthetazme * fdzme))  &  ! mort. losses 
    3227                      + ((1.0 - xbetac) * (ficmi + ficme))                              &  ! assim. inefficiency 
    3228                      - fgmidc - fgmedc - fddc                                          &  ! grazing and remin. 
    3229                      + ffast2slowc )                                                      ! seafloor fast->slow 
    3230                 !! 
    3231                 !!---------------------------------------------------------------------- 
    3232                 !! dissolved inorganic carbon 
    3233                 fc_cons = 0.0  & 
    3234                      - (xthetapn * fprn * zphn) - (xthetapd * fprd * zphd)                ! primary production 
    3235                 fc_prod = 0.0  & 
    3236                      + (xthetapn * xphi * fgmipn) + (xphi * fgmidc)                    &  ! messy feeding remin 
    3237                      + (xthetapn * xphi * fgmepn) + (xthetapd * xphi * fgmepd)         &  ! messy feeding remin 
    3238                      + (xthetazmi * xphi * fgmezmi) + (xphi * fgmedc)                  &  ! messy feeding remin 
    3239                      + fmiresp + fmeresp + fddc + freminc + (xthetapn * fdpn2)         &  ! resp., remin., losses 
    3240                      + (xthetapd * fdpd2) + (xthetazmi * fdzmi2)                       &  ! losses 
    3241                      + (xthetazme * fdzme2)                                               ! losses 
    3242                 !!  
    3243                 !! riverine flux 
    3244                 if ( jriver_c .gt. 0 ) then 
    3245                    f_riv_loc_c = f_riv_c(ji,jj) * friver_dep(jk,jmbathy) / fthk 
    3246                    fc_prod = fc_prod + f_riv_loc_c 
    3247                 endif 
    3248                 !!   
    3249                 !! benthic remineralisation 
    3250                 if (jk.eq.jmbathy .and. jorgben.eq.1 .and. ibenthic.eq.1) then 
    3251                    fc_prod = fc_prod + (f_benout_c(ji,jj) / fthk) 
    3252                 endif 
    3253                 if (jk.eq.jmbathy .and. jinorgben.eq.1 .and. ibenthic.eq.1) then 
    3254                    fc_prod = fc_prod + (f_benout_ca(ji,jj) / fthk) 
    3255                 endif 
    3256                 !! 
    3257                 !! community respiration (does not include CaCO3 terms - obviously!) 
    3258                 fcomm_resp(ji,jj) = fcomm_resp(ji,jj) + fc_prod 
    3259                 !! 
    3260                 !! CaCO3 
    3261                 fc_prod = fc_prod - ftempca + freminca 
    3262                 !!  
    3263                 !! riverine flux 
    3264                 if ( jk .eq. 1 .and. jriver_c .gt. 0 ) then 
    3265                    fc_prod = fc_prod + f_riv_c(ji,jj) 
    3266                 endif 
    3267                 !! 
    3268                 btra(jpdic) = b0 * ( & 
    3269                      fc_prod + fc_cons ) 
    3270                 !! 
    3271                 fcar_cons(ji,jj) = fcar_cons(ji,jj) + ( fthk * (  &  ! consumption of dissolved carbon 
    3272                      fc_cons ) ) 
    3273                 fcar_prod(ji,jj) = fcar_prod(ji,jj) + ( fthk * (  &  ! production of dissolved carbon 
    3274                      fc_prod ) ) 
    3275                 !! 
    3276                 !!---------------------------------------------------------------------- 
    3277                 !! alkalinity 
    3278                 fa_prod = 0.0  & 
    3279                      + (2.0 * freminca)                                                   ! CaCO3 dissolution 
    3280                 fa_cons = 0.0  & 
    3281                      - (2.0 * ftempca)                                                    ! CaCO3 production 
    3282                 !!  
    3283                 !! riverine flux 
    3284                 if ( jriver_alk .gt. 0 ) then 
    3285                    f_riv_loc_alk = f_riv_alk(ji,jj) * friver_dep(jk,jmbathy) / fthk 
    3286                    fa_prod = fa_prod + f_riv_loc_alk 
    3287                 endif 
    3288                 !!   
    3289                 !! benthic remineralisation 
    3290                 if (jk.eq.jmbathy .and. jinorgben.eq.1 .and. ibenthic.eq.1) then 
    3291                    fa_prod = fa_prod + (2.0 * f_benout_ca(ji,jj) / fthk) 
    3292                 endif 
    3293                 !! 
    3294                 btra(jpalk) = b0 * ( & 
    3295                      fa_prod + fa_cons ) 
    3296                 !! 
    3297                 !!---------------------------------------------------------------------- 
    3298                 !! oxygen (has protection at low O2 concentrations; OCMIP-2 style) 
    3299                 fo2_prod = 0.0 & 
    3300                      + (xthetanit * fprn * zphn)                                      & ! Pn primary production, N 
    3301                      + (xthetanit * fprd * zphd)                                      & ! Pd primary production, N 
    3302                      + (xthetarem * xthetapn * fprn * zphn)                           & ! Pn primary production, C 
    3303                      + (xthetarem * xthetapd * fprd * zphd)                             ! Pd primary production, C 
    3304                 fo2_ncons = 0.0 & 
    3305                      - (xthetanit * xphi * fgmipn)                                    & ! Pn messy feeding remin., N 
    3306                      - (xthetanit * xphi * fgmid)                                     & ! D  messy feeding remin., N 
    3307                      - (xthetanit * xphi * fgmepn)                                    & ! Pn messy feeding remin., N 
    3308                      - (xthetanit * xphi * fgmepd)                                    & ! Pd messy feeding remin., N 
    3309                      - (xthetanit * xphi * fgmezmi)                                   & ! Zi messy feeding remin., N 
    3310                      - (xthetanit * xphi * fgmed)                                     & ! D  messy feeding remin., N 
    3311                      - (xthetanit * fmiexcr)                                          & ! microzoo excretion, N 
    3312                      - (xthetanit * fmeexcr)                                          & ! mesozoo  excretion, N 
    3313                      - (xthetanit * fdd)                                              & ! slow detritus remin., N  
    3314                      - (xthetanit * freminn)                                          & ! fast detritus remin., N 
    3315                      - (xthetanit * fdpn2)                                            & ! Pn  losses, N 
    3316                      - (xthetanit * fdpd2)                                            & ! Pd  losses, N 
    3317                      - (xthetanit * fdzmi2)                                           & ! Zmi losses, N 
    3318                      - (xthetanit * fdzme2)                                             ! Zme losses, N 
    3319                 !!   
    3320                 !! benthic remineralisation 
    3321                 if (jk.eq.jmbathy .and. jorgben.eq.1 .and. ibenthic.eq.1) then 
    3322                    fo2_ncons = fo2_ncons - (xthetanit * f_benout_n(ji,jj) / fthk) 
    3323                 endif 
    3324                 fo2_ccons = 0.0 & 
    3325                      - (xthetarem * xthetapn * xphi * fgmipn)                         & ! Pn messy feeding remin., C 
    3326                      - (xthetarem * xphi * fgmidc)                                    & ! D  messy feeding remin., C 
    3327                      - (xthetarem * xthetapn * xphi * fgmepn)                         & ! Pn messy feeding remin., C 
    3328                      - (xthetarem * xthetapd * xphi * fgmepd)                         & ! Pd messy feeding remin., C 
    3329                      - (xthetarem * xthetazmi * xphi * fgmezmi)                       & ! Zi messy feeding remin., C 
    3330                      - (xthetarem * xphi * fgmedc)                                    & ! D  messy feeding remin., C 
    3331                      - (xthetarem * fmiresp)                                          & ! microzoo respiration, C 
    3332                      - (xthetarem * fmeresp)                                          & ! mesozoo  respiration, C 
    3333                      - (xthetarem * fddc)                                             & ! slow detritus remin., C 
    3334                      - (xthetarem * freminc)                                          & ! fast detritus remin., C 
    3335                      - (xthetarem * xthetapn * fdpn2)                                 & ! Pn  losses, C 
    3336                      - (xthetarem * xthetapd * fdpd2)                                 & ! Pd  losses, C 
    3337                      - (xthetarem * xthetazmi * fdzmi2)                               & ! Zmi losses, C 
    3338                      - (xthetarem * xthetazme * fdzme2)                                 ! Zme losses, C 
    3339                 !!   
    3340                 !! benthic remineralisation 
    3341                 if (jk.eq.jmbathy .and. jorgben.eq.1 .and. ibenthic.eq.1) then 
    3342                    fo2_ccons = fo2_ccons - (xthetarem * f_benout_c(ji,jj) / fthk) 
    3343                 endif 
    3344                 fo2_cons = fo2_ncons + fo2_ccons 
    3345                 !! 
    3346                 !! is this a suboxic zone? 
    3347                 if (zoxy.lt.xo2min) then  ! deficient O2; production fluxes only 
    3348                    btra(jpoxy) = b0 * ( & 
    3349                         fo2_prod ) 
    3350                    foxy_prod(ji,jj) = foxy_prod(ji,jj) + ( fthk * fo2_prod ) 
    3351                    foxy_anox(ji,jj) = foxy_anox(ji,jj) + ( fthk * fo2_cons ) 
    3352                 else                      ! sufficient O2; production + consumption fluxes 
    3353                    btra(jpoxy) = b0 * ( & 
    3354                         fo2_prod + fo2_cons ) 
    3355                    foxy_prod(ji,jj) = foxy_prod(ji,jj) + ( fthk * fo2_prod ) 
    3356                    foxy_cons(ji,jj) = foxy_cons(ji,jj) + ( fthk * fo2_cons ) 
    3357                 endif 
    3358                 !! 
    3359                 !! air-sea fluxes (if this is the surface box) 
    3360                 if (jk.eq.1) then 
    3361                    !! 
    3362                    !! CO2 flux 
    3363                    btra(jpdic) = btra(jpdic) + (b0 * f_co2flux) 
    3364                    !! 
    3365                    !! O2 flux (mol/m3/s -> mmol/m3/d) 
    3366                    btra(jpoxy) = btra(jpoxy) + (b0 * f_o2flux) 
    3367                 endif 
    3368 # endif 
    3369  
    3370                 !!---------------------------------------------------------------------- 
    3371                 !! Integrate calculated fluxes for mass balance 
    3372                 !!---------------------------------------------------------------------- 
    3373                 !! 
    3374                 !! === nitrogen === 
    3375                 fflx_n(ji,jj)  = fflx_n(ji,jj)  + & 
    3376                      fthk * ( btra(jpphn) + btra(jpphd) + btra(jpzmi) + btra(jpzme) + btra(jpdet) + btra(jpdin) ) 
    3377                 !! === silicon === 
    3378                 fflx_si(ji,jj) = fflx_si(ji,jj) + & 
    3379                      fthk * ( btra(jppds) + btra(jpsil) ) 
    3380                 !! === iron === 
    3381                 fflx_fe(ji,jj) = fflx_fe(ji,jj) + & 
    3382                      fthk * ( ( xrfn * ( btra(jpphn) + btra(jpphd) + btra(jpzmi) + btra(jpzme) + btra(jpdet)) ) + btra(jpfer) ) 
     3677               !! 
     3678               !!---------------------------------------------------------------------- 
     3679               !! AXY (26/11/08): implicit detrital carbon change 
     3680               btra(jpdtc) = b0 * ( & 
     3681                 + (xthetapn * fdpn) + ((1.0 - xfdfrac1) * (xthetapd * fdpd))      &  ! mort. losses 
     3682                 + (xthetazmi * fdzmi) + ((1.0 - xfdfrac2) * (xthetazme * fdzme))  &  ! mort. losses 
     3683                 + ((1.0 - xbetac) * (ficmi + ficme))                              &  ! assim. inefficiency 
     3684                 - fgmidc - fgmedc - fddc                                          &  ! grazing and remin. 
     3685                 + ffast2slowc )                                                      ! seafloor fast->slow 
     3686               !! 
     3687               !!---------------------------------------------------------------------- 
     3688               !! dissolved inorganic carbon 
     3689               fc_cons = 0.0  & 
     3690                 - (xthetapn * fprn * zphn) - (xthetapd * fprd * zphd)                ! primary production 
     3691               fc_prod = 0.0  & 
     3692                 + (xthetapn * xphi * fgmipn) + (xphi * fgmidc)                    &  ! messy feeding remin 
     3693                 + (xthetapn * xphi * fgmepn) + (xthetapd * xphi * fgmepd)         &  ! messy feeding remin 
     3694                 + (xthetazmi * xphi * fgmezmi) + (xphi * fgmedc)                  &  ! messy feeding remin 
     3695                 + fmiresp + fmeresp + fddc + freminc + (xthetapn * fdpn2)         &  ! resp., remin., losses 
     3696                 + (xthetapd * fdpd2) + (xthetazmi * fdzmi2)                       &  ! losses 
     3697                 + (xthetazme * fdzme2)                                               ! losses 
     3698               !!  
     3699               !! riverine flux 
     3700               if ( jriver_c .gt. 0 ) then 
     3701                  f_riv_loc_c = f_riv_c(ji,jj) * friver_dep(jk,jmbathy) / fthk 
     3702                  fc_prod = fc_prod + f_riv_loc_c 
     3703               endif 
     3704               !!   
     3705               !! benthic remineralisation 
     3706               if (jk.eq.jmbathy .and. jorgben.eq.1 .and. ibenthic.eq.1) then 
     3707                  fc_prod = fc_prod + (f_benout_c(ji,jj) / fthk) 
     3708               endif 
     3709               if (jk.eq.jmbathy .and. jinorgben.eq.1 .and. ibenthic.eq.1) then 
     3710                  fc_prod = fc_prod + (f_benout_ca(ji,jj) / fthk) 
     3711               endif 
     3712               !! 
     3713               !! community respiration (does not include CaCO3 terms - obviously!) 
     3714               fcomm_resp(ji,jj) = fcomm_resp(ji,jj) + fc_prod 
     3715               !! 
     3716               !! CaCO3 
     3717               fc_prod = fc_prod - ftempca + freminca 
     3718               !!  
     3719               !! riverine flux 
     3720               if ( jk .eq. 1 .and. jriver_c .gt. 0 ) then 
     3721                  fc_prod = fc_prod + f_riv_c(ji,jj) 
     3722               endif 
     3723               !! 
     3724               btra(jpdic) = b0 * ( & 
     3725                 fc_prod + fc_cons ) 
     3726               !! 
     3727               fcar_cons(ji,jj) = fcar_cons(ji,jj) + ( fthk * (  &  ! consumption of dissolved carbon 
     3728                 fc_cons ) ) 
     3729               fcar_prod(ji,jj) = fcar_prod(ji,jj) + ( fthk * (  &  ! production of dissolved carbon 
     3730                 fc_prod ) ) 
     3731               !! 
     3732               !!---------------------------------------------------------------------- 
     3733               !! alkalinity 
     3734               fa_prod = 0.0  & 
     3735                 + (2.0 * freminca)                                                   ! CaCO3 dissolution 
     3736               fa_cons = 0.0  & 
     3737                 - (2.0 * ftempca)                                                    ! CaCO3 production 
     3738               !!  
     3739               !! riverine flux 
     3740               if ( jriver_alk .gt. 0 ) then 
     3741                  f_riv_loc_alk = f_riv_alk(ji,jj) * friver_dep(jk,jmbathy) / fthk 
     3742                  fa_prod = fa_prod + f_riv_loc_alk 
     3743               endif 
     3744               !!   
     3745               !! benthic remineralisation 
     3746               if (jk.eq.jmbathy .and. jinorgben.eq.1 .and. ibenthic.eq.1) then 
     3747                  fa_prod = fa_prod + (2.0 * f_benout_ca(ji,jj) / fthk) 
     3748               endif 
     3749               !! 
     3750               btra(jpalk) = b0 * ( & 
     3751                 fa_prod + fa_cons ) 
     3752               !! 
     3753               !!---------------------------------------------------------------------- 
     3754               !! oxygen (has protection at low O2 concentrations; OCMIP-2 style) 
     3755               fo2_prod = 0.0 & 
     3756                 + (xthetanit * fprn * zphn)                                      & ! Pn primary production, N 
     3757                 + (xthetanit * fprd * zphd)                                      & ! Pd primary production, N 
     3758                 + (xthetarem * xthetapn * fprn * zphn)                           & ! Pn primary production, C 
     3759                 + (xthetarem * xthetapd * fprd * zphd)                             ! Pd primary production, C 
     3760               fo2_ncons = 0.0 & 
     3761                 - (xthetanit * xphi * fgmipn)                                    & ! Pn messy feeding remin., N 
     3762                 - (xthetanit * xphi * fgmid)                                     & ! D  messy feeding remin., N 
     3763                 - (xthetanit * xphi * fgmepn)                                    & ! Pn messy feeding remin., N 
     3764                 - (xthetanit * xphi * fgmepd)                                    & ! Pd messy feeding remin., N 
     3765                 - (xthetanit * xphi * fgmezmi)                                   & ! Zi messy feeding remin., N 
     3766                 - (xthetanit * xphi * fgmed)                                     & ! D  messy feeding remin., N 
     3767                 - (xthetanit * fmiexcr)                                          & ! microzoo excretion, N 
     3768                 - (xthetanit * fmeexcr)                                          & ! mesozoo  excretion, N 
     3769                 - (xthetanit * fdd)                                              & ! slow detritus remin., N  
     3770                 - (xthetanit * freminn)                                          & ! fast detritus remin., N 
     3771                 - (xthetanit * fdpn2)                                            & ! Pn  losses, N 
     3772                 - (xthetanit * fdpd2)                                            & ! Pd  losses, N 
     3773                 - (xthetanit * fdzmi2)                                           & ! Zmi losses, N 
     3774                 - (xthetanit * fdzme2)                                             ! Zme losses, N 
     3775               !!   
     3776               !! benthic remineralisation 
     3777               if (jk.eq.jmbathy .and. jorgben.eq.1 .and. ibenthic.eq.1) then 
     3778                  fo2_ncons = fo2_ncons - (xthetanit * f_benout_n(ji,jj) / fthk) 
     3779               endif 
     3780               fo2_ccons = 0.0 & 
     3781                 - (xthetarem * xthetapn * xphi * fgmipn)                         & ! Pn messy feeding remin., C 
     3782                 - (xthetarem * xphi * fgmidc)                                    & ! D  messy feeding remin., C 
     3783                 - (xthetarem * xthetapn * xphi * fgmepn)                         & ! Pn messy feeding remin., C 
     3784                 - (xthetarem * xthetapd * xphi * fgmepd)                         & ! Pd messy feeding remin., C 
     3785                 - (xthetarem * xthetazmi * xphi * fgmezmi)                       & ! Zi messy feeding remin., C 
     3786                 - (xthetarem * xphi * fgmedc)                                    & ! D  messy feeding remin., C 
     3787                 - (xthetarem * fmiresp)                                          & ! microzoo respiration, C 
     3788                 - (xthetarem * fmeresp)                                          & ! mesozoo  respiration, C 
     3789                 - (xthetarem * fddc)                                             & ! slow detritus remin., C 
     3790                 - (xthetarem * freminc)                                          & ! fast detritus remin., C 
     3791                 - (xthetarem * xthetapn * fdpn2)                                 & ! Pn  losses, C 
     3792                 - (xthetarem * xthetapd * fdpd2)                                 & ! Pd  losses, C 
     3793                 - (xthetarem * xthetazmi * fdzmi2)                               & ! Zmi losses, C 
     3794                 - (xthetarem * xthetazme * fdzme2)                                 ! Zme losses, C 
     3795               !!   
     3796               !! benthic remineralisation 
     3797               if (jk.eq.jmbathy .and. jorgben.eq.1 .and. ibenthic.eq.1) then 
     3798                  fo2_ccons = fo2_ccons - (xthetarem * f_benout_c(ji,jj) / fthk) 
     3799               endif 
     3800               fo2_cons = fo2_ncons + fo2_ccons 
     3801               !! 
     3802               !! is this a suboxic zone? 
     3803               if (zoxy.lt.xo2min) then  ! deficient O2; production fluxes only 
     3804                  btra(jpoxy) = b0 * ( & 
     3805                    fo2_prod ) 
     3806                  foxy_prod(ji,jj) = foxy_prod(ji,jj) + ( fthk * fo2_prod ) 
     3807                  foxy_anox(ji,jj) = foxy_anox(ji,jj) + ( fthk * fo2_cons ) 
     3808               else                      ! sufficient O2; production + consumption fluxes 
     3809                  btra(jpoxy) = b0 * ( & 
     3810                    fo2_prod + fo2_cons ) 
     3811                  foxy_prod(ji,jj) = foxy_prod(ji,jj) + ( fthk * fo2_prod ) 
     3812                  foxy_cons(ji,jj) = foxy_cons(ji,jj) + ( fthk * fo2_cons ) 
     3813               endif 
     3814               !! 
     3815               !! air-sea fluxes (if this is the surface box) 
     3816               if (jk.eq.1) then 
     3817                  !! 
     3818                  !! CO2 flux 
     3819                  btra(jpdic) = btra(jpdic) + (b0 * f_co2flux) 
     3820                  !! 
     3821                  !! O2 flux (mol/m3/s -> mmol/m3/d) 
     3822                  btra(jpoxy) = btra(jpoxy) + (b0 * f_o2flux) 
     3823               endif 
     3824# endif 
     3825 
     3826# if defined key_debug_medusa 
     3827               !! report state variable fluxes (not including fast-sinking detritus) 
     3828               if (idf.eq.1.AND.idfval.eq.1) then 
     3829                  IF (lwp) write (numout,*) '------------------------------' 
     3830                  IF (lwp) write (numout,*) 'btra(jpchn)(',jk,')  = ', btra(jpchn) 
     3831                  IF (lwp) write (numout,*) 'btra(jpchd)(',jk,')  = ', btra(jpchd) 
     3832                  IF (lwp) write (numout,*) 'btra(jpphn)(',jk,')  = ', btra(jpphn) 
     3833                  IF (lwp) write (numout,*) 'btra(jpphd)(',jk,')  = ', btra(jpphd) 
     3834                  IF (lwp) write (numout,*) 'btra(jppds)(',jk,')  = ', btra(jppds) 
     3835                  IF (lwp) write (numout,*) 'btra(jpzmi)(',jk,')  = ', btra(jpzmi) 
     3836                  IF (lwp) write (numout,*) 'btra(jpzme)(',jk,')  = ', btra(jpzme) 
     3837                  IF (lwp) write (numout,*) 'btra(jpdet)(',jk,')  = ', btra(jpdet) 
     3838                  IF (lwp) write (numout,*) 'btra(jpdin)(',jk,')  = ', btra(jpdin) 
     3839                  IF (lwp) write (numout,*) 'btra(jpsil)(',jk,')  = ', btra(jpsil) 
     3840                  IF (lwp) write (numout,*) 'btra(jpfer)(',jk,')  = ', btra(jpfer) 
     3841#  if defined key_roam 
     3842                  IF (lwp) write (numout,*) 'btra(jpdtc)(',jk,')  = ', btra(jpdtc) 
     3843                  IF (lwp) write (numout,*) 'btra(jpdic)(',jk,')  = ', btra(jpdic) 
     3844                  IF (lwp) write (numout,*) 'btra(jpalk)(',jk,')  = ', btra(jpalk) 
     3845                  IF (lwp) write (numout,*) 'btra(jpoxy)(',jk,')  = ', btra(jpoxy) 
     3846#  endif 
     3847               endif 
     3848# endif 
     3849 
     3850               !!---------------------------------------------------------------------- 
     3851               !! Integrate calculated fluxes for mass balance 
     3852               !!---------------------------------------------------------------------- 
     3853               !! 
     3854               !! === nitrogen === 
     3855               fflx_n(ji,jj)  = fflx_n(ji,jj)  + & 
     3856                  fthk * ( btra(jpphn) + btra(jpphd) + btra(jpzmi) + btra(jpzme) + btra(jpdet) + btra(jpdin) ) 
     3857               !! === silicon === 
     3858               fflx_si(ji,jj) = fflx_si(ji,jj) + & 
     3859                  fthk * ( btra(jppds) + btra(jpsil) ) 
     3860               !! === iron === 
     3861               fflx_fe(ji,jj) = fflx_fe(ji,jj) + & 
     3862                  fthk * ( ( xrfn * ( btra(jpphn) + btra(jpphd) + btra(jpzmi) + btra(jpzme) + btra(jpdet)) ) + btra(jpfer) ) 
    33833863# if defined key_roam 
    3384                 !! === carbon === 
    3385                 fflx_c(ji,jj)  = fflx_c(ji,jj)  + & 
    3386                      fthk * ( (xthetapn * btra(jpphn)) + (xthetapd * btra(jpphd)) + & 
    3387                      (xthetazmi * btra(jpzmi)) + (xthetazme * btra(jpzme)) + btra(jpdtc) + btra(jpdic) ) 
    3388                 !! === alkalinity === 
    3389                 fflx_a(ji,jj)  = fflx_a(ji,jj)  + & 
    3390                      fthk * ( btra(jpalk) ) 
    3391                 !! === oxygen === 
    3392                 fflx_o2(ji,jj) = fflx_o2(ji,jj) + & 
    3393                      fthk * ( btra(jpoxy) ) 
    3394 # endif 
    3395  
    3396                 !!---------------------------------------------------------------------- 
    3397                 !! Apply calculated tracer fluxes 
    3398                 !!---------------------------------------------------------------------- 
    3399                 !! 
    3400                 !! units: [unit of tracer] per second (fluxes are calculated above per day) 
    3401                 !! 
    3402                 ibio_switch = 1 
     3864               !! === carbon === 
     3865               fflx_c(ji,jj)  = fflx_c(ji,jj)  + & 
     3866                  fthk * ( (xthetapn * btra(jpphn)) + (xthetapd * btra(jpphd)) + & 
     3867                  (xthetazmi * btra(jpzmi)) + (xthetazme * btra(jpzme)) + btra(jpdtc) + btra(jpdic) ) 
     3868               !! === alkalinity === 
     3869               fflx_a(ji,jj)  = fflx_a(ji,jj)  + & 
     3870                  fthk * ( btra(jpalk) ) 
     3871               !! === oxygen === 
     3872               fflx_o2(ji,jj) = fflx_o2(ji,jj) + & 
     3873                  fthk * ( btra(jpoxy) ) 
     3874# endif 
     3875 
     3876               !!---------------------------------------------------------------------- 
     3877               !! Apply calculated tracer fluxes 
     3878               !!---------------------------------------------------------------------- 
     3879               !! 
     3880               !! units: [unit of tracer] per second (fluxes are calculated above per day) 
     3881               !! 
     3882               ibio_switch = 1 
    34033883# if defined key_gulf_finland 
    3404                 !! AXY (17/05/13): fudge in a Gulf of Finland correction; uses longitude- 
    3405                 !!                 latitude range to establish if this is a Gulf of Finland  
    3406                 !!                 grid cell; if so, then BGC fluxes are ignored (though  
    3407                 !!                 still calculated); for reference, this is meant to be a  
    3408                 !!                 temporary fix to see if all of my problems can be done  
    3409                 !!                 away with if I switch off BGC fluxes in the Gulf of  
    3410                 !!                 Finland, which currently appears the source of trouble 
    3411                 if ( flonx.gt.24.7 .and. flonx.lt.27.8 .and. & 
    3412                      &   flatx.gt.59.2 .and. flatx.lt.60.2 ) then 
    3413                    ibio_switch = 0 
    3414                 endif 
     3884               !! AXY (17/05/13): fudge in a Gulf of Finland correction; uses longitude- 
     3885               !!                 latitude range to establish if this is a Gulf of Finland  
     3886               !!                 grid cell; if so, then BGC fluxes are ignored (though  
     3887               !!                 still calculated); for reference, this is meant to be a  
     3888               !!                 temporary fix to see if all of my problems can be done  
     3889               !!                 away with if I switch off BGC fluxes in the Gulf of  
     3890               !!                 Finland, which currently appears the source of trouble 
     3891               if ( glamt(ji,jj).gt.24.7 .and. glamt(ji,jj).lt.27.8 .and. & 
     3892                  &   gphit(ji,jj).gt.59.2 .and. gphit(ji,jj).lt.60.2 ) then 
     3893                  ibio_switch = 0 
     3894               endif 
    34153895# endif                
    3416                 if (ibio_switch.eq.1) then 
    3417                    tra(ji,jj,jk,jpchn) = tra(ji,jj,jk,jpchn) + (btra(jpchn) / 86400.) 
    3418                    tra(ji,jj,jk,jpchd) = tra(ji,jj,jk,jpchd) + (btra(jpchd) / 86400.) 
    3419                    tra(ji,jj,jk,jpphn) = tra(ji,jj,jk,jpphn) + (btra(jpphn) / 86400.) 
    3420                    tra(ji,jj,jk,jpphd) = tra(ji,jj,jk,jpphd) + (btra(jpphd) / 86400.) 
    3421                    tra(ji,jj,jk,jppds) = tra(ji,jj,jk,jppds) + (btra(jppds) / 86400.) 
    3422                    tra(ji,jj,jk,jpzmi) = tra(ji,jj,jk,jpzmi) + (btra(jpzmi) / 86400.) 
    3423                    tra(ji,jj,jk,jpzme) = tra(ji,jj,jk,jpzme) + (btra(jpzme) / 86400.) 
    3424                    tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + (btra(jpdet) / 86400.) 
    3425                    tra(ji,jj,jk,jpdin) = tra(ji,jj,jk,jpdin) + (btra(jpdin) / 86400.) 
    3426                    tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) + (btra(jpsil) / 86400.) 
    3427                    tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + (btra(jpfer) / 86400.) 
     3896               if (ibio_switch.eq.1) then 
     3897                  tra(ji,jj,jk,jpchn) = tra(ji,jj,jk,jpchn) + (btra(jpchn) / 86400.) 
     3898                  tra(ji,jj,jk,jpchd) = tra(ji,jj,jk,jpchd) + (btra(jpchd) / 86400.) 
     3899                  tra(ji,jj,jk,jpphn) = tra(ji,jj,jk,jpphn) + (btra(jpphn) / 86400.) 
     3900                  tra(ji,jj,jk,jpphd) = tra(ji,jj,jk,jpphd) + (btra(jpphd) / 86400.) 
     3901                  tra(ji,jj,jk,jppds) = tra(ji,jj,jk,jppds) + (btra(jppds) / 86400.) 
     3902                  tra(ji,jj,jk,jpzmi) = tra(ji,jj,jk,jpzmi) + (btra(jpzmi) / 86400.) 
     3903                  tra(ji,jj,jk,jpzme) = tra(ji,jj,jk,jpzme) + (btra(jpzme) / 86400.) 
     3904                  tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + (btra(jpdet) / 86400.) 
     3905                  tra(ji,jj,jk,jpdin) = tra(ji,jj,jk,jpdin) + (btra(jpdin) / 86400.) 
     3906                  tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) + (btra(jpsil) / 86400.) 
     3907                  tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + (btra(jpfer) / 86400.) 
    34283908# if defined key_roam 
    3429                    tra(ji,jj,jk,jpdtc) = tra(ji,jj,jk,jpdtc) + (btra(jpdtc) / 86400.) 
    3430                    tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + (btra(jpdic) / 86400.) 
    3431                    tra(ji,jj,jk,jpalk) = tra(ji,jj,jk,jpalk) + (btra(jpalk) / 86400.) 
    3432                    tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + (btra(jpoxy) / 86400.) 
    3433 # endif 
    3434                 endif 
    3435  
    3436                 !! AXY (18/11/16): CMIP6 diagnostics 
    3437                 IF( med_diag%FBDDTALK%dgsave )  THEN 
    3438                    fbddtalk(ji,jj)  =  fbddtalk(ji,jj)  + (btra(jpalk) * fthk) 
    3439                 ENDIF 
    3440                 IF( med_diag%FBDDTDIC%dgsave )  THEN 
    3441                    fbddtdic(ji,jj)  =  fbddtdic(ji,jj)  + (btra(jpdic) * fthk) 
    3442                 ENDIF 
    3443                 IF( med_diag%FBDDTDIFE%dgsave ) THEN 
    3444                    fbddtdife(ji,jj) =  fbddtdife(ji,jj) + (btra(jpfer) * fthk) 
    3445                 ENDIF 
    3446                 IF( med_diag%FBDDTDIN%dgsave )  THEN 
    3447                    fbddtdin(ji,jj)  =  fbddtdin(ji,jj)  + (btra(jpdin) * fthk) 
    3448                 ENDIF 
    3449                 IF( med_diag%FBDDTDISI%dgsave ) THEN 
    3450                    fbddtdisi(ji,jj) =  fbddtdisi(ji,jj) + (btra(jpsil) * fthk) 
    3451                 ENDIF 
    3452                 !! 
    3453                 IF( med_diag%BDDTALK3%dgsave )  THEN 
    3454                    bddtalk3(ji,jj,jk)  =  btra(jpalk) 
    3455                 ENDIF 
    3456                 IF( med_diag%BDDTDIC3%dgsave )  THEN 
    3457                    bddtdic3(ji,jj,jk)  =  btra(jpdic) 
    3458                 ENDIF 
    3459                 IF( med_diag%BDDTDIFE3%dgsave ) THEN 
    3460                    bddtdife3(ji,jj,jk) =  btra(jpfer) 
    3461                 ENDIF 
    3462                 IF( med_diag%BDDTDIN3%dgsave )  THEN 
    3463                    bddtdin3(ji,jj,jk)  =  btra(jpdin) 
    3464                 ENDIF 
    3465                 IF( med_diag%BDDTDISI3%dgsave ) THEN 
    3466                    bddtdisi3(ji,jj,jk) =  btra(jpsil) 
    3467                 ENDIF 
     3909                  tra(ji,jj,jk,jpdtc) = tra(ji,jj,jk,jpdtc) + (btra(jpdtc) / 86400.) 
     3910                  tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + (btra(jpdic) / 86400.) 
     3911                  tra(ji,jj,jk,jpalk) = tra(ji,jj,jk,jpalk) + (btra(jpalk) / 86400.) 
     3912                  tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + (btra(jpoxy) / 86400.) 
     3913# endif 
     3914               endif                
     3915 
     3916               !! AXY (18/11/16): CMIP6 diagnostics 
     3917               IF( med_diag%FBDDTALK%dgsave )  THEN 
     3918                  fbddtalk(ji,jj)  =  fbddtalk(ji,jj)  + (btra(jpalk) * fthk) 
     3919               ENDIF 
     3920               IF( med_diag%FBDDTDIC%dgsave )  THEN 
     3921                  fbddtdic(ji,jj)  =  fbddtdic(ji,jj)  + (btra(jpdic) * fthk) 
     3922               ENDIF 
     3923               IF( med_diag%FBDDTDIFE%dgsave ) THEN 
     3924                  fbddtdife(ji,jj) =  fbddtdife(ji,jj) + (btra(jpfer) * fthk) 
     3925               ENDIF 
     3926               IF( med_diag%FBDDTDIN%dgsave )  THEN 
     3927                  fbddtdin(ji,jj)  =  fbddtdin(ji,jj)  + (btra(jpdin) * fthk) 
     3928               ENDIF 
     3929               IF( med_diag%FBDDTDISI%dgsave ) THEN 
     3930                  fbddtdisi(ji,jj) =  fbddtdisi(ji,jj) + (btra(jpsil) * fthk) 
     3931               ENDIF 
     3932          !! 
     3933               IF( med_diag%BDDTALK3%dgsave )  THEN 
     3934                  bddtalk3(ji,jj,jk)  =  btra(jpalk) 
     3935               ENDIF 
     3936               IF( med_diag%BDDTDIC3%dgsave )  THEN 
     3937                  bddtdic3(ji,jj,jk)  =  btra(jpdic) 
     3938               ENDIF 
     3939               IF( med_diag%BDDTDIFE3%dgsave ) THEN 
     3940                  bddtdife3(ji,jj,jk) =  btra(jpfer) 
     3941               ENDIF 
     3942               IF( med_diag%BDDTDIN3%dgsave )  THEN 
     3943                  bddtdin3(ji,jj,jk)  =  btra(jpdin) 
     3944               ENDIF 
     3945               IF( med_diag%BDDTDISI3%dgsave ) THEN 
     3946                  bddtdisi3(ji,jj,jk) =  btra(jpsil) 
     3947               ENDIF 
    34683948 
    34693949#   if defined key_debug_medusa 
    3470                 IF ( lwp ) write (numout,*) '------' 
    3471                 IF ( lwp ) write (numout,*) 'trc_bio_medusa: end all calculations' 
    3472                 IF ( lwp ) write (numout,*) 'trc_bio_medusa: now outputs' 
    3473                 CALL flush(numout) 
     3950               IF (lwp) write (numout,*) '------' 
     3951               IF (lwp) write (numout,*) 'trc_bio_medusa: end all calculations' 
     3952               IF (lwp) write (numout,*) 'trc_bio_medusa: now outputs' 
     3953                     CALL flush(numout) 
    34743954#   endif 
    34753955 
    34763956# if defined key_axy_nancheck 
    3477                 !!---------------------------------------------------------------------- 
    3478                 !! Check calculated tracer fluxes 
    3479                 !!---------------------------------------------------------------------- 
    3480                 !! 
    3481                 DO jn = 1,jptra 
    3482                    fq0 = btra(jn) 
    3483                    !! AXY (30/01/14): "isnan" problem on HECTOR 
    3484                    !! if (fq0 /= fq0 ) then 
    3485                    if ( ieee_is_nan( fq0 ) ) then 
    3486                       !! there's a NaN here 
    3487                       if (lwp) write(numout,*) 'NAN detected in btra(', ji, ',', & 
    3488                            & jj, ',', jk, ',', jn, ') at time', kt 
    3489                       CALL ctl_stop( 'trcbio_medusa, NAN in btra field' ) 
    3490                    endif 
    3491                 ENDDO 
    3492                 DO jn = 1,jptra 
    3493                    fq0 = tra(ji,jj,jk,jn) 
    3494                    !! AXY (30/01/14): "isnan" problem on HECTOR 
    3495                    !! if (fq0 /= fq0 ) then 
    3496                    if ( ieee_is_nan( fq0 ) ) then 
    3497                       !! there's a NaN here 
    3498                       if (lwp) write(numout,*) 'NAN detected in tra(', ji, ',', & 
    3499                            & jj, ',', jk, ',', jn, ') at time', kt 
    3500                       CALL ctl_stop( 'trcbio_medusa, NAN in tra field' ) 
    3501                    endif 
    3502                 ENDDO 
    3503                 CALL flush(numout) 
    3504 # endif 
    3505  
    3506                 !!---------------------------------------------------------------------- 
    3507                 !! Check model conservation 
    3508                 !! these terms merely sum up the tendency terms of the relevant 
    3509                 !! state variables, which should sum to zero; the iron cycle is 
    3510                 !! complicated by fluxes that add (aeolian deposition and seafloor 
    3511                 !! remineralisation) and remove (scavenging) dissolved iron from 
    3512                 !! the model (i.e. the sum of iron fluxes is unlikely to be zero) 
    3513                 !!---------------------------------------------------------------------- 
    3514                 !! 
    3515                 !! fnit0 = btra(jpphn) + btra(jpphd) + btra(jpzmi) + btra(jpzme) + btra(jpdet) + btra(jpdin)  ! + ftempn 
    3516                 !! fsil0 = btra(jppds) + btra(jpsil)                              ! + ftempsi 
    3517                 !! ffer0 = (xrfn * fnit0) + btra(jpfer) 
     3957               !!---------------------------------------------------------------------- 
     3958               !! Check calculated tracer fluxes 
     3959               !!---------------------------------------------------------------------- 
     3960               !! 
     3961               DO jn = 1,jptra 
     3962                  fq0 = btra(jn) 
     3963                  !! AXY (30/01/14): "isnan" problem on HECTOR 
     3964                  !! if (fq0 /= fq0 ) then 
     3965                  if ( ieee_is_nan( fq0 ) ) then 
     3966                     !! there's a NaN here 
     3967                     if (lwp) write(numout,*) 'NAN detected in btra(', ji, ',', & 
     3968                     & jj, ',', jk, ',', jn, ') at time', kt 
     3969           CALL ctl_stop( 'trcbio_medusa, NAN in btra field' ) 
     3970                  endif 
     3971               ENDDO 
     3972               DO jn = 1,jptra 
     3973                  fq0 = tra(ji,jj,jk,jn) 
     3974                  !! AXY (30/01/14): "isnan" problem on HECTOR 
     3975                  !! if (fq0 /= fq0 ) then 
     3976                  if ( ieee_is_nan( fq0 ) ) then 
     3977                     !! there's a NaN here 
     3978                     if (lwp) write(numout,*) 'NAN detected in tra(', ji, ',', & 
     3979                     & jj, ',', jk, ',', jn, ') at time', kt 
     3980              CALL ctl_stop( 'trcbio_medusa, NAN in tra field' ) 
     3981                  endif 
     3982               ENDDO 
     3983               CALL flush(numout) 
     3984# endif 
     3985 
     3986               !!---------------------------------------------------------------------- 
     3987               !! Check model conservation 
     3988               !! these terms merely sum up the tendency terms of the relevant 
     3989               !! state variables, which should sum to zero; the iron cycle is 
     3990               !! complicated by fluxes that add (aeolian deposition and seafloor 
     3991               !! remineralisation) and remove (scavenging) dissolved iron from 
     3992               !! the model (i.e. the sum of iron fluxes is unlikely to be zero) 
     3993               !!---------------------------------------------------------------------- 
     3994               !! 
     3995               !! fnit0 = btra(jpphn) + btra(jpphd) + btra(jpzmi) + btra(jpzme) + btra(jpdet) + btra(jpdin)  ! + ftempn 
     3996               !! fsil0 = btra(jppds) + btra(jpsil)                              ! + ftempsi 
     3997               !! ffer0 = (xrfn * fnit0) + btra(jpfer) 
    35183998# if defined key_roam 
    3519                 !! fcar0 = 0. 
    3520                 !! falk0 = 0. 
    3521                 !! foxy0 = 0. 
    3522 # endif 
    3523                 !! 
    3524                 !! if (kt/240*240.eq.kt) then 
    3525                 !!    if (ji.eq.2.and.jj.eq.2.and.jk.eq.1) then 
    3526                 !!       IF ( lwp ) write (*,*) '*******!MEDUSA Conservation!*******',kt 
     3999               !! fcar0 = 0. 
     4000               !! falk0 = 0. 
     4001               !! foxy0 = 0. 
     4002# endif 
     4003               !! 
     4004               !! if (kt/240*240.eq.kt) then 
     4005               !!    if (ji.eq.2.and.jj.eq.2.and.jk.eq.1) then 
     4006               !!       IF (lwp) write (*,*) '*******!MEDUSA Conservation!*******',kt 
    35274007# if defined key_roam 
    3528                 !!       IF ( lwp ) write (*,*) fnit0,fsil0,ffer0,fcar0,falk0,foxy0 
     4008               !!       IF (lwp) write (*,*) fnit0,fsil0,ffer0,fcar0,falk0,foxy0 
    35294009# else 
    3530                 !!       IF ( lwp ) write (*,*) fnit0,fsil0,ffer0 
    3531 # endif 
    3532                 !!    endif 
    3533                 !! endif      
    3534  
    3535                 IF( lk_iomput  .AND.  .NOT.  ln_diatrc  ) THEN 
    3536                    !!---------------------------------------------------------------------- 
    3537                    !! Add in XML diagnostics stuff 
    3538                    !!---------------------------------------------------------------------- 
    3539                    !! 
    3540                    !! ** 2D diagnostics 
     4010               !!       IF (lwp) write (*,*) fnit0,fsil0,ffer0 
     4011# endif 
     4012               !!    endif 
     4013               !! endif      
     4014 
     4015# if defined key_trc_diabio 
     4016               !!====================================================================== 
     4017               !! LOCAL GRID CELL DIAGNOSTICS 
     4018               !!====================================================================== 
     4019               !! 
     4020               !!---------------------------------------------------------------------- 
     4021               !! Full diagnostics key_trc_diabio: 
     4022               !! LOBSTER and PISCES support full diagnistics option key_trc_diabio     
     4023               !! which gives an option of FULL output of biological sourses and sinks. 
     4024               !! I cannot see any reason for doing this. If needed, it can be done 
     4025               !! as shown below. 
     4026               !!---------------------------------------------------------------------- 
     4027               !! 
     4028               IF(lwp) WRITE(numout,*) ' MEDUSA does not support key_trc_diabio' 
     4029               !!               trbio(ji,jj,jk, 1) = fprn 
     4030# endif 
     4031 
     4032               IF( lk_iomput  .AND.  .NOT.  ln_diatrc  ) THEN 
     4033         !!---------------------------------------------------------------------- 
     4034         !! Add in XML diagnostics stuff 
     4035         !!---------------------------------------------------------------------- 
     4036         !! 
     4037         !! ** 2D diagnostics 
    35414038#   if defined key_debug_medusa 
    3542                    IF ( lwp ) write (numout,*) 'trc_bio_medusa: diag in ij-jj-jk loop' 
    3543                    CALL flush(numout) 
     4039                  IF (lwp) write (numout,*) 'trc_bio_medusa: diag in ij-jj-jk loop' 
     4040                  CALL flush(numout) 
    35444041#   endif 
    3545                    IF ( med_diag%PRN%dgsave ) THEN 
     4042                  IF ( med_diag%PRN%dgsave ) THEN 
    35464043                      fprn2d(ji,jj) = fprn2d(ji,jj) + (fprn  * zphn * fthk)  
    3547                    ENDIF 
    3548                    IF ( med_diag%MPN%dgsave ) THEN 
     4044                  ENDIF 
     4045                  IF ( med_diag%MPN%dgsave ) THEN 
    35494046                      fdpn2d(ji,jj) = fdpn2d(ji,jj) + (fdpn         * fthk) 
    3550                    ENDIF 
    3551                    IF ( med_diag%PRD%dgsave ) THEN 
     4047                  ENDIF 
     4048                  IF ( med_diag%PRD%dgsave ) THEN 
    35524049                      fprd2d(ji,jj) = fprd2d(ji,jj) + (fprd  * zphd * fthk) 
    3553                    ENDIF 
    3554                    IF( med_diag%MPD%dgsave ) THEN 
     4050                  ENDIF 
     4051                  IF( med_diag%MPD%dgsave ) THEN 
    35554052                      fdpd2d(ji,jj) = fdpd2d(ji,jj) + (fdpd         * fthk)  
    3556                    ENDIF 
    3557                    !  IF( med_diag%DSED%dgsave ) THEN 
    3558                    !      CALL iom_put( "DSED"  , ftot_n ) 
    3559                    !  ENDIF 
    3560                    IF( med_diag%OPAL%dgsave ) THEN 
     4053                  ENDIF 
     4054                  !  IF( med_diag%DSED%dgsave ) THEN 
     4055                  !      CALL iom_put( "DSED"  , ftot_n ) 
     4056                  !  ENDIF 
     4057                  IF( med_diag%OPAL%dgsave ) THEN 
    35614058                      fprds2d(ji,jj) = fprds2d(ji,jj) + (fprds * zpds * fthk)  
    3562                    ENDIF 
    3563                    IF( med_diag%OPALDISS%dgsave ) THEN 
     4059                  ENDIF 
     4060                  IF( med_diag%OPALDISS%dgsave ) THEN 
    35644061                      fsdiss2d(ji,jj) = fsdiss2d(ji,jj) + (fsdiss  * fthk)   
    3565                    ENDIF 
    3566                    IF( med_diag%GMIPn%dgsave ) THEN 
     4062                  ENDIF 
     4063                  IF( med_diag%GMIPn%dgsave ) THEN 
    35674064                      fgmipn2d(ji,jj) = fgmipn2d(ji,jj) + (fgmipn  * fthk)  
    3568                    ENDIF 
    3569                    IF( med_diag%GMID%dgsave ) THEN 
     4065                  ENDIF 
     4066                  IF( med_diag%GMID%dgsave ) THEN 
    35704067                      fgmid2d(ji,jj) = fgmid2d(ji,jj) + (fgmid   * fthk)  
    3571                    ENDIF 
    3572                    IF( med_diag%MZMI%dgsave ) THEN 
     4068                  ENDIF 
     4069                  IF( med_diag%MZMI%dgsave ) THEN 
    35734070                      fdzmi2d(ji,jj) = fdzmi2d(ji,jj) + (fdzmi   * fthk)  
    3574                    ENDIF 
    3575                    IF( med_diag%GMEPN%dgsave ) THEN 
     4071                  ENDIF 
     4072                  IF( med_diag%GMEPN%dgsave ) THEN 
    35764073                      fgmepn2d(ji,jj) = fgmepn2d(ji,jj) + (fgmepn  * fthk) 
    3577                    ENDIF 
    3578                    IF( med_diag%GMEPD%dgsave ) THEN 
     4074                  ENDIF 
     4075                  IF( med_diag%GMEPD%dgsave ) THEN 
    35794076                      fgmepd2d(ji,jj) = fgmepd2d(ji,jj) + (fgmepd  * fthk)  
    3580                    ENDIF 
    3581                    IF( med_diag%GMEZMI%dgsave ) THEN 
     4077                  ENDIF 
     4078                  IF( med_diag%GMEZMI%dgsave ) THEN 
    35824079                      fgmezmi2d(ji,jj) = fgmezmi2d(ji,jj) + (fgmezmi * fthk)  
    3583                    ENDIF 
    3584                    IF( med_diag%GMED%dgsave ) THEN 
     4080                  ENDIF 
     4081                  IF( med_diag%GMED%dgsave ) THEN 
    35854082                      fgmed2d(ji,jj) = fgmed2d(ji,jj) + (fgmed   * fthk)  
    3586                    ENDIF 
    3587                    IF( med_diag%MZME%dgsave ) THEN 
     4083                  ENDIF 
     4084                  IF( med_diag%MZME%dgsave ) THEN 
    35884085                      fdzme2d(ji,jj) = fdzme2d(ji,jj) + (fdzme   * fthk)  
    3589                    ENDIF 
    3590                    !  IF( med_diag%DEXP%dgsave ) THEN 
    3591                    !      CALL iom_put( "DEXP"  , ftot_n ) 
    3592                    !  ENDIF 
    3593                    IF( med_diag%DETN%dgsave ) THEN 
     4086                  ENDIF 
     4087                  !  IF( med_diag%DEXP%dgsave ) THEN 
     4088                  !      CALL iom_put( "DEXP"  , ftot_n ) 
     4089                  !  ENDIF 
     4090                  IF( med_diag%DETN%dgsave ) THEN 
    35944091                      fslown2d(ji,jj) = fslown2d(ji,jj) + (fslown  * fthk)   
    3595                    ENDIF 
    3596                    IF( med_diag%MDET%dgsave ) THEN 
     4092                  ENDIF 
     4093                  IF( med_diag%MDET%dgsave ) THEN 
    35974094                      fdd2d(ji,jj) = fdd2d(ji,jj) + (fdd     * fthk)  
    3598                    ENDIF 
    3599                    IF( med_diag%AEOLIAN%dgsave ) THEN 
     4095                  ENDIF 
     4096                  IF( med_diag%AEOLIAN%dgsave ) THEN 
    36004097                      ffetop2d(ji,jj) = ffetop2d(ji,jj) + (ffetop  * fthk)  
    3601                    ENDIF 
    3602                    IF( med_diag%BENTHIC%dgsave ) THEN 
     4098                  ENDIF 
     4099                  IF( med_diag%BENTHIC%dgsave ) THEN 
    36034100                      ffebot2d(ji,jj) = ffebot2d(ji,jj) + (ffebot  * fthk)  
    3604                    ENDIF 
    3605                    IF( med_diag%SCAVENGE%dgsave ) THEN 
     4101                  ENDIF 
     4102                  IF( med_diag%SCAVENGE%dgsave ) THEN 
    36064103                      ffescav2d(ji,jj) = ffescav2d(ji,jj) + (ffescav * fthk)   
    3607                    ENDIF 
    3608                    IF( med_diag%PN_JLIM%dgsave ) THEN 
     4104                  ENDIF 
     4105                  IF( med_diag%PN_JLIM%dgsave ) THEN 
    36094106                      ! fjln2d(ji,jj) = fjln2d(ji,jj) + (fjln  * zphn * fthk)  
    36104107                      fjln2d(ji,jj) = fjln2d(ji,jj) + (fjlim_pn * zphn * fthk)  
    3611                    ENDIF 
    3612                    IF( med_diag%PN_NLIM%dgsave ) THEN 
     4108                  ENDIF 
     4109                  IF( med_diag%PN_NLIM%dgsave ) THEN 
    36134110                      fnln2d(ji,jj) = fnln2d(ji,jj) + (fnln  * zphn * fthk)  
    3614                    ENDIF 
    3615                    IF( med_diag%PN_FELIM%dgsave ) THEN 
     4111                  ENDIF 
     4112                  IF( med_diag%PN_FELIM%dgsave ) THEN 
    36164113                      ffln2d(ji,jj) = ffln2d(ji,jj) + (ffln  * zphn * fthk)  
    3617                    ENDIF 
    3618                    IF( med_diag%PD_JLIM%dgsave ) THEN 
     4114                  ENDIF 
     4115                  IF( med_diag%PD_JLIM%dgsave ) THEN 
    36194116                      ! fjld2d(ji,jj) = fjld2d(ji,jj) + (fjld  * zphd * fthk)  
    36204117                      fjld2d(ji,jj) = fjld2d(ji,jj) + (fjlim_pd * zphd * fthk)  
    3621                    ENDIF 
    3622                    IF( med_diag%PD_NLIM%dgsave ) THEN 
     4118                  ENDIF 
     4119                  IF( med_diag%PD_NLIM%dgsave ) THEN 
    36234120                      fnld2d(ji,jj) = fnld2d(ji,jj) + (fnld  * zphd * fthk)  
    3624                    ENDIF 
    3625                    IF( med_diag%PD_FELIM%dgsave ) THEN 
     4121                  ENDIF 
     4122                  IF( med_diag%PD_FELIM%dgsave ) THEN 
    36264123                      ffld2d(ji,jj) = ffld2d(ji,jj) + (ffld  * zphd * fthk)  
    3627                    ENDIF 
    3628                    IF( med_diag%PD_SILIM%dgsave ) THEN 
     4124                  ENDIF 
     4125                  IF( med_diag%PD_SILIM%dgsave ) THEN 
    36294126                      fsld2d2(ji,jj) = fsld2d2(ji,jj) + (fsld2 * zphd * fthk)  
    3630                    ENDIF 
    3631                    IF( med_diag%PDSILIM2%dgsave ) THEN 
     4127                  ENDIF 
     4128                  IF( med_diag%PDSILIM2%dgsave ) THEN 
    36324129                      fsld2d(ji,jj) = fsld2d(ji,jj) + (fsld  * zphd * fthk) 
    3633                    ENDIF 
    3634                    !!  
    3635                    IF( med_diag%TOTREG_N%dgsave ) THEN 
     4130                  ENDIF 
     4131                  !!  
     4132                  IF( med_diag%TOTREG_N%dgsave ) THEN 
    36364133                      fregen2d(ji,jj) = fregen2d(ji,jj) + fregen 
    3637                    ENDIF 
    3638                    IF( med_diag%TOTRG_SI%dgsave ) THEN 
     4134                  ENDIF 
     4135                  IF( med_diag%TOTRG_SI%dgsave ) THEN 
    36394136                      fregensi2d(ji,jj) = fregensi2d(ji,jj) + fregensi 
    3640                    ENDIF 
    3641                    !!  
    3642                    IF( med_diag%FASTN%dgsave ) THEN 
     4137                  ENDIF 
     4138                  !!  
     4139                  IF( med_diag%FASTN%dgsave ) THEN 
    36434140                      ftempn2d(ji,jj) = ftempn2d(ji,jj) + (ftempn  * fthk) 
    3644                    ENDIF 
    3645                    IF( med_diag%FASTSI%dgsave ) THEN 
     4141                  ENDIF 
     4142                  IF( med_diag%FASTSI%dgsave ) THEN 
    36464143                      ftempsi2d(ji,jj) = ftempsi2d(ji,jj) + (ftempsi * fthk) 
    3647                    ENDIF 
    3648                    IF( med_diag%FASTFE%dgsave ) THEN 
     4144                  ENDIF 
     4145                  IF( med_diag%FASTFE%dgsave ) THEN 
    36494146                      ftempfe2d(ji,jj) =ftempfe2d(ji,jj)  + (ftempfe * fthk)   
    3650                    ENDIF 
    3651                    IF( med_diag%FASTC%dgsave ) THEN 
     4147                  ENDIF 
     4148                  IF( med_diag%FASTC%dgsave ) THEN 
    36524149                      ftempc2d(ji,jj) = ftempc2d(ji,jj) + (ftempc  * fthk) 
    3653                    ENDIF 
    3654                    IF( med_diag%FASTCA%dgsave ) THEN 
     4150                  ENDIF 
     4151                  IF( med_diag%FASTCA%dgsave ) THEN 
    36554152                      ftempca2d(ji,jj) = ftempca2d(ji,jj) + (ftempca * fthk) 
    3656                    ENDIF 
    3657                    !!  
    3658                    IF( med_diag%REMINN%dgsave ) THEN 
     4153                  ENDIF 
     4154                  !!  
     4155                  IF( med_diag%REMINN%dgsave ) THEN 
    36594156                      freminn2d(ji,jj) = freminn2d(ji,jj) + (freminn  * fthk) 
    3660                    ENDIF 
    3661                    IF( med_diag%REMINSI%dgsave ) THEN 
     4157                  ENDIF 
     4158                  IF( med_diag%REMINSI%dgsave ) THEN 
    36624159                      freminsi2d(ji,jj) = freminsi2d(ji,jj) + (freminsi * fthk) 
    3663                    ENDIF 
    3664                    IF( med_diag%REMINFE%dgsave ) THEN 
     4160                  ENDIF 
     4161                  IF( med_diag%REMINFE%dgsave ) THEN 
    36654162                      freminfe2d(ji,jj)= freminfe2d(ji,jj) + (freminfe * fthk)  
    3666                    ENDIF 
    3667                    IF( med_diag%REMINC%dgsave ) THEN 
     4163                  ENDIF 
     4164                  IF( med_diag%REMINC%dgsave ) THEN 
    36684165                      freminc2d(ji,jj) = freminc2d(ji,jj) + (freminc  * fthk)  
    3669                    ENDIF 
    3670                    IF( med_diag%REMINCA%dgsave ) THEN 
     4166                  ENDIF 
     4167                  IF( med_diag%REMINCA%dgsave ) THEN 
    36714168                      freminca2d(ji,jj) = freminca2d(ji,jj) + (freminca * fthk)  
    3672                    ENDIF 
    3673                    !! 
     4169                  ENDIF 
     4170                  !! 
    36744171# if defined key_roam 
    3675                    !! 
    3676                    !! AXY (09/11/16): CMIP6 diagnostics 
    3677                    IF( med_diag%FD_NIT3%dgsave ) THEN 
    3678                       fd_nit3(ji,jj,jk) = ffastn(ji,jj) 
    3679                    ENDIF 
    3680                    IF( med_diag%FD_SIL3%dgsave ) THEN 
    3681                       fd_sil3(ji,jj,jk) = ffastsi(ji,jj) 
    3682                    ENDIF 
    3683                    IF( med_diag%FD_CAR3%dgsave ) THEN 
    3684                       fd_car3(ji,jj,jk) = ffastc(ji,jj) 
    3685                    ENDIF 
    3686                    IF( med_diag%FD_CAL3%dgsave ) THEN 
    3687                       fd_cal3(ji,jj,jk) = ffastca(ji,jj) 
    3688                    ENDIF 
    3689                    !! 
    3690                    IF (jk.eq.i0100) THEN 
    3691                       IF( med_diag%RR_0100%dgsave ) THEN 
    3692                          ffastca2d(ji,jj) =   & 
    3693                               ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall) 
    3694                       ENDIF 
    3695                    ELSE IF (jk.eq.i0500) THEN  
    3696                       IF( med_diag%RR_0500%dgsave ) THEN 
    3697                          ffastca2d(ji,jj) =   & 
    3698                               ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall) 
    3699                       ENDIF 
    3700                    ELSE IF (jk.eq.i1000) THEN 
    3701                       IF( med_diag%RR_1000%dgsave ) THEN 
    3702                          ffastca2d(ji,jj) =   & 
    3703                               ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall) 
    3704                       ENDIF 
    3705                    ELSE IF (jk.eq.jmbathy) THEN 
    3706                       IF( med_diag%IBEN_N%dgsave ) THEN 
    3707                          iben_n2d(ji,jj) = f_sbenin_n(ji,jj)  + f_fbenin_n(ji,jj) 
    3708                       ENDIF 
    3709                       IF( med_diag%IBEN_FE%dgsave ) THEN 
    3710                          iben_fe2d(ji,jj) = f_sbenin_fe(ji,jj) + f_fbenin_fe(ji,jj) 
    3711                       ENDIF 
    3712                       IF( med_diag%IBEN_C%dgsave ) THEN 
    3713                          iben_c2d(ji,jj) = f_sbenin_c(ji,jj)  + f_fbenin_c(ji,jj) 
    3714                       ENDIF 
    3715                       IF( med_diag%IBEN_SI%dgsave ) THEN 
    3716                          iben_si2d(ji,jj) = f_fbenin_si(ji,jj) 
    3717                       ENDIF 
    3718                       IF( med_diag%IBEN_CA%dgsave ) THEN 
    3719                          iben_ca2d(ji,jj) = f_fbenin_ca(ji,jj) 
    3720                       ENDIF 
    3721                       IF( med_diag%OBEN_N%dgsave ) THEN 
    3722                          oben_n2d(ji,jj) = f_benout_n(ji,jj) 
    3723                       ENDIF 
    3724                       IF( med_diag%OBEN_FE%dgsave ) THEN 
    3725                          oben_fe2d(ji,jj) = f_benout_fe(ji,jj) 
    3726                       ENDIF 
    3727                       IF( med_diag%OBEN_C%dgsave ) THEN 
    3728                          oben_c2d(ji,jj) = f_benout_c(ji,jj) 
    3729                       ENDIF 
    3730                       IF( med_diag%OBEN_SI%dgsave ) THEN 
    3731                          oben_si2d(ji,jj) = f_benout_si(ji,jj) 
    3732                       ENDIF 
    3733                       IF( med_diag%OBEN_CA%dgsave ) THEN 
    3734                          oben_ca2d(ji,jj) = f_benout_ca(ji,jj) 
    3735                       ENDIF 
    3736                       IF( med_diag%SFR_OCAL%dgsave ) THEN 
    3737                          sfr_ocal2d(ji,jj) = f3_omcal(ji,jj,jk) 
    3738                       ENDIF 
    3739                       IF( med_diag%SFR_OARG%dgsave ) THEN 
    3740                          sfr_oarg2d(ji,jj) =  f3_omarg(ji,jj,jk) 
    3741                       ENDIF 
    3742                       IF( med_diag%LYSO_CA%dgsave ) THEN 
    3743                          lyso_ca2d(ji,jj) = f_benout_lyso_ca(ji,jj) 
    3744                       ENDIF 
    3745                    ENDIF 
    3746                    !! end bathy-1 diags 
    3747                    !! 
    3748                    IF( med_diag%RIV_N%dgsave ) THEN 
    3749                       rivn2d(ji,jj) = rivn2d(ji,jj) +  (f_riv_loc_n * fthk) 
    3750                    ENDIF 
    3751                    IF( med_diag%RIV_SI%dgsave ) THEN 
    3752                       rivsi2d(ji,jj) = rivsi2d(ji,jj) +  (f_riv_loc_si * fthk) 
    3753                    ENDIF 
    3754                    IF( med_diag%RIV_C%dgsave ) THEN 
    3755                       rivc2d(ji,jj) = rivc2d(ji,jj) +  (f_riv_loc_c * fthk) 
    3756                    ENDIF 
    3757                    IF( med_diag%RIV_ALK%dgsave ) THEN 
    3758                       rivalk2d(ji,jj) = rivalk2d(ji,jj) +  (f_riv_loc_alk * fthk) 
    3759                    ENDIF 
    3760                    IF( med_diag%DETC%dgsave ) THEN 
    3761                       fslowc2d(ji,jj) = fslowc2d(ji,jj) + (fslowc  * fthk)    
    3762                    ENDIF 
    3763                    !!  
    3764                    !!               
    3765                    !! 
    3766                    IF( med_diag%PN_LLOSS%dgsave ) THEN 
    3767                       fdpn22d(ji,jj) = fdpn22d(ji,jj) + (fdpn2  * fthk) 
    3768                    ENDIF 
    3769                    IF( med_diag%PD_LLOSS%dgsave ) THEN 
    3770                       fdpd22d(ji,jj) = fdpd22d(ji,jj) + (fdpd2  * fthk) 
    3771                    ENDIF 
    3772                    IF( med_diag%ZI_LLOSS%dgsave ) THEN 
    3773                       fdzmi22d(ji,jj) = fdzmi22d(ji,jj) + (fdzmi2 * fthk) 
    3774                    ENDIF 
    3775                    IF( med_diag%ZE_LLOSS%dgsave ) THEN 
    3776                       fdzme22d(ji,jj) = fdzme22d(ji,jj) + (fdzme2 * fthk) 
    3777                    ENDIF 
    3778                    IF( med_diag%ZI_MES_N%dgsave ) THEN 
    3779                       zimesn2d(ji,jj) = zimesn2d(ji,jj) +  & 
    3780                            (xphi * (fgmipn + fgmid) * fthk) 
    3781                    ENDIF 
    3782                    IF( med_diag%ZI_MES_D%dgsave ) THEN 
    3783                       zimesd2d(ji,jj) = zimesd2d(ji,jj) + &  
    3784                            ((1. - xbetan) * finmi * fthk) 
    3785                    ENDIF 
    3786                    IF( med_diag%ZI_MES_C%dgsave ) THEN 
    3787                       zimesc2d(ji,jj) = zimesc2d(ji,jj) + & 
    3788                            (xphi * ((xthetapn * fgmipn) + fgmidc) * fthk) 
    3789                    ENDIF 
    3790                    IF( med_diag%ZI_MESDC%dgsave ) THEN 
    3791                       zimesdc2d(ji,jj) = zimesdc2d(ji,jj) + & 
    3792                            ((1. - xbetac) * ficmi * fthk) 
    3793                    ENDIF 
    3794                    IF( med_diag%ZI_EXCR%dgsave ) THEN 
    3795                       ziexcr2d(ji,jj) = ziexcr2d(ji,jj) +  (fmiexcr * fthk) 
    3796                    ENDIF 
    3797                    IF( med_diag%ZI_RESP%dgsave ) THEN 
    3798                       ziresp2d(ji,jj) = ziresp2d(ji,jj) +  (fmiresp * fthk) 
    3799                    ENDIF 
    3800                    IF( med_diag%ZI_GROW%dgsave ) THEN 
    3801                       zigrow2d(ji,jj) = zigrow2d(ji,jj) + (fmigrow * fthk) 
    3802                    ENDIF 
    3803                    IF( med_diag%ZE_MES_N%dgsave ) THEN 
    3804                       zemesn2d(ji,jj) = zemesn2d(ji,jj) + & 
    3805                            (xphi * (fgmepn + fgmepd + fgmezmi + fgmed) * fthk) 
    3806                    ENDIF 
    3807                    IF( med_diag%ZE_MES_D%dgsave ) THEN 
    3808                       zemesd2d(ji,jj) = zemesd2d(ji,jj) + & 
    3809                            ((1. - xbetan) * finme * fthk) 
    3810                    ENDIF 
    3811                    IF( med_diag%ZE_MES_C%dgsave ) THEN 
    3812                       zemesc2d(ji,jj) = zemesc2d(ji,jj) +                         &  
    3813                            (xphi * ((xthetapn * fgmepn) + (xthetapd * fgmepd) +  & 
    3814                            (xthetazmi * fgmezmi) + fgmedc) * fthk) 
    3815                    ENDIF 
    3816                    IF( med_diag%ZE_MESDC%dgsave ) THEN 
    3817                       zemesdc2d(ji,jj) = zemesdc2d(ji,jj) +  & 
    3818                            ((1. - xbetac) * ficme * fthk) 
    3819                    ENDIF 
    3820                    IF( med_diag%ZE_EXCR%dgsave ) THEN 
    3821                       zeexcr2d(ji,jj) = zeexcr2d(ji,jj) + (fmeexcr * fthk) 
    3822                    ENDIF 
    3823                    IF( med_diag%ZE_RESP%dgsave ) THEN 
    3824                       zeresp2d(ji,jj) = zeresp2d(ji,jj) + (fmeresp * fthk) 
    3825                    ENDIF 
    3826                    IF( med_diag%ZE_GROW%dgsave ) THEN 
    3827                       zegrow2d(ji,jj) = zegrow2d(ji,jj) + (fmegrow * fthk) 
    3828                    ENDIF 
    3829                    IF( med_diag%MDETC%dgsave ) THEN 
    3830                       mdetc2d(ji,jj) = mdetc2d(ji,jj) + (fddc * fthk) 
    3831                    ENDIF 
    3832                    IF( med_diag%GMIDC%dgsave ) THEN 
    3833                       gmidc2d(ji,jj) = gmidc2d(ji,jj) + (fgmidc * fthk) 
    3834                    ENDIF 
    3835                    IF( med_diag%GMEDC%dgsave ) THEN 
    3836                       gmedc2d(ji,jj) = gmedc2d(ji,jj) + (fgmedc  * fthk) 
    3837                    ENDIF 
    3838                    !! 
     4172                  !! 
     4173                  !! AXY (09/11/16): CMIP6 diagnostics 
     4174                  IF( med_diag%FD_NIT3%dgsave ) THEN 
     4175                     fd_nit3(ji,jj,jk) = ffastn(ji,jj) 
     4176                  ENDIF 
     4177                  IF( med_diag%FD_SIL3%dgsave ) THEN 
     4178                     fd_sil3(ji,jj,jk) = ffastsi(ji,jj) 
     4179                  ENDIF 
     4180                  IF( med_diag%FD_CAR3%dgsave ) THEN 
     4181                     fd_car3(ji,jj,jk) = ffastc(ji,jj) 
     4182                  ENDIF 
     4183                  IF( med_diag%FD_CAL3%dgsave ) THEN 
     4184                     fd_cal3(ji,jj,jk) = ffastca(ji,jj) 
     4185                  ENDIF 
     4186                  !! 
     4187                  IF (jk.eq.i0100) THEN 
     4188                     IF( med_diag%RR_0100%dgsave ) THEN 
     4189                        ffastca2d(ji,jj) =   & 
     4190                        ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall) 
     4191                     ENDIF                      
     4192                  ELSE IF (jk.eq.i0500) THEN  
     4193                     IF( med_diag%RR_0500%dgsave ) THEN 
     4194                        ffastca2d(ji,jj) =   & 
     4195                        ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall) 
     4196                     ENDIF                         
     4197                  ELSE IF (jk.eq.i1000) THEN 
     4198                     IF( med_diag%RR_1000%dgsave ) THEN 
     4199                        ffastca2d(ji,jj) =   & 
     4200                        ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall) 
     4201                     ENDIF 
     4202                  ELSE IF (jk.eq.jmbathy) THEN 
     4203                     IF( med_diag%IBEN_N%dgsave ) THEN 
     4204                        iben_n2d(ji,jj) = f_sbenin_n(ji,jj)  + f_fbenin_n(ji,jj) 
     4205                     ENDIF 
     4206                     IF( med_diag%IBEN_FE%dgsave ) THEN 
     4207                        iben_fe2d(ji,jj) = f_sbenin_fe(ji,jj) + f_fbenin_fe(ji,jj) 
     4208                     ENDIF 
     4209                     IF( med_diag%IBEN_C%dgsave ) THEN 
     4210                        iben_c2d(ji,jj) = f_sbenin_c(ji,jj)  + f_fbenin_c(ji,jj) 
     4211                     ENDIF 
     4212                     IF( med_diag%IBEN_SI%dgsave ) THEN 
     4213                        iben_si2d(ji,jj) = f_fbenin_si(ji,jj) 
     4214                     ENDIF 
     4215                     IF( med_diag%IBEN_CA%dgsave ) THEN 
     4216                        iben_ca2d(ji,jj) = f_fbenin_ca(ji,jj) 
     4217                     ENDIF 
     4218                     IF( med_diag%OBEN_N%dgsave ) THEN 
     4219                        oben_n2d(ji,jj) = f_benout_n(ji,jj) 
     4220                     ENDIF 
     4221                     IF( med_diag%OBEN_FE%dgsave ) THEN 
     4222                        oben_fe2d(ji,jj) = f_benout_fe(ji,jj) 
     4223                     ENDIF 
     4224                     IF( med_diag%OBEN_C%dgsave ) THEN 
     4225                        oben_c2d(ji,jj) = f_benout_c(ji,jj) 
     4226                     ENDIF 
     4227                     IF( med_diag%OBEN_SI%dgsave ) THEN 
     4228                        oben_si2d(ji,jj) = f_benout_si(ji,jj) 
     4229                     ENDIF 
     4230                     IF( med_diag%OBEN_CA%dgsave ) THEN 
     4231                        oben_ca2d(ji,jj) = f_benout_ca(ji,jj) 
     4232                     ENDIF 
     4233                     IF( med_diag%SFR_OCAL%dgsave ) THEN 
     4234                        sfr_ocal2d(ji,jj) = f3_omcal(ji,jj,jk) 
     4235                     ENDIF 
     4236                     IF( med_diag%SFR_OARG%dgsave ) THEN 
     4237                        sfr_oarg2d(ji,jj) =  f3_omarg(ji,jj,jk) 
     4238                     ENDIF 
     4239                     IF( med_diag%LYSO_CA%dgsave ) THEN 
     4240                        lyso_ca2d(ji,jj) = f_benout_lyso_ca(ji,jj) 
     4241                     ENDIF 
     4242                  ENDIF 
     4243                  !! end bathy-1 diags 
     4244                  !! 
     4245                  IF( med_diag%RIV_N%dgsave ) THEN 
     4246                     rivn2d(ji,jj) = rivn2d(ji,jj) +  (f_riv_loc_n * fthk) 
     4247                  ENDIF 
     4248                  IF( med_diag%RIV_SI%dgsave ) THEN 
     4249                     rivsi2d(ji,jj) = rivsi2d(ji,jj) +  (f_riv_loc_si * fthk) 
     4250                  ENDIF 
     4251                  IF( med_diag%RIV_C%dgsave ) THEN 
     4252                     rivc2d(ji,jj) = rivc2d(ji,jj) +  (f_riv_loc_c * fthk) 
     4253                  ENDIF 
     4254                  IF( med_diag%RIV_ALK%dgsave ) THEN 
     4255                     rivalk2d(ji,jj) = rivalk2d(ji,jj) +  (f_riv_loc_alk * fthk) 
     4256                  ENDIF 
     4257                  IF( med_diag%DETC%dgsave ) THEN 
     4258                     fslowc2d(ji,jj) = fslowc2d(ji,jj) + (fslowc  * fthk)    
     4259                  ENDIF 
     4260                  !!  
     4261                  !!               
     4262                  !! 
     4263                  IF( med_diag%PN_LLOSS%dgsave ) THEN 
     4264                     fdpn22d(ji,jj) = fdpn22d(ji,jj) + (fdpn2  * fthk) 
     4265                  ENDIF 
     4266                  IF( med_diag%PD_LLOSS%dgsave ) THEN 
     4267                     fdpd22d(ji,jj) = fdpd22d(ji,jj) + (fdpd2  * fthk) 
     4268                  ENDIF 
     4269                  IF( med_diag%ZI_LLOSS%dgsave ) THEN 
     4270                     fdzmi22d(ji,jj) = fdzmi22d(ji,jj) + (fdzmi2 * fthk) 
     4271                  ENDIF 
     4272                  IF( med_diag%ZE_LLOSS%dgsave ) THEN 
     4273                     fdzme22d(ji,jj) = fdzme22d(ji,jj) + (fdzme2 * fthk) 
     4274                  ENDIF 
     4275                  IF( med_diag%ZI_MES_N%dgsave ) THEN 
     4276                     zimesn2d(ji,jj) = zimesn2d(ji,jj) +  & 
     4277                     (xphi * (fgmipn + fgmid) * fthk) 
     4278                  ENDIF 
     4279                  IF( med_diag%ZI_MES_D%dgsave ) THEN 
     4280                     zimesd2d(ji,jj) = zimesd2d(ji,jj) + &  
     4281                     ((1. - xbetan) * finmi * fthk) 
     4282                  ENDIF 
     4283                  IF( med_diag%ZI_MES_C%dgsave ) THEN 
     4284                     zimesc2d(ji,jj) = zimesc2d(ji,jj) + & 
     4285                     (xphi * ((xthetapn * fgmipn) + fgmidc) * fthk) 
     4286                  ENDIF 
     4287                  IF( med_diag%ZI_MESDC%dgsave ) THEN 
     4288                     zimesdc2d(ji,jj) = zimesdc2d(ji,jj) + & 
     4289                     ((1. - xbetac) * ficmi * fthk) 
     4290                  ENDIF 
     4291                  IF( med_diag%ZI_EXCR%dgsave ) THEN 
     4292                     ziexcr2d(ji,jj) = ziexcr2d(ji,jj) +  (fmiexcr * fthk) 
     4293                  ENDIF 
     4294                  IF( med_diag%ZI_RESP%dgsave ) THEN 
     4295                     ziresp2d(ji,jj) = ziresp2d(ji,jj) +  (fmiresp * fthk) 
     4296                  ENDIF 
     4297                  IF( med_diag%ZI_GROW%dgsave ) THEN 
     4298                     zigrow2d(ji,jj) = zigrow2d(ji,jj) + (fmigrow * fthk) 
     4299                  ENDIF 
     4300                  IF( med_diag%ZE_MES_N%dgsave ) THEN 
     4301                     zemesn2d(ji,jj) = zemesn2d(ji,jj) + & 
     4302                     (xphi * (fgmepn + fgmepd + fgmezmi + fgmed) * fthk) 
     4303                  ENDIF 
     4304                  IF( med_diag%ZE_MES_D%dgsave ) THEN 
     4305                     zemesd2d(ji,jj) = zemesd2d(ji,jj) + & 
     4306                     ((1. - xbetan) * finme * fthk) 
     4307                  ENDIF 
     4308                  IF( med_diag%ZE_MES_C%dgsave ) THEN 
     4309                     zemesc2d(ji,jj) = zemesc2d(ji,jj) +                         &  
     4310                     (xphi * ((xthetapn * fgmepn) + (xthetapd * fgmepd) +  & 
     4311                     (xthetazmi * fgmezmi) + fgmedc) * fthk) 
     4312                  ENDIF 
     4313                  IF( med_diag%ZE_MESDC%dgsave ) THEN 
     4314                     zemesdc2d(ji,jj) = zemesdc2d(ji,jj) +  & 
     4315                     ((1. - xbetac) * ficme * fthk) 
     4316                  ENDIF 
     4317                  IF( med_diag%ZE_EXCR%dgsave ) THEN 
     4318                     zeexcr2d(ji,jj) = zeexcr2d(ji,jj) + (fmeexcr * fthk) 
     4319                  ENDIF 
     4320                  IF( med_diag%ZE_RESP%dgsave ) THEN 
     4321                     zeresp2d(ji,jj) = zeresp2d(ji,jj) + (fmeresp * fthk) 
     4322                  ENDIF 
     4323                  IF( med_diag%ZE_GROW%dgsave ) THEN 
     4324                     zegrow2d(ji,jj) = zegrow2d(ji,jj) + (fmegrow * fthk) 
     4325                  ENDIF 
     4326                  IF( med_diag%MDETC%dgsave ) THEN 
     4327                     mdetc2d(ji,jj) = mdetc2d(ji,jj) + (fddc * fthk) 
     4328                  ENDIF 
     4329                  IF( med_diag%GMIDC%dgsave ) THEN 
     4330                     gmidc2d(ji,jj) = gmidc2d(ji,jj) + (fgmidc * fthk) 
     4331                  ENDIF 
     4332                  IF( med_diag%GMEDC%dgsave ) THEN 
     4333                     gmedc2d(ji,jj) = gmedc2d(ji,jj) + (fgmedc  * fthk) 
     4334                  ENDIF 
     4335                  !! 
    38394336# endif                    
    3840                    !! 
    3841                    !! ** 3D diagnostics 
    3842                    IF( med_diag%TPP3%dgsave ) THEN 
    3843                       tpp3d(ji,jj,jk) =  (fprn * zphn) + (fprd * zphd) 
    3844                       !CALL iom_put( "TPP3"  , tpp3d ) 
    3845                    ENDIF 
    3846                    IF( med_diag%TPPD3%dgsave ) THEN 
    3847                       tppd3(ji,jj,jk) =  (fprd * zphd) 
    3848                    ENDIF 
    3849  
    3850                    IF( med_diag%REMIN3N%dgsave ) THEN 
    3851                       remin3dn(ji,jj,jk) = fregen + (freminn * fthk) !! remineralisation 
    3852                       !CALL iom_put( "REMIN3N"  , remin3dn ) 
    3853                    ENDIF 
    3854                    !! IF( med_diag%PH3%dgsave ) THEN 
    3855                    !!     CALL iom_put( "PH3"  , f3_pH ) 
    3856                    !! ENDIF 
    3857                    !! IF( med_diag%OM_CAL3%dgsave ) THEN 
    3858                    !!     CALL iom_put( "OM_CAL3"  , f3_omcal ) 
    3859                    !! ENDIF 
    3860                    !!  
    3861                    !! AXY (09/11/16): CMIP6 diagnostics 
    3862                    IF ( med_diag%DCALC3%dgsave   ) THEN 
    3863                       dcalc3(ji,jj,jk) = freminca 
    3864                    ENDIF 
    3865                    IF ( med_diag%FEDISS3%dgsave  ) THEN 
    3866                       fediss3(ji,jj,jk) = ffetop 
    3867                    ENDIF 
    3868                    IF ( med_diag%FESCAV3%dgsave  ) THEN 
    3869                       fescav3(ji,jj,jk) = ffescav 
    3870                    ENDIF 
    3871                    IF ( med_diag%MIGRAZP3%dgsave ) THEN 
    3872                       migrazp3(ji,jj,jk) = fgmipn * xthetapn 
    3873                    ENDIF 
    3874                    IF ( med_diag%MIGRAZD3%dgsave ) THEN 
    3875                       migrazd3(ji,jj,jk) = fgmidc 
    3876                    ENDIF 
    3877                    IF ( med_diag%MEGRAZP3%dgsave ) THEN 
    3878                       megrazp3(ji,jj,jk) = (fgmepn * xthetapn) + (fgmepd * xthetapd) 
    3879                    ENDIF 
    3880                    IF ( med_diag%MEGRAZD3%dgsave ) THEN 
    3881                       megrazd3(ji,jj,jk) = fgmedc 
    3882                    ENDIF 
    3883                    IF ( med_diag%MEGRAZZ3%dgsave ) THEN 
    3884                       megrazz3(ji,jj,jk) = (fgmezmi * xthetazmi) 
    3885                    ENDIF 
    3886                    IF ( med_diag%PBSI3%dgsave    ) THEN 
    3887                       pbsi3(ji,jj,jk)    = (fprds * zpds) 
    3888                    ENDIF 
    3889                    IF ( med_diag%PCAL3%dgsave    ) THEN 
    3890                       pcal3(ji,jj,jk)    = ftempca 
    3891                    ENDIF 
    3892                    IF ( med_diag%REMOC3%dgsave   ) THEN 
    3893                       remoc3(ji,jj,jk)   = freminc 
    3894                    ENDIF 
    3895                    IF ( med_diag%PNLIMJ3%dgsave  ) THEN 
    3896                       ! pnlimj3(ji,jj,jk)  = fjln 
    3897                       pnlimj3(ji,jj,jk)  = fjlim_pn 
    3898                    ENDIF 
    3899                    IF ( med_diag%PNLIMN3%dgsave  ) THEN 
    3900                       pnlimn3(ji,jj,jk)  = fnln 
    3901                    ENDIF 
    3902                    IF ( med_diag%PNLIMFE3%dgsave ) THEN 
    3903                       pnlimfe3(ji,jj,jk) = ffln 
    3904                    ENDIF 
    3905                    IF ( med_diag%PDLIMJ3%dgsave  ) THEN 
    3906                       ! pdlimj3(ji,jj,jk)  = fjld 
    3907                       pdlimj3(ji,jj,jk)  = fjlim_pd 
    3908                    ENDIF 
    3909                    IF ( med_diag%PDLIMN3%dgsave  ) THEN 
    3910                       pdlimn3(ji,jj,jk)  = fnld 
    3911                    ENDIF 
    3912                    IF ( med_diag%PDLIMFE3%dgsave ) THEN 
    3913                       pdlimfe3(ji,jj,jk) = ffld 
    3914                    ENDIF 
    3915                    IF ( med_diag%PDLIMSI3%dgsave ) THEN 
    3916                       pdlimsi3(ji,jj,jk) = fsld2 
    3917                    ENDIF 
    3918                 ENDIF   ! end of ln_diatrc option 
    3919                 !! CLOSE wet point IF..THEN loop 
    3920              endif 
    3921              !! CLOSE horizontal loops 
    3922           ENDDO 
    3923        ENDDO 
    3924        !! 
    3925        IF( lk_iomput  .AND.  .NOT.  ln_diatrc  ) THEN 
    3926           !! first - 2D diag implemented  
    3927           !!         on every K level 
    3928           !!----------------------------------------- 
    3929           !!  -- 
    3930           !!second - 2d specific k level diags 
    3931           !! 
    3932           !!----------------------------------------- 
    3933           IF (jk.eq.1) THEN 
     4337                  !! 
     4338                  !! ** 3D diagnostics 
     4339                  IF( med_diag%TPP3%dgsave ) THEN 
     4340                     tpp3d(ji,jj,jk) =  (fprn * zphn) + (fprd * zphd) 
     4341                     !CALL iom_put( "TPP3"  , tpp3d ) 
     4342                  ENDIF 
     4343                  IF( med_diag%TPPD3%dgsave ) THEN 
     4344                     tppd3(ji,jj,jk) =  (fprd * zphd) 
     4345                  ENDIF 
     4346                   
     4347                  IF( med_diag%REMIN3N%dgsave ) THEN 
     4348                     remin3dn(ji,jj,jk) = fregen + (freminn * fthk) !! remineralisation 
     4349                     !CALL iom_put( "REMIN3N"  , remin3dn ) 
     4350                  ENDIF 
     4351                  !! IF( med_diag%PH3%dgsave ) THEN 
     4352                  !!     CALL iom_put( "PH3"  , f3_pH ) 
     4353                  !! ENDIF 
     4354                  !! IF( med_diag%OM_CAL3%dgsave ) THEN 
     4355                  !!     CALL iom_put( "OM_CAL3"  , f3_omcal ) 
     4356                  !! ENDIF 
     4357        !!  
     4358        !! AXY (09/11/16): CMIP6 diagnostics 
     4359        IF ( med_diag%DCALC3%dgsave   ) THEN 
     4360                     dcalc3(ji,jj,jk) = freminca 
     4361                  ENDIF 
     4362        IF ( med_diag%FEDISS3%dgsave  ) THEN 
     4363                     fediss3(ji,jj,jk) = ffetop 
     4364                  ENDIF 
     4365        IF ( med_diag%FESCAV3%dgsave  ) THEN 
     4366                     fescav3(ji,jj,jk) = ffescav 
     4367                  ENDIF 
     4368        IF ( med_diag%MIGRAZP3%dgsave ) THEN 
     4369                     migrazp3(ji,jj,jk) = fgmipn * xthetapn 
     4370                  ENDIF 
     4371        IF ( med_diag%MIGRAZD3%dgsave ) THEN 
     4372                     migrazd3(ji,jj,jk) = fgmidc 
     4373                  ENDIF 
     4374        IF ( med_diag%MEGRAZP3%dgsave ) THEN 
     4375                     megrazp3(ji,jj,jk) = (fgmepn * xthetapn) + (fgmepd * xthetapd) 
     4376                  ENDIF 
     4377        IF ( med_diag%MEGRAZD3%dgsave ) THEN 
     4378                     megrazd3(ji,jj,jk) = fgmedc 
     4379                  ENDIF 
     4380        IF ( med_diag%MEGRAZZ3%dgsave ) THEN 
     4381                     megrazz3(ji,jj,jk) = (fgmezmi * xthetazmi) 
     4382                  ENDIF 
     4383        IF ( med_diag%PBSI3%dgsave    ) THEN 
     4384                     pbsi3(ji,jj,jk)    = (fprds * zpds) 
     4385                  ENDIF 
     4386        IF ( med_diag%PCAL3%dgsave    ) THEN 
     4387                     pcal3(ji,jj,jk)    = ftempca 
     4388                  ENDIF 
     4389        IF ( med_diag%REMOC3%dgsave   ) THEN 
     4390                     remoc3(ji,jj,jk)   = freminc 
     4391                  ENDIF 
     4392        IF ( med_diag%PNLIMJ3%dgsave  ) THEN 
     4393                     ! pnlimj3(ji,jj,jk)  = fjln 
     4394                     pnlimj3(ji,jj,jk)  = fjlim_pn 
     4395                  ENDIF 
     4396        IF ( med_diag%PNLIMN3%dgsave  ) THEN 
     4397                     pnlimn3(ji,jj,jk)  = fnln 
     4398                  ENDIF 
     4399        IF ( med_diag%PNLIMFE3%dgsave ) THEN 
     4400                     pnlimfe3(ji,jj,jk) = ffln 
     4401                  ENDIF 
     4402        IF ( med_diag%PDLIMJ3%dgsave  ) THEN 
     4403                     ! pdlimj3(ji,jj,jk)  = fjld 
     4404                     pdlimj3(ji,jj,jk)  = fjlim_pd 
     4405                  ENDIF 
     4406        IF ( med_diag%PDLIMN3%dgsave  ) THEN 
     4407                     pdlimn3(ji,jj,jk)  = fnld 
     4408                  ENDIF 
     4409        IF ( med_diag%PDLIMFE3%dgsave ) THEN 
     4410                     pdlimfe3(ji,jj,jk) = ffld 
     4411                  ENDIF 
     4412        IF ( med_diag%PDLIMSI3%dgsave ) THEN 
     4413                     pdlimsi3(ji,jj,jk) = fsld2 
     4414                  ENDIF 
     4415                  !! 
     4416                  !! ** Without using iom_use 
     4417               ELSE IF( ln_diatrc ) THEN 
    39344418#   if defined key_debug_medusa 
    3935              IF ( lwp ) write (numout,*) 'trc_bio_medusa: diag jk = 1' 
    3936              CALL flush(numout) 
     4419                  IF (lwp) write (numout,*) 'trc_bio_medusa: diag in ij-jj-jk ln_diatrc' 
     4420                  CALL flush(numout) 
    39374421#   endif 
    3938              IF( med_diag%MED_QSR%dgsave ) THEN 
    3939                 CALL iom_put( "MED_QSR"  , qsr ) ! 
    3940              ENDIF 
    3941              IF( med_diag%MED_XPAR%dgsave ) THEN 
    3942                 CALL iom_put( "MED_XPAR"  , xpar(:,:,jk) ) ! 
    3943              ENDIF 
    3944              IF( med_diag%OCAL_CCD%dgsave ) THEN 
    3945                 CALL iom_put( "OCAL_CCD"  , ocal_ccd ) ! 
    3946              ENDIF 
    3947              IF( med_diag%FE_0000%dgsave ) THEN 
    3948                 CALL iom_put( "FE_0000"  , xFree ) ! 
    3949              ENDIF 
    3950              IF( med_diag%MED_XZE%dgsave ) THEN 
    3951                 CALL iom_put( "MED_XZE"  , xze ) ! 
    3952              ENDIF 
     4422                  !!---------------------------------------------------------------------- 
     4423                  !! Prepare 2D diagnostics 
     4424                  !!---------------------------------------------------------------------- 
     4425                  !! 
     4426                  !! if ((kt / 240*240).eq.kt) then 
     4427                  !!    IF (lwp) write (*,*) '*******!MEDUSA DIAADD!*******',kt 
     4428                  !! endif      
     4429                  trc2d(ji,jj,1)  =  ftot_n(ji,jj)                             !! nitrogen inventory 
     4430                  trc2d(ji,jj,2)  =  ftot_si(ji,jj)                            !! silicon  inventory 
     4431                  trc2d(ji,jj,3)  =  ftot_fe(ji,jj)                            !! iron     inventory 
     4432                  trc2d(ji,jj,4)  = trc2d(ji,jj,4)  + (fprn  * zphn * fthk)    !! non-diatom production 
     4433                  trc2d(ji,jj,5)  = trc2d(ji,jj,5)  + (fdpn         * fthk)    !! non-diatom non-grazing losses 
     4434                  trc2d(ji,jj,6)  = trc2d(ji,jj,6)  + (fprd  * zphd * fthk)    !! diatom production 
     4435                  trc2d(ji,jj,7)  = trc2d(ji,jj,7)  + (fdpd         * fthk)    !! diatom non-grazing losses 
     4436                  !! diagnostic field  8 is (ostensibly) supplied by trcsed.F             
     4437                  trc2d(ji,jj,9)  = trc2d(ji,jj,9)  + (fprds * zpds * fthk)    !! diatom silicon production 
     4438                  trc2d(ji,jj,10) = trc2d(ji,jj,10) + (fsdiss  * fthk)         !! diatom silicon dissolution 
     4439                  trc2d(ji,jj,11) = trc2d(ji,jj,11) + (fgmipn  * fthk)         !! microzoo grazing on non-diatoms 
     4440                  trc2d(ji,jj,12) = trc2d(ji,jj,12) + (fgmid   * fthk)         !! microzoo grazing on detrital nitrogen 
     4441                  trc2d(ji,jj,13) = trc2d(ji,jj,13) + (fdzmi   * fthk)         !! microzoo non-grazing losses 
     4442                  trc2d(ji,jj,14) = trc2d(ji,jj,14) + (fgmepn  * fthk)         !! mesozoo  grazing on non-diatoms 
     4443                  trc2d(ji,jj,15) = trc2d(ji,jj,15) + (fgmepd  * fthk)         !! mesozoo  grazing on diatoms 
     4444                  trc2d(ji,jj,16) = trc2d(ji,jj,16) + (fgmezmi * fthk)         !! mesozoo  grazing on microzoo 
     4445                  trc2d(ji,jj,17) = trc2d(ji,jj,17) + (fgmed   * fthk)         !! mesozoo  grazing on detrital nitrogen 
     4446                  trc2d(ji,jj,18) = trc2d(ji,jj,18) + (fdzme   * fthk)         !! mesozoo  non-grazing losses 
     4447                  !! diagnostic field 19 is (ostensibly) supplied by trcexp.F 
     4448                  trc2d(ji,jj,20) = trc2d(ji,jj,20) + (fslown  * fthk)         !! slow sinking detritus N production 
     4449                  trc2d(ji,jj,21) = trc2d(ji,jj,21) + (fdd     * fthk)         !! detrital remineralisation 
     4450                  trc2d(ji,jj,22) = trc2d(ji,jj,22) + (ffetop  * fthk)         !! aeolian  iron addition 
     4451                  trc2d(ji,jj,23) = trc2d(ji,jj,23) + (ffebot  * fthk)         !! seafloor iron addition 
     4452                  trc2d(ji,jj,24) = trc2d(ji,jj,24) + (ffescav * fthk)         !! "free" iron scavenging 
     4453                  trc2d(ji,jj,25) = trc2d(ji,jj,25) + (fjlim_pn * zphn * fthk) !! non-diatom J  limitation term  
     4454                  trc2d(ji,jj,26) = trc2d(ji,jj,26) + (fnln  * zphn * fthk)    !! non-diatom N  limitation term  
     4455                  trc2d(ji,jj,27) = trc2d(ji,jj,27) + (ffln  * zphn * fthk)    !! non-diatom Fe limitation term  
     4456                  trc2d(ji,jj,28) = trc2d(ji,jj,28) + (fjlim_pd * zphd * fthk) !! diatom     J  limitation term  
     4457                  trc2d(ji,jj,29) = trc2d(ji,jj,29) + (fnld  * zphd * fthk)    !! diatom     N  limitation term  
     4458                  trc2d(ji,jj,30) = trc2d(ji,jj,30) + (ffld  * zphd * fthk)    !! diatom     Fe limitation term  
     4459                  trc2d(ji,jj,31) = trc2d(ji,jj,31) + (fsld2 * zphd * fthk)    !! diatom     Si limitation term  
     4460                  trc2d(ji,jj,32) = trc2d(ji,jj,32) + (fsld  * zphd * fthk)    !! diatom     Si uptake limitation term 
     4461                  if (jk.eq.i0100) trc2d(ji,jj,33) = fslownflux(ji,jj)         !! slow detritus flux at  100 m 
     4462                  if (jk.eq.i0200) trc2d(ji,jj,34) = fslownflux(ji,jj)         !! slow detritus flux at  200 m 
     4463                  if (jk.eq.i0500) trc2d(ji,jj,35) = fslownflux(ji,jj)         !! slow detritus flux at  500 m 
     4464                  if (jk.eq.i1000) trc2d(ji,jj,36) = fslownflux(ji,jj)         !! slow detritus flux at 1000 m 
     4465                  trc2d(ji,jj,37) = trc2d(ji,jj,37) + fregen                   !! non-fast N  full column regeneration 
     4466                  trc2d(ji,jj,38) = trc2d(ji,jj,38) + fregensi                 !! non-fast Si full column regeneration 
     4467                  if (jk.eq.i0100) trc2d(ji,jj,39) = trc2d(ji,jj,37)           !! non-fast N  regeneration to  100 m 
     4468                  if (jk.eq.i0200) trc2d(ji,jj,40) = trc2d(ji,jj,37)           !! non-fast N  regeneration to  200 m 
     4469                  if (jk.eq.i0500) trc2d(ji,jj,41) = trc2d(ji,jj,37)           !! non-fast N  regeneration to  500 m 
     4470                  if (jk.eq.i1000) trc2d(ji,jj,42) = trc2d(ji,jj,37)           !! non-fast N  regeneration to 1000 m 
     4471                  trc2d(ji,jj,43) = trc2d(ji,jj,43) + (ftempn  * fthk)         !! fast sinking detritus N production 
     4472                  trc2d(ji,jj,44) = trc2d(ji,jj,44) + (ftempsi * fthk)         !! fast sinking detritus Si production 
     4473                  trc2d(ji,jj,45) = trc2d(ji,jj,45) + (ftempfe * fthk)         !! fast sinking detritus Fe production 
     4474                  trc2d(ji,jj,46) = trc2d(ji,jj,46) + (ftempc  * fthk)         !! fast sinking detritus C production 
     4475                  trc2d(ji,jj,47) = trc2d(ji,jj,47) + (ftempca * fthk)         !! fast sinking detritus CaCO3 production 
     4476                  if (jk.eq.i0100) trc2d(ji,jj,48) = ffastn(ji,jj)             !! fast detritus N  flux at  100 m 
     4477                  if (jk.eq.i0200) trc2d(ji,jj,49) = ffastn(ji,jj)             !! fast detritus N  flux at  200 m 
     4478                  if (jk.eq.i0500) trc2d(ji,jj,50) = ffastn(ji,jj)             !! fast detritus N  flux at  500 m 
     4479                  if (jk.eq.i1000) trc2d(ji,jj,51) = ffastn(ji,jj)             !! fast detritus N  flux at 1000 m 
     4480                  if (jk.eq.i0100) trc2d(ji,jj,52) = fregenfast(ji,jj)         !! N  regeneration to  100 m 
     4481                  if (jk.eq.i0200) trc2d(ji,jj,53) = fregenfast(ji,jj)         !! N  regeneration to  200 m 
     4482                  if (jk.eq.i0500) trc2d(ji,jj,54) = fregenfast(ji,jj)         !! N  regeneration to  500 m 
     4483                  if (jk.eq.i1000) trc2d(ji,jj,55) = fregenfast(ji,jj)         !! N  regeneration to 1000 m 
     4484                  if (jk.eq.i0100) trc2d(ji,jj,56) = ffastsi(ji,jj)            !! fast detritus Si flux at  100 m 
     4485                  if (jk.eq.i0200) trc2d(ji,jj,57) = ffastsi(ji,jj)            !! fast detritus Si flux at  200 m 
     4486                  if (jk.eq.i0500) trc2d(ji,jj,58) = ffastsi(ji,jj)            !! fast detritus Si flux at  500 m 
     4487                  if (jk.eq.i1000) trc2d(ji,jj,59) = ffastsi(ji,jj)            !! fast detritus Si flux at 1000 m 
     4488                  if (jk.eq.i0100) trc2d(ji,jj,60) = fregenfastsi(ji,jj)       !! Si regeneration to  100 m 
     4489                  if (jk.eq.i0200) trc2d(ji,jj,61) = fregenfastsi(ji,jj)       !! Si regeneration to  200 m 
     4490                  if (jk.eq.i0500) trc2d(ji,jj,62) = fregenfastsi(ji,jj)       !! Si regeneration to  500 m 
     4491                  if (jk.eq.i1000) trc2d(ji,jj,63) = fregenfastsi(ji,jj)       !! Si regeneration to 1000 m 
     4492                  trc2d(ji,jj,64) = trc2d(ji,jj,64) + (freminn  * fthk)        !! sum of fast-sinking N  fluxes 
     4493                  trc2d(ji,jj,65) = trc2d(ji,jj,65) + (freminsi * fthk)        !! sum of fast-sinking Si fluxes 
     4494                  trc2d(ji,jj,66) = trc2d(ji,jj,66) + (freminfe * fthk)        !! sum of fast-sinking Fe fluxes 
     4495                  trc2d(ji,jj,67) = trc2d(ji,jj,67) + (freminc  * fthk)        !! sum of fast-sinking C  fluxes 
     4496                  trc2d(ji,jj,68) = trc2d(ji,jj,68) + (freminca * fthk)        !! sum of fast-sinking Ca fluxes 
     4497                  if (jk.eq.jmbathy) then 
     4498                     trc2d(ji,jj,69) = fsedn(ji,jj)                                   !! N  sedimentation flux                                   
     4499                     trc2d(ji,jj,70) = fsedsi(ji,jj)                                  !! Si sedimentation flux 
     4500                     trc2d(ji,jj,71) = fsedfe(ji,jj)                                  !! Fe sedimentation flux 
     4501                     trc2d(ji,jj,72) = fsedc(ji,jj)                                   !! C  sedimentation flux 
     4502                     trc2d(ji,jj,73) = fsedca(ji,jj)                                  !! Ca sedimentation flux 
     4503                  endif 
     4504                  if (jk.eq.1)  trc2d(ji,jj,74) = qsr(ji,jj) 
     4505                  if (jk.eq.1)  trc2d(ji,jj,75) = xpar(ji,jj,jk) 
     4506                  !! if (jk.eq.1)  trc2d(ji,jj,75) = real(iters) 
     4507                  !! diagnostic fields 76 to 80 calculated below 
     4508                  trc2d(ji,jj,81) = trc2d(ji,jj,81) + fprn_ml(ji,jj)           !! mixed layer non-diatom production 
     4509                  trc2d(ji,jj,82) = trc2d(ji,jj,82) + fprd_ml(ji,jj)           !! mixed layer     diatom production 
     4510# if defined key_gulf_finland 
     4511                  if (jk.eq.1)  trc2d(ji,jj,83) = real(ibio_switch)            !! Gulf of Finland check 
     4512# else 
     4513                  trc2d(ji,jj,83) = ocal_ccd(ji,jj)                            !! calcite CCD depth 
     4514# endif 
     4515                  trc2d(ji,jj,84) = fccd(ji,jj)                                !! last model level above calcite CCD depth 
     4516                  if (jk.eq.1)     trc2d(ji,jj,85) = xFree(ji,jj)              !! surface "free" iron 
     4517                  if (jk.eq.i0200) trc2d(ji,jj,86) = xFree(ji,jj)              !! "free" iron at  100 m 
     4518                  if (jk.eq.i0200) trc2d(ji,jj,87) = xFree(ji,jj)              !! "free" iron at  200 m 
     4519                  if (jk.eq.i0500) trc2d(ji,jj,88) = xFree(ji,jj)              !! "free" iron at  500 m 
     4520                  if (jk.eq.i1000) trc2d(ji,jj,89) = xFree(ji,jj)              !! "free" iron at 1000 m 
     4521                  !! AXY (27/06/12): extract "euphotic depth" 
     4522                  if (jk.eq.1)     trc2d(ji,jj,90) = xze(ji,jj) 
     4523                  !!  
     4524# if defined key_roam 
     4525                  !! ROAM provisionally has access to a further 20 2D diagnostics 
     4526                  if (jk .eq. 1) then 
     4527                     trc2d(ji,jj,91)  = trc2d(ji,jj,91)  + f_wind              !! surface wind 
     4528                     trc2d(ji,jj,92)  = trc2d(ji,jj,92)  + f_pco2atm           !! atmospheric pCO2 
     4529                     trc2d(ji,jj,93)  = trc2d(ji,jj,93)  + f_ph                !! ocean pH 
     4530                     trc2d(ji,jj,94)  = trc2d(ji,jj,94)  + f_pco2w             !! ocean pCO2 
     4531                     trc2d(ji,jj,95)  = trc2d(ji,jj,95)  + f_h2co3             !! ocean H2CO3 conc. 
     4532                     trc2d(ji,jj,96)  = trc2d(ji,jj,96)  + f_hco3              !! ocean HCO3 conc. 
     4533                     trc2d(ji,jj,97)  = trc2d(ji,jj,97)  + f_co3               !! ocean CO3 conc. 
     4534                     trc2d(ji,jj,98)  = trc2d(ji,jj,98)  + f_co2flux           !! air-sea CO2 flux 
     4535                     trc2d(ji,jj,99)  = trc2d(ji,jj,99)  + f_omcal(ji,jj)      !! ocean omega calcite  
     4536                     trc2d(ji,jj,100) = trc2d(ji,jj,100) + f_omarg(ji,jj)      !! ocean omega aragonite 
     4537                     trc2d(ji,jj,101) = trc2d(ji,jj,101) + f_TDIC              !! ocean TDIC 
     4538                     trc2d(ji,jj,102) = trc2d(ji,jj,102) + f_TALK              !! ocean TALK 
     4539                     trc2d(ji,jj,103) = trc2d(ji,jj,103) + f_kw660             !! surface kw660 
     4540                     trc2d(ji,jj,104) = trc2d(ji,jj,104) + f_pp0               !! surface pressure 
     4541                     trc2d(ji,jj,105) = trc2d(ji,jj,105) + f_o2flux            !! air-sea O2 flux 
     4542                     trc2d(ji,jj,106) = trc2d(ji,jj,106) + f_o2sat             !! ocean O2 saturation 
     4543                     trc2d(ji,jj,107) = f2_ccd_cal(ji,jj)                      !! depth calcite CCD 
     4544                     trc2d(ji,jj,108) = f2_ccd_arg(ji,jj)                      !! depth aragonite CCD 
     4545                  endif 
     4546                  if (jk .eq. jmbathy) then 
     4547                     trc2d(ji,jj,109) = f3_omcal(ji,jj,jk)                     !! seafloor omega calcite 
     4548                     trc2d(ji,jj,110) = f3_omarg(ji,jj,jk)                     !! seafloor omega aragonite 
     4549                  endif 
     4550                  !! diagnostic fields 111 to 117 calculated below 
     4551                  if (jk.eq.i0100) trc2d(ji,jj,118) = ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall)  !! rain ratio at  100 m 
     4552                  if (jk.eq.i0500) trc2d(ji,jj,119) = ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall)  !! rain ratio at  500 m 
     4553                  if (jk.eq.i1000) trc2d(ji,jj,120) = ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall)  !! rain ratio at 1000 m 
     4554                  !! AXY (18/01/12): benthic flux diagnostics 
     4555                  if (jk.eq.jmbathy) then 
     4556                     trc2d(ji,jj,121) = f_sbenin_n(ji,jj)  + f_fbenin_n(ji,jj) 
     4557                     trc2d(ji,jj,122) = f_sbenin_fe(ji,jj) + f_fbenin_fe(ji,jj) 
     4558                     trc2d(ji,jj,123) = f_sbenin_c(ji,jj)  + f_fbenin_c(ji,jj) 
     4559                     trc2d(ji,jj,124) = f_fbenin_si(ji,jj) 
     4560                     trc2d(ji,jj,125) = f_fbenin_ca(ji,jj) 
     4561                     trc2d(ji,jj,126) = f_benout_n(ji,jj) 
     4562                     trc2d(ji,jj,127) = f_benout_fe(ji,jj) 
     4563                     trc2d(ji,jj,128) = f_benout_c(ji,jj) 
     4564                     trc2d(ji,jj,129) = f_benout_si(ji,jj) 
     4565                     trc2d(ji,jj,130) = f_benout_ca(ji,jj) 
     4566                  endif 
     4567                  !! diagnostics fields 131 to 135 calculated below 
     4568                  trc2d(ji,jj,136) = f_runoff(ji,jj) 
     4569                  !! AXY (19/07/12): amended to allow for riverine nutrient addition below surface 
     4570                  trc2d(ji,jj,137) = trc2d(ji,jj,137) + (f_riv_loc_n * fthk) 
     4571                  trc2d(ji,jj,138) = trc2d(ji,jj,138) + (f_riv_loc_si * fthk) 
     4572                  trc2d(ji,jj,139) = trc2d(ji,jj,139) + (f_riv_loc_c * fthk) 
     4573                  trc2d(ji,jj,140) = trc2d(ji,jj,140) + (f_riv_loc_alk * fthk) 
     4574                  trc2d(ji,jj,141) = trc2d(ji,jj,141) + (fslowc  * fthk)       !! slow sinking detritus C production 
     4575                  if (jk.eq.i0100) trc2d(ji,jj,142) = fslowcflux(ji,jj)        !! slow detritus flux at  100 m 
     4576                  if (jk.eq.i0200) trc2d(ji,jj,143) = fslowcflux(ji,jj)        !! slow detritus flux at  200 m 
     4577                  if (jk.eq.i0500) trc2d(ji,jj,144) = fslowcflux(ji,jj)        !! slow detritus flux at  500 m 
     4578                  if (jk.eq.i1000) trc2d(ji,jj,145) = fslowcflux(ji,jj)        !! slow detritus flux at 1000 m 
     4579                  trc2d(ji,jj,146)  = trc2d(ji,jj,146)  + ftot_c(ji,jj)        !! carbon     inventory 
     4580                  trc2d(ji,jj,147)  = trc2d(ji,jj,147)  + ftot_a(ji,jj)        !! alkalinity inventory 
     4581                  trc2d(ji,jj,148)  = trc2d(ji,jj,148)  + ftot_o2(ji,jj)       !! oxygen     inventory 
     4582                  if (jk.eq.jmbathy) then 
     4583                     trc2d(ji,jj,149) = f_benout_lyso_ca(ji,jj) 
     4584                  endif 
     4585                  trc2d(ji,jj,150) = fcomm_resp(ji,jj) * fthk                  !! community respiration 
     4586        !! 
     4587        !! AXY (14/02/14): a Valentines Day gift to BASIN - a shedload of new 
     4588                  !!                 diagnostics that they'll most likely never need! 
     4589                  !!                 (actually, as with all such gifts, I'm giving them 
     4590                  !!                 some things I'd like myself!) 
     4591                  !!  
     4592                  !! ---------------------------------------------------------------------- 
     4593                  !! linear losses 
     4594                  !! non-diatom 
     4595                  trc2d(ji,jj,151) = trc2d(ji,jj,151) + (fdpn2  * fthk) 
     4596                  !! diatom 
     4597                  trc2d(ji,jj,152) = trc2d(ji,jj,152) + (fdpd2  * fthk) 
     4598                  !! microzooplankton 
     4599                  trc2d(ji,jj,153) = trc2d(ji,jj,153) + (fdzmi2 * fthk) 
     4600                  !! mesozooplankton 
     4601                  trc2d(ji,jj,154) = trc2d(ji,jj,154) + (fdzme2 * fthk) 
     4602                  !! ---------------------------------------------------------------------- 
     4603                  !! microzooplankton grazing 
     4604                  !! microzooplankton messy -> N 
     4605                  trc2d(ji,jj,155) = trc2d(ji,jj,155) + (xphi * (fgmipn + fgmid) * fthk) 
     4606                  !! microzooplankton messy -> D 
     4607                  trc2d(ji,jj,156) = trc2d(ji,jj,156) + ((1. - xbetan) * finmi * fthk) 
     4608                  !! microzooplankton messy -> DIC 
     4609                  trc2d(ji,jj,157) = trc2d(ji,jj,157) + (xphi * ((xthetapn * fgmipn) + fgmidc) * fthk) 
     4610                  !! microzooplankton messy -> Dc 
     4611                  trc2d(ji,jj,158) = trc2d(ji,jj,158) + ((1. - xbetac) * ficmi * fthk) 
     4612                  !! microzooplankton excretion 
     4613                  trc2d(ji,jj,159) = trc2d(ji,jj,159) + (fmiexcr * fthk) 
     4614                  !! microzooplankton respiration 
     4615                  trc2d(ji,jj,160) = trc2d(ji,jj,160) + (fmiresp * fthk) 
     4616                  !! microzooplankton growth 
     4617                  trc2d(ji,jj,161) = trc2d(ji,jj,161) + (fmigrow * fthk) 
     4618                  !! ---------------------------------------------------------------------- 
     4619                  !! mesozooplankton grazing 
     4620                  !! mesozooplankton messy -> N 
     4621                  trc2d(ji,jj,162) = trc2d(ji,jj,162) + (xphi * (fgmepn + fgmepd + fgmezmi + fgmed) * fthk) 
     4622                  !! mesozooplankton messy -> D 
     4623                  trc2d(ji,jj,163) = trc2d(ji,jj,163) + ((1. - xbetan) * finme * fthk) 
     4624                  !! mesozooplankton messy -> DIC 
     4625                  trc2d(ji,jj,164) = trc2d(ji,jj,164) + (xphi * ((xthetapn * fgmepn) + (xthetapd * fgmepd) + & 
     4626                  &                  (xthetazmi * fgmezmi) + fgmedc) * fthk) 
     4627                  !! mesozooplankton messy -> Dc 
     4628                  trc2d(ji,jj,165) = trc2d(ji,jj,165) + ((1. - xbetac) * ficme * fthk) 
     4629                  !! mesozooplankton excretion 
     4630                  trc2d(ji,jj,166) = trc2d(ji,jj,166) + (fmeexcr * fthk) 
     4631                  !! mesozooplankton respiration 
     4632                  trc2d(ji,jj,167) = trc2d(ji,jj,167) + (fmeresp * fthk) 
     4633                  !! mesozooplankton growth 
     4634                  trc2d(ji,jj,168) = trc2d(ji,jj,168) + (fmegrow * fthk) 
     4635                  !! ---------------------------------------------------------------------- 
     4636                  !! miscellaneous 
     4637                  trc2d(ji,jj,169) = trc2d(ji,jj,169) + (fddc    * fthk) !! detrital C remineralisation 
     4638                  trc2d(ji,jj,170) = trc2d(ji,jj,170) + (fgmidc  * fthk) !! microzoo grazing on detrital carbon 
     4639                  trc2d(ji,jj,171) = trc2d(ji,jj,171) + (fgmedc  * fthk) !! mesozoo  grazing on detrital carbon 
     4640                  !! 
     4641                  !! ---------------------------------------------------------------------- 
     4642        !! 
     4643        !! AXY (23/10/14): extract primary production related surface fields to 
     4644        !!                 deal with diel cycle issues; hijacking BASIN 150m 
     4645        !!                 diagnostics to do so (see commented out diagnostics 
     4646        !!                 below this section) 
     4647        !! 
     4648        !! extract fields at surface 
     4649       !! if (jk .eq. 1) then 
     4650                 !!    trc2d(ji,jj,172) = zchn              !! Pn chlorophyll 
     4651                 !!    trc2d(ji,jj,173) = zphn              !! Pn biomass 
     4652                 !!    trc2d(ji,jj,174) = fjln              !! Pn J-term 
     4653                 !!    trc2d(ji,jj,175) = (fprn * zphn)     !! Pn PP 
     4654                 !!    trc2d(ji,jj,176) = zchd              !! Pd chlorophyll 
     4655                 !!    trc2d(ji,jj,177) = zphd              !! Pd biomass 
     4656                 !!    trc2d(ji,jj,178) = fjld              !! Pd J-term 
     4657                 !!    trc2d(ji,jj,179) = xpar(ji,jj,jk)    !! Pd PP 
     4658                 !!    trc2d(ji,jj,180) = loc_T             !! local temperature 
     4659                 !! endif 
     4660       !! !! 
     4661       !! !! extract fields at 50m (actually 44-50m) 
     4662       !! if (jk .eq. 18) then 
     4663                 !!    trc2d(ji,jj,181) = zchn              !! Pn chlorophyll 
     4664                 !!    trc2d(ji,jj,182) = zphn              !! Pn biomass 
     4665                 !!    trc2d(ji,jj,183) = fjln              !! Pn J-term 
     4666                 !!    trc2d(ji,jj,184) = (fprn * zphn)     !! Pn PP 
     4667                 !!    trc2d(ji,jj,185) = zchd              !! Pd chlorophyll 
     4668                 !!    trc2d(ji,jj,186) = zphd              !! Pd biomass 
     4669                 !!    trc2d(ji,jj,187) = fjld              !! Pd J-term 
     4670                 !!    trc2d(ji,jj,188) = xpar(ji,jj,jk)    !! Pd PP 
     4671                 !!    trc2d(ji,jj,189) = loc_T             !! local temperature 
     4672                 !! endif 
     4673       !! !! 
     4674       !! !! extract fields at 100m 
     4675       !! if (jk .eq. i0100) then 
     4676                 !!    trc2d(ji,jj,190) = zchn              !! Pn chlorophyll 
     4677                 !!    trc2d(ji,jj,191) = zphn              !! Pn biomass 
     4678                 !!    trc2d(ji,jj,192) = fjln              !! Pn J-term 
     4679                 !!    trc2d(ji,jj,193) = (fprn * zphn)     !! Pn PP 
     4680                 !!    trc2d(ji,jj,194) = zchd              !! Pd chlorophyll 
     4681                 !!    trc2d(ji,jj,195) = zphd              !! Pd biomass 
     4682                 !!    trc2d(ji,jj,196) = fjld              !! Pd J-term 
     4683                 !!    trc2d(ji,jj,197) = xpar(ji,jj,jk)    !! Pd PP 
     4684                 !!    trc2d(ji,jj,198) = loc_T             !! local temperature 
     4685                 !! endif 
     4686                 !! 
     4687                  !! extract relevant BASIN fields at 150m 
     4688                  if (jk .eq. i0150) then 
     4689                     trc2d(ji,jj,172) = trc2d(ji,jj,4)    !! Pn PP 
     4690                     trc2d(ji,jj,173) = trc2d(ji,jj,151)  !! Pn linear loss 
     4691                     trc2d(ji,jj,174) = trc2d(ji,jj,5)    !! Pn non-linear loss 
     4692                     trc2d(ji,jj,175) = trc2d(ji,jj,11)   !! Pn grazing to Zmi 
     4693                     trc2d(ji,jj,176) = trc2d(ji,jj,14)   !! Pn grazing to Zme 
     4694                     trc2d(ji,jj,177) = trc2d(ji,jj,6)    !! Pd PP 
     4695                     trc2d(ji,jj,178) = trc2d(ji,jj,152)  !! Pd linear loss 
     4696                     trc2d(ji,jj,179) = trc2d(ji,jj,7)    !! Pd non-linear loss 
     4697                     trc2d(ji,jj,180) = trc2d(ji,jj,15)   !! Pd grazing to Zme 
     4698                     trc2d(ji,jj,181) = trc2d(ji,jj,12)   !! Zmi grazing on D 
     4699                     trc2d(ji,jj,182) = trc2d(ji,jj,170)  !! Zmi grazing on Dc 
     4700                     trc2d(ji,jj,183) = trc2d(ji,jj,155)  !! Zmi messy feeding loss to N 
     4701                     trc2d(ji,jj,184) = trc2d(ji,jj,156)  !! Zmi messy feeding loss to D 
     4702                     trc2d(ji,jj,185) = trc2d(ji,jj,157)  !! Zmi messy feeding loss to DIC 
     4703                     trc2d(ji,jj,186) = trc2d(ji,jj,158)  !! Zmi messy feeding loss to Dc 
     4704                     trc2d(ji,jj,187) = trc2d(ji,jj,159)  !! Zmi excretion 
     4705                     trc2d(ji,jj,188) = trc2d(ji,jj,160)  !! Zmi respiration 
     4706                     trc2d(ji,jj,189) = trc2d(ji,jj,161)  !! Zmi growth 
     4707                     trc2d(ji,jj,190) = trc2d(ji,jj,153)  !! Zmi linear loss 
     4708                     trc2d(ji,jj,191) = trc2d(ji,jj,13)   !! Zmi non-linear loss 
     4709                     trc2d(ji,jj,192) = trc2d(ji,jj,16)   !! Zmi grazing to Zme 
     4710                     trc2d(ji,jj,193) = trc2d(ji,jj,17)   !! Zme grazing on D 
     4711                     trc2d(ji,jj,194) = trc2d(ji,jj,171)  !! Zme grazing on Dc 
     4712                     trc2d(ji,jj,195) = trc2d(ji,jj,162)  !! Zme messy feeding loss to N 
     4713                     trc2d(ji,jj,196) = trc2d(ji,jj,163)  !! Zme messy feeding loss to D 
     4714                     trc2d(ji,jj,197) = trc2d(ji,jj,164)  !! Zme messy feeding loss to DIC 
     4715                     trc2d(ji,jj,198) = trc2d(ji,jj,165)  !! Zme messy feeding loss to Dc 
     4716                     trc2d(ji,jj,199) = trc2d(ji,jj,166)  !! Zme excretion 
     4717                     trc2d(ji,jj,200) = trc2d(ji,jj,167)  !! Zme respiration 
     4718                     trc2d(ji,jj,201) = trc2d(ji,jj,168)  !! Zme growth 
     4719                     trc2d(ji,jj,202) = trc2d(ji,jj,154)  !! Zme linear loss 
     4720                     trc2d(ji,jj,203) = trc2d(ji,jj,18)   !! Zme non-linear loss 
     4721                     trc2d(ji,jj,204) = trc2d(ji,jj,20)   !! Slow detritus production, N 
     4722                     trc2d(ji,jj,205) = trc2d(ji,jj,21)   !! Slow detritus remineralisation, N 
     4723                     trc2d(ji,jj,206) = trc2d(ji,jj,141)  !! Slow detritus production, C 
     4724                     trc2d(ji,jj,207) = trc2d(ji,jj,169)  !! Slow detritus remineralisation, C 
     4725                     trc2d(ji,jj,208) = trc2d(ji,jj,43)   !! Fast detritus production, N 
     4726                     trc2d(ji,jj,209) = trc2d(ji,jj,21)   !! Fast detritus remineralisation, N 
     4727                     trc2d(ji,jj,210) = trc2d(ji,jj,64)   !! Fast detritus production, C 
     4728                     trc2d(ji,jj,211) = trc2d(ji,jj,67)   !! Fast detritus remineralisation, C 
     4729                     trc2d(ji,jj,212) = trc2d(ji,jj,150)  !! Community respiration 
     4730                     trc2d(ji,jj,213) = fslownflux(ji,jj) !! Slow detritus N flux at 150 m 
     4731                     trc2d(ji,jj,214) = fslowcflux(ji,jj) !! Slow detritus C flux at 150 m 
     4732                     trc2d(ji,jj,215) = ffastn(ji,jj)     !! Fast detritus N flux at 150 m 
     4733                     trc2d(ji,jj,216) = ffastc(ji,jj)     !! Fast detritus C flux at 150 m 
     4734                  endif 
     4735                  !!  
     4736                  !! Jpalm (11-08-2014) 
     4737                  !! Add UKESM1 diagnoatics  
     4738                  !!^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
     4739                  if ((jk .eq. 1) .and.( jdms.eq.1)) then 
     4740                     trc2d(ji,jj,221) = dms_surf          !! DMS surface concentration  
     4741                     !! AXY (13/03/15): add in other DMS estimates 
     4742                     trc2d(ji,jj,222) = dms_andr          !! DMS surface concentration  
     4743                     trc2d(ji,jj,223) = dms_simo          !! DMS surface concentration  
     4744                     trc2d(ji,jj,224) = dms_aran          !! DMS surface concentration  
     4745                     trc2d(ji,jj,225) = dms_hall          !! DMS surface concentration  
     4746                  endif 
     4747# endif 
     4748                  !! other possible future diagnostics include: 
     4749                  !!   - integrated tracer values (esp. biological) 
     4750                  !!   - mixed layer tracer values 
     4751                  !!   - sub-surface chlorophyll maxima (plus depth) 
     4752                  !!   - different mixed layer depth criteria (T, sigma, var. sigma) 
     4753 
     4754                  !!---------------------------------------------------------------------- 
     4755                  !! Prepare 3D diagnostics 
     4756                  !!---------------------------------------------------------------------- 
     4757                  !! 
     4758                  trc3d(ji,jj,jk,1)  = ((fprn + fprd) * zphn)     !! primary production   
     4759                  trc3d(ji,jj,jk,2)  = fslownflux(ji,jj) + ffastn(ji,jj) !! detrital flux 
     4760                  trc3d(ji,jj,jk,3)  = fregen + (freminn * fthk)  !! remineralisation 
     4761# if defined key_roam 
     4762                  trc3d(ji,jj,jk,4)  = f3_pH(ji,jj,jk)            !! pH 
     4763                  trc3d(ji,jj,jk,5)  = f3_omcal(ji,jj,jk)         !! omega calcite 
     4764# else 
     4765                  trc3d(ji,jj,jk,4)  = ffastsi(ji,jj)             !! fast Si flux 
     4766# endif 
     4767             ENDIF   ! end of ln_diatrc option 
     4768             !! CLOSE wet point IF..THEN loop 
     4769            endif 
     4770         !! CLOSE horizontal loops 
     4771         ENDDO 
     4772         ENDDO 
     4773         !! 
     4774             IF( lk_iomput  .AND.  .NOT.  ln_diatrc  ) THEN 
     4775                 !! first - 2D diag implemented  
     4776                 !!         on every K level 
     4777                 !!----------------------------------------- 
     4778                 !!  -- 
     4779                 !!second - 2d specific k level diags 
     4780                 !! 
     4781                 !!----------------------------------------- 
     4782                 IF (jk.eq.1) THEN 
     4783#   if defined key_debug_medusa 
     4784                     IF (lwp) write (numout,*) 'trc_bio_medusa: diag jk = 1' 
     4785                     CALL flush(numout) 
     4786#   endif 
     4787                     IF( med_diag%MED_QSR%dgsave ) THEN 
     4788                         CALL iom_put( "MED_QSR"  , qsr ) ! 
     4789                     ENDIF 
     4790                     IF( med_diag%MED_XPAR%dgsave ) THEN 
     4791                         CALL iom_put( "MED_XPAR"  , xpar(:,:,jk) ) ! 
     4792                     ENDIF        
     4793                     IF( med_diag%OCAL_CCD%dgsave ) THEN 
     4794                         CALL iom_put( "OCAL_CCD"  , ocal_ccd ) ! 
     4795                     ENDIF 
     4796                     IF( med_diag%FE_0000%dgsave ) THEN 
     4797                         CALL iom_put( "FE_0000"  , xFree ) ! 
     4798                     ENDIF                      
     4799                     IF( med_diag%MED_XZE%dgsave ) THEN 
     4800                         CALL iom_put( "MED_XZE"  , xze ) ! 
     4801                     ENDIF  
    39534802# if defined key_roam                      
    3954              IF( med_diag%WIND%dgsave ) THEN 
    3955                 CALL iom_put( "WIND"  , wndm ) 
    3956              ENDIF 
    3957              IF( med_diag%ATM_PCO2%dgsave ) THEN 
    3958                 CALL iom_put( "ATM_PCO2"  , f_pco2a2d ) 
    3959                 CALL wrk_dealloc( jpi, jpj,    f_pco2a2d  ) 
    3960              ENDIF 
    3961              IF( med_diag%OCN_PH%dgsave ) THEN 
    3962                 zw2d(:,:) = f3_pH(:,:,jk) 
    3963                 CALL iom_put( "OCN_PH"  , zw2d ) 
    3964              ENDIF 
    3965              IF( med_diag%OCN_PCO2%dgsave ) THEN 
    3966                 CALL iom_put( "OCN_PCO2"  , f_pco2w2d ) 
    3967                 CALL wrk_dealloc( jpi, jpj,   f_pco2w2d   ) 
    3968              ENDIF 
    3969              IF( med_diag%OCNH2CO3%dgsave ) THEN 
    3970                 zw2d(:,:) = f3_h2co3(:,:,jk) 
    3971                 CALL iom_put( "OCNH2CO3"  , zw2d ) 
    3972              ENDIF 
    3973              IF( med_diag%OCN_HCO3%dgsave ) THEN 
    3974                 zw2d(:,:) = f3_hco3(:,:,jk) 
    3975                 CALL iom_put( "OCN_HCO3"  , zw2d ) 
    3976              ENDIF 
    3977              IF( med_diag%OCN_CO3%dgsave ) THEN 
    3978                 zw2d(:,:) = f3_co3(:,:,jk) 
    3979                 CALL iom_put( "OCN_CO3"  , zw2d ) 
    3980              ENDIF 
    3981              IF( med_diag%CO2FLUX%dgsave ) THEN 
    3982                 CALL iom_put( "CO2FLUX"  , f_co2flux2d ) 
    3983                 CALL wrk_dealloc( jpi, jpj,   f_co2flux2d   ) 
    3984              ENDIF 
    3985              !!  
    3986              !! AXY (10/11/16): repeat CO2 flux diagnostic in UKMO/CMIP6 units; this 
    3987              !!                 both outputs the CO2 flux in specified units and 
    3988              !!                 sends the resulting field to the coupler 
    3989              !! JPALM (17/11/16): put CO2 flux (fgco2) alloc/unalloc/pass to zn  
    3990              !!                 out of diag list request  
    3991              CALL lbc_lnk( fgco2(:,:),'T',1. ) 
    3992              IF( med_diag%FGCO2%dgsave ) THEN 
    3993                 CALL iom_put( "FGCO2"  , fgco2 ) 
    3994              ENDIF 
    3995              !! JPALM (17/11/16): should mv this fgco2 part  
    3996              !!                   out of lk_iomput loop 
    3997              zb_co2_flx = zn_co2_flx 
    3998              zn_co2_flx = fgco2 
    3999              IF ( lk_oasis ) THEN 
    4000                 CO2Flux_out_cpl = zn_co2_flx 
    4001              ENDIF 
    4002              CALL wrk_dealloc( jpi, jpj,   fgco2   ) 
    4003              !! --- 
    4004              IF( med_diag%OM_CAL%dgsave ) THEN 
    4005                 CALL iom_put( "OM_CAL"  , f_omcal ) 
    4006              ENDIF 
    4007              IF( med_diag%OM_ARG%dgsave ) THEN 
    4008                 CALL iom_put( "OM_ARG"  , f_omarg ) 
    4009              ENDIF 
    4010              IF( med_diag%TCO2%dgsave ) THEN 
    4011                 CALL iom_put( "TCO2"  , f_TDIC2d ) 
    4012                 CALL wrk_dealloc( jpi, jpj,   f_TDIC2d   ) 
    4013              ENDIF 
    4014              IF( med_diag%TALK%dgsave ) THEN 
    4015                 CALL iom_put( "TALK"  , f_TALK2d ) 
    4016                 CALL wrk_dealloc( jpi, jpj,    f_TALK2d  ) 
    4017              ENDIF 
    4018              IF( med_diag%KW660%dgsave ) THEN 
    4019                 CALL iom_put( "KW660"  , f_kw6602d ) 
    4020                 CALL wrk_dealloc( jpi, jpj,   f_kw6602d   ) 
    4021              ENDIF 
    4022              IF( med_diag%ATM_PP0%dgsave ) THEN 
    4023                 CALL iom_put( "ATM_PP0"  , f_pp02d ) 
    4024                 CALL wrk_dealloc( jpi, jpj,    f_pp02d  ) 
    4025              ENDIF 
    4026              IF( med_diag%O2FLUX%dgsave ) THEN 
    4027                 CALL iom_put( "O2FLUX"  , f_o2flux2d ) 
    4028                 CALL wrk_dealloc( jpi, jpj,   f_o2flux2d   ) 
    4029              ENDIF 
    4030              IF( med_diag%O2SAT%dgsave ) THEN 
    4031                 CALL iom_put( "O2SAT"  , f_o2sat2d ) 
    4032                 CALL wrk_dealloc( jpi, jpj,  f_o2sat2d    ) 
    4033              ENDIF 
    4034              IF( med_diag%CAL_CCD%dgsave ) THEN 
    4035                 CALL iom_put( "CAL_CCD"  , f2_ccd_cal ) 
    4036              ENDIF 
    4037              IF( med_diag%ARG_CCD%dgsave ) THEN 
    4038                 CALL iom_put( "ARG_CCD"  , f2_ccd_arg ) 
    4039              ENDIF 
    4040              IF (jdms .eq. 1) THEN 
    4041                 IF( med_diag%DMS_SURF%dgsave ) THEN 
    4042                    CALL lbc_lnk(dms_surf2d(:,:),'T',1. ) 
    4043                    CALL iom_put( "DMS_SURF"  , dms_surf2d ) 
    4044                    zb_dms_srf = zn_dms_srf 
    4045                    zn_dms_srf = dms_surf2d 
    4046                    IF ( lk_oasis ) THEN 
    4047                       DMS_out_cpl = zn_dms_srf 
    4048                    ENDIF 
    4049                    CALL wrk_dealloc( jpi, jpj,   dms_surf2d   )  
    4050                 ENDIF 
    4051                 IF( med_diag%DMS_ANDR%dgsave ) THEN 
    4052                    CALL iom_put( "DMS_ANDR"  , dms_andr2d ) 
    4053                    CALL wrk_dealloc( jpi, jpj,   dms_andr2d   ) 
    4054                 ENDIF 
    4055                 IF( med_diag%DMS_SIMO%dgsave ) THEN 
    4056                    CALL iom_put( "DMS_SIMO"  , dms_simo2d ) 
    4057                    CALL wrk_dealloc( jpi, jpj,    dms_simo2d  ) 
    4058                 ENDIF 
    4059                 IF( med_diag%DMS_ARAN%dgsave ) THEN 
    4060                    CALL iom_put( "DMS_ARAN"  , dms_aran2d ) 
    4061                    CALL wrk_dealloc( jpi, jpj,   dms_aran2d   ) 
    4062                 ENDIF 
    4063                 IF( med_diag%DMS_HALL%dgsave ) THEN 
    4064                    CALL iom_put( "DMS_HALL"  , dms_hall2d ) 
    4065                    CALL wrk_dealloc( jpi, jpj,   dms_hall2d   ) 
    4066                 ENDIF 
    4067              ENDIF 
    4068              !! AXY (24/11/16): extra MOCSY diagnostics 
    4069              IF( med_diag%ATM_XCO2%dgsave ) THEN 
    4070                 CALL iom_put( "ATM_XCO2"  ,   f_xco2a_2d      ) 
    4071                 CALL wrk_dealloc( jpi, jpj,   f_xco2a_2d      ) 
    4072              ENDIF 
    4073              IF( med_diag%OCN_FCO2%dgsave ) THEN 
    4074                 CALL iom_put( "OCN_FCO2"  ,   f_fco2w_2d      ) 
    4075                 CALL wrk_dealloc( jpi, jpj,   f_fco2w_2d      ) 
    4076              ENDIF 
    4077              IF( med_diag%ATM_FCO2%dgsave ) THEN 
    4078                 CALL iom_put( "ATM_FCO2"  ,   f_fco2a_2d      ) 
    4079                 CALL wrk_dealloc( jpi, jpj,   f_fco2a_2d      ) 
    4080              ENDIF 
    4081              IF( med_diag%OCN_RHOSW%dgsave ) THEN 
    4082                 CALL iom_put( "OCN_RHOSW"  ,  f_ocnrhosw_2d   ) 
    4083                 CALL wrk_dealloc( jpi, jpj,   f_ocnrhosw_2d   ) 
    4084              ENDIF 
    4085              IF( med_diag%OCN_SCHCO2%dgsave ) THEN 
    4086                 CALL iom_put( "OCN_SCHCO2"  , f_ocnschco2_2d  ) 
    4087                 CALL wrk_dealloc( jpi, jpj,   f_ocnschco2_2d  ) 
    4088              ENDIF 
    4089              IF( med_diag%OCN_KWCO2%dgsave ) THEN 
    4090                 CALL iom_put( "OCN_KWCO2"  ,  f_ocnkwco2_2d   ) 
    4091                 CALL wrk_dealloc( jpi, jpj,   f_ocnkwco2_2d   ) 
    4092              ENDIF 
    4093              IF( med_diag%OCN_K0%dgsave ) THEN 
    4094                 CALL iom_put( "OCN_K0"  ,     f_ocnk0_2d      ) 
    4095                 CALL wrk_dealloc( jpi, jpj,   f_ocnk0_2d      ) 
    4096              ENDIF 
    4097              IF( med_diag%CO2STARAIR%dgsave ) THEN 
    4098                 CALL iom_put( "CO2STARAIR"  , f_co2starair_2d ) 
    4099                 CALL wrk_dealloc( jpi, jpj,   f_co2starair_2d ) 
    4100              ENDIF 
    4101              IF( med_diag%OCN_DPCO2%dgsave ) THEN 
    4102                 CALL iom_put( "OCN_DPCO2"  ,  f_ocndpco2_2d   ) 
    4103                 CALL wrk_dealloc( jpi, jpj,   f_ocndpco2_2d   ) 
    4104              ENDIF 
     4803                     IF( med_diag%WIND%dgsave ) THEN 
     4804                         CALL iom_put( "WIND"  , wndm ) 
     4805                     ENDIF 
     4806                     IF( med_diag%ATM_PCO2%dgsave ) THEN 
     4807                         CALL iom_put( "ATM_PCO2"  , f_pco2a2d ) 
     4808                         CALL wrk_dealloc( jpi, jpj,    f_pco2a2d  ) 
     4809                     ENDIF 
     4810                     IF( med_diag%OCN_PH%dgsave ) THEN 
     4811                         zw2d(:,:) = f3_pH(:,:,jk) 
     4812                         CALL iom_put( "OCN_PH"  , zw2d ) 
     4813                     ENDIF 
     4814                     IF( med_diag%OCN_PCO2%dgsave ) THEN 
     4815                        CALL iom_put( "OCN_PCO2"  , f_pco2w2d ) 
     4816                        CALL wrk_dealloc( jpi, jpj,   f_pco2w2d   ) 
     4817                     ENDIF 
     4818                     IF( med_diag%OCNH2CO3%dgsave ) THEN 
     4819                         zw2d(:,:) = f3_h2co3(:,:,jk) 
     4820                         CALL iom_put( "OCNH2CO3"  , zw2d ) 
     4821                     ENDIF 
     4822                     IF( med_diag%OCN_HCO3%dgsave ) THEN 
     4823                         zw2d(:,:) = f3_hco3(:,:,jk) 
     4824                         CALL iom_put( "OCN_HCO3"  , zw2d ) 
     4825                     ENDIF 
     4826                     IF( med_diag%OCN_CO3%dgsave ) THEN 
     4827                         zw2d(:,:) = f3_co3(:,:,jk) 
     4828                         CALL iom_put( "OCN_CO3"  , zw2d ) 
     4829                     ENDIF 
     4830                     IF( med_diag%CO2FLUX%dgsave ) THEN 
     4831                        CALL iom_put( "CO2FLUX"  , f_co2flux2d ) 
     4832                        CALL wrk_dealloc( jpi, jpj,   f_co2flux2d   ) 
     4833                     ENDIF 
     4834                     !!  
     4835                     !! AXY (10/11/16): repeat CO2 flux diagnostic in UKMO/CMIP6 units; this 
     4836                     !!                 both outputs the CO2 flux in specified units and 
     4837                     !!                 sends the resulting field to the coupler 
     4838                     !! JPALM (17/11/16): put CO2 flux (fgco2) alloc/unalloc/pass to zn  
     4839                     !!                 out of diag list request  
     4840                     CALL lbc_lnk( fgco2(:,:),'T',1. ) 
     4841                     IF( med_diag%FGCO2%dgsave ) THEN 
     4842                         CALL iom_put( "FGCO2"  , fgco2 ) 
     4843                     ENDIF 
     4844                     !! JPALM (17/11/16): should mv this fgco2 part  
     4845                     !!                   out of lk_iomput loop 
     4846                     zb_co2_flx = zn_co2_flx 
     4847                     zn_co2_flx = fgco2 
     4848                     IF (lk_oasis) THEN 
     4849                        CO2Flux_out_cpl = zn_co2_flx 
     4850                     ENDIF 
     4851                     CALL wrk_dealloc( jpi, jpj,   fgco2   ) 
     4852                     !! --- 
     4853                     IF( med_diag%OM_CAL%dgsave ) THEN 
     4854                         CALL iom_put( "OM_CAL"  , f_omcal ) 
     4855                     ENDIF 
     4856                     IF( med_diag%OM_ARG%dgsave ) THEN 
     4857                         CALL iom_put( "OM_ARG"  , f_omarg ) 
     4858                     ENDIF 
     4859                     IF( med_diag%TCO2%dgsave ) THEN 
     4860                         CALL iom_put( "TCO2"  , f_TDIC2d ) 
     4861                         CALL wrk_dealloc( jpi, jpj,   f_TDIC2d   ) 
     4862                     ENDIF 
     4863                     IF( med_diag%TALK%dgsave ) THEN 
     4864                         CALL iom_put( "TALK"  , f_TALK2d ) 
     4865                         CALL wrk_dealloc( jpi, jpj,    f_TALK2d  ) 
     4866                     ENDIF 
     4867                     IF( med_diag%KW660%dgsave ) THEN 
     4868                         CALL iom_put( "KW660"  , f_kw6602d ) 
     4869                         CALL wrk_dealloc( jpi, jpj,   f_kw6602d   ) 
     4870                     ENDIF 
     4871                     IF( med_diag%ATM_PP0%dgsave ) THEN 
     4872                         CALL iom_put( "ATM_PP0"  , f_pp02d ) 
     4873                         CALL wrk_dealloc( jpi, jpj,    f_pp02d  ) 
     4874                     ENDIF 
     4875                     IF( med_diag%O2FLUX%dgsave ) THEN 
     4876                         CALL iom_put( "O2FLUX"  , f_o2flux2d ) 
     4877                         CALL wrk_dealloc( jpi, jpj,   f_o2flux2d   ) 
     4878                     ENDIF 
     4879                     IF( med_diag%O2SAT%dgsave ) THEN 
     4880                         CALL iom_put( "O2SAT"  , f_o2sat2d ) 
     4881                         CALL wrk_dealloc( jpi, jpj,  f_o2sat2d    ) 
     4882                     ENDIF 
     4883                     IF( med_diag%CAL_CCD%dgsave ) THEN 
     4884                         CALL iom_put( "CAL_CCD"  , f2_ccd_cal ) 
     4885                     ENDIF 
     4886                     IF( med_diag%ARG_CCD%dgsave ) THEN 
     4887                         CALL iom_put( "ARG_CCD"  , f2_ccd_arg ) 
     4888                     ENDIF 
     4889                     IF (jdms .eq. 1) THEN 
     4890                       IF( med_diag%DMS_SURF%dgsave ) THEN 
     4891                         CALL lbc_lnk(dms_surf2d(:,:),'T',1. ) 
     4892                         CALL iom_put( "DMS_SURF"  , dms_surf2d ) 
     4893                         zb_dms_srf = zn_dms_srf 
     4894                         zn_dms_srf = dms_surf2d 
     4895                         IF (lk_oasis) THEN 
     4896                            DMS_out_cpl = zn_dms_srf 
     4897                         ENDIF 
     4898                         CALL wrk_dealloc( jpi, jpj,   dms_surf2d   )  
     4899                       ENDIF 
     4900                       IF( med_diag%DMS_ANDR%dgsave ) THEN 
     4901                         CALL iom_put( "DMS_ANDR"  , dms_andr2d ) 
     4902                         CALL wrk_dealloc( jpi, jpj,   dms_andr2d   ) 
     4903                       ENDIF 
     4904                       IF( med_diag%DMS_SIMO%dgsave ) THEN 
     4905                         CALL iom_put( "DMS_SIMO"  , dms_simo2d ) 
     4906                         CALL wrk_dealloc( jpi, jpj,    dms_simo2d  ) 
     4907                       ENDIF 
     4908                       IF( med_diag%DMS_ARAN%dgsave ) THEN 
     4909                         CALL iom_put( "DMS_ARAN"  , dms_aran2d ) 
     4910                         CALL wrk_dealloc( jpi, jpj,   dms_aran2d   ) 
     4911                       ENDIF 
     4912                       IF( med_diag%DMS_HALL%dgsave ) THEN 
     4913                         CALL iom_put( "DMS_HALL"  , dms_hall2d ) 
     4914                         CALL wrk_dealloc( jpi, jpj,   dms_hall2d   ) 
     4915                       ENDIF 
     4916                     ENDIF 
     4917                     !! AXY (24/11/16): extra MOCSY diagnostics 
     4918                     IF( med_diag%ATM_XCO2%dgsave ) THEN 
     4919                        CALL iom_put( "ATM_XCO2"  ,   f_xco2a_2d      ) 
     4920                        CALL wrk_dealloc( jpi, jpj,   f_xco2a_2d      ) 
     4921                     ENDIF 
     4922                     IF( med_diag%OCN_FCO2%dgsave ) THEN 
     4923                        CALL iom_put( "OCN_FCO2"  ,   f_fco2w_2d      ) 
     4924                        CALL wrk_dealloc( jpi, jpj,   f_fco2w_2d      ) 
     4925                     ENDIF 
     4926                     IF( med_diag%ATM_FCO2%dgsave ) THEN 
     4927                        CALL iom_put( "ATM_FCO2"  ,   f_fco2a_2d      ) 
     4928                        CALL wrk_dealloc( jpi, jpj,   f_fco2a_2d      ) 
     4929                     ENDIF 
     4930                     IF( med_diag%OCN_RHOSW%dgsave ) THEN 
     4931                        CALL iom_put( "OCN_RHOSW"  ,  f_ocnrhosw_2d   ) 
     4932                        CALL wrk_dealloc( jpi, jpj,   f_ocnrhosw_2d   ) 
     4933                     ENDIF 
     4934                     IF( med_diag%OCN_SCHCO2%dgsave ) THEN 
     4935                        CALL iom_put( "OCN_SCHCO2"  , f_ocnschco2_2d  ) 
     4936                        CALL wrk_dealloc( jpi, jpj,   f_ocnschco2_2d  ) 
     4937                     ENDIF 
     4938                     IF( med_diag%OCN_KWCO2%dgsave ) THEN 
     4939                        CALL iom_put( "OCN_KWCO2"  ,  f_ocnkwco2_2d   ) 
     4940                        CALL wrk_dealloc( jpi, jpj,   f_ocnkwco2_2d   ) 
     4941                     ENDIF 
     4942                     IF( med_diag%OCN_K0%dgsave ) THEN 
     4943                        CALL iom_put( "OCN_K0"  ,     f_ocnk0_2d      ) 
     4944                        CALL wrk_dealloc( jpi, jpj,   f_ocnk0_2d      ) 
     4945                     ENDIF 
     4946                     IF( med_diag%CO2STARAIR%dgsave ) THEN 
     4947                        CALL iom_put( "CO2STARAIR"  , f_co2starair_2d ) 
     4948                        CALL wrk_dealloc( jpi, jpj,   f_co2starair_2d ) 
     4949                     ENDIF 
     4950                     IF( med_diag%OCN_DPCO2%dgsave ) THEN 
     4951                        CALL iom_put( "OCN_DPCO2"  ,  f_ocndpco2_2d   ) 
     4952                        CALL wrk_dealloc( jpi, jpj,   f_ocndpco2_2d   ) 
     4953                     ENDIF 
    41054954# endif                      
    4106           ELSE IF (jk.eq.i0100) THEN  
     4955                 ELSE IF (jk.eq.i0100) THEN  
    41074956#   if defined key_debug_medusa 
    4108              IF ( lwp ) write (numout,*) 'trc_bio_medusa: diag jk = 100' 
    4109              CALL flush(numout) 
     4957                     IF (lwp) write (numout,*) 'trc_bio_medusa: diag jk = 100' 
     4958                     CALL flush(numout) 
    41104959#   endif 
    4111              IF( med_diag%SDT__100%dgsave ) THEN 
    4112                 zw2d(:,:) = fslownflux(:,:) * tmask(:,:,jk) 
    4113                 CALL iom_put( "SDT__100"  , zw2d ) 
    4114              ENDIF 
    4115              IF( med_diag%REG__100%dgsave ) THEN 
    4116                 CALL iom_put( "REG__100"  , fregen2d ) 
    4117              ENDIF 
    4118              IF( med_diag%FDT__100%dgsave ) THEN 
    4119                 CALL iom_put( "FDT__100"  , ffastn ) 
    4120              ENDIF 
    4121              IF( med_diag%RG__100F%dgsave ) THEN 
    4122                 CALL iom_put( "RG__100F"  , fregenfast ) 
    4123              ENDIF 
    4124              IF( med_diag%FDS__100%dgsave ) THEN 
    4125                 CALL iom_put( "FDS__100"  , ffastsi ) 
    4126              ENDIF 
    4127              IF( med_diag%RGS_100F%dgsave ) THEN 
    4128                 CALL iom_put( "RGS_100F"  , fregenfastsi ) 
    4129              ENDIF 
    4130              IF( med_diag%FE_0100%dgsave ) THEN 
    4131                 CALL iom_put( "FE_0100"  , xFree ) 
    4132              ENDIF 
     4960                     IF( med_diag%SDT__100%dgsave ) THEN 
     4961                        zw2d(:,:) = fslownflux(:,:) * tmask(:,:,jk) 
     4962                        CALL iom_put( "SDT__100"  , zw2d ) 
     4963                     ENDIF 
     4964                     IF( med_diag%REG__100%dgsave ) THEN 
     4965                        CALL iom_put( "REG__100"  , fregen2d ) 
     4966                     ENDIF 
     4967                     IF( med_diag%FDT__100%dgsave ) THEN 
     4968                        CALL iom_put( "FDT__100"  , ffastn ) 
     4969                     ENDIF            
     4970                     IF( med_diag%RG__100F%dgsave ) THEN 
     4971                        CALL iom_put( "RG__100F"  , fregenfast ) 
     4972                     ENDIF 
     4973                     IF( med_diag%FDS__100%dgsave ) THEN 
     4974                        CALL iom_put( "FDS__100"  , ffastsi ) 
     4975                     ENDIF          
     4976                     IF( med_diag%RGS_100F%dgsave ) THEN 
     4977                        CALL iom_put( "RGS_100F"  , fregenfastsi ) 
     4978                     ENDIF 
     4979                     IF( med_diag%FE_0100%dgsave ) THEN 
     4980                        CALL iom_put( "FE_0100"  , xFree ) 
     4981                     ENDIF 
    41334982# if defined key_roam                      
    4134              IF( med_diag%RR_0100%dgsave ) THEN 
    4135                 CALL iom_put( "RR_0100"  , ffastca2d ) 
    4136              ENDIF 
    4137              IF( med_diag%SDC__100%dgsave ) THEN 
    4138                 zw2d(:,:) = fslowcflux(:,:) * tmask(:,:,jk) 
    4139                 CALL iom_put( "SDC__100"  , zw2d ) 
    4140              ENDIF 
    4141              IF( med_diag%epC100%dgsave    ) THEN 
    4142                 zw2d(:,:) = (fslowcflux + ffastc) * tmask(:,:,jk) 
    4143                 CALL iom_put( "epC100"    , zw2d ) 
    4144              ENDIF 
    4145              IF( med_diag%epCALC100%dgsave ) THEN 
    4146                 CALL iom_put( "epCALC100" , ffastca ) 
    4147              ENDIF 
    4148              IF( med_diag%epN100%dgsave    ) THEN 
    4149                 zw2d(:,:) = (fslownflux + ffastn) * tmask(:,:,jk) 
    4150                 CALL iom_put( "epN100"    , zw2d ) 
    4151              ENDIF 
    4152              IF( med_diag%epSI100%dgsave   ) THEN 
    4153                 CALL iom_put( "epSI100"   , ffastsi ) 
    4154              ENDIF 
    4155           ELSE IF (jk.eq.i0150) THEN 
     4983                     IF( med_diag%RR_0100%dgsave ) THEN 
     4984                        CALL iom_put( "RR_0100"  , ffastca2d ) 
     4985                     ENDIF                      
     4986                     IF( med_diag%SDC__100%dgsave ) THEN 
     4987                        zw2d(:,:) = fslowcflux(:,:) * tmask(:,:,jk) 
     4988                        CALL iom_put( "SDC__100"  , zw2d ) 
     4989                     ENDIF                   
     4990                     IF( med_diag%epC100%dgsave    ) THEN 
     4991                        zw2d(:,:) = (fslowcflux + ffastc) * tmask(:,:,jk) 
     4992                        CALL iom_put( "epC100"    , zw2d ) 
     4993                     ENDIF          
     4994                     IF( med_diag%epCALC100%dgsave ) THEN 
     4995                        CALL iom_put( "epCALC100" , ffastca ) 
     4996                     ENDIF          
     4997                     IF( med_diag%epN100%dgsave    ) THEN 
     4998                        zw2d(:,:) = (fslownflux + ffastn) * tmask(:,:,jk) 
     4999                        CALL iom_put( "epN100"    , zw2d ) 
     5000                     ENDIF          
     5001                     IF( med_diag%epSI100%dgsave   ) THEN 
     5002                        CALL iom_put( "epSI100"   , ffastsi ) 
     5003                     ENDIF          
     5004                 ELSE IF (jk.eq.i0150) THEN 
    41565005#   if defined key_debug_medusa 
    4157              IF ( lwp ) write (numout,*) 'trc_bio_medusa: diag jk = 150' 
    4158              CALL flush(numout) 
     5006                     IF (lwp) write (numout,*) 'trc_bio_medusa: diag jk = 150' 
     5007                     CALL flush(numout) 
    41595008#   endif 
    41605009# endif                      
    4161           ELSE IF (jk.eq.i0200) THEN 
     5010                 ELSE IF (jk.eq.i0200) THEN 
    41625011#   if defined key_debug_medusa 
    4163              IF ( lwp ) write (numout,*) 'trc_bio_medusa: diag jk = 200' 
    4164              CALL flush(numout) 
     5012                     IF (lwp) write (numout,*) 'trc_bio_medusa: diag jk = 200' 
     5013                     CALL flush(numout) 
    41655014#   endif 
    4166              IF( med_diag%SDT__200%dgsave ) THEN 
    4167                 zw2d(:,:) = fslownflux(:,:) * tmask(:,:,jk) 
    4168                 CALL iom_put( "SDT__200"  , zw2d ) 
    4169              ENDIF 
    4170              IF( med_diag%REG__200%dgsave ) THEN 
    4171                 CALL iom_put( "REG__200"  , fregen2d ) 
    4172              ENDIF 
    4173              IF( med_diag%FDT__200%dgsave ) THEN 
    4174                 CALL iom_put( "FDT__200"  , ffastn ) 
    4175              ENDIF 
    4176              IF( med_diag%RG__200F%dgsave ) THEN 
    4177                 CALL iom_put( "RG__200F"  , fregenfast ) 
    4178              ENDIF 
    4179              IF( med_diag%FDS__200%dgsave ) THEN 
    4180                 CALL iom_put( "FDS__200"  , ffastsi ) 
    4181              ENDIF 
    4182              IF( med_diag%RGS_200F%dgsave ) THEN 
    4183                 CALL iom_put( "RGS_200F"  , fregenfastsi ) 
    4184              ENDIF 
    4185              IF( med_diag%FE_0200%dgsave ) THEN 
    4186                 CALL iom_put( "FE_0200"   , xFree ) 
    4187              ENDIF 
     5015                     IF( med_diag%SDT__200%dgsave ) THEN 
     5016                        zw2d(:,:) = fslownflux(:,:) * tmask(:,:,jk) 
     5017                        CALL iom_put( "SDT__200"  , zw2d ) 
     5018                     ENDIF 
     5019                     IF( med_diag%REG__200%dgsave ) THEN 
     5020                        CALL iom_put( "REG__200"  , fregen2d ) 
     5021                     ENDIF 
     5022                     IF( med_diag%FDT__200%dgsave ) THEN 
     5023                        CALL iom_put( "FDT__200"  , ffastn ) 
     5024                     ENDIF 
     5025                     IF( med_diag%RG__200F%dgsave ) THEN 
     5026                        CALL iom_put( "RG__200F"  , fregenfast ) 
     5027                     ENDIF 
     5028                     IF( med_diag%FDS__200%dgsave ) THEN 
     5029                        CALL iom_put( "FDS__200"  , ffastsi ) 
     5030                     ENDIF 
     5031                     IF( med_diag%RGS_200F%dgsave ) THEN 
     5032                        CALL iom_put( "RGS_200F"  , fregenfastsi ) 
     5033                     ENDIF 
     5034                     IF( med_diag%FE_0200%dgsave ) THEN 
     5035                        CALL iom_put( "FE_0200"   , xFree ) 
     5036                     ENDIF 
    41885037# if defined key_roam                      
    4189              IF( med_diag%SDC__200%dgsave ) THEN 
    4190                 zw2d(:,:) = fslowcflux(:,:) * tmask(:,:,jk) 
    4191                 CALL iom_put( "SDC__200"  , zw2d ) 
    4192              ENDIF 
     5038                     IF( med_diag%SDC__200%dgsave ) THEN 
     5039                        zw2d(:,:) = fslowcflux(:,:) * tmask(:,:,jk) 
     5040                        CALL iom_put( "SDC__200"  , zw2d ) 
     5041                     ENDIF 
    41935042# endif                      
    4194           ELSE IF (jk.eq.i0500) THEN 
     5043                 ELSE IF (jk.eq.i0500) THEN 
    41955044#   if defined key_debug_medusa 
    4196              IF ( lwp ) write (numout,*) 'trc_bio_medusa: diag jk = 500' 
    4197              CALL flush(numout) 
     5045                     IF (lwp) write (numout,*) 'trc_bio_medusa: diag jk = 500' 
     5046                     CALL flush(numout) 
    41985047#   endif 
    4199              IF( med_diag%SDT__500%dgsave ) THEN 
    4200                 zw2d(:,:) = fslownflux(:,:) * tmask(:,:,jk) 
    4201                 CALL iom_put( "SDT__500"  , zw2d ) 
    4202              ENDIF 
    4203              IF( med_diag%REG__500%dgsave ) THEN 
    4204                 CALL iom_put( "REG__500"  , fregen2d ) 
    4205              ENDIF 
    4206              IF( med_diag%FDT__500%dgsave ) THEN 
    4207                 CALL iom_put( "FDT__500"  , ffastn ) 
    4208              ENDIF 
    4209              IF( med_diag%RG__500F%dgsave ) THEN 
    4210                 CALL iom_put( "RG__500F"  , fregenfast ) 
    4211              ENDIF 
    4212              IF( med_diag%FDS__500%dgsave ) THEN 
    4213                 CALL iom_put( "FDS__500"  , ffastsi ) 
    4214              ENDIF 
    4215              IF( med_diag%RGS_500F%dgsave ) THEN 
    4216                 CALL iom_put( "RGS_500F"  , fregenfastsi ) 
    4217              ENDIF 
    4218              IF( med_diag%FE_0500%dgsave ) THEN 
    4219                 CALL iom_put( "FE_0500"  , xFree ) 
    4220              ENDIF 
     5048                     IF( med_diag%SDT__500%dgsave ) THEN 
     5049                        zw2d(:,:) = fslownflux(:,:) * tmask(:,:,jk) 
     5050                        CALL iom_put( "SDT__500"  , zw2d ) 
     5051                     ENDIF 
     5052                     IF( med_diag%REG__500%dgsave ) THEN 
     5053                        CALL iom_put( "REG__500"  , fregen2d ) 
     5054                     ENDIF       
     5055                     IF( med_diag%FDT__500%dgsave ) THEN 
     5056                        CALL iom_put( "FDT__500"  , ffastn ) 
     5057                     ENDIF 
     5058                     IF( med_diag%RG__500F%dgsave ) THEN 
     5059                        CALL iom_put( "RG__500F"  , fregenfast ) 
     5060                     ENDIF 
     5061                     IF( med_diag%FDS__500%dgsave ) THEN 
     5062                        CALL iom_put( "FDS__500"  , ffastsi ) 
     5063                     ENDIF 
     5064                     IF( med_diag%RGS_500F%dgsave ) THEN 
     5065                        CALL iom_put( "RGS_500F"  , fregenfastsi ) 
     5066                     ENDIF 
     5067                     IF( med_diag%FE_0500%dgsave ) THEN 
     5068                        CALL iom_put( "FE_0500"  , xFree ) 
     5069                     ENDIF 
    42215070# if defined key_roam                      
    4222              IF( med_diag%RR_0500%dgsave ) THEN 
    4223                 CALL iom_put( "RR_0500"  , ffastca2d ) 
    4224              ENDIF 
    4225              IF( med_diag%SDC__500%dgsave ) THEN 
    4226                 zw2d(:,:) = fslowcflux(:,:) * tmask(:,:,jk) 
    4227                 CALL iom_put( "SDC__500"  , zw2d ) 
    4228              ENDIF 
     5071                     IF( med_diag%RR_0500%dgsave ) THEN 
     5072                        CALL iom_put( "RR_0500"  , ffastca2d ) 
     5073                     ENDIF 
     5074                     IF( med_diag%SDC__500%dgsave ) THEN 
     5075                        zw2d(:,:) = fslowcflux(:,:) * tmask(:,:,jk) 
     5076                        CALL iom_put( "SDC__500"  , zw2d ) 
     5077                     ENDIF   
    42295078# endif                       
    4230           ELSE IF (jk.eq.i1000) THEN 
     5079                 ELSE IF (jk.eq.i1000) THEN 
    42315080#   if defined key_debug_medusa 
    4232              IF ( lwp ) write (numout,*) 'trc_bio_medusa: diag jk = 1000' 
    4233              CALL flush(numout) 
     5081                     IF (lwp) write (numout,*) 'trc_bio_medusa: diag jk = 1000' 
     5082                     CALL flush(numout) 
    42345083#   endif 
    4235              IF( med_diag%SDT_1000%dgsave ) THEN 
    4236                 zw2d(:,:) = fslownflux(:,:) * tmask(:,:,jk) 
    4237                 CALL iom_put( "SDT_1000"  , zw2d ) 
    4238              ENDIF 
    4239              IF( med_diag%REG_1000%dgsave ) THEN 
    4240                 CALL iom_put( "REG_1000"  , fregen2d ) 
    4241              ENDIF 
    4242              IF( med_diag%FDT_1000%dgsave ) THEN 
    4243                 CALL iom_put( "FDT_1000"  , ffastn ) 
    4244              ENDIF 
    4245              IF( med_diag%RG_1000F%dgsave ) THEN 
    4246                 CALL iom_put( "RG_1000F"  , fregenfast ) 
    4247              ENDIF 
    4248              IF( med_diag%FDS_1000%dgsave ) THEN 
    4249                 CALL iom_put( "FDS_1000"  , ffastsi ) 
    4250              ENDIF 
    4251              IF( med_diag%RGS1000F%dgsave ) THEN 
    4252                 CALL iom_put( "RGS1000F"  , fregenfastsi ) 
    4253              ENDIF 
    4254              IF( med_diag%FE_1000%dgsave ) THEN 
    4255                 CALL iom_put( "FE_1000"  , xFree ) 
    4256              ENDIF 
     5084                     IF( med_diag%SDT_1000%dgsave ) THEN 
     5085                        zw2d(:,:) = fslownflux(:,:) * tmask(:,:,jk) 
     5086                        CALL iom_put( "SDT_1000"  , zw2d ) 
     5087                     ENDIF 
     5088                     IF( med_diag%REG_1000%dgsave ) THEN 
     5089                        CALL iom_put( "REG_1000"  , fregen2d ) 
     5090                     ENDIF   
     5091                     IF( med_diag%FDT_1000%dgsave ) THEN 
     5092                        CALL iom_put( "FDT_1000"  , ffastn ) 
     5093                     ENDIF 
     5094                     IF( med_diag%RG_1000F%dgsave ) THEN 
     5095                        CALL iom_put( "RG_1000F"  , fregenfast ) 
     5096                     ENDIF 
     5097                     IF( med_diag%FDS_1000%dgsave ) THEN 
     5098                        CALL iom_put( "FDS_1000"  , ffastsi ) 
     5099                     ENDIF 
     5100                     IF( med_diag%RGS1000F%dgsave ) THEN 
     5101                        CALL iom_put( "RGS1000F"  , fregenfastsi ) 
     5102                     ENDIF 
     5103                     IF( med_diag%FE_1000%dgsave ) THEN 
     5104                        CALL iom_put( "FE_1000"  , xFree ) 
     5105                     ENDIF 
    42575106# if defined key_roam                      
    4258              IF( med_diag%RR_1000%dgsave ) THEN 
    4259                 CALL iom_put( "RR_1000"  , ffastca2d ) 
    4260                 CALL wrk_dealloc( jpi, jpj,  ffastca2d    ) 
    4261              ENDIF 
    4262              IF( med_diag%SDC_1000%dgsave ) THEN 
    4263                 zw2d(:,:) = fslowcflux(:,:) * tmask(:,:,jk) 
    4264                 CALL iom_put( "SDC_1000"  , zw2d ) 
    4265              ENDIF 
     5107                     IF( med_diag%RR_1000%dgsave ) THEN 
     5108                        CALL iom_put( "RR_1000"  , ffastca2d ) 
     5109                        CALL wrk_dealloc( jpi, jpj,  ffastca2d    ) 
     5110                     ENDIF 
     5111                     IF( med_diag%SDC_1000%dgsave ) THEN 
     5112                        zw2d(:,:) = fslowcflux(:,:) * tmask(:,:,jk) 
     5113                        CALL iom_put( "SDC_1000"  , zw2d ) 
     5114                     ENDIF  
    42665115# endif                       
    4267           ENDIF 
    4268           !! to do on every k loop : 
     5116                 ENDIF 
     5117                 !! to do on every k loop : 
     5118                 IF( med_diag%DETFLUX3%dgsave ) THEN 
     5119                      detflux3d(:,:,jk) = (fslownflux(:,:) + ffastn(:,:)) * tmask(:,:,jk) !! detrital flux 
     5120                      !CALL iom_put( "DETFLUX3"  , ftot_n ) 
     5121                 ENDIF 
     5122# if defined key_roam                      
     5123                 IF( med_diag%EXPC3%dgsave ) THEN 
     5124                    expc3(:,:,jk) = (fslowcflux(:,:) + ffastc(:,:)) * tmask(:,:,jk) 
     5125                 ENDIF           
     5126                 IF( med_diag%EXPN3%dgsave ) THEN 
     5127                    expn3(:,:,jk) = (fslownflux(:,:) + ffastn(:,:)) * tmask(:,:,jk) 
     5128                 ENDIF           
     5129# endif           
     5130              ENDIF 
     5131      !! CLOSE vertical loop 
     5132      ENDDO 
     5133 
     5134      !!---------------------------------------------------------------------- 
     5135      !! Process benthic in/out fluxes 
     5136      !! These can be handled outside of the 3D calculations since the 
     5137      !! benthic pools (and fluxes) are 2D in nature; this code is 
     5138      !! (shamelessly) borrowed from corresponding code in the LOBSTER 
     5139      !! model 
     5140      !!---------------------------------------------------------------------- 
     5141      !! 
     5142      !! IF(lwp) WRITE(numout,*) 'AXY: rdt = ', rdt 
     5143      if (jorgben.eq.1) then 
     5144         za_sed_n(:,:)  = zn_sed_n(:,:)  + &  
     5145         &                ( f_sbenin_n(:,:)  + f_fbenin_n(:,:)  - f_benout_n(:,:)  ) * (rdt / 86400.) 
     5146         zn_sed_n(:,:)  = za_sed_n(:,:) 
     5147         !! 
     5148         za_sed_fe(:,:) = zn_sed_fe(:,:) + & 
     5149         &                ( f_sbenin_fe(:,:) + f_fbenin_fe(:,:) - f_benout_fe(:,:) ) * (rdt / 86400.) 
     5150         zn_sed_fe(:,:) = za_sed_fe(:,:) 
     5151         !! 
     5152         za_sed_c(:,:)  = zn_sed_c(:,:)  + & 
     5153         &                ( f_sbenin_c(:,:)  + f_fbenin_c(:,:)  - f_benout_c(:,:)  ) * (rdt / 86400.) 
     5154         zn_sed_c(:,:)  = za_sed_c(:,:) 
     5155      endif 
     5156      if (jinorgben.eq.1) then 
     5157         za_sed_si(:,:) = zn_sed_si(:,:) + &  
     5158         &                ( f_fbenin_si(:,:) - f_benout_si(:,:) ) * (rdt / 86400.) 
     5159         zn_sed_si(:,:) = za_sed_si(:,:) 
     5160         !! 
     5161         za_sed_ca(:,:) = zn_sed_ca(:,:) + & 
     5162         &                ( f_fbenin_ca(:,:) - f_benout_ca(:,:) ) * (rdt / 86400.) 
     5163         zn_sed_ca(:,:) = za_sed_ca(:,:) 
     5164      endif 
     5165      IF( ln_diatrc ) THEN 
     5166         DO jj = 2,jpjm1 
     5167            DO ji = 2,jpim1 
     5168               trc2d(ji,jj,131) = za_sed_n(ji,jj) 
     5169               trc2d(ji,jj,132) = za_sed_fe(ji,jj) 
     5170               trc2d(ji,jj,133) = za_sed_c(ji,jj) 
     5171               trc2d(ji,jj,134) = za_sed_si(ji,jj) 
     5172               trc2d(ji,jj,135) = za_sed_ca(ji,jj) 
     5173            ENDDO 
     5174         ENDDO 
     5175         !! AXY (07/07/15): temporary hijacking 
     5176# if defined key_roam 
     5177  !!       trc2d(:,:,126) = zn_dms_chn(:,:) 
     5178  !!       trc2d(:,:,127) = zn_dms_chd(:,:) 
     5179  !!       trc2d(:,:,128) = zn_dms_mld(:,:) 
     5180  !!       trc2d(:,:,129) = zn_dms_qsr(:,:) 
     5181  !!       trc2d(:,:,130) = zn_dms_din(:,:) 
     5182# endif 
     5183      ENDIF  
     5184      !! 
     5185      if (ibenthic.eq.2) then 
     5186         !! The code below (in this if ... then ... endif loop) is 
     5187         !! effectively commented out because it does not work as  
     5188         !! anticipated; it can be deleted at a later date 
     5189         if (jorgben.eq.1) then 
     5190            za_sed_n(:,:)  = ( f_sbenin_n(:,:)  + f_fbenin_n(:,:)  - f_benout_n(:,:)  ) * rdt 
     5191            za_sed_fe(:,:) = ( f_sbenin_fe(:,:) + f_fbenin_fe(:,:) - f_benout_fe(:,:) ) * rdt 
     5192            za_sed_c(:,:)  = ( f_sbenin_c(:,:)  + f_fbenin_c(:,:)  - f_benout_c(:,:)  ) * rdt 
     5193         endif 
     5194         if (jinorgben.eq.1) then 
     5195            za_sed_si(:,:) = ( f_fbenin_si(:,:) - f_benout_si(:,:) ) * rdt 
     5196            za_sed_ca(:,:) = ( f_fbenin_ca(:,:) - f_benout_ca(:,:) ) * rdt 
     5197         endif 
     5198         !! 
     5199         !! Leap-frog scheme - only in explicit case, otherwise the time stepping 
     5200         !! is already being done in trczdf 
     5201         !! IF( l_trczdf_exp .AND. (ln_trcadv_cen2 .OR. ln_trcadv_tvd) ) THEN 
     5202         !!    zfact = 2. * rdttra(jk) * FLOAT( ndttrc ) 
     5203         !!    IF( neuler == 0 .AND. kt == nittrc000 )   zfact = rdttra(jk) * FLOAT(ndttrc) 
     5204         !!    if (jorgben.eq.1) then 
     5205         !!       za_sed_n(:,:)  = zb_sed_n(:,:)  + ( zfact * za_sed_n(:,:)  ) 
     5206         !!      za_sed_fe(:,:) = zb_sed_fe(:,:) + ( zfact * za_sed_fe(:,:) ) 
     5207         !!       za_sed_c(:,:)  = zb_sed_c(:,:)  + ( zfact * za_sed_c(:,:)  ) 
     5208         !!    endif 
     5209         !!    if (jinorgben.eq.1) then 
     5210         !!       za_sed_si(:,:) = zb_sed_si(:,:) + ( zfact * za_sed_si(:,:) ) 
     5211         !!       za_sed_ca(:,:) = zb_sed_ca(:,:) + ( zfact * za_sed_ca(:,:) ) 
     5212         !!    endif 
     5213         !! ENDIF 
     5214         !!  
     5215         !! Time filter and swap of arrays 
     5216         IF( ln_trcadv_cen2 .OR. ln_trcadv_tvd  ) THEN ! centred or tvd scheme 
     5217            IF( neuler == 0 .AND. kt == nittrc000 ) THEN 
     5218               if (jorgben.eq.1) then 
     5219                  zb_sed_n(:,:)  = zn_sed_n(:,:) 
     5220                  zn_sed_n(:,:)  = za_sed_n(:,:) 
     5221                  za_sed_n(:,:)  = 0.0 
     5222                  !! 
     5223                  zb_sed_fe(:,:) = zn_sed_fe(:,:) 
     5224                  zn_sed_fe(:,:) = za_sed_fe(:,:) 
     5225                  za_sed_fe(:,:) = 0.0 
     5226                  !! 
     5227                  zb_sed_c(:,:)  = zn_sed_c(:,:) 
     5228                  zn_sed_c(:,:)  = za_sed_c(:,:) 
     5229                  za_sed_c(:,:)  = 0.0 
     5230               endif 
     5231               if (jinorgben.eq.1) then 
     5232                  zb_sed_si(:,:) = zn_sed_si(:,:) 
     5233                  zn_sed_si(:,:) = za_sed_si(:,:) 
     5234                  za_sed_si(:,:) = 0.0 
     5235                  !! 
     5236                  zb_sed_ca(:,:) = zn_sed_ca(:,:) 
     5237                  zn_sed_ca(:,:) = za_sed_ca(:,:) 
     5238                  za_sed_ca(:,:) = 0.0 
     5239               endif 
     5240            ELSE 
     5241               if (jorgben.eq.1) then 
     5242                  zb_sed_n(:,:)  = (atfp  * ( zb_sed_n(:,:)  + za_sed_n(:,:)  )) + (atfp1 * zn_sed_n(:,:) ) 
     5243                  zn_sed_n(:,:)  = za_sed_n(:,:) 
     5244                  za_sed_n(:,:)  = 0.0 
     5245                  !! 
     5246                  zb_sed_fe(:,:) = (atfp  * ( zb_sed_fe(:,:) + za_sed_fe(:,:) )) + (atfp1 * zn_sed_fe(:,:)) 
     5247                  zn_sed_fe(:,:) = za_sed_fe(:,:) 
     5248                  za_sed_fe(:,:) = 0.0 
     5249                  !! 
     5250                  zb_sed_c(:,:)  = (atfp  * ( zb_sed_c(:,:)  + za_sed_c(:,:)  )) + (atfp1 * zn_sed_c(:,:) ) 
     5251                  zn_sed_c(:,:)  = za_sed_c(:,:) 
     5252                  za_sed_c(:,:)  = 0.0 
     5253               endif 
     5254               if (jinorgben.eq.1) then 
     5255                  zb_sed_si(:,:) = (atfp  * ( zb_sed_si(:,:) + za_sed_si(:,:) )) + (atfp1 * zn_sed_si(:,:)) 
     5256                  zn_sed_si(:,:) = za_sed_si(:,:) 
     5257                  za_sed_si(:,:) = 0.0 
     5258                  !! 
     5259                  zb_sed_ca(:,:) = (atfp  * ( zb_sed_ca(:,:) + za_sed_ca(:,:) )) + (atfp1 * zn_sed_ca(:,:)) 
     5260                  zn_sed_ca(:,:) = za_sed_ca(:,:) 
     5261                  za_sed_ca(:,:) = 0.0 
     5262               endif 
     5263            ENDIF 
     5264         ELSE                   !  case of smolar scheme or muscl 
     5265            if (jorgben.eq.1) then 
     5266               zb_sed_n(:,:)  = za_sed_n(:,:) 
     5267               zn_sed_n(:,:)  = za_sed_n(:,:) 
     5268               za_sed_n(:,:)  = 0.0 
     5269               !! 
     5270               zb_sed_fe(:,:) = za_sed_fe(:,:) 
     5271               zn_sed_fe(:,:) = za_sed_fe(:,:) 
     5272               za_sed_fe(:,:) = 0.0 
     5273               !! 
     5274               zb_sed_c(:,:)  = za_sed_c(:,:) 
     5275               zn_sed_c(:,:)  = za_sed_c(:,:) 
     5276               za_sed_c(:,:)  = 0.0 
     5277            endif 
     5278            if (jinorgben.eq.1) then 
     5279               zb_sed_si(:,:) = za_sed_si(:,:) 
     5280               zn_sed_si(:,:) = za_sed_si(:,:) 
     5281               za_sed_si(:,:) = 0.0 
     5282               !! 
     5283               zb_sed_ca(:,:) = za_sed_ca(:,:) 
     5284               zn_sed_ca(:,:) = za_sed_ca(:,:) 
     5285               za_sed_ca(:,:) = 0.0 
     5286            endif 
     5287         ENDIF 
     5288      endif 
     5289       
     5290      IF( ln_diatrc ) THEN 
     5291         !!---------------------------------------------------------------------- 
     5292         !! Output several accumulated diagnostics 
     5293         !!   - biomass-average phytoplankton limitation terms 
     5294         !!   - integrated tendency terms 
     5295         !!---------------------------------------------------------------------- 
     5296         !!  
     5297         DO jj = 2,jpjm1 
     5298            DO ji = 2,jpim1 
     5299               !! non-diatom phytoplankton limitations 
     5300               trc2d(ji,jj,25)  = trc2d(ji,jj,25) / MAX(ftot_pn(ji,jj), rsmall) 
     5301               trc2d(ji,jj,26)  = trc2d(ji,jj,26) / MAX(ftot_pn(ji,jj), rsmall) 
     5302               trc2d(ji,jj,27)  = trc2d(ji,jj,27) / MAX(ftot_pn(ji,jj), rsmall) 
     5303               !! diatom phytoplankton limitations 
     5304               trc2d(ji,jj,28)  = trc2d(ji,jj,28) / MAX(ftot_pd(ji,jj), rsmall) 
     5305               trc2d(ji,jj,29)  = trc2d(ji,jj,29) / MAX(ftot_pd(ji,jj), rsmall) 
     5306               trc2d(ji,jj,30)  = trc2d(ji,jj,30) / MAX(ftot_pd(ji,jj), rsmall) 
     5307               trc2d(ji,jj,31)  = trc2d(ji,jj,31) / MAX(ftot_pd(ji,jj), rsmall) 
     5308               trc2d(ji,jj,32)  = trc2d(ji,jj,32) / MAX(ftot_pd(ji,jj), rsmall) 
     5309               !! tendency terms 
     5310               trc2d(ji,jj,76)  = fflx_n(ji,jj) 
     5311               trc2d(ji,jj,77)  = fflx_si(ji,jj) 
     5312               trc2d(ji,jj,78)  = fflx_fe(ji,jj) 
     5313               !! integrated biomass 
     5314               trc2d(ji,jj,79)  = ftot_pn(ji,jj)       !! integrated non-diatom phytoplankton 
     5315               trc2d(ji,jj,80)  = ftot_pd(ji,jj)       !! integrated diatom phytoplankton 
     5316               trc2d(ji,jj,217) = ftot_zmi(ji,jj)      !! Integrated microzooplankton 
     5317               trc2d(ji,jj,218) = ftot_zme(ji,jj)      !! Integrated mesozooplankton 
     5318               trc2d(ji,jj,219) = ftot_det(ji,jj)      !! Integrated slow detritus, nitrogen 
     5319               trc2d(ji,jj,220) = ftot_dtc(ji,jj)      !! Integrated slow detritus, carbon 
     5320# if defined key_roam 
     5321               !! the balance of nitrogen production/consumption 
     5322               trc2d(ji,jj,111) = fnit_prod(ji,jj)  !! integrated nitrogen production 
     5323               trc2d(ji,jj,112) = fnit_cons(ji,jj)  !! integrated nitrogen consumption 
     5324               !! the balance of carbon production/consumption 
     5325               trc2d(ji,jj,113) = fcar_prod(ji,jj)  !! integrated carbon production 
     5326               trc2d(ji,jj,114) = fcar_cons(ji,jj)  !! integrated carbon consumption 
     5327               !! the balance of oxygen production/consumption 
     5328               trc2d(ji,jj,115) = foxy_prod(ji,jj)  !! integrated oxygen production 
     5329               trc2d(ji,jj,116) = foxy_cons(ji,jj)  !! integrated oxygen consumption 
     5330               trc2d(ji,jj,117) = foxy_anox(ji,jj)  !! integrated unrealised oxygen consumption 
     5331# endif 
     5332            ENDDO 
     5333         ENDDO 
     5334          
     5335# if defined key_roam 
     5336#  if defined key_axy_nancheck 
     5337         !!---------------------------------------------------------------------- 
     5338         !! Check for NaNs in diagnostic outputs 
     5339         !!---------------------------------------------------------------------- 
     5340         !!  
     5341         !! 2D diagnostics 
     5342         DO jn = 1,150 
     5343            fq0 = SUM(trc2d(:,:,jn)) 
     5344            !! AXY (30/01/14): "isnan" problem on HECTOR 
     5345            !! if (fq0 /= fq0 ) then 
     5346            if ( ieee_is_nan( fq0 ) ) then 
     5347               !! there's a NaN here 
     5348               if (lwp) write(numout,*) 'NAN detected in 2D diagnostic field', jn, 'at time', kt, 'at position:' 
     5349               DO jj = 1,jpj 
     5350                  DO ji = 1,jpi 
     5351                     if ( ieee_is_nan( trc2d(ji,jj,jn) ) ) then 
     5352                        if (lwp) write (numout,'(a,3i6)') 'NAN-CHECK', & 
     5353                        &        ji, jj, jn 
     5354                     endif 
     5355                  ENDDO 
     5356               ENDDO 
     5357          CALL ctl_stop( 'trcbio_medusa, NAN in 2D diagnostic field' ) 
     5358            endif 
     5359         ENDDO 
     5360         !! 
     5361         !! 3D diagnostics 
     5362         DO jn = 1,5 
     5363            fq0 = SUM(trc3d(:,:,:,jn)) 
     5364            !! AXY (30/01/14): "isnan" problem on HECTOR 
     5365            !! if (fq0 /= fq0 ) then 
     5366            if ( ieee_is_nan( fq0 ) ) then 
     5367               !! there's a NaN here 
     5368               if (lwp) write(numout,*) 'NAN detected in 3D diagnostic field', jn, 'at time', kt, 'at position:' 
     5369               DO jk = 1,jpk 
     5370                  DO jj = 1,jpj 
     5371                     DO ji = 1,jpi 
     5372                        if ( ieee_is_nan( trc3d(ji,jj,jk,jn) ) ) then 
     5373                           if (lwp) write (numout,'(a,4i6)') 'NAN-CHECK', & 
     5374                           &        ji, jj, jk, jn 
     5375                        endif 
     5376                     ENDDO 
     5377                  ENDDO 
     5378               ENDDO 
     5379          CALL ctl_stop( 'trcbio_medusa, NAN in 3D diagnostic field' ) 
     5380            endif 
     5381         ENDDO 
     5382    CALL flush(numout) 
     5383#  endif 
     5384# endif 
     5385 
     5386         !!---------------------------------------------------------------------- 
     5387         !! Don't know what this does; belongs to someone else ... 
     5388         !!---------------------------------------------------------------------- 
     5389         !!  
     5390         !! Lateral boundary conditions on trc2d 
     5391         DO jn=1,jp_medusa_2d 
     5392             CALL lbc_lnk(trc2d(:,:,jn),'T',1. ) 
     5393         ENDDO  
     5394 
     5395         !! Lateral boundary conditions on trc3d 
     5396         DO jn=1,jp_medusa_3d 
     5397             CALL lbc_lnk(trc3d(:,:,1,jn),'T',1. ) 
     5398         ENDDO  
     5399 
     5400 
     5401# if defined key_axy_nodiag 
     5402         !!---------------------------------------------------------------------- 
     5403         !! Blank diagnostics as a NaN-trap 
     5404         !!---------------------------------------------------------------------- 
     5405         !!  
     5406         !! blank 2D diagnostic array 
     5407         trc2d(:,:,:) = 0.e0 
     5408         !! 
     5409         !! blank 3D diagnostic array 
     5410         trc3d(:,:,:,:) = 0.e0 
     5411# endif 
     5412 
     5413 
     5414         !!---------------------------------------------------------------------- 
     5415         !! Add in XML diagnostics stuff 
     5416         !!---------------------------------------------------------------------- 
     5417         !! 
     5418         !! ** 2D diagnostics 
     5419         DO jn=1,jp_medusa_2d 
     5420            CALL iom_put(TRIM(ctrc2d(jn)), trc2d(:,:,jn)) 
     5421         END DO 
     5422!! AXY (17/02/14): don't think I need this if I modify the above for all diagnostics 
     5423!! #  if defined key_roam 
     5424!!          DO jn=91,jp_medusa_2d 
     5425!!             CALL iom_put(TRIM(ctrc2d(jn)), trc2d(:,:,jn)) 
     5426!!          END DO       
     5427!! #  endif 
     5428         !! 
     5429         !! ** 3D diagnostics 
     5430         DO jn=1,jp_medusa_3d 
     5431            CALL iom_put(TRIM(ctrc3d(jn)), trc3d(:,:,:,jn)) 
     5432         END DO 
     5433!! AXY (17/02/14): don't think I need this if I modify the above for all diagnostics 
     5434!! #  if defined key_roam 
     5435!!          CALL iom_put(TRIM(ctrc3d(5)), trc3d(:,:,:,5)) 
     5436!! #  endif 
     5437 
     5438 
     5439      ELSE IF( lk_iomput .AND. .NOT. ln_diatrc ) THEN 
     5440         !!!---------------------------------------------------------------------- 
     5441         !! Add very last diag calculations  
     5442         !!!---------------------------------------------------------------------- 
     5443         DO jj = 2,jpjm1 
     5444            DO ji = 2,jpim1 
     5445               !!          
     5446               IF( med_diag%PN_JLIM%dgsave ) THEN 
     5447                  fjln2d(ji,jj) = fjln2d(ji,jj)   / MAX(ftot_pn(ji,jj), rsmall) 
     5448               ENDIF 
     5449               IF( med_diag%PN_NLIM%dgsave ) THEN 
     5450                  fnln2d(ji,jj) = fnln2d(ji,jj)   / MAX(ftot_pn(ji,jj), rsmall) 
     5451               ENDIF 
     5452               IF( med_diag%PN_FELIM%dgsave ) THEN 
     5453                  ffln2d(ji,jj) = ffln2d(ji,jj)   / MAX(ftot_pn(ji,jj), rsmall) 
     5454               ENDIF 
     5455               IF( med_diag%PD_JLIM%dgsave ) THEN 
     5456                  fjld2d(ji,jj) = fjld2d(ji,jj)   / MAX(ftot_pd(ji,jj), rsmall) 
     5457               ENDIF 
     5458               IF( med_diag%PD_NLIM%dgsave ) THEN 
     5459                  fnld2d(ji,jj) = fnld2d(ji,jj)   / MAX(ftot_pd(ji,jj), rsmall) 
     5460               ENDIF 
     5461               IF( med_diag%PD_FELIM%dgsave ) THEN 
     5462                  ffld2d(ji,jj) = ffld2d(ji,jj)   / MAX(ftot_pd(ji,jj), rsmall) 
     5463               ENDIF 
     5464               IF( med_diag%PD_SILIM%dgsave ) THEN 
     5465                  fsld2d2(ji,jj) = fsld2d2(ji,jj) / MAX(ftot_pd(ji,jj), rsmall) 
     5466               ENDIF 
     5467               IF( med_diag%PDSILIM2%dgsave ) THEN 
     5468                  fsld2d(ji,jj) = fsld2d(ji,jj)   / MAX(ftot_pd(ji,jj), rsmall) 
     5469               ENDIF 
     5470            ENDDO 
     5471         ENDDO 
     5472         !!---------------------------------------------------------------------- 
     5473         !! Add in XML diagnostics stuff 
     5474         !!---------------------------------------------------------------------- 
     5475         !! 
     5476         !! ** 2D diagnostics 
     5477#   if defined key_debug_medusa 
     5478         IF (lwp) write (numout,*) 'trc_bio_medusa: export all diag.' 
     5479         CALL flush(numout) 
     5480#   endif 
     5481         IF ( med_diag%INVTN%dgsave ) THEN 
     5482            CALL iom_put( "INVTN"  , ftot_n ) 
     5483         ENDIF 
     5484         IF ( med_diag%INVTSI%dgsave ) THEN 
     5485            CALL iom_put( "INVTSI"  , ftot_si ) 
     5486         ENDIF 
     5487         IF ( med_diag%INVTFE%dgsave ) THEN 
     5488            CALL iom_put( "INVTFE"  , ftot_fe ) 
     5489         ENDIF                            
     5490         IF ( med_diag%ML_PRN%dgsave ) THEN 
     5491            CALL iom_put( "ML_PRN"  , fprn_ml ) 
     5492         ENDIF 
     5493         IF ( med_diag%ML_PRD%dgsave ) THEN 
     5494            CALL iom_put( "ML_PRD"  , fprd_ml ) 
     5495         ENDIF 
     5496         IF ( med_diag%OCAL_LVL%dgsave ) THEN 
     5497            CALL iom_put( "OCAL_LVL"  , fccd ) 
     5498         ENDIF 
     5499         IF ( med_diag%PN_JLIM%dgsave ) THEN 
     5500            CALL iom_put( "PN_JLIM"  , fjln2d ) 
     5501            CALL wrk_dealloc( jpi, jpj,   fjln2d   ) 
     5502         ENDIF 
     5503         IF ( med_diag%PN_NLIM%dgsave ) THEN 
     5504            CALL iom_put( "PN_NLIM"  , fnln2d ) 
     5505            CALL wrk_dealloc( jpi, jpj,   fnln2d   ) 
     5506         ENDIF 
     5507         IF ( med_diag%PN_FELIM%dgsave ) THEN 
     5508            CALL iom_put( "PN_FELIM"  , ffln2d ) 
     5509            CALL wrk_dealloc( jpi, jpj,   ffln2d   ) 
     5510         ENDIF 
     5511         IF ( med_diag%PD_JLIM%dgsave ) THEN 
     5512            CALL iom_put( "PD_JLIM"  , fjld2d ) 
     5513            CALL wrk_dealloc( jpi, jpj,  fjld2d    ) 
     5514         ENDIF 
     5515         IF ( med_diag%PD_NLIM%dgsave ) THEN 
     5516            CALL iom_put( "PD_NLIM"  , fnld2d ) 
     5517            CALL wrk_dealloc( jpi, jpj,   fnld2d  ) 
     5518         ENDIF 
     5519         IF ( med_diag%PD_FELIM%dgsave ) THEN 
     5520            CALL iom_put( "PD_FELIM"  , ffld2d ) 
     5521            CALL wrk_dealloc( jpi, jpj,  ffld2d    ) 
     5522         ENDIF 
     5523         IF ( med_diag%PD_SILIM%dgsave ) THEN 
     5524            CALL iom_put( "PD_SILIM"  , fsld2d2 ) 
     5525            CALL wrk_dealloc( jpi, jpj,   fsld2d2   ) 
     5526         ENDIF 
     5527         IF ( med_diag%PDSILIM2%dgsave ) THEN 
     5528            CALL iom_put( "PDSILIM2"  , fsld2d ) 
     5529            CALL wrk_dealloc( jpi, jpj,   fsld2d   ) 
     5530         ENDIF 
     5531         IF ( med_diag%INTFLX_N%dgsave ) THEN 
     5532            CALL iom_put( "INTFLX_N"  , fflx_n ) 
     5533         ENDIF 
     5534         IF ( med_diag%INTFLX_SI%dgsave ) THEN 
     5535            CALL iom_put( "INTFLX_SI"  , fflx_si ) 
     5536         ENDIF 
     5537         IF ( med_diag%INTFLX_FE%dgsave ) THEN 
     5538            CALL iom_put( "INTFLX_FE"  , fflx_fe ) 
     5539         ENDIF         
     5540         IF ( med_diag%INT_PN%dgsave ) THEN 
     5541            CALL iom_put( "INT_PN"  , ftot_pn ) 
     5542         ENDIF 
     5543         IF ( med_diag%INT_PD%dgsave ) THEN 
     5544            CALL iom_put( "INT_PD"  , ftot_pd ) 
     5545         ENDIF          
     5546         IF ( med_diag%INT_ZMI%dgsave ) THEN 
     5547            CALL iom_put( "INT_ZMI"  , ftot_zmi ) 
     5548         ENDIF 
     5549         IF ( med_diag%INT_ZME%dgsave ) THEN 
     5550            CALL iom_put( "INT_ZME"  , ftot_zme ) 
     5551         ENDIF 
     5552         IF ( med_diag%INT_DET%dgsave ) THEN 
     5553            CALL iom_put( "INT_DET"  , ftot_det ) 
     5554         ENDIF 
     5555         IF ( med_diag%INT_DTC%dgsave ) THEN 
     5556            CALL iom_put( "INT_DTC"  , ftot_dtc ) 
     5557         ENDIF 
     5558         IF ( med_diag%BEN_N%dgsave ) THEN 
     5559            CALL iom_put( "BEN_N"  , za_sed_n ) 
     5560         ENDIF 
     5561         IF ( med_diag%BEN_FE%dgsave ) THEN 
     5562            CALL iom_put( "BEN_FE"  , za_sed_fe ) 
     5563         ENDIF 
     5564         IF ( med_diag%BEN_C%dgsave ) THEN 
     5565            CALL iom_put( "BEN_C"  , za_sed_c ) 
     5566         ENDIF 
     5567         IF ( med_diag%BEN_SI%dgsave ) THEN 
     5568            CALL iom_put( "BEN_SI"  , za_sed_si ) 
     5569         ENDIF 
     5570         IF ( med_diag%BEN_CA%dgsave ) THEN 
     5571            CALL iom_put( "BEN_CA"  , za_sed_ca ) 
     5572         ENDIF 
     5573         IF ( med_diag%RUNOFF%dgsave ) THEN 
     5574            CALL iom_put( "RUNOFF"  , f_runoff ) 
     5575         ENDIF  
     5576# if defined key_roam         
     5577         IF ( med_diag%N_PROD%dgsave ) THEN 
     5578            CALL iom_put( "N_PROD"  , fnit_prod ) 
     5579         ENDIF 
     5580         IF ( med_diag%N_CONS%dgsave ) THEN 
     5581            CALL iom_put( "N_CONS"  , fnit_cons ) 
     5582         ENDIF 
     5583         IF ( med_diag%C_PROD%dgsave ) THEN 
     5584            CALL iom_put( "C_PROD"  , fcar_prod ) 
     5585         ENDIF 
     5586         IF ( med_diag%C_CONS%dgsave ) THEN 
     5587            CALL iom_put( "C_CONS"  , fcar_cons ) 
     5588         ENDIF 
     5589         IF ( med_diag%O2_PROD%dgsave ) THEN 
     5590            CALL iom_put( "O2_PROD"  , foxy_prod ) 
     5591         ENDIF 
     5592         IF ( med_diag%O2_CONS%dgsave ) THEN 
     5593            CALL iom_put( "O2_CONS"  , foxy_cons ) 
     5594         ENDIF 
     5595         IF ( med_diag%O2_ANOX%dgsave ) THEN 
     5596            CALL iom_put( "O2_ANOX"  , foxy_anox ) 
     5597         ENDIF 
     5598         IF ( med_diag%INVTC%dgsave ) THEN 
     5599            CALL iom_put( "INVTC"  , ftot_c ) 
     5600         ENDIF 
     5601         IF ( med_diag%INVTALK%dgsave ) THEN 
     5602            CALL iom_put( "INVTALK"  , ftot_a ) 
     5603         ENDIF 
     5604         IF ( med_diag%INVTO2%dgsave ) THEN 
     5605            CALL iom_put( "INVTO2"  , ftot_o2 ) 
     5606         ENDIF 
     5607         IF ( med_diag%COM_RESP%dgsave ) THEN 
     5608            CALL iom_put( "COM_RESP"  , fcomm_resp ) 
     5609         ENDIF          
     5610# endif       
     5611         !! 
     5612         !! diagnostic filled in the i-j-k main loop 
     5613         !!-------------------------------------------- 
     5614         IF ( med_diag%PRN%dgsave ) THEN 
     5615            CALL iom_put( "PRN"  , fprn2d ) 
     5616            CALL wrk_dealloc( jpi, jpj,   fprn2d   ) 
     5617         ENDIF 
     5618         IF ( med_diag%MPN%dgsave ) THEN 
     5619            CALL iom_put( "MPN"  ,fdpn2d  ) 
     5620            CALL wrk_dealloc( jpi, jpj,    fdpn2d  ) 
     5621         ENDIF 
     5622         IF ( med_diag%PRD%dgsave ) THEN 
     5623            CALL iom_put( "PRD"  ,fprd2d  ) 
     5624            CALL wrk_dealloc( jpi, jpj,   fprd2d  ) 
     5625         ENDIF 
     5626         IF( med_diag%MPD%dgsave ) THEN 
     5627            CALL iom_put( "MPD"  , fdpd2d ) 
     5628            CALL wrk_dealloc( jpi, jpj,    fdpd2d ) 
     5629         ENDIF 
     5630         !  IF( med_diag%DSED%dgsave ) THEN 
     5631         !      CALL iom_put( "DSED"  , ftot_n ) 
     5632         !  ENDIF 
     5633         IF( med_diag%OPAL%dgsave ) THEN 
     5634            CALL iom_put( "OPAL"  , fprds2d ) 
     5635            CALL wrk_dealloc( jpi, jpj,   fprds2d  ) 
     5636         ENDIF 
     5637         IF( med_diag%OPALDISS%dgsave ) THEN 
     5638            CALL iom_put( "OPALDISS"  , fsdiss2d ) 
     5639            CALL wrk_dealloc( jpi, jpj,   fsdiss2d  ) 
     5640         ENDIF 
     5641         IF( med_diag%GMIPn%dgsave ) THEN 
     5642            CALL iom_put( "GMIPn"  , fgmipn2d ) 
     5643            CALL wrk_dealloc( jpi, jpj,   fgmipn2d  ) 
     5644         ENDIF 
     5645         IF( med_diag%GMID%dgsave ) THEN 
     5646            CALL iom_put( "GMID"  , fgmid2d ) 
     5647            CALL wrk_dealloc( jpi, jpj,  fgmid2d  ) 
     5648         ENDIF 
     5649         IF( med_diag%MZMI%dgsave ) THEN 
     5650            CALL iom_put( "MZMI"  , fdzmi2d ) 
     5651            CALL wrk_dealloc( jpi, jpj,   fdzmi2d   ) 
     5652         ENDIF 
     5653         IF( med_diag%GMEPN%dgsave ) THEN 
     5654            CALL iom_put( "GMEPN"  , fgmepn2d ) 
     5655            CALL wrk_dealloc( jpi, jpj,   fgmepn2d  ) 
     5656         ENDIF 
     5657         IF( med_diag%GMEPD%dgsave ) THEN 
     5658            CALL iom_put( "GMEPD"  , fgmepd2d ) 
     5659            CALL wrk_dealloc( jpi, jpj,   fgmepd2d   ) 
     5660         ENDIF 
     5661         IF( med_diag%GMEZMI%dgsave ) THEN 
     5662            CALL iom_put( "GMEZMI"  , fgmezmi2d ) 
     5663            CALL wrk_dealloc( jpi, jpj,   fgmezmi2d   ) 
     5664         ENDIF 
     5665         IF( med_diag%GMED%dgsave ) THEN 
     5666            CALL iom_put( "GMED"  , fgmed2d ) 
     5667            CALL wrk_dealloc( jpi, jpj,    fgmed2d  ) 
     5668         ENDIF 
     5669         IF( med_diag%MZME%dgsave ) THEN 
     5670            CALL iom_put( "MZME"  , fdzme2d ) 
     5671            CALL wrk_dealloc( jpi, jpj,  fdzme2d    ) 
     5672         ENDIF 
     5673         !  IF( med_diag%DEXP%dgsave ) THEN 
     5674         !      CALL iom_put( "DEXP"  , ftot_n ) 
     5675         !  ENDIF 
     5676         IF( med_diag%DETN%dgsave ) THEN 
     5677            CALL iom_put( "DETN"  , fslown2d ) 
     5678            CALL wrk_dealloc( jpi, jpj,  fslown2d    ) 
     5679         ENDIF 
     5680         IF( med_diag%MDET%dgsave ) THEN 
     5681            CALL iom_put( "MDET"  , fdd2d ) 
     5682            CALL wrk_dealloc( jpi, jpj,   fdd2d   ) 
     5683         ENDIF 
     5684         IF( med_diag%AEOLIAN%dgsave ) THEN 
     5685            CALL iom_put( "AEOLIAN"  , ffetop2d ) 
     5686            CALL wrk_dealloc( jpi, jpj,   ffetop2d   ) 
     5687         ENDIF 
     5688         IF( med_diag%BENTHIC%dgsave ) THEN 
     5689            CALL iom_put( "BENTHIC"  , ffebot2d ) 
     5690            CALL wrk_dealloc( jpi, jpj,   ffebot2d   ) 
     5691         ENDIF 
     5692         IF( med_diag%SCAVENGE%dgsave ) THEN 
     5693            CALL iom_put( "SCAVENGE"  , ffescav2d ) 
     5694            CALL wrk_dealloc( jpi, jpj,   ffescav2d  ) 
     5695         ENDIF 
     5696         !!  
     5697         IF( med_diag%TOTREG_N%dgsave ) THEN 
     5698            CALL iom_put( "TOTREG_N"  , fregen2d ) 
     5699            CALL wrk_dealloc( jpi, jpj,   fregen2d   ) 
     5700         ENDIF 
     5701         IF( med_diag%TOTRG_SI%dgsave ) THEN 
     5702            CALL iom_put( "TOTRG_SI"  , fregensi2d ) 
     5703            CALL wrk_dealloc( jpi, jpj,    fregensi2d  ) 
     5704         ENDIF 
     5705         !!  
     5706         IF( med_diag%FASTN%dgsave ) THEN 
     5707            CALL iom_put( "FASTN"  , ftempn2d ) 
     5708            CALL wrk_dealloc( jpi, jpj,   ftempn2d   ) 
     5709         ENDIF 
     5710         IF( med_diag%FASTSI%dgsave ) THEN 
     5711            CALL iom_put( "FASTSI"  , ftempsi2d ) 
     5712            CALL wrk_dealloc( jpi, jpj,   ftempsi2d   ) 
     5713         ENDIF 
     5714         IF( med_diag%FASTFE%dgsave ) THEN 
     5715            CALL iom_put( "FASTFE"  , ftempfe2d ) 
     5716            CALL wrk_dealloc( jpi, jpj,    ftempfe2d  ) 
     5717         ENDIF 
     5718         IF( med_diag%FASTC%dgsave ) THEN 
     5719            CALL iom_put( "FASTC"  , ftempc2d ) 
     5720            CALL wrk_dealloc( jpi, jpj,  ftempc2d    ) 
     5721         ENDIF 
     5722         IF( med_diag%FASTCA%dgsave ) THEN 
     5723            CALL iom_put( "FASTCA"  , ftempca2d ) 
     5724            CALL wrk_dealloc( jpi, jpj,  ftempca2d   ) 
     5725         ENDIF 
     5726         !!  
     5727         IF( med_diag%REMINN%dgsave ) THEN 
     5728            CALL iom_put( "REMINN"  , freminn2d ) 
     5729            CALL wrk_dealloc( jpi, jpj,   freminn2d   ) 
     5730         ENDIF 
     5731         IF( med_diag%REMINSI%dgsave ) THEN 
     5732            CALL iom_put( "REMINSI"  , freminsi2d ) 
     5733            CALL wrk_dealloc( jpi, jpj,   freminsi2d   ) 
     5734         ENDIF 
     5735         IF( med_diag%REMINFE%dgsave ) THEN 
     5736            CALL iom_put( "REMINFE"  , freminfe2d ) 
     5737            CALL wrk_dealloc( jpi, jpj,  freminfe2d    ) 
     5738         ENDIF 
     5739         IF( med_diag%REMINC%dgsave ) THEN 
     5740            CALL iom_put( "REMINC"  , freminc2d ) 
     5741            CALL wrk_dealloc( jpi, jpj,    freminc2d  ) 
     5742         ENDIF 
     5743         IF( med_diag%REMINCA%dgsave ) THEN 
     5744            CALL iom_put( "REMINCA"  , freminca2d ) 
     5745            CALL wrk_dealloc( jpi, jpj,   freminca2d  ) 
     5746         ENDIF 
     5747         IF( med_diag%SEAFLRN%dgsave ) THEN 
     5748            CALL iom_put( "SEAFLRN"  , fsedn ) 
     5749         ENDIF 
     5750         IF( med_diag%SEAFLRSI%dgsave ) THEN 
     5751            CALL iom_put( "SEAFLRSI"  , fsedsi ) 
     5752         ENDIF 
     5753         IF( med_diag%SEAFLRFE%dgsave ) THEN 
     5754            CALL iom_put( "SEAFLRFE"  , fsedfe ) 
     5755         ENDIF 
     5756         IF( med_diag%SEAFLRC%dgsave ) THEN 
     5757            CALL iom_put( "SEAFLRC"  , fsedc ) 
     5758         ENDIF 
     5759         IF( med_diag%SEAFLRCA%dgsave ) THEN 
     5760            CALL iom_put( "SEAFLRCA"  , fsedca ) 
     5761         ENDIF 
     5762         !! 
     5763# if defined key_roam             
     5764         !! 
     5765         IF( med_diag%RIV_N%dgsave ) THEN 
     5766            CALL iom_put( "RIV_N"  , rivn2d ) 
     5767            CALL wrk_dealloc( jpi, jpj,    rivn2d  ) 
     5768         ENDIF 
     5769         IF( med_diag%RIV_SI%dgsave ) THEN 
     5770            CALL iom_put( "RIV_SI"  , rivsi2d ) 
     5771            CALL wrk_dealloc( jpi, jpj,   rivsi2d   ) 
     5772         ENDIF 
     5773         IF( med_diag%RIV_C%dgsave ) THEN 
     5774            CALL iom_put( "RIV_C"  , rivc2d ) 
     5775            CALL wrk_dealloc( jpi, jpj,    rivc2d  ) 
     5776         ENDIF 
     5777         IF( med_diag%RIV_ALK%dgsave ) THEN 
     5778            CALL iom_put( "RIV_ALK"  , rivalk2d ) 
     5779            CALL wrk_dealloc( jpi, jpj,  rivalk2d    ) 
     5780         ENDIF 
     5781         IF( med_diag%DETC%dgsave ) THEN 
     5782            CALL iom_put( "DETC"  , fslowc2d ) 
     5783            CALL wrk_dealloc( jpi, jpj,   fslowc2d   ) 
     5784         ENDIF 
     5785         !! 
     5786         IF( med_diag%PN_LLOSS%dgsave ) THEN 
     5787            CALL iom_put( "PN_LLOSS"  , fdpn22d ) 
     5788            CALL wrk_dealloc( jpi, jpj,   fdpn22d   ) 
     5789         ENDIF 
     5790         IF( med_diag%PD_LLOSS%dgsave ) THEN 
     5791            CALL iom_put( "PD_LLOSS"  , fdpd22d ) 
     5792            CALL wrk_dealloc( jpi, jpj,   fdpd22d   ) 
     5793         ENDIF 
     5794         IF( med_diag%ZI_LLOSS%dgsave ) THEN 
     5795            CALL iom_put( "ZI_LLOSS"  , fdzmi22d ) 
     5796             CALL wrk_dealloc( jpi, jpj,    fdzmi22d  ) 
     5797          ENDIF 
     5798          IF( med_diag%ZE_LLOSS%dgsave ) THEN 
     5799             CALL iom_put( "ZE_LLOSS"  , fdzme22d ) 
     5800             CALL wrk_dealloc( jpi, jpj,   fdzme22d   ) 
     5801          ENDIF 
     5802          IF( med_diag%ZI_MES_N%dgsave ) THEN 
     5803             CALL iom_put( "ZI_MES_N"  , zimesn2d ) 
     5804             CALL wrk_dealloc( jpi, jpj,    zimesn2d  ) 
     5805          ENDIF 
     5806          IF( med_diag%ZI_MES_D%dgsave ) THEN 
     5807             CALL iom_put( "ZI_MES_D"  , zimesd2d ) 
     5808             CALL wrk_dealloc( jpi, jpj,    zimesd2d  ) 
     5809          ENDIF 
     5810          IF( med_diag%ZI_MES_C%dgsave ) THEN 
     5811             CALL iom_put( "ZI_MES_C"  , zimesc2d ) 
     5812             CALL wrk_dealloc( jpi, jpj,    zimesc2d  ) 
     5813          ENDIF 
     5814          IF( med_diag%ZI_MESDC%dgsave ) THEN 
     5815             CALL iom_put( "ZI_MESDC"  ,zimesdc2d  ) 
     5816             CALL wrk_dealloc( jpi, jpj,    zimesdc2d  ) 
     5817          ENDIF 
     5818          IF( med_diag%ZI_EXCR%dgsave ) THEN 
     5819             CALL iom_put( "ZI_EXCR"  , ziexcr2d ) 
     5820             CALL wrk_dealloc( jpi, jpj,    ziexcr2d ) 
     5821          ENDIF 
     5822          IF( med_diag%ZI_RESP%dgsave ) THEN 
     5823             CALL iom_put( "ZI_RESP"  , ziresp2d ) 
     5824             CALL wrk_dealloc( jpi, jpj,   ziresp2d   ) 
     5825          ENDIF 
     5826          IF( med_diag%ZI_GROW%dgsave ) THEN 
     5827             CALL iom_put( "ZI_GROW"  , zigrow2d ) 
     5828             CALL wrk_dealloc( jpi, jpj,   zigrow2d   ) 
     5829          ENDIF 
     5830          IF( med_diag%ZE_MES_N%dgsave ) THEN 
     5831             CALL iom_put( "ZE_MES_N"  , zemesn2d ) 
     5832             CALL wrk_dealloc( jpi, jpj,    zemesn2d  ) 
     5833          ENDIF 
     5834          IF( med_diag%ZE_MES_D%dgsave ) THEN 
     5835             CALL iom_put( "ZE_MES_D"  , zemesd2d ) 
     5836             CALL wrk_dealloc( jpi, jpj,    zemesd2d  ) 
     5837          ENDIF 
     5838          IF( med_diag%ZE_MES_C%dgsave ) THEN 
     5839             CALL iom_put( "ZE_MES_C"  , zemesc2d ) 
     5840             CALL wrk_dealloc( jpi, jpj,   zemesc2d   ) 
     5841          ENDIF 
     5842          IF( med_diag%ZE_MESDC%dgsave ) THEN 
     5843             CALL iom_put( "ZE_MESDC"  , zemesdc2d ) 
     5844             CALL wrk_dealloc( jpi, jpj,   zemesdc2d   ) 
     5845          ENDIF 
     5846          IF( med_diag%ZE_EXCR%dgsave ) THEN 
     5847             CALL iom_put( "ZE_EXCR"  , zeexcr2d ) 
     5848             CALL wrk_dealloc( jpi, jpj,   zeexcr2d   ) 
     5849          ENDIF 
     5850          IF( med_diag%ZE_RESP%dgsave ) THEN 
     5851             CALL iom_put( "ZE_RESP"  , zeresp2d ) 
     5852             CALL wrk_dealloc( jpi, jpj,    zeresp2d  ) 
     5853          ENDIF 
     5854          IF( med_diag%ZE_GROW%dgsave ) THEN 
     5855             CALL iom_put( "ZE_GROW"  , zegrow2d ) 
     5856             CALL wrk_dealloc( jpi, jpj,   zegrow2d   ) 
     5857          ENDIF 
     5858          IF( med_diag%MDETC%dgsave ) THEN 
     5859             CALL iom_put( "MDETC"  , mdetc2d ) 
     5860             CALL wrk_dealloc( jpi, jpj,   mdetc2d   ) 
     5861          ENDIF 
     5862          IF( med_diag%GMIDC%dgsave ) THEN 
     5863             CALL iom_put( "GMIDC"  , gmidc2d ) 
     5864             CALL wrk_dealloc( jpi, jpj,    gmidc2d  ) 
     5865          ENDIF 
     5866          IF( med_diag%GMEDC%dgsave ) THEN 
     5867             CALL iom_put( "GMEDC"  , gmedc2d ) 
     5868             CALL wrk_dealloc( jpi, jpj,    gmedc2d  ) 
     5869          ENDIF 
     5870          IF( med_diag%IBEN_N%dgsave ) THEN 
     5871             CALL iom_put( "IBEN_N"  , iben_n2d ) 
     5872             CALL wrk_dealloc( jpi, jpj,    iben_n2d  ) 
     5873          ENDIF 
     5874          IF( med_diag%IBEN_FE%dgsave ) THEN 
     5875             CALL iom_put( "IBEN_FE"  , iben_fe2d ) 
     5876             CALL wrk_dealloc( jpi, jpj,   iben_fe2d   ) 
     5877          ENDIF 
     5878          IF( med_diag%IBEN_C%dgsave ) THEN 
     5879             CALL iom_put( "IBEN_C"  , iben_c2d ) 
     5880             CALL wrk_dealloc( jpi, jpj,   iben_c2d   ) 
     5881          ENDIF 
     5882          IF( med_diag%IBEN_SI%dgsave ) THEN 
     5883             CALL iom_put( "IBEN_SI"  , iben_si2d ) 
     5884             CALL wrk_dealloc( jpi, jpj,   iben_si2d   ) 
     5885          ENDIF 
     5886          IF( med_diag%IBEN_CA%dgsave ) THEN 
     5887             CALL iom_put( "IBEN_CA"  , iben_ca2d ) 
     5888             CALL wrk_dealloc( jpi, jpj,   iben_ca2d   ) 
     5889          ENDIF 
     5890          IF( med_diag%OBEN_N%dgsave ) THEN 
     5891             CALL iom_put( "OBEN_N"  , oben_n2d ) 
     5892             CALL wrk_dealloc( jpi, jpj,    oben_n2d  ) 
     5893          ENDIF 
     5894          IF( med_diag%OBEN_FE%dgsave ) THEN 
     5895             CALL iom_put( "OBEN_FE"  , oben_fe2d ) 
     5896             CALL wrk_dealloc( jpi, jpj,    oben_fe2d  ) 
     5897          ENDIF 
     5898          IF( med_diag%OBEN_C%dgsave ) THEN 
     5899             CALL iom_put( "OBEN_C"  , oben_c2d ) 
     5900             CALL wrk_dealloc( jpi, jpj,    oben_c2d  ) 
     5901          ENDIF 
     5902          IF( med_diag%OBEN_SI%dgsave ) THEN 
     5903             CALL iom_put( "OBEN_SI"  , oben_si2d ) 
     5904             CALL wrk_dealloc( jpi, jpj,    oben_si2d  ) 
     5905          ENDIF 
     5906          IF( med_diag%OBEN_CA%dgsave ) THEN 
     5907             CALL iom_put( "OBEN_CA"  , oben_ca2d ) 
     5908             CALL wrk_dealloc( jpi, jpj, oben_ca2d     ) 
     5909          ENDIF 
     5910          IF( med_diag%SFR_OCAL%dgsave ) THEN 
     5911             CALL iom_put( "SFR_OCAL"  , sfr_ocal2d ) 
     5912             CALL wrk_dealloc( jpi, jpj,    sfr_ocal2d  ) 
     5913          ENDIF 
     5914          IF( med_diag%SFR_OARG%dgsave ) THEN 
     5915             CALL iom_put( "SFR_OARG"  , sfr_oarg2d ) 
     5916             CALL wrk_dealloc( jpi, jpj,    sfr_oarg2d  ) 
     5917          ENDIF 
     5918          IF( med_diag%LYSO_CA%dgsave ) THEN 
     5919             CALL iom_put( "LYSO_CA"  , lyso_ca2d ) 
     5920             CALL wrk_dealloc( jpi, jpj,    lyso_ca2d  ) 
     5921          ENDIF 
     5922# endif                    
     5923          !! 
     5924          !! ** 3D diagnostics 
     5925          IF( med_diag%TPP3%dgsave ) THEN 
     5926             CALL iom_put( "TPP3"  , tpp3d ) 
     5927             CALL wrk_dealloc( jpi, jpj, jpk,   tpp3d  ) 
     5928          ENDIF 
    42695929          IF( med_diag%DETFLUX3%dgsave ) THEN 
    4270              detflux3d(:,:,jk) = (fslownflux(:,:) + ffastn(:,:)) * tmask(:,:,jk) !! detrital flux 
    4271              !CALL iom_put( "DETFLUX3"  , ftot_n ) 
    4272           ENDIF 
    4273 # if defined key_roam                      
     5930             CALL iom_put( "DETFLUX3"  , detflux3d ) 
     5931             CALL wrk_dealloc( jpi, jpj, jpk,    detflux3d ) 
     5932          ENDIF 
     5933          IF( med_diag%REMIN3N%dgsave ) THEN 
     5934             CALL iom_put( "REMIN3N"  , remin3dn ) 
     5935             CALL wrk_dealloc( jpi, jpj, jpk,   remin3dn  ) 
     5936          ENDIF 
     5937# if defined key_roam           
     5938          IF( med_diag%PH3%dgsave ) THEN 
     5939             CALL iom_put( "PH3"  , f3_pH ) 
     5940          ENDIF 
     5941          IF( med_diag%OM_CAL3%dgsave ) THEN 
     5942             CALL iom_put( "OM_CAL3"  , f3_omcal ) 
     5943          ENDIF 
     5944          !! 
     5945          !! AXY (09/11/16): 2D CMIP6 diagnostics 
     5946          IF( med_diag%INTDISSIC%dgsave ) THEN 
     5947             CALL iom_put( "INTDISSIC"  , intdissic ) 
     5948             CALL wrk_dealloc( jpi, jpj, intdissic   ) 
     5949          ENDIF           
     5950          IF( med_diag%INTDISSIN%dgsave ) THEN 
     5951             CALL iom_put( "INTDISSIN"  , intdissin ) 
     5952             CALL wrk_dealloc( jpi, jpj, intdissin   ) 
     5953          ENDIF           
     5954          IF( med_diag%INTDISSISI%dgsave ) THEN 
     5955             CALL iom_put( "INTDISSISI"  , intdissisi ) 
     5956             CALL wrk_dealloc( jpi, jpj, intdissisi  ) 
     5957          ENDIF           
     5958          IF( med_diag%INTTALK%dgsave ) THEN 
     5959             CALL iom_put( "INTTALK"  , inttalk ) 
     5960             CALL wrk_dealloc( jpi, jpj, inttalk     ) 
     5961          ENDIF           
     5962          IF( med_diag%O2min%dgsave ) THEN 
     5963             CALL iom_put( "O2min"  , o2min ) 
     5964             CALL wrk_dealloc( jpi, jpj, o2min       ) 
     5965          ENDIF           
     5966          IF( med_diag%ZO2min%dgsave ) THEN 
     5967             CALL iom_put( "ZO2min"  , zo2min ) 
     5968             CALL wrk_dealloc( jpi, jpj, zo2min      ) 
     5969          ENDIF           
     5970          IF( med_diag%FBDDTALK%dgsave ) THEN 
     5971             CALL iom_put( "FBDDTALK"  , fbddtalk   ) 
     5972             CALL wrk_dealloc( jpi, jpj, fbddtalk   ) 
     5973          ENDIF           
     5974          IF( med_diag%FBDDTDIC%dgsave ) THEN 
     5975             CALL iom_put( "FBDDTDIC"  , fbddtdic   ) 
     5976             CALL wrk_dealloc( jpi, jpj, fbddtdic   ) 
     5977          ENDIF           
     5978          IF( med_diag%FBDDTDIFE%dgsave ) THEN 
     5979             CALL iom_put( "FBDDTDIFE" , fbddtdife  ) 
     5980             CALL wrk_dealloc( jpi, jpj, fbddtdife  ) 
     5981          ENDIF           
     5982          IF( med_diag%FBDDTDIN%dgsave ) THEN 
     5983             CALL iom_put( "FBDDTDIN"  , fbddtdin   ) 
     5984             CALL wrk_dealloc( jpi, jpj, fbddtdin   ) 
     5985          ENDIF           
     5986          IF( med_diag%FBDDTDISI%dgsave ) THEN 
     5987             CALL iom_put( "FBDDTDISI" , fbddtdisi  ) 
     5988             CALL wrk_dealloc( jpi, jpj, fbddtdisi  ) 
     5989          ENDIF     
     5990          !! 
     5991          !! AXY (09/11/16): 3D CMIP6 diagnostics 
     5992          IF( med_diag%TPPD3%dgsave ) THEN 
     5993             CALL iom_put( "TPPD3"     , tppd3 ) 
     5994             CALL wrk_dealloc( jpi, jpj, jpk, tppd3      ) 
     5995          ENDIF           
     5996          IF( med_diag%BDDTALK3%dgsave ) THEN 
     5997             CALL iom_put( "BDDTALK3"  , bddtalk3 ) 
     5998             CALL wrk_dealloc( jpi, jpj, jpk, bddtalk3   ) 
     5999          ENDIF           
     6000          IF( med_diag%BDDTDIC3%dgsave ) THEN 
     6001             CALL iom_put( "BDDTDIC3"  , bddtdic3 ) 
     6002             CALL wrk_dealloc( jpi, jpj, jpk, bddtdic3   ) 
     6003          ENDIF           
     6004          IF( med_diag%BDDTDIFE3%dgsave ) THEN 
     6005             CALL iom_put( "BDDTDIFE3" , bddtdife3 ) 
     6006             CALL wrk_dealloc( jpi, jpj, jpk, bddtdife3  ) 
     6007          ENDIF           
     6008          IF( med_diag%BDDTDIN3%dgsave ) THEN 
     6009             CALL iom_put( "BDDTDIN3"  , bddtdin3 ) 
     6010             CALL wrk_dealloc( jpi, jpj, jpk, bddtdin3   ) 
     6011          ENDIF           
     6012          IF( med_diag%BDDTDISI3%dgsave ) THEN 
     6013             CALL iom_put( "BDDTDISI3" , bddtdisi3 ) 
     6014             CALL wrk_dealloc( jpi, jpj, jpk, bddtdisi3  ) 
     6015          ENDIF     
     6016          IF( med_diag%FD_NIT3%dgsave ) THEN 
     6017             CALL iom_put( "FD_NIT3"  , fd_nit3 ) 
     6018             CALL wrk_dealloc( jpi, jpj, jpk,   fd_nit3  ) 
     6019          ENDIF 
     6020          IF( med_diag%FD_SIL3%dgsave ) THEN 
     6021             CALL iom_put( "FD_SIL3"  , fd_sil3 ) 
     6022             CALL wrk_dealloc( jpi, jpj, jpk,   fd_sil3  ) 
     6023          ENDIF 
     6024          IF( med_diag%FD_CAL3%dgsave ) THEN 
     6025             CALL iom_put( "FD_CAL3"  , fd_cal3 ) 
     6026             CALL wrk_dealloc( jpi, jpj, jpk,   fd_cal3  ) 
     6027          ENDIF 
     6028          IF( med_diag%FD_CAR3%dgsave ) THEN 
     6029             CALL iom_put( "FD_CAR3"  , fd_car3 ) 
     6030             CALL wrk_dealloc( jpi, jpj, jpk,   fd_car3  ) 
     6031          ENDIF 
     6032          IF( med_diag%CO33%dgsave ) THEN 
     6033             CALL iom_put( "CO33"  , f3_co3 ) 
     6034          ENDIF                     
     6035          IF( med_diag%CO3SATARAG3%dgsave ) THEN 
     6036             CALL iom_put( "CO3SATARAG3"  , f3_omarg ) 
     6037          ENDIF                     
     6038          IF( med_diag%CO3SATCALC3%dgsave ) THEN 
     6039             CALL iom_put( "CO3SATCALC3"  , f3_omcal ) 
     6040          ENDIF                     
    42746041          IF( med_diag%EXPC3%dgsave ) THEN 
    4275              expc3(:,:,jk) = (fslowcflux(:,:) + ffastc(:,:)) * tmask(:,:,jk) 
    4276           ENDIF 
     6042             CALL iom_put( "EXPC3"  , expc3 ) 
     6043             CALL wrk_dealloc( jpi, jpj, jpk, expc3  ) 
     6044          ENDIF                     
    42776045          IF( med_diag%EXPN3%dgsave ) THEN 
    4278              expn3(:,:,jk) = (fslownflux(:,:) + ffastn(:,:)) * tmask(:,:,jk) 
    4279           ENDIF 
    4280 # endif           
    4281        ENDIF 
    4282        !! CLOSE vertical loop 
    4283     ENDDO 
    4284  
    4285     !!---------------------------------------------------------------------- 
    4286     !! Process benthic in/out fluxes 
    4287     !! These can be handled outside of the 3D calculations since the 
    4288     !! benthic pools (and fluxes) are 2D in nature; this code is 
    4289     !! (shamelessly) borrowed from corresponding code in the LOBSTER 
    4290     !! model 
    4291     !!---------------------------------------------------------------------- 
    4292     !! 
    4293     !! IF(lwp) WRITE(numout,*) 'AXY: rdt = ', rdt 
    4294     if (jorgben.eq.1) then 
    4295        za_sed_n(:,:)  = zn_sed_n(:,:)  + &  
    4296             &                ( f_sbenin_n(:,:)  + f_fbenin_n(:,:)  - f_benout_n(:,:)  ) * (rdt / 86400.) 
    4297        zn_sed_n(:,:)  = za_sed_n(:,:) 
    4298        !! 
    4299        za_sed_fe(:,:) = zn_sed_fe(:,:) + & 
    4300             &                ( f_sbenin_fe(:,:) + f_fbenin_fe(:,:) - f_benout_fe(:,:) ) * (rdt / 86400.) 
    4301        zn_sed_fe(:,:) = za_sed_fe(:,:) 
    4302        !! 
    4303        za_sed_c(:,:)  = zn_sed_c(:,:)  + & 
    4304             &                ( f_sbenin_c(:,:)  + f_fbenin_c(:,:)  - f_benout_c(:,:)  ) * (rdt / 86400.) 
    4305        zn_sed_c(:,:)  = za_sed_c(:,:) 
    4306     endif 
    4307     if (jinorgben.eq.1) then 
    4308        za_sed_si(:,:) = zn_sed_si(:,:) + &  
    4309             &                ( f_fbenin_si(:,:) - f_benout_si(:,:) ) * (rdt / 86400.) 
    4310        zn_sed_si(:,:) = za_sed_si(:,:) 
    4311        !! 
    4312        za_sed_ca(:,:) = zn_sed_ca(:,:) + & 
    4313             &                ( f_fbenin_ca(:,:) - f_benout_ca(:,:) ) * (rdt / 86400.) 
    4314        zn_sed_ca(:,:) = za_sed_ca(:,:) 
    4315     endif 
    4316     !! 
    4317     if (ibenthic.eq.2) then 
    4318        !! The code below (in this if ... then ... endif loop) is 
    4319        !! effectively commented out because it does not work as  
    4320        !! anticipated; it can be deleted at a later date 
    4321        if (jorgben.eq.1) then 
    4322           za_sed_n(:,:)  = ( f_sbenin_n(:,:)  + f_fbenin_n(:,:)  - f_benout_n(:,:)  ) * rdt 
    4323           za_sed_fe(:,:) = ( f_sbenin_fe(:,:) + f_fbenin_fe(:,:) - f_benout_fe(:,:) ) * rdt 
    4324           za_sed_c(:,:)  = ( f_sbenin_c(:,:)  + f_fbenin_c(:,:)  - f_benout_c(:,:)  ) * rdt 
    4325        endif 
    4326        if (jinorgben.eq.1) then 
    4327           za_sed_si(:,:) = ( f_fbenin_si(:,:) - f_benout_si(:,:) ) * rdt 
    4328           za_sed_ca(:,:) = ( f_fbenin_ca(:,:) - f_benout_ca(:,:) ) * rdt 
    4329        endif 
    4330        !! 
    4331        !! Leap-frog scheme - only in explicit case, otherwise the time stepping 
    4332        !! is already being done in trczdf 
    4333        !! IF( l_trczdf_exp .AND. (ln_trcadv_cen2 .OR. ln_trcadv_tvd) ) THEN 
    4334        !!    zfact = 2. * rdttra(jk) * FLOAT( ndttrc ) 
    4335        !!    IF( neuler == 0 .AND. kt == nittrc000 )   zfact = rdttra(jk) * FLOAT(ndttrc) 
    4336        !!    if (jorgben.eq.1) then 
    4337        !!       za_sed_n(:,:)  = zb_sed_n(:,:)  + ( zfact * za_sed_n(:,:)  ) 
    4338        !!      za_sed_fe(:,:) = zb_sed_fe(:,:) + ( zfact * za_sed_fe(:,:) ) 
    4339        !!       za_sed_c(:,:)  = zb_sed_c(:,:)  + ( zfact * za_sed_c(:,:)  ) 
    4340        !!    endif 
    4341        !!    if (jinorgben.eq.1) then 
    4342        !!       za_sed_si(:,:) = zb_sed_si(:,:) + ( zfact * za_sed_si(:,:) ) 
    4343        !!       za_sed_ca(:,:) = zb_sed_ca(:,:) + ( zfact * za_sed_ca(:,:) ) 
    4344        !!    endif 
    4345        !! ENDIF 
    4346        !!  
    4347        !! Time filter and swap of arrays 
    4348        IF( ln_trcadv_cen2 .OR. ln_trcadv_tvd  ) THEN ! centred or tvd scheme 
    4349           IF( neuler == 0 .AND. kt == nittrc000 ) THEN 
    4350              if (jorgben.eq.1) then 
    4351                 zb_sed_n(:,:)  = zn_sed_n(:,:) 
    4352                 zn_sed_n(:,:)  = za_sed_n(:,:) 
    4353                 za_sed_n(:,:)  = 0.0 
    4354                 !! 
    4355                 zb_sed_fe(:,:) = zn_sed_fe(:,:) 
    4356                 zn_sed_fe(:,:) = za_sed_fe(:,:) 
    4357                 za_sed_fe(:,:) = 0.0 
    4358                 !! 
    4359                 zb_sed_c(:,:)  = zn_sed_c(:,:) 
    4360                 zn_sed_c(:,:)  = za_sed_c(:,:) 
    4361                 za_sed_c(:,:)  = 0.0 
    4362              endif 
    4363              if (jinorgben.eq.1) then 
    4364                 zb_sed_si(:,:) = zn_sed_si(:,:) 
    4365                 zn_sed_si(:,:) = za_sed_si(:,:) 
    4366                 za_sed_si(:,:) = 0.0 
    4367                 !! 
    4368                 zb_sed_ca(:,:) = zn_sed_ca(:,:) 
    4369                 zn_sed_ca(:,:) = za_sed_ca(:,:) 
    4370                 za_sed_ca(:,:) = 0.0 
    4371              endif 
    4372           ELSE 
    4373              if (jorgben.eq.1) then 
    4374                 zb_sed_n(:,:)  = (atfp  * ( zb_sed_n(:,:)  + za_sed_n(:,:)  )) + (atfp1 * zn_sed_n(:,:) ) 
    4375                 zn_sed_n(:,:)  = za_sed_n(:,:) 
    4376                 za_sed_n(:,:)  = 0.0 
    4377                 !! 
    4378                 zb_sed_fe(:,:) = (atfp  * ( zb_sed_fe(:,:) + za_sed_fe(:,:) )) + (atfp1 * zn_sed_fe(:,:)) 
    4379                 zn_sed_fe(:,:) = za_sed_fe(:,:) 
    4380                 za_sed_fe(:,:) = 0.0 
    4381                 !! 
    4382                 zb_sed_c(:,:)  = (atfp  * ( zb_sed_c(:,:)  + za_sed_c(:,:)  )) + (atfp1 * zn_sed_c(:,:) ) 
    4383                 zn_sed_c(:,:)  = za_sed_c(:,:) 
    4384                 za_sed_c(:,:)  = 0.0 
    4385              endif 
    4386              if (jinorgben.eq.1) then 
    4387                 zb_sed_si(:,:) = (atfp  * ( zb_sed_si(:,:) + za_sed_si(:,:) )) + (atfp1 * zn_sed_si(:,:)) 
    4388                 zn_sed_si(:,:) = za_sed_si(:,:) 
    4389                 za_sed_si(:,:) = 0.0 
    4390                 !! 
    4391                 zb_sed_ca(:,:) = (atfp  * ( zb_sed_ca(:,:) + za_sed_ca(:,:) )) + (atfp1 * zn_sed_ca(:,:)) 
    4392                 zn_sed_ca(:,:) = za_sed_ca(:,:) 
    4393                 za_sed_ca(:,:) = 0.0 
    4394              endif 
    4395           ENDIF 
    4396        ELSE                   !  case of smolar scheme or muscl 
    4397           if (jorgben.eq.1) then 
    4398              zb_sed_n(:,:)  = za_sed_n(:,:) 
    4399              zn_sed_n(:,:)  = za_sed_n(:,:) 
    4400              za_sed_n(:,:)  = 0.0 
    4401              !! 
    4402              zb_sed_fe(:,:) = za_sed_fe(:,:) 
    4403              zn_sed_fe(:,:) = za_sed_fe(:,:) 
    4404              za_sed_fe(:,:) = 0.0 
    4405              !! 
    4406              zb_sed_c(:,:)  = za_sed_c(:,:) 
    4407              zn_sed_c(:,:)  = za_sed_c(:,:) 
    4408              za_sed_c(:,:)  = 0.0 
    4409           endif 
    4410           if (jinorgben.eq.1) then 
    4411              zb_sed_si(:,:) = za_sed_si(:,:) 
    4412              zn_sed_si(:,:) = za_sed_si(:,:) 
    4413              za_sed_si(:,:) = 0.0 
    4414              !! 
    4415              zb_sed_ca(:,:) = za_sed_ca(:,:) 
    4416              zn_sed_ca(:,:) = za_sed_ca(:,:) 
    4417              za_sed_ca(:,:) = 0.0 
    4418           endif 
    4419        ENDIF 
    4420     endif 
    4421  
    4422     !!----------------------------------------------------------------------- 
    4423     !! Add very last diag calculations  
    4424     !!----------------------------------------------------------------------- 
    4425     DO jj = 2,jpjm1 
    4426        DO ji = 2,jpim1 
    4427           !!          
    4428           IF( med_diag%PN_JLIM%dgsave ) THEN 
    4429              fjln2d(ji,jj) = fjln2d(ji,jj)   / MAX(ftot_pn(ji,jj), rsmall) 
    4430           ENDIF 
    4431           IF( med_diag%PN_NLIM%dgsave ) THEN 
    4432              fnln2d(ji,jj) = fnln2d(ji,jj)   / MAX(ftot_pn(ji,jj), rsmall) 
    4433           ENDIF 
    4434           IF( med_diag%PN_FELIM%dgsave ) THEN 
    4435              ffln2d(ji,jj) = ffln2d(ji,jj)   / MAX(ftot_pn(ji,jj), rsmall) 
    4436           ENDIF 
    4437           IF( med_diag%PD_JLIM%dgsave ) THEN 
    4438              fjld2d(ji,jj) = fjld2d(ji,jj)   / MAX(ftot_pd(ji,jj), rsmall) 
    4439           ENDIF 
    4440           IF( med_diag%PD_NLIM%dgsave ) THEN 
    4441              fnld2d(ji,jj) = fnld2d(ji,jj)   / MAX(ftot_pd(ji,jj), rsmall) 
    4442           ENDIF 
    4443           IF( med_diag%PD_FELIM%dgsave ) THEN 
    4444              ffld2d(ji,jj) = ffld2d(ji,jj)   / MAX(ftot_pd(ji,jj), rsmall) 
    4445           ENDIF 
    4446           IF( med_diag%PD_SILIM%dgsave ) THEN 
    4447              fsld2d2(ji,jj) = fsld2d2(ji,jj) / MAX(ftot_pd(ji,jj), rsmall) 
    4448           ENDIF 
    4449           IF( med_diag%PDSILIM2%dgsave ) THEN 
    4450              fsld2d(ji,jj) = fsld2d(ji,jj)   / MAX(ftot_pd(ji,jj), rsmall) 
    4451           ENDIF 
    4452        ENDDO 
    4453     ENDDO 
    4454  
    4455     !!---------------------------------------------------------------------- 
    4456     !! Add in XML diagnostics stuff 
    4457     !!---------------------------------------------------------------------- 
    4458     !! 
    4459     !! ** 2D diagnostics 
    4460 #   if defined key_debug_medusa 
    4461     IF ( lwp ) write (numout,*) 'trc_bio_medusa: export all diag.' 
    4462     CALL flush(numout) 
    4463 #   endif 
    4464     IF ( med_diag%INVTN%dgsave ) THEN 
    4465        CALL iom_put( "INVTN"  , ftot_n ) 
    4466     ENDIF 
    4467     IF ( med_diag%INVTSI%dgsave ) THEN 
    4468        CALL iom_put( "INVTSI"  , ftot_si ) 
    4469     ENDIF 
    4470     IF ( med_diag%INVTFE%dgsave ) THEN 
    4471        CALL iom_put( "INVTFE"  , ftot_fe ) 
    4472     ENDIF 
    4473     IF ( med_diag%ML_PRN%dgsave ) THEN 
    4474        CALL iom_put( "ML_PRN"  , fprn_ml ) 
    4475     ENDIF 
    4476     IF ( med_diag%ML_PRD%dgsave ) THEN 
    4477        CALL iom_put( "ML_PRD"  , fprd_ml ) 
    4478     ENDIF 
    4479     IF ( med_diag%OCAL_LVL%dgsave ) THEN 
    4480        CALL iom_put( "OCAL_LVL"  , fccd ) 
    4481     ENDIF 
    4482     IF ( med_diag%PN_JLIM%dgsave ) THEN 
    4483        CALL iom_put( "PN_JLIM"  , fjln2d ) 
    4484        CALL wrk_dealloc( jpi, jpj,   fjln2d   ) 
    4485     ENDIF 
    4486     IF ( med_diag%PN_NLIM%dgsave ) THEN 
    4487        CALL iom_put( "PN_NLIM"  , fnln2d ) 
    4488        CALL wrk_dealloc( jpi, jpj,   fnln2d   ) 
    4489     ENDIF 
    4490     IF ( med_diag%PN_FELIM%dgsave ) THEN 
    4491        CALL iom_put( "PN_FELIM"  , ffln2d ) 
    4492        CALL wrk_dealloc( jpi, jpj,   ffln2d   ) 
    4493     ENDIF 
    4494     IF ( med_diag%PD_JLIM%dgsave ) THEN 
    4495        CALL iom_put( "PD_JLIM"  , fjld2d ) 
    4496        CALL wrk_dealloc( jpi, jpj,  fjld2d    ) 
    4497     ENDIF 
    4498     IF ( med_diag%PD_NLIM%dgsave ) THEN 
    4499        CALL iom_put( "PD_NLIM"  , fnld2d ) 
    4500        CALL wrk_dealloc( jpi, jpj,   fnld2d  ) 
    4501     ENDIF 
    4502     IF ( med_diag%PD_FELIM%dgsave ) THEN 
    4503        CALL iom_put( "PD_FELIM"  , ffld2d ) 
    4504        CALL wrk_dealloc( jpi, jpj,  ffld2d    ) 
    4505     ENDIF 
    4506     IF ( med_diag%PD_SILIM%dgsave ) THEN 
    4507        CALL iom_put( "PD_SILIM"  , fsld2d2 ) 
    4508        CALL wrk_dealloc( jpi, jpj,   fsld2d2   ) 
    4509     ENDIF 
    4510     IF ( med_diag%PDSILIM2%dgsave ) THEN 
    4511        CALL iom_put( "PDSILIM2"  , fsld2d ) 
    4512        CALL wrk_dealloc( jpi, jpj,   fsld2d   ) 
    4513     ENDIF 
    4514     IF ( med_diag%INTFLX_N%dgsave ) THEN 
    4515        CALL iom_put( "INTFLX_N"  , fflx_n ) 
    4516     ENDIF 
    4517     IF ( med_diag%INTFLX_SI%dgsave ) THEN 
    4518        CALL iom_put( "INTFLX_SI"  , fflx_si ) 
    4519     ENDIF 
    4520     IF ( med_diag%INTFLX_FE%dgsave ) THEN 
    4521        CALL iom_put( "INTFLX_FE"  , fflx_fe ) 
    4522     ENDIF 
    4523     IF ( med_diag%INT_PN%dgsave ) THEN 
    4524        CALL iom_put( "INT_PN"  , ftot_pn ) 
    4525     ENDIF 
    4526     IF ( med_diag%INT_PD%dgsave ) THEN 
    4527        CALL iom_put( "INT_PD"  , ftot_pd ) 
    4528     ENDIF 
    4529     IF ( med_diag%INT_ZMI%dgsave ) THEN 
    4530        CALL iom_put( "INT_ZMI"  , ftot_zmi ) 
    4531     ENDIF 
    4532     IF ( med_diag%INT_ZME%dgsave ) THEN 
    4533        CALL iom_put( "INT_ZME"  , ftot_zme ) 
    4534     ENDIF 
    4535     IF ( med_diag%INT_DET%dgsave ) THEN 
    4536        CALL iom_put( "INT_DET"  , ftot_det ) 
    4537     ENDIF 
    4538     IF ( med_diag%INT_DTC%dgsave ) THEN 
    4539        CALL iom_put( "INT_DTC"  , ftot_dtc ) 
    4540     ENDIF 
    4541     IF ( med_diag%BEN_N%dgsave ) THEN 
    4542        CALL iom_put( "BEN_N"  , za_sed_n ) 
    4543     ENDIF 
    4544     IF ( med_diag%BEN_FE%dgsave ) THEN 
    4545        CALL iom_put( "BEN_FE"  , za_sed_fe ) 
    4546     ENDIF 
    4547     IF ( med_diag%BEN_C%dgsave ) THEN 
    4548        CALL iom_put( "BEN_C"  , za_sed_c ) 
    4549     ENDIF 
    4550     IF ( med_diag%BEN_SI%dgsave ) THEN 
    4551        CALL iom_put( "BEN_SI"  , za_sed_si ) 
    4552     ENDIF 
    4553     IF ( med_diag%BEN_CA%dgsave ) THEN 
    4554        CALL iom_put( "BEN_CA"  , za_sed_ca ) 
    4555     ENDIF 
    4556     IF ( med_diag%RUNOFF%dgsave ) THEN 
    4557        CALL iom_put( "RUNOFF"  , f_runoff ) 
    4558     ENDIF 
    4559 # if defined key_roam         
    4560     IF ( med_diag%N_PROD%dgsave ) THEN 
    4561        CALL iom_put( "N_PROD"  , fnit_prod ) 
    4562     ENDIF 
    4563     IF ( med_diag%N_CONS%dgsave ) THEN 
    4564        CALL iom_put( "N_CONS"  , fnit_cons ) 
    4565     ENDIF 
    4566     IF ( med_diag%C_PROD%dgsave ) THEN 
    4567        CALL iom_put( "C_PROD"  , fcar_prod ) 
    4568     ENDIF 
    4569     IF ( med_diag%C_CONS%dgsave ) THEN 
    4570        CALL iom_put( "C_CONS"  , fcar_cons ) 
    4571     ENDIF 
    4572     IF ( med_diag%O2_PROD%dgsave ) THEN 
    4573        CALL iom_put( "O2_PROD"  , foxy_prod ) 
    4574     ENDIF 
    4575     IF ( med_diag%O2_CONS%dgsave ) THEN 
    4576        CALL iom_put( "O2_CONS"  , foxy_cons ) 
    4577     ENDIF 
    4578     IF ( med_diag%O2_ANOX%dgsave ) THEN 
    4579        CALL iom_put( "O2_ANOX"  , foxy_anox ) 
    4580     ENDIF 
    4581     IF ( med_diag%INVTC%dgsave ) THEN 
    4582        CALL iom_put( "INVTC"  , ftot_c ) 
    4583     ENDIF 
    4584     IF ( med_diag%INVTALK%dgsave ) THEN 
    4585        CALL iom_put( "INVTALK"  , ftot_a ) 
    4586     ENDIF 
    4587     IF ( med_diag%INVTO2%dgsave ) THEN 
    4588        CALL iom_put( "INVTO2"  , ftot_o2 ) 
    4589     ENDIF 
    4590     IF ( med_diag%COM_RESP%dgsave ) THEN 
    4591        CALL iom_put( "COM_RESP"  , fcomm_resp ) 
    4592     ENDIF 
    4593 # endif       
    4594     !! 
    4595     !! diagnostic filled in the i-j-k main loop 
    4596     !!-------------------------------------------- 
    4597     IF ( med_diag%PRN%dgsave ) THEN 
    4598        CALL iom_put( "PRN"  , fprn2d ) 
    4599        CALL wrk_dealloc( jpi, jpj,   fprn2d   ) 
    4600     ENDIF 
    4601     IF ( med_diag%MPN%dgsave ) THEN 
    4602        CALL iom_put( "MPN"  ,fdpn2d  ) 
    4603        CALL wrk_dealloc( jpi, jpj,    fdpn2d  ) 
    4604     ENDIF 
    4605     IF ( med_diag%PRD%dgsave ) THEN 
    4606        CALL iom_put( "PRD"  ,fprd2d  ) 
    4607        CALL wrk_dealloc( jpi, jpj,   fprd2d  ) 
    4608     ENDIF 
    4609     IF( med_diag%MPD%dgsave ) THEN 
    4610        CALL iom_put( "MPD"  , fdpd2d ) 
    4611        CALL wrk_dealloc( jpi, jpj,    fdpd2d ) 
    4612     ENDIF 
    4613     !  IF( med_diag%DSED%dgsave ) THEN 
    4614     !      CALL iom_put( "DSED"  , ftot_n ) 
    4615     !  ENDIF 
    4616     IF( med_diag%OPAL%dgsave ) THEN 
    4617        CALL iom_put( "OPAL"  , fprds2d ) 
    4618        CALL wrk_dealloc( jpi, jpj,   fprds2d  ) 
    4619     ENDIF 
    4620     IF( med_diag%OPALDISS%dgsave ) THEN 
    4621        CALL iom_put( "OPALDISS"  , fsdiss2d ) 
    4622        CALL wrk_dealloc( jpi, jpj,   fsdiss2d  ) 
    4623     ENDIF 
    4624     IF( med_diag%GMIPn%dgsave ) THEN 
    4625        CALL iom_put( "GMIPn"  , fgmipn2d ) 
    4626        CALL wrk_dealloc( jpi, jpj,   fgmipn2d  ) 
    4627     ENDIF 
    4628     IF( med_diag%GMID%dgsave ) THEN 
    4629        CALL iom_put( "GMID"  , fgmid2d ) 
    4630        CALL wrk_dealloc( jpi, jpj,  fgmid2d  ) 
    4631     ENDIF 
    4632     IF( med_diag%MZMI%dgsave ) THEN 
    4633        CALL iom_put( "MZMI"  , fdzmi2d ) 
    4634        CALL wrk_dealloc( jpi, jpj,   fdzmi2d   ) 
    4635     ENDIF 
    4636     IF( med_diag%GMEPN%dgsave ) THEN 
    4637        CALL iom_put( "GMEPN"  , fgmepn2d ) 
    4638        CALL wrk_dealloc( jpi, jpj,   fgmepn2d  ) 
    4639     ENDIF 
    4640     IF( med_diag%GMEPD%dgsave ) THEN 
    4641        CALL iom_put( "GMEPD"  , fgmepd2d ) 
    4642        CALL wrk_dealloc( jpi, jpj,   fgmepd2d   ) 
    4643     ENDIF 
    4644     IF( med_diag%GMEZMI%dgsave ) THEN 
    4645        CALL iom_put( "GMEZMI"  , fgmezmi2d ) 
    4646        CALL wrk_dealloc( jpi, jpj,   fgmezmi2d   ) 
    4647     ENDIF 
    4648     IF( med_diag%GMED%dgsave ) THEN 
    4649        CALL iom_put( "GMED"  , fgmed2d ) 
    4650        CALL wrk_dealloc( jpi, jpj,    fgmed2d  ) 
    4651     ENDIF 
    4652     IF( med_diag%MZME%dgsave ) THEN 
    4653        CALL iom_put( "MZME"  , fdzme2d ) 
    4654        CALL wrk_dealloc( jpi, jpj,  fdzme2d    ) 
    4655     ENDIF 
    4656     !  IF( med_diag%DEXP%dgsave ) THEN 
    4657     !      CALL iom_put( "DEXP"  , ftot_n ) 
    4658     !  ENDIF 
    4659     IF( med_diag%DETN%dgsave ) THEN 
    4660        CALL iom_put( "DETN"  , fslown2d ) 
    4661        CALL wrk_dealloc( jpi, jpj,  fslown2d    ) 
    4662     ENDIF 
    4663     IF( med_diag%MDET%dgsave ) THEN 
    4664        CALL iom_put( "MDET"  , fdd2d ) 
    4665        CALL wrk_dealloc( jpi, jpj,   fdd2d   ) 
    4666     ENDIF 
    4667     IF( med_diag%AEOLIAN%dgsave ) THEN 
    4668        CALL iom_put( "AEOLIAN"  , ffetop2d ) 
    4669        CALL wrk_dealloc( jpi, jpj,   ffetop2d   ) 
    4670     ENDIF 
    4671     IF( med_diag%BENTHIC%dgsave ) THEN 
    4672        CALL iom_put( "BENTHIC"  , ffebot2d ) 
    4673        CALL wrk_dealloc( jpi, jpj,   ffebot2d   ) 
    4674     ENDIF 
    4675     IF( med_diag%SCAVENGE%dgsave ) THEN 
    4676        CALL iom_put( "SCAVENGE"  , ffescav2d ) 
    4677        CALL wrk_dealloc( jpi, jpj,   ffescav2d  ) 
    4678     ENDIF 
    4679     !!  
    4680     IF( med_diag%TOTREG_N%dgsave ) THEN 
    4681        CALL iom_put( "TOTREG_N"  , fregen2d ) 
    4682        CALL wrk_dealloc( jpi, jpj,   fregen2d   ) 
    4683     ENDIF 
    4684     IF( med_diag%TOTRG_SI%dgsave ) THEN 
    4685        CALL iom_put( "TOTRG_SI"  , fregensi2d ) 
    4686        CALL wrk_dealloc( jpi, jpj,    fregensi2d  ) 
    4687     ENDIF 
    4688     !!  
    4689     IF( med_diag%FASTN%dgsave ) THEN 
    4690        CALL iom_put( "FASTN"  , ftempn2d ) 
    4691        CALL wrk_dealloc( jpi, jpj,   ftempn2d   ) 
    4692     ENDIF 
    4693     IF( med_diag%FASTSI%dgsave ) THEN 
    4694        CALL iom_put( "FASTSI"  , ftempsi2d ) 
    4695        CALL wrk_dealloc( jpi, jpj,   ftempsi2d   ) 
    4696     ENDIF 
    4697     IF( med_diag%FASTFE%dgsave ) THEN 
    4698        CALL iom_put( "FASTFE"  , ftempfe2d ) 
    4699        CALL wrk_dealloc( jpi, jpj,    ftempfe2d  ) 
    4700     ENDIF 
    4701     IF( med_diag%FASTC%dgsave ) THEN 
    4702        CALL iom_put( "FASTC"  , ftempc2d ) 
    4703        CALL wrk_dealloc( jpi, jpj,  ftempc2d    ) 
    4704     ENDIF 
    4705     IF( med_diag%FASTCA%dgsave ) THEN 
    4706        CALL iom_put( "FASTCA"  , ftempca2d ) 
    4707        CALL wrk_dealloc( jpi, jpj,  ftempca2d   ) 
    4708     ENDIF 
    4709     !!  
    4710     IF( med_diag%REMINN%dgsave ) THEN 
    4711        CALL iom_put( "REMINN"  , freminn2d ) 
    4712        CALL wrk_dealloc( jpi, jpj,   freminn2d   ) 
    4713     ENDIF 
    4714     IF( med_diag%REMINSI%dgsave ) THEN 
    4715        CALL iom_put( "REMINSI"  , freminsi2d ) 
    4716        CALL wrk_dealloc( jpi, jpj,   freminsi2d   ) 
    4717     ENDIF 
    4718     IF( med_diag%REMINFE%dgsave ) THEN 
    4719        CALL iom_put( "REMINFE"  , freminfe2d ) 
    4720        CALL wrk_dealloc( jpi, jpj,  freminfe2d    ) 
    4721     ENDIF 
    4722     IF( med_diag%REMINC%dgsave ) THEN 
    4723        CALL iom_put( "REMINC"  , freminc2d ) 
    4724        CALL wrk_dealloc( jpi, jpj,    freminc2d  ) 
    4725     ENDIF 
    4726     IF( med_diag%REMINCA%dgsave ) THEN 
    4727        CALL iom_put( "REMINCA"  , freminca2d ) 
    4728        CALL wrk_dealloc( jpi, jpj,   freminca2d  ) 
    4729     ENDIF 
    4730     IF( med_diag%SEAFLRN%dgsave ) THEN 
    4731        CALL iom_put( "SEAFLRN"  , fsedn ) 
    4732     ENDIF 
    4733     IF( med_diag%SEAFLRSI%dgsave ) THEN 
    4734        CALL iom_put( "SEAFLRSI"  , fsedsi ) 
    4735     ENDIF 
    4736     IF( med_diag%SEAFLRFE%dgsave ) THEN 
    4737        CALL iom_put( "SEAFLRFE"  , fsedfe ) 
    4738     ENDIF 
    4739     IF( med_diag%SEAFLRC%dgsave ) THEN 
    4740        CALL iom_put( "SEAFLRC"  , fsedc ) 
    4741     ENDIF 
    4742     IF( med_diag%SEAFLRCA%dgsave ) THEN 
    4743        CALL iom_put( "SEAFLRCA"  , fsedca ) 
    4744     ENDIF 
    4745     !! 
    4746 # if defined key_roam             
    4747     !! 
    4748     IF( med_diag%RIV_N%dgsave ) THEN 
    4749        CALL iom_put( "RIV_N"  , rivn2d ) 
    4750        CALL wrk_dealloc( jpi, jpj,    rivn2d  ) 
    4751     ENDIF 
    4752     IF( med_diag%RIV_SI%dgsave ) THEN 
    4753        CALL iom_put( "RIV_SI"  , rivsi2d ) 
    4754        CALL wrk_dealloc( jpi, jpj,   rivsi2d   ) 
    4755     ENDIF 
    4756     IF( med_diag%RIV_C%dgsave ) THEN 
    4757        CALL iom_put( "RIV_C"  , rivc2d ) 
    4758        CALL wrk_dealloc( jpi, jpj,    rivc2d  ) 
    4759     ENDIF 
    4760     IF( med_diag%RIV_ALK%dgsave ) THEN 
    4761        CALL iom_put( "RIV_ALK"  , rivalk2d ) 
    4762        CALL wrk_dealloc( jpi, jpj,  rivalk2d    ) 
    4763     ENDIF 
    4764     IF( med_diag%DETC%dgsave ) THEN 
    4765        CALL iom_put( "DETC"  , fslowc2d ) 
    4766        CALL wrk_dealloc( jpi, jpj,   fslowc2d   ) 
    4767     ENDIF 
    4768     !! 
    4769     IF( med_diag%PN_LLOSS%dgsave ) THEN 
    4770        CALL iom_put( "PN_LLOSS"  , fdpn22d ) 
    4771        CALL wrk_dealloc( jpi, jpj,   fdpn22d   ) 
    4772     ENDIF 
    4773     IF( med_diag%PD_LLOSS%dgsave ) THEN 
    4774        CALL iom_put( "PD_LLOSS"  , fdpd22d ) 
    4775        CALL wrk_dealloc( jpi, jpj,   fdpd22d   ) 
    4776     ENDIF 
    4777     IF( med_diag%ZI_LLOSS%dgsave ) THEN 
    4778        CALL iom_put( "ZI_LLOSS"  , fdzmi22d ) 
    4779        CALL wrk_dealloc( jpi, jpj,    fdzmi22d  ) 
    4780     ENDIF 
    4781     IF( med_diag%ZE_LLOSS%dgsave ) THEN 
    4782        CALL iom_put( "ZE_LLOSS"  , fdzme22d ) 
    4783        CALL wrk_dealloc( jpi, jpj,   fdzme22d   ) 
    4784     ENDIF 
    4785     IF( med_diag%ZI_MES_N%dgsave ) THEN 
    4786        CALL iom_put( "ZI_MES_N"  , zimesn2d ) 
    4787        CALL wrk_dealloc( jpi, jpj,    zimesn2d  ) 
    4788     ENDIF 
    4789     IF( med_diag%ZI_MES_D%dgsave ) THEN 
    4790        CALL iom_put( "ZI_MES_D"  , zimesd2d ) 
    4791        CALL wrk_dealloc( jpi, jpj,    zimesd2d  ) 
    4792     ENDIF 
    4793     IF( med_diag%ZI_MES_C%dgsave ) THEN 
    4794        CALL iom_put( "ZI_MES_C"  , zimesc2d ) 
    4795        CALL wrk_dealloc( jpi, jpj,    zimesc2d  ) 
    4796     ENDIF 
    4797     IF( med_diag%ZI_MESDC%dgsave ) THEN 
    4798        CALL iom_put( "ZI_MESDC"  ,zimesdc2d  ) 
    4799        CALL wrk_dealloc( jpi, jpj,    zimesdc2d  ) 
    4800     ENDIF 
    4801     IF( med_diag%ZI_EXCR%dgsave ) THEN 
    4802        CALL iom_put( "ZI_EXCR"  , ziexcr2d ) 
    4803        CALL wrk_dealloc( jpi, jpj,    ziexcr2d ) 
    4804     ENDIF 
    4805     IF( med_diag%ZI_RESP%dgsave ) THEN 
    4806        CALL iom_put( "ZI_RESP"  , ziresp2d ) 
    4807        CALL wrk_dealloc( jpi, jpj,   ziresp2d   ) 
    4808     ENDIF 
    4809     IF( med_diag%ZI_GROW%dgsave ) THEN 
    4810        CALL iom_put( "ZI_GROW"  , zigrow2d ) 
    4811        CALL wrk_dealloc( jpi, jpj,   zigrow2d   ) 
    4812     ENDIF 
    4813     IF( med_diag%ZE_MES_N%dgsave ) THEN 
    4814        CALL iom_put( "ZE_MES_N"  , zemesn2d ) 
    4815        CALL wrk_dealloc( jpi, jpj,    zemesn2d  ) 
    4816     ENDIF 
    4817     IF( med_diag%ZE_MES_D%dgsave ) THEN 
    4818        CALL iom_put( "ZE_MES_D"  , zemesd2d ) 
    4819        CALL wrk_dealloc( jpi, jpj,    zemesd2d  ) 
    4820     ENDIF 
    4821     IF( med_diag%ZE_MES_C%dgsave ) THEN 
    4822        CALL iom_put( "ZE_MES_C"  , zemesc2d ) 
    4823        CALL wrk_dealloc( jpi, jpj,   zemesc2d   ) 
    4824     ENDIF 
    4825     IF( med_diag%ZE_MESDC%dgsave ) THEN 
    4826        CALL iom_put( "ZE_MESDC"  , zemesdc2d ) 
    4827        CALL wrk_dealloc( jpi, jpj,   zemesdc2d   ) 
    4828     ENDIF 
    4829     IF( med_diag%ZE_EXCR%dgsave ) THEN 
    4830        CALL iom_put( "ZE_EXCR"  , zeexcr2d ) 
    4831        CALL wrk_dealloc( jpi, jpj,   zeexcr2d   ) 
    4832     ENDIF 
    4833     IF( med_diag%ZE_RESP%dgsave ) THEN 
    4834        CALL iom_put( "ZE_RESP"  , zeresp2d ) 
    4835        CALL wrk_dealloc( jpi, jpj,    zeresp2d  ) 
    4836     ENDIF 
    4837     IF( med_diag%ZE_GROW%dgsave ) THEN 
    4838        CALL iom_put( "ZE_GROW"  , zegrow2d ) 
    4839        CALL wrk_dealloc( jpi, jpj,   zegrow2d   ) 
    4840     ENDIF 
    4841     IF( med_diag%MDETC%dgsave ) THEN 
    4842        CALL iom_put( "MDETC"  , mdetc2d ) 
    4843        CALL wrk_dealloc( jpi, jpj,   mdetc2d   ) 
    4844     ENDIF 
    4845     IF( med_diag%GMIDC%dgsave ) THEN 
    4846        CALL iom_put( "GMIDC"  , gmidc2d ) 
    4847        CALL wrk_dealloc( jpi, jpj,    gmidc2d  ) 
    4848     ENDIF 
    4849     IF( med_diag%GMEDC%dgsave ) THEN 
    4850        CALL iom_put( "GMEDC"  , gmedc2d ) 
    4851        CALL wrk_dealloc( jpi, jpj,    gmedc2d  ) 
    4852     ENDIF 
    4853     IF( med_diag%IBEN_N%dgsave ) THEN 
    4854        CALL iom_put( "IBEN_N"  , iben_n2d ) 
    4855        CALL wrk_dealloc( jpi, jpj,    iben_n2d  ) 
    4856     ENDIF 
    4857     IF( med_diag%IBEN_FE%dgsave ) THEN 
    4858        CALL iom_put( "IBEN_FE"  , iben_fe2d ) 
    4859        CALL wrk_dealloc( jpi, jpj,   iben_fe2d   ) 
    4860     ENDIF 
    4861     IF( med_diag%IBEN_C%dgsave ) THEN 
    4862        CALL iom_put( "IBEN_C"  , iben_c2d ) 
    4863        CALL wrk_dealloc( jpi, jpj,   iben_c2d   ) 
    4864     ENDIF 
    4865     IF( med_diag%IBEN_SI%dgsave ) THEN 
    4866        CALL iom_put( "IBEN_SI"  , iben_si2d ) 
    4867        CALL wrk_dealloc( jpi, jpj,   iben_si2d   ) 
    4868     ENDIF 
    4869     IF( med_diag%IBEN_CA%dgsave ) THEN 
    4870        CALL iom_put( "IBEN_CA"  , iben_ca2d ) 
    4871        CALL wrk_dealloc( jpi, jpj,   iben_ca2d   ) 
    4872     ENDIF 
    4873     IF( med_diag%OBEN_N%dgsave ) THEN 
    4874        CALL iom_put( "OBEN_N"  , oben_n2d ) 
    4875        CALL wrk_dealloc( jpi, jpj,    oben_n2d  ) 
    4876     ENDIF 
    4877     IF( med_diag%OBEN_FE%dgsave ) THEN 
    4878        CALL iom_put( "OBEN_FE"  , oben_fe2d ) 
    4879        CALL wrk_dealloc( jpi, jpj,    oben_fe2d  ) 
    4880     ENDIF 
    4881     IF( med_diag%OBEN_C%dgsave ) THEN 
    4882        CALL iom_put( "OBEN_C"  , oben_c2d ) 
    4883        CALL wrk_dealloc( jpi, jpj,    oben_c2d  ) 
    4884     ENDIF 
    4885     IF( med_diag%OBEN_SI%dgsave ) THEN 
    4886        CALL iom_put( "OBEN_SI"  , oben_si2d ) 
    4887        CALL wrk_dealloc( jpi, jpj,    oben_si2d  ) 
    4888     ENDIF 
    4889     IF( med_diag%OBEN_CA%dgsave ) THEN 
    4890        CALL iom_put( "OBEN_CA"  , oben_ca2d ) 
    4891        CALL wrk_dealloc( jpi, jpj, oben_ca2d     ) 
    4892     ENDIF 
    4893     IF( med_diag%SFR_OCAL%dgsave ) THEN 
    4894        CALL iom_put( "SFR_OCAL"  , sfr_ocal2d ) 
    4895        CALL wrk_dealloc( jpi, jpj,    sfr_ocal2d  ) 
    4896     ENDIF 
    4897     IF( med_diag%SFR_OARG%dgsave ) THEN 
    4898        CALL iom_put( "SFR_OARG"  , sfr_oarg2d ) 
    4899        CALL wrk_dealloc( jpi, jpj,    sfr_oarg2d  ) 
    4900     ENDIF 
    4901     IF( med_diag%LYSO_CA%dgsave ) THEN 
    4902        CALL iom_put( "LYSO_CA"  , lyso_ca2d ) 
    4903        CALL wrk_dealloc( jpi, jpj,    lyso_ca2d  ) 
    4904     ENDIF 
    4905 # endif                    
    4906     !! 
    4907     !! ** 3D diagnostics 
    4908     IF( med_diag%TPP3%dgsave ) THEN 
    4909        CALL iom_put( "TPP3"  , tpp3d ) 
    4910        CALL wrk_dealloc( jpi, jpj, jpk,   tpp3d  ) 
    4911     ENDIF 
    4912     IF( med_diag%DETFLUX3%dgsave ) THEN 
    4913        CALL iom_put( "DETFLUX3"  , detflux3d ) 
    4914        CALL wrk_dealloc( jpi, jpj, jpk,    detflux3d ) 
    4915     ENDIF 
    4916     IF( med_diag%REMIN3N%dgsave ) THEN 
    4917        CALL iom_put( "REMIN3N"  , remin3dn ) 
    4918        CALL wrk_dealloc( jpi, jpj, jpk,   remin3dn  ) 
    4919     ENDIF 
    4920 # if defined key_roam           
    4921     IF( med_diag%PH3%dgsave ) THEN 
    4922        CALL iom_put( "PH3"  , f3_pH ) 
    4923     ENDIF 
    4924     IF( med_diag%OM_CAL3%dgsave ) THEN 
    4925        CALL iom_put( "OM_CAL3"  , f3_omcal ) 
    4926     ENDIF 
    4927     !! 
    4928     !! AXY (09/11/16): 2D CMIP6 diagnostics 
    4929     IF( med_diag%INTDISSIC%dgsave ) THEN 
    4930        CALL iom_put( "INTDISSIC"  , intdissic ) 
    4931        CALL wrk_dealloc( jpi, jpj, intdissic   ) 
    4932     ENDIF 
    4933     IF( med_diag%INTDISSIN%dgsave ) THEN 
    4934        CALL iom_put( "INTDISSIN"  , intdissin ) 
    4935        CALL wrk_dealloc( jpi, jpj, intdissin   ) 
    4936     ENDIF 
    4937     IF( med_diag%INTDISSISI%dgsave ) THEN 
    4938        CALL iom_put( "INTDISSISI"  , intdissisi ) 
    4939        CALL wrk_dealloc( jpi, jpj, intdissisi  ) 
    4940     ENDIF 
    4941     IF( med_diag%INTTALK%dgsave ) THEN 
    4942        CALL iom_put( "INTTALK"  , inttalk ) 
    4943        CALL wrk_dealloc( jpi, jpj, inttalk     ) 
    4944     ENDIF 
    4945     IF( med_diag%O2min%dgsave ) THEN 
    4946        CALL iom_put( "O2min"  , o2min ) 
    4947        CALL wrk_dealloc( jpi, jpj, o2min       ) 
    4948     ENDIF 
    4949     IF( med_diag%ZO2min%dgsave ) THEN 
    4950        CALL iom_put( "ZO2min"  , zo2min ) 
    4951        CALL wrk_dealloc( jpi, jpj, zo2min      ) 
    4952     ENDIF 
    4953     IF( med_diag%FBDDTALK%dgsave ) THEN 
    4954        CALL iom_put( "FBDDTALK"  , fbddtalk   ) 
    4955        CALL wrk_dealloc( jpi, jpj, fbddtalk   ) 
    4956     ENDIF 
    4957     IF( med_diag%FBDDTDIC%dgsave ) THEN 
    4958        CALL iom_put( "FBDDTDIC"  , fbddtdic   ) 
    4959        CALL wrk_dealloc( jpi, jpj, fbddtdic   ) 
    4960     ENDIF 
    4961     IF( med_diag%FBDDTDIFE%dgsave ) THEN 
    4962        CALL iom_put( "FBDDTDIFE" , fbddtdife  ) 
    4963        CALL wrk_dealloc( jpi, jpj, fbddtdife  ) 
    4964     ENDIF 
    4965     IF( med_diag%FBDDTDIN%dgsave ) THEN 
    4966        CALL iom_put( "FBDDTDIN"  , fbddtdin   ) 
    4967        CALL wrk_dealloc( jpi, jpj, fbddtdin   ) 
    4968     ENDIF 
    4969     IF( med_diag%FBDDTDISI%dgsave ) THEN 
    4970        CALL iom_put( "FBDDTDISI" , fbddtdisi  ) 
    4971        CALL wrk_dealloc( jpi, jpj, fbddtdisi  ) 
    4972     ENDIF 
    4973     !! 
    4974     !! AXY (09/11/16): 3D CMIP6 diagnostics 
    4975     IF( med_diag%TPPD3%dgsave ) THEN 
    4976        CALL iom_put( "TPPD3"     , tppd3 ) 
    4977        CALL wrk_dealloc( jpi, jpj, jpk, tppd3      ) 
    4978     ENDIF 
    4979     IF( med_diag%BDDTALK3%dgsave ) THEN 
    4980        CALL iom_put( "BDDTALK3"  , bddtalk3 ) 
    4981        CALL wrk_dealloc( jpi, jpj, jpk, bddtalk3   ) 
    4982     ENDIF 
    4983     IF( med_diag%BDDTDIC3%dgsave ) THEN 
    4984        CALL iom_put( "BDDTDIC3"  , bddtdic3 ) 
    4985        CALL wrk_dealloc( jpi, jpj, jpk, bddtdic3   ) 
    4986     ENDIF 
    4987     IF( med_diag%BDDTDIFE3%dgsave ) THEN 
    4988        CALL iom_put( "BDDTDIFE3" , bddtdife3 ) 
    4989        CALL wrk_dealloc( jpi, jpj, jpk, bddtdife3  ) 
    4990     ENDIF 
    4991     IF( med_diag%BDDTDIN3%dgsave ) THEN 
    4992        CALL iom_put( "BDDTDIN3"  , bddtdin3 ) 
    4993        CALL wrk_dealloc( jpi, jpj, jpk, bddtdin3   ) 
    4994     ENDIF 
    4995     IF( med_diag%BDDTDISI3%dgsave ) THEN 
    4996        CALL iom_put( "BDDTDISI3" , bddtdisi3 ) 
    4997        CALL wrk_dealloc( jpi, jpj, jpk, bddtdisi3  ) 
    4998     ENDIF 
    4999     IF( med_diag%FD_NIT3%dgsave ) THEN 
    5000        CALL iom_put( "FD_NIT3"  , fd_nit3 ) 
    5001        CALL wrk_dealloc( jpi, jpj, jpk,   fd_nit3  ) 
    5002     ENDIF 
    5003     IF( med_diag%FD_SIL3%dgsave ) THEN 
    5004        CALL iom_put( "FD_SIL3"  , fd_sil3 ) 
    5005        CALL wrk_dealloc( jpi, jpj, jpk,   fd_sil3  ) 
    5006     ENDIF 
    5007     IF( med_diag%FD_CAL3%dgsave ) THEN 
    5008        CALL iom_put( "FD_CAL3"  , fd_cal3 ) 
    5009        CALL wrk_dealloc( jpi, jpj, jpk,   fd_cal3  ) 
    5010     ENDIF 
    5011     IF( med_diag%FD_CAR3%dgsave ) THEN 
    5012        CALL iom_put( "FD_CAR3"  , fd_car3 ) 
    5013        CALL wrk_dealloc( jpi, jpj, jpk,   fd_car3  ) 
    5014     ENDIF 
    5015     IF( med_diag%CO33%dgsave ) THEN 
    5016        CALL iom_put( "CO33"  , f3_co3 ) 
    5017     ENDIF 
    5018     IF( med_diag%CO3SATARAG3%dgsave ) THEN 
    5019        CALL iom_put( "CO3SATARAG3"  , f3_omarg ) 
    5020     ENDIF 
    5021     IF( med_diag%CO3SATCALC3%dgsave ) THEN 
    5022        CALL iom_put( "CO3SATCALC3"  , f3_omcal ) 
    5023     ENDIF 
    5024     IF( med_diag%EXPC3%dgsave ) THEN 
    5025        CALL iom_put( "EXPC3"  , expc3 ) 
    5026        CALL wrk_dealloc( jpi, jpj, jpk, expc3  ) 
    5027     ENDIF 
    5028     IF( med_diag%EXPN3%dgsave ) THEN 
    5029        CALL iom_put( "EXPN3"  , expn3 ) 
    5030        CALL wrk_dealloc( jpi, jpj, jpk, expn3  ) 
    5031     ENDIF 
    5032     IF( med_diag%DCALC3%dgsave ) THEN 
    5033        CALL iom_put( "DCALC3"  , dcalc3 ) 
    5034        CALL wrk_dealloc( jpi, jpj, jpk, dcalc3  ) 
    5035     ENDIF 
    5036     IF( med_diag%FEDISS3%dgsave ) THEN 
    5037        CALL iom_put( "FEDISS3"  , fediss3 ) 
    5038        CALL wrk_dealloc( jpi, jpj, jpk, fediss3  ) 
    5039     ENDIF 
    5040     IF( med_diag%FESCAV3%dgsave ) THEN 
    5041        CALL iom_put( "FESCAV3"  , fescav3 ) 
    5042        CALL wrk_dealloc( jpi, jpj, jpk, fescav3  ) 
    5043     ENDIF 
    5044     IF( med_diag%MIGRAZP3%dgsave ) THEN 
    5045        CALL iom_put( "MIGRAZP3"  , migrazp3 ) 
    5046        CALL wrk_dealloc( jpi, jpj, jpk, migrazp3  ) 
    5047     ENDIF 
    5048     IF( med_diag%MIGRAZD3%dgsave ) THEN 
    5049        CALL iom_put( "MIGRAZD3"  , migrazd3 ) 
    5050        CALL wrk_dealloc( jpi, jpj, jpk, migrazd3  ) 
    5051     ENDIF 
    5052     IF( med_diag%MEGRAZP3%dgsave ) THEN 
    5053        CALL iom_put( "MEGRAZP3"  , megrazp3 ) 
    5054        CALL wrk_dealloc( jpi, jpj, jpk, megrazp3  ) 
    5055     ENDIF 
    5056     IF( med_diag%MEGRAZD3%dgsave ) THEN 
    5057        CALL iom_put( "MEGRAZD3"  , megrazd3 ) 
    5058        CALL wrk_dealloc( jpi, jpj, jpk, megrazd3  ) 
    5059     ENDIF 
    5060     IF( med_diag%MEGRAZZ3%dgsave ) THEN 
    5061        CALL iom_put( "MEGRAZZ3"  , megrazz3 ) 
    5062        CALL wrk_dealloc( jpi, jpj, jpk, megrazz3  ) 
    5063     ENDIF 
    5064     IF( med_diag%O2SAT3%dgsave ) THEN 
    5065        CALL iom_put( "O2SAT3"  , o2sat3 ) 
    5066        CALL wrk_dealloc( jpi, jpj, jpk, o2sat3 ) 
    5067     ENDIF 
    5068     IF( med_diag%PBSI3%dgsave ) THEN 
    5069        CALL iom_put( "PBSI3"  , pbsi3 ) 
    5070        CALL wrk_dealloc( jpi, jpj, jpk, pbsi3  ) 
    5071     ENDIF 
    5072     IF( med_diag%PCAL3%dgsave ) THEN 
    5073        CALL iom_put( "PCAL3"  , pcal3 ) 
    5074        CALL wrk_dealloc( jpi, jpj, jpk, pcal3  ) 
    5075     ENDIF 
    5076     IF( med_diag%REMOC3%dgsave ) THEN 
    5077        CALL iom_put( "REMOC3"  , remoc3 ) 
    5078        CALL wrk_dealloc( jpi, jpj, jpk, remoc3 ) 
    5079     ENDIF 
    5080     IF( med_diag%PNLIMJ3%dgsave ) THEN 
    5081        CALL iom_put( "PNLIMJ3" , pnlimj3 ) 
    5082        CALL wrk_dealloc( jpi, jpj, jpk, pnlimj3  ) 
    5083     ENDIF 
    5084     IF( med_diag%PNLIMN3%dgsave ) THEN 
    5085        CALL iom_put( "PNLIMN3" , pnlimn3 ) 
    5086        CALL wrk_dealloc( jpi, jpj, jpk, pnlimn3  ) 
    5087     ENDIF 
    5088     IF( med_diag%PNLIMFE3%dgsave ) THEN 
    5089        CALL iom_put( "PNLIMFE3" , pnlimfe3 ) 
    5090        CALL wrk_dealloc( jpi, jpj, jpk, pnlimfe3 ) 
    5091     ENDIF 
    5092     IF( med_diag%PDLIMJ3%dgsave ) THEN 
    5093        CALL iom_put( "PDLIMJ3" , pdlimj3 ) 
    5094        CALL wrk_dealloc( jpi, jpj, jpk, pdlimj3  ) 
    5095     ENDIF 
    5096     IF( med_diag%PDLIMN3%dgsave ) THEN 
    5097        CALL iom_put( "PDLIMN3" , pdlimn3 ) 
    5098        CALL wrk_dealloc( jpi, jpj, jpk, pdlimn3  ) 
    5099     ENDIF 
    5100     IF( med_diag%PDLIMFE3%dgsave ) THEN 
    5101        CALL iom_put( "PDLIMFE3" , pdlimfe3 ) 
    5102        CALL wrk_dealloc( jpi, jpj, jpk, pdlimfe3 ) 
    5103     ENDIF 
    5104     IF( med_diag%PDLIMSI3%dgsave ) THEN 
    5105        CALL iom_put( "PDLIMSI3" , pdlimsi3 ) 
    5106        CALL wrk_dealloc( jpi, jpj, jpk, pdlimsi3 ) 
    5107     ENDIF 
     6046             CALL iom_put( "EXPN3"  , expn3 ) 
     6047             CALL wrk_dealloc( jpi, jpj, jpk, expn3  ) 
     6048          ENDIF                     
     6049          IF( med_diag%DCALC3%dgsave ) THEN 
     6050             CALL iom_put( "DCALC3"  , dcalc3 ) 
     6051             CALL wrk_dealloc( jpi, jpj, jpk, dcalc3  ) 
     6052          ENDIF                     
     6053          IF( med_diag%FEDISS3%dgsave ) THEN 
     6054             CALL iom_put( "FEDISS3"  , fediss3 ) 
     6055             CALL wrk_dealloc( jpi, jpj, jpk, fediss3  ) 
     6056          ENDIF                     
     6057          IF( med_diag%FESCAV3%dgsave ) THEN 
     6058             CALL iom_put( "FESCAV3"  , fescav3 ) 
     6059             CALL wrk_dealloc( jpi, jpj, jpk, fescav3  ) 
     6060          ENDIF                     
     6061          IF( med_diag%MIGRAZP3%dgsave ) THEN 
     6062             CALL iom_put( "MIGRAZP3"  , migrazp3 ) 
     6063             CALL wrk_dealloc( jpi, jpj, jpk, migrazp3  ) 
     6064          ENDIF                     
     6065          IF( med_diag%MIGRAZD3%dgsave ) THEN 
     6066             CALL iom_put( "MIGRAZD3"  , migrazd3 ) 
     6067             CALL wrk_dealloc( jpi, jpj, jpk, migrazd3  ) 
     6068          ENDIF                     
     6069          IF( med_diag%MEGRAZP3%dgsave ) THEN 
     6070             CALL iom_put( "MEGRAZP3"  , megrazp3 ) 
     6071             CALL wrk_dealloc( jpi, jpj, jpk, megrazp3  ) 
     6072          ENDIF                     
     6073          IF( med_diag%MEGRAZD3%dgsave ) THEN 
     6074             CALL iom_put( "MEGRAZD3"  , megrazd3 ) 
     6075             CALL wrk_dealloc( jpi, jpj, jpk, megrazd3  ) 
     6076          ENDIF                     
     6077          IF( med_diag%MEGRAZZ3%dgsave ) THEN 
     6078             CALL iom_put( "MEGRAZZ3"  , megrazz3 ) 
     6079             CALL wrk_dealloc( jpi, jpj, jpk, megrazz3  ) 
     6080          ENDIF                     
     6081          IF( med_diag%O2SAT3%dgsave ) THEN 
     6082             CALL iom_put( "O2SAT3"  , o2sat3 ) 
     6083             CALL wrk_dealloc( jpi, jpj, jpk, o2sat3 ) 
     6084          ENDIF                     
     6085          IF( med_diag%PBSI3%dgsave ) THEN 
     6086             CALL iom_put( "PBSI3"  , pbsi3 ) 
     6087             CALL wrk_dealloc( jpi, jpj, jpk, pbsi3  ) 
     6088          ENDIF                     
     6089          IF( med_diag%PCAL3%dgsave ) THEN 
     6090             CALL iom_put( "PCAL3"  , pcal3 ) 
     6091             CALL wrk_dealloc( jpi, jpj, jpk, pcal3  ) 
     6092          ENDIF                     
     6093          IF( med_diag%REMOC3%dgsave ) THEN 
     6094             CALL iom_put( "REMOC3"  , remoc3 ) 
     6095             CALL wrk_dealloc( jpi, jpj, jpk, remoc3 ) 
     6096          ENDIF                     
     6097          IF( med_diag%PNLIMJ3%dgsave ) THEN 
     6098             CALL iom_put( "PNLIMJ3" , pnlimj3 ) 
     6099             CALL wrk_dealloc( jpi, jpj, jpk, pnlimj3  ) 
     6100          ENDIF                     
     6101          IF( med_diag%PNLIMN3%dgsave ) THEN 
     6102             CALL iom_put( "PNLIMN3" , pnlimn3 ) 
     6103             CALL wrk_dealloc( jpi, jpj, jpk, pnlimn3  ) 
     6104          ENDIF                     
     6105          IF( med_diag%PNLIMFE3%dgsave ) THEN 
     6106             CALL iom_put( "PNLIMFE3" , pnlimfe3 ) 
     6107             CALL wrk_dealloc( jpi, jpj, jpk, pnlimfe3 ) 
     6108          ENDIF                     
     6109          IF( med_diag%PDLIMJ3%dgsave ) THEN 
     6110             CALL iom_put( "PDLIMJ3" , pdlimj3 ) 
     6111             CALL wrk_dealloc( jpi, jpj, jpk, pdlimj3  ) 
     6112          ENDIF                     
     6113          IF( med_diag%PDLIMN3%dgsave ) THEN 
     6114             CALL iom_put( "PDLIMN3" , pdlimn3 ) 
     6115             CALL wrk_dealloc( jpi, jpj, jpk, pdlimn3  ) 
     6116          ENDIF                     
     6117          IF( med_diag%PDLIMFE3%dgsave ) THEN 
     6118             CALL iom_put( "PDLIMFE3" , pdlimfe3 ) 
     6119             CALL wrk_dealloc( jpi, jpj, jpk, pdlimfe3 ) 
     6120          ENDIF                     
     6121          IF( med_diag%PDLIMSI3%dgsave ) THEN 
     6122             CALL iom_put( "PDLIMSI3" , pdlimsi3 ) 
     6123             CALL wrk_dealloc( jpi, jpj, jpk, pdlimsi3 ) 
     6124          ENDIF                     
     6125           
    51086126# endif          
    51096127 
    5110     CALL wrk_dealloc( jpi, jpj,   zw2d   ) 
     6128          CALL wrk_dealloc( jpi, jpj,   zw2d   ) 
     6129 
     6130       ENDIF                    ! end of ln_diatrc option 
     6131 
     6132# if defined key_trc_diabio 
     6133       !! Lateral boundary conditions on trcbio 
     6134       DO jn=1,jp_medusa_trd 
     6135          CALL lbc_lnk(trbio(:,:,1,jn),'T',1. ) 
     6136       ENDDO  
     6137# endif 
    51116138 
    51126139# if defined key_debug_medusa 
    5113     IF(lwp) WRITE(numout,*) ' MEDUSA exiting trc_bio_medusa at kt =', kt 
    5114     CALL flush(numout) 
    5115 # endif 
    5116  
    5117   END SUBROUTINE trc_bio_medusa 
     6140       IF(lwp) WRITE(numout,*) ' MEDUSA exiting trc_bio_medusa at kt =', kt 
     6141       CALL flush(numout) 
     6142# endif 
     6143 
     6144   END SUBROUTINE trc_bio_medusa 
    51186145 
    51196146#else 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcdms_medusa.F90

    r7894 r8074  
    3838!======================================================================= 
    3939! 
    40    SUBROUTINE trc_dms_medusa( chn, chd, mld, xqsr, xlim,   &  !! inputs 
     40   SUBROUTINE trc_dms_medusa( chn, chd, mld, xqsr, xdin,   &  !! inputs 
    4141     &  dms_andr, dms_simo, dms_aran, dms_hall )              !! outputs 
    4242!       
     
    7575      !!                 to the atmosphere in trc_bio_medusa 
    7676      !! 
    77       !! AXY (28/03/17): replace DIN input with DIN limitation input 
    78       !!                 to resolve issue with fixed DIN uptake half- 
    79       !!                 saturation; trc_bio_medusa has corresponding 
    80       !!                 change to calculate DIN limitation term 
    81       !! 
    8277!======================================================================= 
    8378 
     
    8883      REAL(wp), INTENT( in )    :: mld                  !! mix layer depth           (m) 
    8984      REAL(wp), INTENT( in )    :: xqsr                 !! surface irradiance        (W/m2) 
    90       REAL(wp), INTENT( in )    :: xlim                 !! surface DIN limitation    (mmol N/m3) 
     85      REAL(wp), INTENT( in )    :: xdin                 !! surface DIN               (mmol N/m3) 
    9186      REAL(wp), INTENT( inout ) :: dms_andr             !! DMS surface concentration (nmol/L)  
    9287      REAL(wp), INTENT( inout ) :: dms_simo             !! DMS surface concentration (nmol/L)  
     
    114109        !! done properly; perhaps even scaled with the proportion 
    115110        !! of diatoms and non-diatoms) 
    116         !! Qterm = xdin / (xdin + 0.5) 
    117    !! AXY (28/03/17): replace DIN with DIN limitation 
    118         Qterm = xlim 
     111        Qterm = xdin / (xdin + 0.5) 
    119112        fq1 = log10(CHL * Jterm * Qterm) 
    120113        if (fq1 > 1.72) then 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcnam_medusa.F90

    r7894 r8074  
    1212   !!              -   !  2015-11  (J. Palmieri) added iom_use for diags 
    1313   !!              -   !  2016-11  (A. Yool) updated diags for CMIP6 
    14    !!              -   !  2017-03  (A. Yool) minor tidy 
    1514   !!---------------------------------------------------------------------- 
    1615#if defined key_medusa 
     
    6867      ! 
    6968      NAMELIST/natbio/ xxi,xaln,xald,jphy,xvpn,xvpd,          & 
    70       &    xsin0,xnsi0,xuif,jliebig, xq10,                    & 
     69      &    xsin0,xnsi0,xuif,jliebig, jq10,                    & 
    7170      &    xthetam,xthetamd,xnln,xnld,xsld,xfln,xfld,         & 
    7271      &  xgmi,xgme,xkmi,xkme,xphi,xbetan,xbetac,xkc,          & 
     
    137136# endif 
    138137 
    139       !! AXY (06/04/17): can this next section be deleted? I think it can 
    140       IF( ( .NOT.lk_iomput .AND. ln_diatrc ) .OR. ( ln_diatrc .AND. lk_medusa ) ) THEN 
     138     IF( ( .NOT.lk_iomput .AND. ln_diatrc ) .OR. ( ln_diatrc .AND. lk_medusa ) ) THEN 
    141139         ! 
    142140         ! Namelist nammeddia 
     
    223221      ! ------------------------------------------- 
    224222       
    225 !! Primary production and chl related quantities 
    226       xxi         = 0.  !! conversion factor from gC to mmolN 
    227       xaln        = 0.  !! Chl-a specific initial slope of P-I curve for non-diatoms 
    228       xald        = 0.  !! Chl-a specific initial slope of P-I curve for diatoms 
    229       jphy        = 0   !! phytoplankton T-dependent growth switch 
    230       xvpn        = 0.  !! maximum growth rate for non-diatoms 
    231       xvpd        = 0.  !! maximum growth rate for diatoms 
    232       xthetam     = 0.  !! maximum Chl to C ratio for non-diatoms 
    233       xthetamd    = 0.  !! maximum Chl to C ratio for diatoms 
    234 !! 
    235 !! Diatom silicon parameters 
    236       xsin0       = 0.  !! minimum diatom Si:N ratio 
    237       xnsi0       = 0.  !! minimum diatom N:Si ratio 
    238       xuif        = 0.  !! hypothetical growth ratio at infinite Si:N ratio 
    239 !! 
    240 !! Nutrient limitation 
    241       jliebig     = 0   !! Liebig nutrient uptake switch 
    242       xq10        = 0.  !! specific Q10 value (if jphy = 2)  
    243       xnln        = 0.  !! half-sat constant for DIN uptake by non-diatoms 
    244       xnld        = 0.  !! half-sat constant for DIN uptake by diatoms 
    245       xsld        = 0.  !! half-sat constant for  Si uptake by diatoms 
    246       xfln        = 0.  !! half-sat constant for  Fe uptake by non-datoms 
    247       xfld        = 0.  !! half-sat constant for  Fe uptake by diatoms 
    248 !! 
    249 !! Grazing 
    250       xgmi        = 0.  !! microzoo maximum growth rate 
    251       xgme        = 0.  !! mesozoo maximum growth rate 
    252       xkmi        = 0.  !! microzoo grazing half-sat parameter 
    253       xkme        = 0.  !! mesozoo grazing half-sat parameter 
    254       xphi    = 0.  !! micro/mesozoo grazing inefficiency 
    255       xbetan      = 0.  !! micro/mesozoo N assimilation efficiency 
    256       xbetac      = 0.  !! micro/mesozoo C assimilation efficiency 
    257       xkc         = 0.  !! micro/mesozoo net C growth efficiency 
    258       xpmipn      = 0.  !! grazing preference of microzoo for non-diatoms 
    259       xpmid       = 0.  !! grazing preference of microzoo for diatoms 
    260       xpmepn      = 0.  !! grazing preference of mesozoo for non-diatoms 
    261       xpmepd      = 0.  !! grazing preference of mesozoo for diatoms 
    262       xpmezmi     = 0.  !! grazing preference of mesozoo for microzoo 
    263       xpmed       = 0.  !! grazing preference of mesozoo for detritus 
    264 !! 
    265 !! Metabolic losses 
    266       xmetapn     = 0.  !! non-diatom metabolic loss rate 
    267       xmetapd     = 0.  !! diatom     metabolic loss rate 
    268       xmetazmi    = 0.  !! microzoo   metabolic loss rate 
    269       xmetazme    = 0.  !! mesozoo    metabolic loss rate 
    270 !! 
    271 !! Mortality/Remineralisation 
    272       jmpn        = 0   !! non-diatom mortality functional form 
    273       xmpn        = 0.  !! non-diatom mortality rate 
    274       xkphn       = 0.  !! non-diatom mortality half-sat constant 
    275       jmpd        = 0   !! diatom     mortality functional form 
    276       xmpd        = 0.  !! diatom     mortality rate 
    277       xkphd       = 0.  !! diatom     mortality half-sat constant 
    278       jmzmi       = 0   !! microzoo   mortality functional form 
    279       xmzmi       = 0.  !! microzoo   mortality rate 
    280       xkzmi       = 0.  !! microzoo   mortality half-sat constant 
    281       jmzme       = 0   !! mesozoo    mortality functional form 
    282       xmzme       = 0.  !! mesozoo    mortality rate 
    283       xkzme       = 0.  !! mesozoo    mortality half-sat constant 
    284 !! 
    285 !! Remineralisation 
    286       jmd         = 0   !! detritus T-dependent remineralisation switch 
    287       jsfd        = 0   !! accelerate seafloor detritus remin. switch 
    288       xmd         = 0.  !! detrital nitrogen remineralisation rate 
    289       xmdc        = 0.  !! detrital carbon remineralisation rate 
    290 !! 
    291 !! Stochiometric ratios 
    292       xthetapn    = 0.  !! non-diatom C:N ratio 
    293       xthetapd    = 0.  !! diatom     C:N ratio 
    294       xthetazmi   = 0.  !! microzoo   C:N ratio 
    295       xthetazme   = 0.  !! mesozoo    C:N ratio 
    296       xthetad     = 0.  !! detritus   C:N ratio (MEDUSA-1 only) 
    297       xrfn        = 0.  !! phytoplankton Fe:N ratio 
    298       xrsn        = 0.  !! diatom Si:N ratio (NOT USED HERE; LOBSTER ARTIFACT) 
    299 !! 
    300 !! Iron parameters 
    301       jiron       = 0   !! iron scavenging submodel switch 
    302       xfe_mass    = 0.  !! iron atomic mass 
    303       xfe_sol     = 0.  !! aeolian iron solubility 
    304       xfe_sed     = 0.  !! sediment iron input 
    305       xLgT        = 0.  !! total ligand concentration (umol/m3) 
    306       xk_FeL     = 0.  !! dissociation constant for (Fe + L) 
    307       xk_sc_Fe    = 0.  !! scavenging rate of "free" iron 
    308 !! 
    309 !! Fast-sinking detritus parameters 
    310       jexport     = 0   !! fast detritus remineralisation switch 
    311       jfdfate     = 0   !! fate of fast detritus at seafloor switch 
    312       jrratio     = 0   !! rain ratio switch 
    313       jocalccd    = 0   !! CCD switch 
    314       xridg_r0    = 0.  !! Ridgwell rain ratio coefficient 
    315       xfdfrac1   = 0.  !! fast-sinking fraction of diatom nat. mort. losses 
    316       xfdfrac2   = 0.  !! fast-sinking fraction of meszooplankton mort. losses 
    317       xfdfrac3   = 0.  !! fast-sinking fraction of diatom silicon grazing losses 
    318       xcaco3a    = 0.  !! polar (high latitude) CaCO3 fraction 
    319       xcaco3b    = 0.  !! equatorial (low latitude) CaCO3 fraction 
    320       xmassc     = 0.  !! organic C mass:mole ratio, C106 H175 O40 N16 P1 
    321       xmassca    = 0.  !! calcium carbonate mass:mole ratio, CaCO3 
    322       xmasssi    = 0.  !! biogenic silicon mass:mole ratio, (H2SiO3)n 
    323       xprotca    = 0.  !! calcium carbonate protection ratio 
    324       xprotsi    = 0.  !! biogenic silicon protection ratio 
    325       xfastc     = 0.  !! organic C remineralisation length scale 
    326       xfastca    = 0.  !! calcium carbonate dissolution length scale 
    327       xfastsi    = 0.  !! biogenic silicon dissolution length scale 
    328 !! 
    329 !! Benthic 
    330       jorgben     = 0   !! does   organic detritus go to the benthos? 
    331       jinorgben   = 0   !! does inorganic detritus go to the benthos? 
    332       xsedn       = 0.  !! organic   nitrogen sediment remineralisation rate 
    333       xsedfe      = 0.  !! organic   iron     sediment remineralisation rate 
    334       xsedsi      = 0.  !! inorganic silicon  sediment dissolution      rate 
    335       xsedc       = 0.  !! organic   carbon   sediment remineralisation rate 
    336       xsedca      = 0.  !! inorganic carbon   sediment dissolution      rate 
    337       xburial     = 0.  !! burial rate of seafloor detritus 
    338 !! 
    339 !! Riverine inputs 
    340       jriver_n    = 0   !! riverine N          input? 
    341       jriver_si   = 0   !! riverine Si         input? 
    342       jriver_c    = 0   !! riverine C          input? 
    343       jriver_alk  = 0   !! riverine alkalinity input? 
    344       jriver_dep  = 1   !! depth of riverine   input? 
    345 !! 
    346 !! Miscellaneous 
    347       xsdiss     = 0.  !! diatom frustule dissolution rate 
    348 !! 
    349 !! Gravitational sinking 
    350       vsed        = 0.  !! detritus gravitational sinking rate 
    351       xhr         = 0.  !! coeff for Martin's remineralisation profile (LOBSTER) 
    352 !! 
    353 !! Additional parameters 
    354       sedlam     = 0.  !! time coeff of POC in sediments (LOBSTER) 
    355       sedlostpoc  = 0.  !! sediment geol loss for POC (LOBSTER) 
    356       jpkb    = 0.  !! vertical layer for diagnostic of the vertical flux (LOBSTER) 
    357 !! 
    358 !! UKESM1 - new DMS parameters  !! Jpalm 
    359       jdms        = 0   !! include dms diagnostics 
    360       jdms_input  = 0   !! use instant (0) or diel-avg (1) inputs 
    361       jdms_model  = 0   !! choice of DMS model passed to atmosphere 
    362                         !! 1 = ANDR, 2 = SIMO, 3 = ARAN, 4 = HALL 
     223      xxi         = 0. 
     224      xaln        = 0. 
     225      xald        = 0. 
     226      jphy        = 0 
     227      xvpn        = 0. 
     228      xvpd        = 0. 
     229      xthetam     = 0. 
     230      xthetamd    = 0. 
     231!! 
     232      xsin0       = 0. 
     233      xnsi0       = 0. 
     234      xuif        = 0. 
     235!! 
     236      jliebig     = 0 
     237      jq10        = 0. 
     238      xnln        = 0. 
     239      xnld        = 0. 
     240      xsld        = 0. 
     241      xfln        = 0. 
     242      xfld        = 0. 
     243!! 
     244      xgmi        = 0. 
     245      xgme        = 0. 
     246      xkmi        = 0. 
     247      xkme        = 0. 
     248      xphi    = 0. 
     249      xbetan      = 0. 
     250      xbetac      = 0. 
     251      xkc         = 0. 
     252      xpmipn      = 0. 
     253      xpmid       = 0. 
     254      xpmepn      = 0. 
     255      xpmepd      = 0. 
     256      xpmezmi     = 0. 
     257      xpmed       = 0. 
     258!! 
     259      xmetapn     = 0. 
     260      xmetapd     = 0. 
     261      xmetazmi    = 0. 
     262      xmetazme    = 0. 
     263!! 
     264      jmpn        = 0 
     265      xmpn        = 0. 
     266      xkphn       = 0. 
     267      jmpd        = 0 
     268      xmpd        = 0. 
     269      xkphd       = 0. 
     270      jmzmi       = 0 
     271      xmzmi       = 0. 
     272      xkzmi       = 0. 
     273      jmzme       = 0 
     274      xmzme       = 0. 
     275      xkzme       = 0. 
     276!! 
     277      jmd         = 0 
     278      jsfd        = 0 
     279      xmd         = 0. 
     280      xmdc        = 0. 
     281!! 
     282      xthetapn    = 0. 
     283      xthetapd    = 0. 
     284      xthetazmi   = 0. 
     285      xthetazme   = 0. 
     286      xthetad     = 0. 
     287      xrfn        = 0. 
     288      xrsn        = 0.  !: (NOT USED HERE; RETAINED FOR LOBSTER) 
     289!! 
     290      jiron       = 0 
     291      xfe_mass    = 0. 
     292      xfe_sol     = 0. 
     293      xfe_sed     = 0. 
     294      xLgT        = 0. 
     295      xk_FeL     = 0. 
     296      xk_sc_Fe    = 0. 
     297!! 
     298      jexport     = 0 
     299      jfdfate     = 0 
     300      jrratio     = 0 
     301      jocalccd    = 0 
     302      xridg_r0    = 0. 
     303      xfdfrac1   = 0. 
     304      xfdfrac2   = 0. 
     305      xfdfrac3   = 0. 
     306      xcaco3a    = 0. 
     307      xcaco3b    = 0. 
     308      xmassc     = 0. 
     309      xmassca    = 0. 
     310      xmasssi    = 0. 
     311      xprotca    = 0. 
     312      xprotsi    = 0. 
     313      xfastc     = 0. 
     314      xfastca    = 0. 
     315      xfastsi    = 0. 
     316!! 
     317      jorgben     = 0 
     318      jinorgben   = 0 
     319      xsedn       = 0. 
     320      xsedfe      = 0. 
     321      xsedsi      = 0. 
     322      xsedc       = 0. 
     323      xsedca      = 0. 
     324      xburial     = 0. 
     325!! 
     326      jriver_n    = 0 
     327      jriver_si   = 0 
     328      jriver_c    = 0 
     329      jriver_alk  = 0 
     330      jriver_dep  = 1 
     331!! 
     332      xsdiss     = 0. 
     333!! 
     334      vsed        = 0. 
     335      xhr         = 0. 
     336!! 
     337      sedlam     = 0. 
     338      sedlostpoc  = 0. 
     339      jpkb    = 0. 
     340      jdms        = 0 
     341      jdms_input  = 0 
     342      jdms_model  = 0 
    363343             
    364344      !REWIND(numnatm) 
    365345      !READ(numnatm,natbio) 
    366       ! Namelist natbio 
    367       ! ------------------- 
    368       REWIND( numnatp_ref )     ! Namelist natbio in reference namelist : MEDUSA diagnostics 
    369       READ  ( numnatp_ref, natbio, IOSTAT = ios, ERR = 903) 
    370  903  IF( ios /= 0 ) CALL ctl_nam ( ios , 'natbio in reference namelist', lwp ) 
    371  
    372       REWIND( numnatp_cfg )     ! Namelist natbio in configuration namelist : MEDUSA diagnostics 
    373       READ  ( numnatp_cfg, natbio, IOSTAT = ios, ERR = 904 ) 
    374  904  IF( ios /= 0 ) CALL ctl_nam ( ios , 'natbio in configuration namelist', lwp ) 
    375       IF(lwm) WRITE ( numonp, natbio ) 
    376  
     346         ! Namelist natbio 
     347         ! ------------------- 
     348         REWIND( numnatp_ref )              ! Namelist natbio in reference namelist : MEDUSA diagnostics 
     349         READ  ( numnatp_ref, natbio, IOSTAT = ios, ERR = 903) 
     350903      IF( ios /= 0 ) CALL ctl_nam ( ios , 'natbio in reference namelist', lwp ) 
     351 
     352         REWIND( numnatp_cfg )              ! Namelist natbio in configuration namelist : MEDUSA diagnostics 
     353         READ  ( numnatp_cfg, natbio, IOSTAT = ios, ERR = 904 ) 
     354904      IF( ios /= 0 ) CALL ctl_nam ( ios , 'natbio in configuration namelist', lwp ) 
     355         IF(lwm) WRITE ( numonp, natbio ) 
     356 
     357!! Primary production and chl related quantities 
     358!!       xxi         :  conversion factor from gC to mmolN  
     359!!       xaln        :  Chl-a specific initial slope of P-I curve for non-diatoms  
     360!!       xald        :  Chl-a specific initial slope of P-I curve for diatoms 
     361!!       jphy        :  phytoplankton T-dependent growth switch 
     362!!       xvpn        :  maximum growth rate for non-diatoms 
     363!!       xvpd        :  maximum growth rate for diatoms 
     364!!       xthetam     :  maximum Chl to C ratio for non-diatoms       
     365!!       xthetamd    :  maximum Chl to C ratio for diatoms       
     366!! 
     367!! Diatom silicon parameters 
     368!!       xsin0       :  minimum diatom Si:N ratio 
     369!!       xnsi0       :  minimum diatom N:Si ratio 
     370!!       xuif        :  hypothetical growth ratio at infinite Si:N ratio 
     371!! 
     372!! Nutrient limitation 
     373!!       jliebig     :  Liebig nutrient uptake switch 
     374!!       xnln        :  half-sat constant for DIN uptake by non-diatoms  
     375!!       xnld        :  half-sat constant for DIN uptake by diatoms  
     376!!       xsl         :  half-sat constant for Si uptake by diatoms  
     377!!       xfld        :  half-sat constant for Fe uptake by diatoms   
     378!!       xfln        :  half-sat constant for Fe uptake by non-datoms  
     379!! 
     380!! Grazing 
     381!!       xgmi        :  microzoo maximum growth rate  
     382!!       xgme        :  mesozoo maximum growth rate  
     383!!       xkmi        :  microzoo grazing half-sat parameter 
     384!!       xkme        :  mesozoo grazing half-sat parameter 
     385!!       xphi        :  micro/mesozoo grazing inefficiency 
     386!!       xbetan      :  micro/mesozoo N assimilation efficiency 
     387!!       xbetac      :  micro/mesozoo C assimilation efficiency 
     388!!       xkc         :  micro/mesozoo net C growth efficiency 
     389!!       xpmipn      :  grazing preference of microzoo for non-diatoms 
     390!!       xpmid       :  grazing preference of microzoo for diatoms 
     391!!       xpmepn      :  grazing preference of mesozoo for non-diatoms  
     392!!       xpmepd      :  grazing preference of mesozoo for diatoms 
     393!!       xpmezmi     :  grazing preference of mesozoo for microzoo 
     394!!       xpmed       :  grazing preference of mesozoo for detritus 
     395!! 
     396!! Metabolic losses 
     397!!       xmetapn     :  non-diatom metabolic loss rate 
     398!!       xmetapd     :  diatom     metabolic loss rate 
     399!!       xmetazmi    :  microzoo   metabolic loss rate 
     400!!       xmetazme    :  mesozoo    metabolic loss rate 
     401!! 
     402!! Mortality/Remineralisation 
     403!!       jmpn        :  non-diatom mortality functional form 
     404!!       xmpn        :  non-diatom mortality rate 
     405!!       xkphn       :  non-diatom mortality half-sat constant 
     406!!       jmpd        :  diatom     mortality functional form 
     407!!       xmpd        :  diatom mortality rate 
     408!!       xkphd       :  diatom mortality half-sat constant 
     409!!       jmzmi       :  microzoo   mortality functional form 
     410!!       xmzmi       :  microzoo mortality rate 
     411!!       xkzmi       :  microzoo mortality half-sat constant 
     412!!       jmzme       :  mesozoo    mortality functional form 
     413!!       xmzme       :  mesozoo mortality rate 
     414!!       xkzme       :  mesozoo mortality half-sat constant 
     415!! 
     416!! Remineralisation 
     417!!       jmd         :  detritus T-dependent remineralisation switch 
     418!!       jsfd        :  accelerate seafloor detritus remin. switch 
     419!!       xmd         :  detrital nitrogen remineralisation rate  
     420!!       xmdc        :  detrital carbon remineralisation rate  
     421!! 
     422!! Stochiometric ratios 
     423!!       xthetapn    :  non-diatom C:N ratio 
     424!!       xthetapd    :  diatom C:N ratio 
     425!!       xthetazmi   :  microzoo C:N ratio 
     426!!       xthetazme   :  mesozoo C:N ratio 
     427!!       xthetad     :  detritus C:N ratio 
     428!!       xrfn        :  phytoplankton Fe:N ratio 
     429!!  xrsn        :  diatom Si:N ratio (*NOT* used) 
     430!! 
     431!! Iron parameters 
     432!!       jiron       :  iron scavenging submodel switch 
     433!!       xfe_mass    :  iron atomic mass 
     434!!  xfe_sol     :  aeolian iron solubility 
     435!!  xfe_sed     :  sediment iron input 
     436!!  xLgT      :  total ligand concentration (umol/m3) 
     437!!  xk_FeL       :  dissociation constant for (Fe + L) 
     438!!  xk_sc_Fe    :  scavenging rate of "free" iron 
     439!!   
     440!! Fast-sinking detritus parameters 
     441!!       jexport     :  fast detritus remineralisation switch 
     442!!       jfdfate     :  fate of fast detritus at seafloor switch 
     443!!       jrratio     :  rain ratio switch 
     444!!       jocalccd    :  CCD switch 
     445!!       xridg_r0    :  Ridgwell rain ratio coefficient 
     446!!       xfdfrac1    :  fast-sinking fraction of diatom nat. mort. losses 
     447!!       xfdfrac2    :  fast-sinking fraction of meszooplankton mort. losses 
     448!!       xfdfrac3    :  fast-sinking fraction of diatom silicon grazing losses 
     449!!       xcaco3a     :  polar (high latitude) CaCO3 fraction 
     450!!       xcaco3b     :  equatorial (low latitude) CaCO3 fraction 
     451!!       xmassc      :  organic C mass:mole ratio, C106 H175 O40 N16 P1 
     452!!       xmassca     :  calcium carbonate mass:mole ratio, CaCO3 
     453!!       xmasssi     :  biogenic silicon mass:mole ratio, (H2SiO3)n 
     454!!       xprotca     :  calcium carbonate protection ratio 
     455!!       xprotsi     :  biogenic silicon protection ratio 
     456!!       xfastc      :  organic C remineralisation length scale 
     457!!       xfastca     :  calcium carbonate dissolution length scale 
     458!!       xfastsi     :  biogenic silicon dissolution length scale 
     459!! 
     460!! Benthic  
     461!!       jorgben     :  does   organic detritus go to the benthos? 
     462!!       jinorgben   :  does inorganic detritus go to the benthos? 
     463!!       xsedn       :  organic   nitrogen sediment remineralisation rate  
     464!!       xsedfe      :  organic   iron     sediment remineralisation rate  
     465!!       xsedsi      :  inorganic silicon  sediment dissolution      rate  
     466!!       xsedc       :  organic   carbon   sediment remineralisation rate  
     467!!       xsedca      :  inorganic carbon   sediment dissolution      rate  
     468!!       xburial     :  burial rate of seafloor detritus 
     469!! 
     470!! Riverine inputs 
     471!!       jriver_n    :  riverine N          input? 
     472!!       jriver_si   :  riverine Si         input? 
     473!!       jriver_c    :  riverine C          input? 
     474!!       jriver_alk  :  riverine alkalinity input? 
     475!!       jriver_dep  :  depth of riverine   input? 
     476!! 
     477!! Miscellaneous 
     478!!       xsdiss      :  diatom frustule dissolution rate 
     479!! 
     480!! Gravitational sinking       
     481!!       vsed        :  detritus gravitational sinking rate  
     482!!       xhr         :  coeff for Martin's remineralisation profile 
     483!! 
     484!! Additional parameters 
     485!!       sedlam      :  time coeff of POC in sediments 
     486!!      sedlostpoc   :  sediment geol loss for POC 
     487!!       jpkb        :  vertical layer for diagnostic of the vertical flux  
     488!!                      NOTE that in LOBSTER it is a first vertical layers where  
     489!!                      biology is active   
     490!! 
     491!! UKESM1 - new diagnostics  !! Jpalm 
     492!!       jdms        :  include dms diagnostics 
     493!!  jdms_input  :  use instant (0) or diel-avg (1) inputs 
     494!!       jdms_model  :  choice of DMS model passed to atmosphere 
     495!!                      1 = ANDR, 2 = SIMO, 3 = ARAN, 4 = HALL 
     496!! 
    377497      IF(lwp) THEN 
    378  
     498!! 
    379499!! AXY (08/11/13): compilation key notification 
    380500         WRITE(numout,*) '=== Compilation keys' 
     
    392512         WRITE(numout,*)     & 
    393513         &   ' key_axy_carbchem                                                       = INACTIVE' 
     514#endif         
     515#if defined key_mocsy 
     516         WRITE(numout,*)     & 
     517         &   ' key_mocsy                                                              = ACTIVE' 
     518#else 
     519         WRITE(numout,*)     & 
     520         &   ' key_mocsy                                                              = INACTIVE' 
    394521#endif         
    395522#if defined key_avgqsr_medusa 
     
    474601         &   ' maximum Chl to C ratio for diatoms,                        xthetamd    = ', xthetamd 
    475602         WRITE(numout,*)     & 
    476          &   ' specific Q10 value (jphy==2),                                  xq10    = ', xq10 
     603         &   ' specific Q10 value (jphy==2),                                  jq10    = ', jq10 
    477604!! 
    478605!! Diatom silicon parameters 
     
    664791            WRITE(numout,*)     & 
    665792            &   ' Dutkiewicz et al. (2005) iron scavenging                   jiron       = ', jiron 
     793         elseif (jiron.eq.2) then 
     794            WRITE(numout,*)     & 
     795            &   ' Moore et al. (2004) iron scavenging                        jiron       = ', jiron 
     796         elseif (jiron.eq.3) then 
     797            WRITE(numout,*)     & 
     798            &   ' Moore et al. (2008) iron scavenging                        jiron       = ', jiron 
     799         elseif (jiron.eq.4) then 
     800            WRITE(numout,*)     & 
     801            &   ' Galbraith et al. (2010) iron scavenging                    jiron       = ', jiron 
    666802         else 
    667803            WRITE(numout,*)     & 
     
    8681004!! 
    8691005!! UKESM1 - new diagnostics  !! Jpalm; AXY (08/07/15) 
    870          WRITE(numout,*) '=== UKESM1 DMS parameters' 
     1006         WRITE(numout,*) '=== UKESM1-related parameters' 
    8711007         WRITE(numout,*)     & 
    8721008         &   ' include DMS diagnostic?,                                   jdms        = ', jdms 
     
    9481084 
    9491085      !READ(numnatm,natroam) 
    950       ! Namelist natroam 
    951       ! ------------------- 
    952       REWIND( numnatp_ref )     ! Namelist natroam in reference namelist : MEDUSA diagnostics 
    953       READ  ( numnatp_ref, natroam, IOSTAT = ios, ERR = 905) 
    954  905  IF( ios /= 0 ) CALL ctl_nam ( ios , 'natroam in reference namelist', lwp ) 
    955  
    956       REWIND( numnatp_cfg )     ! Namelist natroam in configuration namelist : MEDUSA diagnostics 
    957       READ  ( numnatp_cfg, natroam, IOSTAT = ios, ERR = 906 ) 
    958  906  IF( ios /= 0 ) CALL ctl_nam ( ios , 'natroam in configuration namelist', lwp ) 
    959       IF(lwm) WRITE ( numonp, natroam ) 
     1086         ! Namelist natroam 
     1087         ! ------------------- 
     1088         REWIND( numnatp_ref )              ! Namelist natroam in reference namelist : MEDUSA diagnostics 
     1089         READ  ( numnatp_ref, natroam, IOSTAT = ios, ERR = 905) 
     1090905      IF( ios /= 0 ) CALL ctl_nam ( ios , 'natroam in reference namelist', lwp ) 
     1091 
     1092         REWIND( numnatp_cfg )              ! Namelist natroam in configuration namelist : MEDUSA diagnostics 
     1093         READ  ( numnatp_cfg, natroam, IOSTAT = ios, ERR = 906 ) 
     1094906      IF( ios /= 0 ) CALL ctl_nam ( ios , 'natroam in configuration namelist', lwp ) 
     1095         IF(lwm) WRITE ( numonp, natroam ) 
    9601096 
    9611097!! ROAM carbon, alkalinity and oxygen cycle parameters 
     
    9651101!!       xthetarem :  oxygen consumption by carbon remineralisation 
    9661102!!       xo2min    :  oxygen minimum concentration 
     1103 
    9671104      IF(lwp) THEN 
    9681105          WRITE(numout,*) 'natroam' 
    9691106          WRITE(numout,*) ' ' 
     1107!! 
     1108!! ROAM carbon, alkalinity and oxygen cycle parameters 
    9701109          WRITE(numout,*) '=== ROAM carbon, alkalinity and oxygen cycle parameters' 
    9711110          WRITE(numout,*)     & 
     
    9971136 
    9981137      !READ(numnatm,natopt) 
    999       ! Namelist natopt 
    1000       ! ------------------- 
    1001       REWIND( numnatp_ref )     ! Namelist natopt in reference namelist : MEDUSA diagnostics 
    1002       READ  ( numnatp_ref, natopt, IOSTAT = ios, ERR = 907) 
    1003  907  IF( ios /= 0 ) CALL ctl_nam ( ios , 'natopt in reference namelist', lwp ) 
    1004        
    1005       REWIND( numnatp_cfg )     ! Namelist natopt in configuration namelist : MEDUSA diagnostics 
    1006       READ  ( numnatp_cfg, natopt, IOSTAT = ios, ERR = 908 ) 
    1007  908  IF( ios /= 0 ) CALL ctl_nam ( ios , 'natopt in configuration namelist', lwp ) 
    1008       IF(lwm) WRITE ( numonp, natopt ) 
     1138         ! Namelist natopt 
     1139         ! ------------------- 
     1140         REWIND( numnatp_ref )              ! Namelist natopt in reference namelist : MEDUSA diagnostics 
     1141         READ  ( numnatp_ref, natopt, IOSTAT = ios, ERR = 907) 
     1142907      IF( ios /= 0 ) CALL ctl_nam ( ios , 'natopt in reference namelist', lwp ) 
     1143 
     1144         REWIND( numnatp_cfg )              ! Namelist natopt in configuration namelist : MEDUSA diagnostics 
     1145         READ  ( numnatp_cfg, natopt, IOSTAT = ios, ERR = 908 ) 
     1146908      IF( ios /= 0 ) CALL ctl_nam ( ios , 'natopt in configuration namelist', lwp ) 
     1147         IF(lwm) WRITE ( numonp, natopt ) 
    10091148 
    10101149      IF(lwp) THEN 
     
    10191158         WRITE(numout,*) ' chla/chla+phea ratio            rpig  = ',rpig 
    10201159         WRITE(numout,*) ' ' 
     1160 
    10211161      ENDIF 
    10221162 
     
    10341174         endif 
    10351175         WRITE(numout,*) ' ' 
    1036       ENDIF 
     1176       ENDIF 
    10371177 
    10381178   END SUBROUTINE trc_nam_medusa 
     
    10501190      !!--------------------------------------------------------------------- 
    10511191      !! 
     1192      !! 
    10521193      !!----------------------------------------------------------------------             
    10531194      !! Variable conventions 
     
    10551196      !! 
    10561197      IF (iom_use("INVTN")) THEN  
    1057          med_diag%INVTN%dgsave = .TRUE. 
    1058       ELSE  
    1059          med_diag%INVTN%dgsave = .FALSE. 
    1060       ENDIF 
    1061       IF (iom_use("INVTSI")) THEN  
    1062          med_diag%INVTSI%dgsave = .TRUE. 
    1063       ELSE  
    1064          med_diag%INVTSI%dgsave = .FALSE. 
    1065       ENDIF 
    1066       IF (iom_use("INVTFE")) THEN  
    1067          med_diag%INVTFE%dgsave = .TRUE. 
    1068       ELSE  
    1069          med_diag%INVTFE%dgsave = .FALSE. 
    1070       ENDIF 
    1071       IF (iom_use("PRN")) THEN  
    1072          med_diag%PRN%dgsave = .TRUE. 
    1073       ELSE  
    1074          med_diag%PRN%dgsave = .FALSE. 
    1075       ENDIF 
    1076       IF (iom_use("MPN")) THEN  
    1077          med_diag%MPN%dgsave = .TRUE. 
    1078       ELSE  
    1079          med_diag%MPN%dgsave = .FALSE. 
    1080       ENDIF 
    1081       IF (iom_use("PRD")) THEN  
    1082          med_diag%PRD%dgsave = .TRUE. 
    1083       ELSE  
    1084          med_diag%PRD%dgsave = .FALSE. 
    1085       ENDIF 
    1086       IF (iom_use("MPD")) THEN  
    1087          med_diag%MPD%dgsave = .TRUE. 
    1088       ELSE  
    1089          med_diag%MPD%dgsave = .FALSE. 
    1090       ENDIF 
    1091       IF (iom_use("DSED")) THEN  
    1092          med_diag%DSED%dgsave = .TRUE. 
    1093       ELSE  
    1094          med_diag%DSED%dgsave = .FALSE. 
    1095       ENDIF 
    1096       IF (iom_use("OPAL")) THEN  
    1097          med_diag%OPAL%dgsave = .TRUE. 
    1098       ELSE  
    1099          med_diag%OPAL%dgsave = .FALSE. 
    1100       ENDIF 
    1101       IF (iom_use("OPALDISS")) THEN  
    1102          med_diag%OPALDISS%dgsave = .TRUE. 
    1103       ELSE  
    1104          med_diag%OPALDISS%dgsave = .FALSE. 
    1105       ENDIF 
    1106       IF (iom_use("GMIPn")) THEN  
    1107          med_diag%GMIPn%dgsave = .TRUE. 
    1108       ELSE  
    1109          med_diag%GMIPn%dgsave = .FALSE. 
    1110       ENDIF 
    1111       IF (iom_use("GMID")) THEN  
    1112          med_diag%GMID%dgsave = .TRUE. 
    1113       ELSE  
    1114          med_diag%GMID%dgsave = .FALSE. 
    1115       ENDIF 
    1116       IF (iom_use("MZMI")) THEN  
    1117          med_diag%MZMI%dgsave = .TRUE. 
    1118       ELSE  
    1119          med_diag%MZMI%dgsave = .FALSE. 
    1120       ENDIF 
    1121       IF (iom_use("GMEPN")) THEN  
    1122          med_diag%GMEPN%dgsave = .TRUE. 
    1123       ELSE  
    1124          med_diag%GMEPN%dgsave = .FALSE. 
    1125       ENDIF 
    1126       IF (iom_use("GMEPD")) THEN  
    1127          med_diag%GMEPD%dgsave = .TRUE. 
    1128       ELSE  
    1129          med_diag%GMEPD%dgsave = .FALSE. 
    1130       ENDIF 
    1131       IF (iom_use("GMEZMI")) THEN  
    1132          med_diag%GMEZMI%dgsave = .TRUE. 
    1133       ELSE  
    1134          med_diag%GMEZMI%dgsave = .FALSE. 
    1135       ENDIF 
    1136       IF (iom_use("GMED")) THEN  
    1137          med_diag%GMED%dgsave = .TRUE. 
    1138       ELSE  
    1139          med_diag%GMED%dgsave = .FALSE. 
    1140       ENDIF 
    1141       IF (iom_use("MZME")) THEN  
    1142          med_diag%MZME%dgsave = .TRUE. 
    1143       ELSE  
    1144          med_diag%MZME%dgsave = .FALSE. 
    1145       ENDIF 
    1146       IF (iom_use("DEXP")) THEN  
    1147          med_diag%DEXP%dgsave = .TRUE. 
    1148       ELSE  
    1149          med_diag%DEXP%dgsave = .FALSE. 
    1150       ENDIF 
    1151       IF (iom_use("DETN")) THEN  
    1152          med_diag%DETN%dgsave = .TRUE. 
    1153       ELSE  
    1154          med_diag%DETN%dgsave = .FALSE. 
    1155       ENDIF 
    1156       IF (iom_use("MDET")) THEN  
    1157          med_diag%MDET%dgsave = .TRUE. 
    1158       ELSE  
    1159          med_diag%MDET%dgsave = .FALSE. 
    1160       ENDIF 
    1161       IF (iom_use("AEOLIAN")) THEN  
    1162          med_diag%AEOLIAN%dgsave = .TRUE. 
    1163       ELSE  
    1164          med_diag%AEOLIAN%dgsave = .FALSE. 
    1165       ENDIF 
    1166       IF (iom_use("BENTHIC")) THEN  
    1167          med_diag%BENTHIC%dgsave = .TRUE. 
    1168       ELSE  
    1169          med_diag%BENTHIC%dgsave = .FALSE. 
    1170       ENDIF 
    1171       IF (iom_use("SCAVENGE")) THEN  
    1172          med_diag%SCAVENGE%dgsave = .TRUE. 
    1173       ELSE  
    1174          med_diag%SCAVENGE%dgsave = .FALSE. 
    1175       ENDIF 
    1176       IF (iom_use("PN_JLIM")) THEN  
    1177          med_diag%PN_JLIM%dgsave = .TRUE. 
    1178       ELSE  
    1179          med_diag%PN_JLIM%dgsave = .FALSE. 
    1180       ENDIF 
    1181       IF (iom_use("PN_NLIM")) THEN  
    1182          med_diag%PN_NLIM%dgsave = .TRUE. 
    1183       ELSE  
    1184          med_diag%PN_NLIM%dgsave = .FALSE. 
    1185       ENDIF 
    1186       IF (iom_use("PN_FELIM")) THEN  
    1187          med_diag%PN_FELIM%dgsave = .TRUE. 
    1188       ELSE  
    1189          med_diag%PN_FELIM%dgsave = .FALSE. 
    1190       ENDIF 
    1191       IF (iom_use("PD_JLIM")) THEN  
    1192          med_diag%PD_JLIM%dgsave = .TRUE. 
    1193       ELSE  
    1194          med_diag%PD_JLIM%dgsave = .FALSE. 
    1195       ENDIF 
    1196       IF (iom_use("PD_NLIM")) THEN  
    1197          med_diag%PD_NLIM%dgsave = .TRUE. 
    1198       ELSE  
    1199          med_diag%PD_NLIM%dgsave = .FALSE. 
    1200       ENDIF 
    1201       IF (iom_use("PD_FELIM")) THEN  
    1202          med_diag%PD_FELIM%dgsave = .TRUE. 
    1203       ELSE  
    1204          med_diag%PD_FELIM%dgsave = .FALSE. 
    1205       ENDIF 
    1206       IF (iom_use("PD_SILIM")) THEN  
    1207          med_diag%PD_SILIM%dgsave = .TRUE. 
    1208       ELSE  
    1209          med_diag%PD_SILIM%dgsave = .FALSE. 
    1210       ENDIF 
    1211       IF (iom_use("PDSILIM2")) THEN  
    1212          med_diag%PDSILIM2%dgsave = .TRUE. 
    1213       ELSE  
    1214          med_diag%PDSILIM2%dgsave = .FALSE. 
    1215       ENDIF 
    1216       IF (iom_use("SDT__100")) THEN  
    1217          med_diag%SDT__100%dgsave = .TRUE. 
    1218       ELSE  
    1219          med_diag%SDT__100%dgsave = .FALSE. 
    1220       ENDIF 
    1221       IF (iom_use("SDT__200")) THEN  
    1222          med_diag%SDT__200%dgsave = .TRUE. 
    1223       ELSE  
    1224          med_diag%SDT__200%dgsave = .FALSE. 
    1225       ENDIF 
    1226       IF (iom_use("SDT__500")) THEN  
    1227          med_diag%SDT__500%dgsave = .TRUE. 
    1228       ELSE  
    1229          med_diag%SDT__500%dgsave = .FALSE. 
    1230       ENDIF 
    1231       IF (iom_use("SDT_1000")) THEN  
    1232          med_diag%SDT_1000%dgsave = .TRUE. 
    1233       ELSE  
    1234          med_diag%SDT_1000%dgsave = .FALSE. 
    1235       ENDIF 
    1236       IF (iom_use("TOTREG_N")) THEN  
    1237          med_diag%TOTREG_N%dgsave = .TRUE. 
    1238       ELSE  
    1239          med_diag%TOTREG_N%dgsave = .FALSE. 
    1240       ENDIF 
    1241       IF (iom_use("TOTRG_SI")) THEN  
    1242          med_diag%TOTRG_SI%dgsave = .TRUE. 
    1243       ELSE  
    1244          med_diag%TOTRG_SI%dgsave = .FALSE. 
    1245       ENDIF 
    1246       IF (iom_use("REG__100")) THEN  
    1247          med_diag%REG__100%dgsave = .TRUE. 
    1248       ELSE  
    1249          med_diag%REG__100%dgsave = .FALSE. 
    1250       ENDIF 
    1251       IF (iom_use("REG__200")) THEN  
    1252          med_diag%REG__200%dgsave = .TRUE. 
    1253       ELSE  
    1254          med_diag%REG__200%dgsave = .FALSE. 
    1255       ENDIF 
    1256       IF (iom_use("REG__500")) THEN  
    1257          med_diag%REG__500%dgsave = .TRUE. 
    1258       ELSE  
    1259          med_diag%REG__500%dgsave = .FALSE. 
    1260       ENDIF 
    1261       IF (iom_use("REG_1000")) THEN  
    1262          med_diag%REG_1000%dgsave = .TRUE. 
    1263       ELSE  
    1264          med_diag%REG_1000%dgsave = .FALSE. 
    1265       ENDIF 
    1266       IF (iom_use("FASTN")) THEN  
    1267          med_diag%FASTN%dgsave = .TRUE. 
    1268       ELSE  
    1269          med_diag%FASTN%dgsave = .FALSE. 
    1270       ENDIF 
    1271       IF (iom_use("FASTSI")) THEN  
    1272          med_diag%FASTSI%dgsave = .TRUE. 
    1273       ELSE  
    1274          med_diag%FASTSI%dgsave = .FALSE. 
    1275       ENDIF 
    1276       IF (iom_use("FASTFE")) THEN  
    1277          med_diag%FASTFE%dgsave = .TRUE. 
    1278       ELSE  
    1279          med_diag%FASTFE%dgsave = .FALSE. 
    1280       ENDIF 
    1281       IF (iom_use("FASTC")) THEN  
    1282          med_diag%FASTC%dgsave = .TRUE. 
    1283       ELSE  
    1284          med_diag%FASTC%dgsave = .FALSE. 
    1285       ENDIF 
    1286       IF (iom_use("FASTCA")) THEN  
    1287          med_diag%FASTCA%dgsave = .TRUE. 
    1288       ELSE  
    1289          med_diag%FASTCA%dgsave = .FALSE. 
    1290       ENDIF 
    1291       IF (iom_use("FDT__100")) THEN  
    1292          med_diag%FDT__100%dgsave = .TRUE. 
    1293       ELSE  
    1294          med_diag%FDT__100%dgsave = .FALSE. 
    1295       ENDIF 
    1296       IF (iom_use("FDT__200")) THEN  
    1297          med_diag%FDT__200%dgsave = .TRUE. 
    1298       ELSE  
    1299          med_diag%FDT__200%dgsave = .FALSE. 
    1300       ENDIF 
    1301       IF (iom_use("FDT__500")) THEN  
    1302          med_diag%FDT__500%dgsave = .TRUE. 
    1303       ELSE  
    1304          med_diag%FDT__500%dgsave = .FALSE. 
    1305       ENDIF 
    1306       IF (iom_use("FDT_1000")) THEN  
    1307          med_diag%FDT_1000%dgsave = .TRUE. 
    1308       ELSE  
    1309          med_diag%FDT_1000%dgsave = .FALSE. 
    1310       ENDIF 
    1311       IF (iom_use("RG__100F")) THEN  
    1312          med_diag%RG__100F%dgsave = .TRUE. 
    1313       ELSE  
    1314          med_diag%RG__100F%dgsave = .FALSE. 
    1315       ENDIF 
    1316       IF (iom_use("RG__200F")) THEN  
    1317          med_diag%RG__200F%dgsave = .TRUE. 
    1318       ELSE  
    1319          med_diag%RG__200F%dgsave = .FALSE. 
    1320       ENDIF 
    1321       IF (iom_use("RG__500F")) THEN  
    1322          med_diag%RG__500F%dgsave = .TRUE. 
    1323       ELSE  
    1324          med_diag%RG__500F%dgsave = .FALSE. 
    1325       ENDIF 
    1326       IF (iom_use("RG_1000F")) THEN  
    1327          med_diag%RG_1000F%dgsave = .TRUE. 
    1328       ELSE  
    1329          med_diag%RG_1000F%dgsave = .FALSE. 
    1330       ENDIF 
    1331       IF (iom_use("FDS__100")) THEN  
    1332          med_diag%FDS__100%dgsave = .TRUE. 
    1333       ELSE  
    1334          med_diag%FDS__100%dgsave = .FALSE. 
    1335       ENDIF 
    1336       IF (iom_use("FDS__200")) THEN  
    1337          med_diag%FDS__200%dgsave = .TRUE. 
    1338       ELSE  
    1339          med_diag%FDS__200%dgsave = .FALSE. 
    1340       ENDIF 
    1341       IF (iom_use("FDS__500")) THEN  
    1342          med_diag%FDS__500%dgsave = .TRUE. 
    1343       ELSE  
    1344          med_diag%FDS__500%dgsave = .FALSE. 
    1345       ENDIF 
    1346       IF (iom_use("FDS_1000")) THEN  
    1347          med_diag%FDS_1000%dgsave = .TRUE. 
    1348       ELSE  
    1349          med_diag%FDS_1000%dgsave = .FALSE. 
    1350       ENDIF 
    1351       IF (iom_use("RGS_100F")) THEN  
    1352          med_diag%RGS_100F%dgsave = .TRUE. 
    1353       ELSE  
    1354          med_diag%RGS_100F%dgsave = .FALSE. 
    1355       ENDIF 
    1356       IF (iom_use("RGS_200F")) THEN  
    1357          med_diag%RGS_200F%dgsave = .TRUE. 
    1358       ELSE  
    1359          med_diag%RGS_200F%dgsave = .FALSE. 
    1360       ENDIF 
    1361       IF (iom_use("RGS_500F")) THEN  
    1362          med_diag%RGS_500F%dgsave = .TRUE. 
    1363       ELSE  
    1364          med_diag%RGS_500F%dgsave = .FALSE. 
    1365       ENDIF 
    1366       IF (iom_use("RGS1000F")) THEN  
    1367          med_diag%RGS1000F%dgsave = .TRUE. 
    1368       ELSE  
    1369          med_diag%RGS1000F%dgsave = .FALSE. 
    1370       ENDIF 
    1371       IF (iom_use("REMINN")) THEN  
    1372          med_diag%REMINN%dgsave = .TRUE. 
    1373       ELSE  
    1374          med_diag%REMINN%dgsave = .FALSE. 
    1375       ENDIF 
    1376       IF (iom_use("REMINSI")) THEN  
    1377          med_diag%REMINSI%dgsave = .TRUE. 
    1378       ELSE  
    1379          med_diag%REMINSI%dgsave = .FALSE. 
    1380       ENDIF 
    1381       IF (iom_use("REMINFE")) THEN  
    1382          med_diag%REMINFE%dgsave = .TRUE. 
    1383       ELSE  
    1384          med_diag%REMINFE%dgsave = .FALSE. 
    1385       ENDIF 
    1386       IF (iom_use("REMINC")) THEN  
    1387          med_diag%REMINC%dgsave = .TRUE. 
    1388       ELSE  
    1389          med_diag%REMINC%dgsave = .FALSE. 
    1390       ENDIF 
    1391       IF (iom_use("REMINCA")) THEN  
    1392          med_diag%REMINCA%dgsave = .TRUE. 
    1393       ELSE  
    1394          med_diag%REMINCA%dgsave = .FALSE. 
    1395       ENDIF 
    1396       IF (iom_use("SEAFLRN")) THEN  
    1397          med_diag%SEAFLRN%dgsave = .TRUE. 
    1398       ELSE  
    1399          med_diag%SEAFLRN%dgsave = .FALSE. 
    1400       ENDIF 
    1401       IF (iom_use("SEAFLRSI")) THEN  
    1402          med_diag%SEAFLRSI%dgsave = .TRUE. 
    1403       ELSE  
    1404          med_diag%SEAFLRSI%dgsave = .FALSE. 
    1405       ENDIF 
    1406       IF (iom_use("SEAFLRFE")) THEN  
    1407          med_diag%SEAFLRFE%dgsave = .TRUE. 
    1408       ELSE  
    1409          med_diag%SEAFLRFE%dgsave = .FALSE. 
    1410       ENDIF 
    1411       IF (iom_use("SEAFLRC")) THEN  
    1412          med_diag%SEAFLRC%dgsave = .TRUE. 
    1413       ELSE  
    1414          med_diag%SEAFLRC%dgsave = .FALSE. 
    1415       ENDIF 
    1416       IF (iom_use("SEAFLRCA")) THEN  
    1417          med_diag%SEAFLRCA%dgsave = .TRUE. 
    1418       ELSE  
    1419          med_diag%SEAFLRCA%dgsave = .FALSE. 
    1420       ENDIF 
    1421       IF (iom_use("MED_QSR")) THEN  
    1422          med_diag%MED_QSR%dgsave = .TRUE. 
    1423       ELSE  
    1424          med_diag%MED_QSR%dgsave = .FALSE. 
    1425       ENDIF 
    1426       IF (iom_use("MED_XPAR")) THEN  
    1427          med_diag%MED_XPAR%dgsave = .TRUE. 
    1428       ELSE  
    1429          med_diag%MED_XPAR%dgsave = .FALSE. 
    1430       ENDIF 
    1431       IF (iom_use("INTFLX_N")) THEN  
    1432          med_diag%INTFLX_N%dgsave = .TRUE. 
    1433       ELSE  
    1434          med_diag%INTFLX_N%dgsave = .FALSE. 
    1435       ENDIF 
    1436       IF (iom_use("INTFLX_SI")) THEN  
    1437          med_diag%INTFLX_SI%dgsave = .TRUE. 
    1438       ELSE  
    1439          med_diag%INTFLX_SI%dgsave = .FALSE. 
    1440       ENDIF 
    1441       IF (iom_use("INTFLX_FE")) THEN  
    1442          med_diag%INTFLX_FE%dgsave = .TRUE. 
    1443       ELSE  
    1444          med_diag%INTFLX_FE%dgsave = .FALSE. 
    1445       ENDIF 
    1446       IF (iom_use("INT_PN")) THEN  
    1447          med_diag%INT_PN%dgsave = .TRUE. 
    1448       ELSE  
    1449          med_diag%INT_PN%dgsave = .FALSE. 
    1450       ENDIF 
    1451       IF (iom_use("INT_PD")) THEN  
    1452          med_diag%INT_PD%dgsave = .TRUE. 
    1453       ELSE  
    1454          med_diag%INT_PD%dgsave = .FALSE. 
    1455       ENDIF 
    1456       IF (iom_use("ML_PRN")) THEN  
    1457          med_diag%ML_PRN%dgsave = .TRUE. 
    1458       ELSE  
    1459          med_diag%ML_PRN%dgsave = .FALSE. 
    1460       ENDIF 
    1461       IF (iom_use("ML_PRD")) THEN  
    1462          med_diag%ML_PRD%dgsave = .TRUE. 
    1463       ELSE  
    1464          med_diag%ML_PRD%dgsave = .FALSE. 
    1465       ENDIF 
    1466       IF (iom_use("OCAL_CCD")) THEN  
    1467          med_diag%OCAL_CCD%dgsave = .TRUE. 
    1468       ELSE  
    1469          med_diag%OCAL_CCD%dgsave = .FALSE. 
    1470       ENDIF 
    1471       IF (iom_use("OCAL_LVL")) THEN  
    1472          med_diag%OCAL_LVL%dgsave = .TRUE. 
    1473       ELSE  
    1474          med_diag%OCAL_LVL%dgsave = .FALSE. 
    1475       ENDIF 
    1476       IF (iom_use("FE_0000")) THEN  
    1477          med_diag%FE_0000%dgsave = .TRUE. 
    1478       ELSE  
    1479          med_diag%FE_0000%dgsave = .FALSE. 
    1480       ENDIF 
    1481       IF (iom_use("FE_0100")) THEN  
    1482          med_diag%FE_0100%dgsave = .TRUE. 
    1483       ELSE  
    1484          med_diag%FE_0100%dgsave = .FALSE. 
    1485       ENDIF 
    1486       IF (iom_use("FE_0200")) THEN  
    1487          med_diag%FE_0200%dgsave = .TRUE. 
    1488       ELSE  
    1489          med_diag%FE_0200%dgsave = .FALSE. 
    1490       ENDIF 
    1491       IF (iom_use("FE_0500")) THEN  
    1492          med_diag%FE_0500%dgsave = .TRUE. 
    1493       ELSE  
    1494          med_diag%FE_0500%dgsave = .FALSE. 
    1495       ENDIF 
    1496       IF (iom_use("FE_1000")) THEN  
    1497          med_diag%FE_1000%dgsave = .TRUE. 
    1498       ELSE  
    1499          med_diag%FE_1000%dgsave = .FALSE. 
    1500       ENDIF 
    1501       IF (iom_use("MED_XZE")) THEN  
    1502          med_diag%MED_XZE%dgsave = .TRUE. 
    1503       ELSE  
    1504          med_diag%MED_XZE%dgsave = .FALSE. 
    1505       ENDIF 
    1506       IF (iom_use("WIND")) THEN  
    1507          med_diag%WIND%dgsave = .TRUE. 
    1508       ELSE  
    1509          med_diag%WIND%dgsave = .FALSE. 
    1510       ENDIF 
    1511       IF (iom_use("ATM_PCO2")) THEN  
    1512          med_diag%ATM_PCO2%dgsave = .TRUE. 
    1513       ELSE  
    1514          med_diag%ATM_PCO2%dgsave = .FALSE. 
    1515       ENDIF 
    1516       IF (iom_use("OCN_PH")) THEN  
    1517          med_diag%OCN_PH%dgsave = .TRUE. 
    1518       ELSE  
    1519          med_diag%OCN_PH%dgsave = .FALSE. 
    1520       ENDIF 
    1521       IF (iom_use("OCN_PCO2")) THEN  
    1522          med_diag%OCN_PCO2%dgsave = .TRUE. 
    1523       ELSE  
    1524          med_diag%OCN_PCO2%dgsave = .FALSE. 
    1525       ENDIF 
    1526       IF (iom_use("OCNH2CO3")) THEN  
    1527          med_diag%OCNH2CO3%dgsave = .TRUE. 
    1528       ELSE  
    1529          med_diag%OCNH2CO3%dgsave = .FALSE. 
    1530       ENDIF 
    1531       IF (iom_use("OCN_HCO3")) THEN  
    1532          med_diag%OCN_HCO3%dgsave = .TRUE. 
    1533       ELSE  
    1534          med_diag%OCN_HCO3%dgsave = .FALSE. 
    1535       ENDIF 
    1536       IF (iom_use("OCN_CO3")) THEN  
    1537          med_diag%OCN_CO3%dgsave = .TRUE. 
    1538       ELSE  
    1539          med_diag%OCN_CO3%dgsave = .FALSE. 
    1540       ENDIF 
    1541       IF (iom_use("CO2FLUX")) THEN  
    1542          med_diag%CO2FLUX%dgsave = .TRUE. 
    1543       ELSE  
    1544          med_diag%CO2FLUX%dgsave = .FALSE. 
    1545       ENDIF 
    1546       IF (iom_use("OM_CAL")) THEN  
    1547          med_diag%OM_CAL%dgsave = .TRUE. 
    1548       ELSE  
    1549          med_diag%OM_CAL%dgsave = .FALSE. 
    1550       ENDIF 
    1551       IF (iom_use("OM_ARG")) THEN  
    1552          med_diag%OM_ARG%dgsave = .TRUE. 
    1553       ELSE  
    1554          med_diag%OM_ARG%dgsave = .FALSE. 
    1555       ENDIF 
    1556       IF (iom_use("TCO2")) THEN  
    1557          med_diag%TCO2%dgsave = .TRUE. 
    1558       ELSE  
    1559          med_diag%TCO2%dgsave = .FALSE. 
    1560       ENDIF 
    1561       IF (iom_use("TALK")) THEN  
    1562          med_diag%TALK%dgsave = .TRUE. 
    1563       ELSE  
    1564          med_diag%TALK%dgsave = .FALSE. 
    1565       ENDIF 
    1566       IF (iom_use("KW660")) THEN  
    1567          med_diag%KW660%dgsave = .TRUE. 
    1568       ELSE  
    1569          med_diag%KW660%dgsave = .FALSE. 
    1570       ENDIF 
    1571       IF (iom_use("ATM_PP0")) THEN  
    1572          med_diag%ATM_PP0%dgsave = .TRUE. 
    1573       ELSE  
    1574          med_diag%ATM_PP0%dgsave = .FALSE. 
    1575       ENDIF 
    1576       IF (iom_use("O2FLUX")) THEN  
    1577          med_diag%O2FLUX%dgsave = .TRUE. 
    1578       ELSE  
    1579          med_diag%O2FLUX%dgsave = .FALSE. 
    1580       ENDIF 
    1581       IF (iom_use("O2SAT")) THEN  
    1582          med_diag%O2SAT%dgsave = .TRUE. 
    1583       ELSE  
    1584          med_diag%O2SAT%dgsave = .FALSE. 
    1585       ENDIF 
    1586       IF (iom_use("CAL_CCD")) THEN  
    1587          med_diag%CAL_CCD%dgsave = .TRUE. 
    1588       ELSE  
    1589          med_diag%CAL_CCD%dgsave = .FALSE. 
    1590       ENDIF 
    1591       IF (iom_use("ARG_CCD")) THEN  
    1592          med_diag%ARG_CCD%dgsave = .TRUE. 
    1593       ELSE  
    1594          med_diag%ARG_CCD%dgsave = .FALSE. 
    1595       ENDIF 
    1596       IF (iom_use("SFR_OCAL")) THEN  
    1597          med_diag%SFR_OCAL%dgsave = .TRUE. 
    1598       ELSE  
    1599          med_diag%SFR_OCAL%dgsave = .FALSE. 
    1600       ENDIF 
    1601       IF (iom_use("SFR_OARG")) THEN  
    1602          med_diag%SFR_OARG%dgsave = .TRUE. 
    1603       ELSE  
    1604          med_diag%SFR_OARG%dgsave = .FALSE. 
    1605       ENDIF 
    1606       IF (iom_use("N_PROD")) THEN  
    1607          med_diag%N_PROD%dgsave = .TRUE. 
    1608       ELSE  
    1609          med_diag%N_PROD%dgsave = .FALSE. 
    1610       ENDIF 
    1611       IF (iom_use("N_CONS")) THEN  
    1612          med_diag%N_CONS%dgsave = .TRUE. 
    1613       ELSE  
    1614          med_diag%N_CONS%dgsave = .FALSE. 
    1615       ENDIF 
    1616       IF (iom_use("C_PROD")) THEN  
    1617          med_diag%C_PROD%dgsave = .TRUE. 
    1618       ELSE  
    1619          med_diag%C_PROD%dgsave = .FALSE. 
    1620       ENDIF 
    1621       IF (iom_use("C_CONS")) THEN  
    1622          med_diag%C_CONS%dgsave = .TRUE. 
    1623       ELSE  
    1624          med_diag%C_CONS%dgsave = .FALSE. 
    1625       ENDIF 
    1626       IF (iom_use("O2_PROD")) THEN  
    1627          med_diag%O2_PROD%dgsave = .TRUE. 
    1628       ELSE  
    1629          med_diag%O2_PROD%dgsave = .FALSE. 
    1630       ENDIF 
    1631       IF (iom_use("O2_CONS")) THEN  
    1632          med_diag%O2_CONS%dgsave = .TRUE. 
    1633       ELSE  
    1634          med_diag%O2_CONS%dgsave = .FALSE. 
    1635       ENDIF 
    1636       IF (iom_use("O2_ANOX")) THEN  
    1637          med_diag%O2_ANOX%dgsave = .TRUE. 
    1638       ELSE  
    1639          med_diag%O2_ANOX%dgsave = .FALSE. 
    1640       ENDIF 
    1641       IF (iom_use("RR_0100")) THEN  
    1642          med_diag%RR_0100%dgsave = .TRUE. 
    1643       ELSE  
    1644          med_diag%RR_0100%dgsave = .FALSE. 
    1645       ENDIF 
    1646       IF (iom_use("RR_0500")) THEN  
    1647          med_diag%RR_0500%dgsave = .TRUE. 
    1648       ELSE  
    1649          med_diag%RR_0500%dgsave = .FALSE. 
    1650       ENDIF 
    1651       IF (iom_use("RR_1000")) THEN  
    1652          med_diag%RR_1000%dgsave = .TRUE. 
    1653       ELSE  
    1654          med_diag%RR_1000%dgsave = .FALSE. 
    1655       ENDIF 
    1656       IF (iom_use("IBEN_N")) THEN  
    1657          med_diag%IBEN_N%dgsave = .TRUE. 
    1658       ELSE  
    1659          med_diag%IBEN_N%dgsave = .FALSE. 
    1660       ENDIF 
    1661       IF (iom_use("IBEN_FE")) THEN  
    1662          med_diag%IBEN_FE%dgsave = .TRUE. 
    1663       ELSE  
    1664          med_diag%IBEN_FE%dgsave = .FALSE. 
    1665       ENDIF 
    1666       IF (iom_use("IBEN_C")) THEN  
    1667          med_diag%IBEN_C%dgsave = .TRUE. 
    1668       ELSE  
    1669          med_diag%IBEN_C%dgsave = .FALSE. 
    1670       ENDIF 
    1671       IF (iom_use("IBEN_SI")) THEN  
    1672          med_diag%IBEN_SI%dgsave = .TRUE. 
    1673       ELSE  
    1674          med_diag%IBEN_SI%dgsave = .FALSE. 
    1675       ENDIF 
    1676       IF (iom_use("IBEN_CA")) THEN  
    1677          med_diag%IBEN_CA%dgsave = .TRUE. 
    1678       ELSE  
    1679          med_diag%IBEN_CA%dgsave = .FALSE. 
    1680       ENDIF 
    1681       IF (iom_use("OBEN_N")) THEN  
    1682          med_diag%OBEN_N%dgsave = .TRUE. 
    1683       ELSE  
    1684          med_diag%OBEN_N%dgsave = .FALSE. 
    1685       ENDIF 
    1686       IF (iom_use("OBEN_FE")) THEN  
    1687          med_diag%OBEN_FE%dgsave = .TRUE. 
    1688       ELSE  
    1689          med_diag%OBEN_FE%dgsave = .FALSE. 
    1690       ENDIF 
    1691       IF (iom_use("OBEN_C")) THEN  
    1692          med_diag%OBEN_C%dgsave = .TRUE. 
    1693       ELSE  
    1694          med_diag%OBEN_C%dgsave = .FALSE. 
    1695       ENDIF 
    1696       IF (iom_use("OBEN_SI")) THEN  
    1697          med_diag%OBEN_SI%dgsave = .TRUE. 
    1698       ELSE  
    1699          med_diag%OBEN_SI%dgsave = .FALSE. 
    1700       ENDIF 
    1701       IF (iom_use("OBEN_CA")) THEN  
    1702          med_diag%OBEN_CA%dgsave = .TRUE. 
    1703       ELSE  
    1704          med_diag%OBEN_CA%dgsave = .FALSE. 
    1705       ENDIF 
    1706       IF (iom_use("BEN_N")) THEN  
    1707          med_diag%BEN_N%dgsave = .TRUE. 
    1708       ELSE  
    1709          med_diag%BEN_N%dgsave = .FALSE. 
    1710       ENDIF 
    1711       IF (iom_use("BEN_FE")) THEN  
    1712          med_diag%BEN_FE%dgsave = .TRUE. 
    1713       ELSE  
    1714          med_diag%BEN_FE%dgsave = .FALSE. 
    1715       ENDIF 
    1716       IF (iom_use("BEN_C")) THEN  
    1717          med_diag%BEN_C%dgsave = .TRUE. 
    1718       ELSE  
    1719          med_diag%BEN_C%dgsave = .FALSE. 
    1720       ENDIF 
    1721       IF (iom_use("BEN_SI")) THEN  
    1722          med_diag%BEN_SI%dgsave = .TRUE. 
    1723       ELSE  
    1724          med_diag%BEN_SI%dgsave = .FALSE. 
    1725       ENDIF 
    1726       IF (iom_use("BEN_CA")) THEN  
    1727          med_diag%BEN_CA%dgsave = .TRUE. 
    1728       ELSE  
    1729          med_diag%BEN_CA%dgsave = .FALSE. 
    1730       ENDIF 
    1731       IF (iom_use("RUNOFF")) THEN  
    1732          med_diag%RUNOFF%dgsave = .TRUE. 
    1733       ELSE  
    1734          med_diag%RUNOFF%dgsave = .FALSE. 
    1735       ENDIF 
    1736       IF (iom_use("RIV_N")) THEN  
    1737          med_diag%RIV_N%dgsave = .TRUE. 
    1738       ELSE  
    1739          med_diag%RIV_N%dgsave = .FALSE. 
    1740       ENDIF 
    1741       IF (iom_use("RIV_SI")) THEN  
    1742          med_diag%RIV_SI%dgsave = .TRUE. 
    1743       ELSE  
    1744          med_diag%RIV_SI%dgsave = .FALSE. 
    1745       ENDIF 
    1746       IF (iom_use("RIV_C")) THEN  
    1747          med_diag%RIV_C%dgsave = .TRUE. 
    1748       ELSE  
    1749          med_diag%RIV_C%dgsave = .FALSE. 
    1750       ENDIF 
    1751       IF (iom_use("RIV_ALK")) THEN  
    1752          med_diag%RIV_ALK%dgsave = .TRUE. 
    1753       ELSE  
    1754          med_diag%RIV_ALK%dgsave = .FALSE. 
    1755       ENDIF 
    1756       IF (iom_use("DETC")) THEN  
    1757          med_diag%DETC%dgsave = .TRUE. 
    1758       ELSE  
    1759          med_diag%DETC%dgsave = .FALSE. 
    1760       ENDIF 
    1761       IF (iom_use("SDC__100")) THEN  
    1762          med_diag%SDC__100%dgsave = .TRUE. 
    1763       ELSE  
    1764          med_diag%SDC__100%dgsave = .FALSE. 
    1765       ENDIF 
    1766       IF (iom_use("SDC__200")) THEN  
    1767          med_diag%SDC__200%dgsave = .TRUE. 
    1768       ELSE  
    1769          med_diag%SDC__200%dgsave = .FALSE. 
    1770       ENDIF 
    1771       IF (iom_use("SDC__500")) THEN  
    1772          med_diag%SDC__500%dgsave = .TRUE. 
    1773       ELSE  
    1774          med_diag%SDC__500%dgsave = .FALSE. 
    1775       ENDIF 
    1776       IF (iom_use("SDC_1000")) THEN  
    1777          med_diag%SDC_1000%dgsave = .TRUE. 
    1778       ELSE  
    1779          med_diag%SDC_1000%dgsave = .FALSE. 
    1780       ENDIF 
    1781       IF (iom_use("INVTC")) THEN  
    1782          med_diag%INVTC%dgsave = .TRUE. 
    1783       ELSE  
    1784          med_diag%INVTC%dgsave = .FALSE. 
    1785       ENDIF 
    1786       IF (iom_use("INVTALK")) THEN  
    1787          med_diag%INVTALK%dgsave = .TRUE. 
    1788       ELSE  
    1789          med_diag%INVTALK%dgsave = .FALSE. 
    1790       ENDIF 
    1791       IF (iom_use("INVTO2")) THEN  
    1792          med_diag%INVTO2%dgsave = .TRUE. 
    1793       ELSE  
    1794          med_diag%INVTO2%dgsave = .FALSE. 
    1795       ENDIF 
    1796       IF (iom_use("LYSO_CA")) THEN  
    1797          med_diag%LYSO_CA%dgsave = .TRUE. 
    1798       ELSE  
    1799          med_diag%LYSO_CA%dgsave = .FALSE. 
    1800       ENDIF 
    1801       IF (iom_use("COM_RESP")) THEN  
    1802          med_diag%COM_RESP%dgsave = .TRUE. 
    1803       ELSE  
    1804          med_diag%COM_RESP%dgsave = .FALSE. 
    1805       ENDIF 
    1806       IF (iom_use("PN_LLOSS")) THEN  
    1807          med_diag%PN_LLOSS%dgsave = .TRUE. 
    1808       ELSE  
    1809          med_diag%PN_LLOSS%dgsave = .FALSE. 
    1810       ENDIF 
    1811       IF (iom_use("PD_LLOSS")) THEN  
    1812          med_diag%PD_LLOSS%dgsave = .TRUE. 
    1813       ELSE  
    1814          med_diag%PD_LLOSS%dgsave = .FALSE. 
    1815       ENDIF 
    1816       IF (iom_use("ZI_LLOSS")) THEN  
    1817          med_diag%ZI_LLOSS%dgsave = .TRUE. 
    1818       ELSE  
    1819          med_diag%ZI_LLOSS%dgsave = .FALSE. 
    1820       ENDIF 
    1821       IF (iom_use("ZE_LLOSS")) THEN  
    1822          med_diag%ZE_LLOSS%dgsave = .TRUE. 
    1823       ELSE  
    1824          med_diag%ZE_LLOSS%dgsave = .FALSE. 
    1825       ENDIF 
    1826       IF (iom_use("ZI_MES_N")) THEN  
    1827          med_diag%ZI_MES_N%dgsave = .TRUE. 
    1828       ELSE  
    1829          med_diag%ZI_MES_N%dgsave = .FALSE. 
    1830       ENDIF 
    1831       IF (iom_use("ZI_MES_D")) THEN  
    1832          med_diag%ZI_MES_D%dgsave = .TRUE. 
    1833       ELSE  
    1834          med_diag%ZI_MES_D%dgsave = .FALSE. 
    1835       ENDIF 
    1836       IF (iom_use("ZI_MES_C")) THEN  
    1837          med_diag%ZI_MES_C%dgsave = .TRUE. 
    1838       ELSE  
    1839          med_diag%ZI_MES_C%dgsave = .FALSE. 
    1840       ENDIF 
    1841       IF (iom_use("ZI_MESDC")) THEN  
    1842          med_diag%ZI_MESDC%dgsave = .TRUE. 
    1843       ELSE  
    1844          med_diag%ZI_MESDC%dgsave = .FALSE. 
    1845       ENDIF 
    1846       IF (iom_use("ZI_EXCR")) THEN  
    1847          med_diag%ZI_EXCR%dgsave = .TRUE. 
    1848       ELSE  
    1849          med_diag%ZI_EXCR%dgsave = .FALSE. 
    1850       ENDIF 
    1851       IF (iom_use("ZI_RESP")) THEN  
    1852          med_diag%ZI_RESP%dgsave = .TRUE. 
    1853       ELSE  
    1854          med_diag%ZI_RESP%dgsave = .FALSE. 
    1855       ENDIF 
    1856       IF (iom_use("ZI_GROW")) THEN  
    1857          med_diag%ZI_GROW%dgsave = .TRUE. 
    1858       ELSE  
    1859          med_diag%ZI_GROW%dgsave = .FALSE. 
    1860       ENDIF 
    1861       IF (iom_use("ZE_MES_N")) THEN  
    1862          med_diag%ZE_MES_N%dgsave = .TRUE. 
    1863       ELSE  
    1864          med_diag%ZE_MES_N%dgsave = .FALSE. 
    1865       ENDIF 
    1866       IF (iom_use("ZE_MES_D")) THEN  
    1867          med_diag%ZE_MES_D%dgsave = .TRUE. 
    1868       ELSE  
    1869          med_diag%ZE_MES_D%dgsave = .FALSE. 
    1870       ENDIF 
    1871       IF (iom_use("ZE_MES_C")) THEN  
    1872          med_diag%ZE_MES_C%dgsave = .TRUE. 
    1873       ELSE  
    1874          med_diag%ZE_MES_C%dgsave = .FALSE. 
    1875       ENDIF 
    1876       IF (iom_use("ZE_MESDC")) THEN  
    1877          med_diag%ZE_MESDC%dgsave = .TRUE. 
    1878       ELSE  
    1879          med_diag%ZE_MESDC%dgsave = .FALSE. 
    1880       ENDIF 
    1881       IF (iom_use("ZE_EXCR")) THEN  
    1882          med_diag%ZE_EXCR%dgsave = .TRUE. 
    1883       ELSE  
    1884          med_diag%ZE_EXCR%dgsave = .FALSE. 
    1885       ENDIF 
    1886       IF (iom_use("ZE_RESP")) THEN  
    1887          med_diag%ZE_RESP%dgsave = .TRUE. 
    1888       ELSE  
    1889          med_diag%ZE_RESP%dgsave = .FALSE. 
    1890       ENDIF 
    1891       IF (iom_use("ZE_GROW")) THEN  
    1892          med_diag%ZE_GROW%dgsave = .TRUE. 
    1893       ELSE  
    1894          med_diag%ZE_GROW%dgsave = .FALSE. 
    1895       ENDIF 
    1896       IF (iom_use("MDETC")) THEN  
    1897          med_diag%MDETC%dgsave = .TRUE. 
    1898       ELSE  
    1899          med_diag%MDETC%dgsave = .FALSE. 
    1900       ENDIF 
    1901       IF (iom_use("GMIDC")) THEN  
    1902          med_diag%GMIDC%dgsave = .TRUE. 
    1903       ELSE  
    1904          med_diag%GMIDC%dgsave = .FALSE. 
    1905       ENDIF 
    1906       IF (iom_use("GMEDC")) THEN  
    1907          med_diag%GMEDC%dgsave = .TRUE. 
    1908       ELSE  
    1909          med_diag%GMEDC%dgsave = .FALSE. 
    1910       ENDIF 
    1911       IF (iom_use("INT_ZMI")) THEN  
    1912          med_diag%INT_ZMI%dgsave = .TRUE. 
    1913       ELSE  
    1914          med_diag%INT_ZMI%dgsave = .FALSE. 
    1915       ENDIF 
    1916       IF (iom_use("INT_ZME")) THEN  
    1917          med_diag%INT_ZME%dgsave = .TRUE. 
    1918       ELSE  
    1919          med_diag%INT_ZME%dgsave = .FALSE. 
    1920       ENDIF 
    1921       IF (iom_use("INT_DET")) THEN  
    1922          med_diag%INT_DET%dgsave = .TRUE. 
    1923       ELSE  
    1924          med_diag%INT_DET%dgsave = .FALSE. 
    1925       ENDIF 
    1926       IF (iom_use("INT_DTC")) THEN  
    1927          med_diag%INT_DTC%dgsave = .TRUE. 
    1928       ELSE  
    1929          med_diag%INT_DTC%dgsave = .FALSE. 
    1930       ENDIF 
    1931       IF (iom_use("DMS_SURF")) THEN  
    1932          med_diag%DMS_SURF%dgsave = .TRUE. 
    1933       ELSE  
    1934          med_diag%DMS_SURF%dgsave = .FALSE. 
    1935       ENDIF 
    1936       IF (iom_use("DMS_ANDR")) THEN  
    1937          med_diag%DMS_ANDR%dgsave = .TRUE. 
    1938       ELSE  
    1939          med_diag%DMS_ANDR%dgsave = .FALSE. 
    1940       ENDIF 
    1941       IF (iom_use("DMS_SIMO")) THEN  
    1942          med_diag%DMS_SIMO%dgsave = .TRUE. 
    1943       ELSE  
    1944          med_diag%DMS_SIMO%dgsave = .FALSE. 
    1945       ENDIF 
    1946       IF (iom_use("DMS_ARAN")) THEN  
    1947          med_diag%DMS_ARAN%dgsave = .TRUE. 
    1948       ELSE  
    1949          med_diag%DMS_ARAN%dgsave = .FALSE. 
    1950       ENDIF 
    1951       IF (iom_use("DMS_HALL")) THEN  
    1952          med_diag%DMS_HALL%dgsave = .TRUE. 
    1953       ELSE  
    1954          med_diag%DMS_HALL%dgsave = .FALSE. 
    1955       ENDIF 
    1956       IF (iom_use("ATM_XCO2")) THEN  
    1957          med_diag%ATM_XCO2%dgsave = .TRUE. 
    1958       ELSE  
    1959          med_diag%ATM_XCO2%dgsave = .FALSE. 
    1960       ENDIF 
    1961       IF (iom_use("OCN_FCO2")) THEN  
    1962          med_diag%OCN_FCO2%dgsave = .TRUE. 
    1963       ELSE  
    1964          med_diag%OCN_FCO2%dgsave = .FALSE. 
    1965       ENDIF 
    1966       IF (iom_use("ATM_FCO2")) THEN  
    1967          med_diag%ATM_FCO2%dgsave = .TRUE. 
    1968       ELSE  
    1969          med_diag%ATM_FCO2%dgsave = .FALSE. 
    1970       ENDIF 
    1971       IF (iom_use("OCN_RHOSW")) THEN  
    1972          med_diag%OCN_RHOSW%dgsave = .TRUE. 
    1973       ELSE  
    1974          med_diag%OCN_RHOSW%dgsave = .FALSE. 
    1975       ENDIF 
    1976       IF (iom_use("OCN_SCHCO2")) THEN  
    1977          med_diag%OCN_SCHCO2%dgsave = .TRUE. 
    1978       ELSE  
    1979          med_diag%OCN_SCHCO2%dgsave = .FALSE. 
    1980       ENDIF 
    1981       IF (iom_use("OCN_KWCO2")) THEN  
    1982          med_diag%OCN_KWCO2%dgsave = .TRUE. 
    1983       ELSE  
    1984          med_diag%OCN_KWCO2%dgsave = .FALSE. 
    1985       ENDIF 
    1986       IF (iom_use("OCN_K0")) THEN  
    1987          med_diag%OCN_K0%dgsave = .TRUE. 
    1988       ELSE  
    1989          med_diag%OCN_K0%dgsave = .FALSE. 
    1990       ENDIF 
    1991       IF (iom_use("CO2STARAIR")) THEN  
    1992          med_diag%CO2STARAIR%dgsave = .TRUE. 
    1993       ELSE  
    1994          med_diag%CO2STARAIR%dgsave = .FALSE. 
    1995       ENDIF 
    1996       IF (iom_use("OCN_DPCO2")) THEN  
    1997          med_diag%OCN_DPCO2%dgsave = .TRUE. 
    1998       ELSE  
    1999          med_diag%OCN_DPCO2%dgsave = .FALSE. 
     1198          med_diag%INVTN%dgsave = .TRUE. 
     1199      ELSE  
     1200          med_diag%INVTN%dgsave = .FALSE. 
     1201      ENDIF 
     1202      IF  (iom_use("INVTSI")) THEN  
     1203          med_diag%INVTSI%dgsave = .TRUE. 
     1204      ELSE  
     1205          med_diag%INVTSI%dgsave = .FALSE. 
     1206      ENDIF 
     1207      IF  (iom_use("INVTFE")) THEN  
     1208          med_diag%INVTFE%dgsave = .TRUE. 
     1209      ELSE  
     1210          med_diag%INVTFE%dgsave = .FALSE. 
     1211      ENDIF 
     1212      IF  (iom_use("PRN")) THEN  
     1213          med_diag%PRN%dgsave = .TRUE. 
     1214      ELSE  
     1215          med_diag%PRN%dgsave = .FALSE. 
     1216      ENDIF 
     1217      IF  (iom_use("MPN")) THEN  
     1218          med_diag%MPN%dgsave = .TRUE. 
     1219      ELSE  
     1220          med_diag%MPN%dgsave = .FALSE. 
     1221      ENDIF 
     1222      IF  (iom_use("PRD")) THEN  
     1223          med_diag%PRD%dgsave = .TRUE. 
     1224      ELSE  
     1225          med_diag%PRD%dgsave = .FALSE. 
     1226      ENDIF 
     1227      IF  (iom_use("MPD")) THEN  
     1228          med_diag%MPD%dgsave = .TRUE. 
     1229      ELSE  
     1230          med_diag%MPD%dgsave = .FALSE. 
     1231      ENDIF 
     1232      IF  (iom_use("DSED")) THEN  
     1233          med_diag%DSED%dgsave = .TRUE. 
     1234      ELSE  
     1235          med_diag%DSED%dgsave = .FALSE. 
     1236      ENDIF 
     1237      IF  (iom_use("OPAL")) THEN  
     1238          med_diag%OPAL%dgsave = .TRUE. 
     1239      ELSE  
     1240          med_diag%OPAL%dgsave = .FALSE. 
     1241      ENDIF 
     1242      IF  (iom_use("OPALDISS")) THEN  
     1243          med_diag%OPALDISS%dgsave = .TRUE. 
     1244      ELSE  
     1245          med_diag%OPALDISS%dgsave = .FALSE. 
     1246      ENDIF 
     1247      IF  (iom_use("GMIPn")) THEN  
     1248          med_diag%GMIPn%dgsave = .TRUE. 
     1249      ELSE  
     1250          med_diag%GMIPn%dgsave = .FALSE. 
     1251      ENDIF 
     1252      IF  (iom_use("GMID")) THEN  
     1253          med_diag%GMID%dgsave = .TRUE. 
     1254      ELSE  
     1255          med_diag%GMID%dgsave = .FALSE. 
     1256      ENDIF 
     1257      IF  (iom_use("MZMI")) THEN  
     1258          med_diag%MZMI%dgsave = .TRUE. 
     1259      ELSE  
     1260          med_diag%MZMI%dgsave = .FALSE. 
     1261      ENDIF 
     1262      IF  (iom_use("GMEPN")) THEN  
     1263          med_diag%GMEPN%dgsave = .TRUE. 
     1264      ELSE  
     1265          med_diag%GMEPN%dgsave = .FALSE. 
     1266      ENDIF 
     1267      IF  (iom_use("GMEPD")) THEN  
     1268          med_diag%GMEPD%dgsave = .TRUE. 
     1269      ELSE  
     1270          med_diag%GMEPD%dgsave = .FALSE. 
     1271      ENDIF 
     1272      IF  (iom_use("GMEZMI")) THEN  
     1273          med_diag%GMEZMI%dgsave = .TRUE. 
     1274      ELSE  
     1275          med_diag%GMEZMI%dgsave = .FALSE. 
     1276      ENDIF 
     1277      IF  (iom_use("GMED")) THEN  
     1278          med_diag%GMED%dgsave = .TRUE. 
     1279      ELSE  
     1280          med_diag%GMED%dgsave = .FALSE. 
     1281      ENDIF 
     1282      IF  (iom_use("MZME")) THEN  
     1283          med_diag%MZME%dgsave = .TRUE. 
     1284      ELSE  
     1285          med_diag%MZME%dgsave = .FALSE. 
     1286      ENDIF 
     1287      IF  (iom_use("DEXP")) THEN  
     1288          med_diag%DEXP%dgsave = .TRUE. 
     1289      ELSE  
     1290          med_diag%DEXP%dgsave = .FALSE. 
     1291      ENDIF 
     1292      IF  (iom_use("DETN")) THEN  
     1293          med_diag%DETN%dgsave = .TRUE. 
     1294      ELSE  
     1295          med_diag%DETN%dgsave = .FALSE. 
     1296      ENDIF 
     1297      IF  (iom_use("MDET")) THEN  
     1298          med_diag%MDET%dgsave = .TRUE. 
     1299      ELSE  
     1300          med_diag%MDET%dgsave = .FALSE. 
     1301      ENDIF 
     1302      IF  (iom_use("AEOLIAN")) THEN  
     1303          med_diag%AEOLIAN%dgsave = .TRUE. 
     1304      ELSE  
     1305          med_diag%AEOLIAN%dgsave = .FALSE. 
     1306      ENDIF 
     1307      IF  (iom_use("BENTHIC")) THEN  
     1308          med_diag%BENTHIC%dgsave = .TRUE. 
     1309      ELSE  
     1310          med_diag%BENTHIC%dgsave = .FALSE. 
     1311      ENDIF 
     1312      IF  (iom_use("SCAVENGE")) THEN  
     1313          med_diag%SCAVENGE%dgsave = .TRUE. 
     1314      ELSE  
     1315          med_diag%SCAVENGE%dgsave = .FALSE. 
     1316      ENDIF 
     1317      IF  (iom_use("PN_JLIM")) THEN  
     1318          med_diag%PN_JLIM%dgsave = .TRUE. 
     1319      ELSE  
     1320          med_diag%PN_JLIM%dgsave = .FALSE. 
     1321      ENDIF 
     1322      IF  (iom_use("PN_NLIM")) THEN  
     1323          med_diag%PN_NLIM%dgsave = .TRUE. 
     1324      ELSE  
     1325          med_diag%PN_NLIM%dgsave = .FALSE. 
     1326      ENDIF 
     1327      IF  (iom_use("PN_FELIM")) THEN  
     1328          med_diag%PN_FELIM%dgsave = .TRUE. 
     1329      ELSE  
     1330          med_diag%PN_FELIM%dgsave = .FALSE. 
     1331      ENDIF 
     1332      IF  (iom_use("PD_JLIM")) THEN  
     1333          med_diag%PD_JLIM%dgsave = .TRUE. 
     1334      ELSE  
     1335          med_diag%PD_JLIM%dgsave = .FALSE. 
     1336      ENDIF 
     1337      IF  (iom_use("PD_NLIM")) THEN  
     1338          med_diag%PD_NLIM%dgsave = .TRUE. 
     1339      ELSE  
     1340          med_diag%PD_NLIM%dgsave = .FALSE. 
     1341      ENDIF 
     1342      IF  (iom_use("PD_FELIM")) THEN  
     1343          med_diag%PD_FELIM%dgsave = .TRUE. 
     1344      ELSE  
     1345          med_diag%PD_FELIM%dgsave = .FALSE. 
     1346      ENDIF 
     1347      IF  (iom_use("PD_SILIM")) THEN  
     1348          med_diag%PD_SILIM%dgsave = .TRUE. 
     1349      ELSE  
     1350          med_diag%PD_SILIM%dgsave = .FALSE. 
     1351      ENDIF 
     1352      IF  (iom_use("PDSILIM2")) THEN  
     1353          med_diag%PDSILIM2%dgsave = .TRUE. 
     1354      ELSE  
     1355          med_diag%PDSILIM2%dgsave = .FALSE. 
     1356      ENDIF 
     1357      IF  (iom_use("SDT__100")) THEN  
     1358          med_diag%SDT__100%dgsave = .TRUE. 
     1359      ELSE  
     1360          med_diag%SDT__100%dgsave = .FALSE. 
     1361      ENDIF 
     1362      IF  (iom_use("SDT__200")) THEN  
     1363          med_diag%SDT__200%dgsave = .TRUE. 
     1364      ELSE  
     1365          med_diag%SDT__200%dgsave = .FALSE. 
     1366      ENDIF 
     1367      IF  (iom_use("SDT__500")) THEN  
     1368          med_diag%SDT__500%dgsave = .TRUE. 
     1369      ELSE  
     1370          med_diag%SDT__500%dgsave = .FALSE. 
     1371      ENDIF 
     1372      IF  (iom_use("SDT_1000")) THEN  
     1373          med_diag%SDT_1000%dgsave = .TRUE. 
     1374      ELSE  
     1375          med_diag%SDT_1000%dgsave = .FALSE. 
     1376      ENDIF 
     1377      IF  (iom_use("TOTREG_N")) THEN  
     1378          med_diag%TOTREG_N%dgsave = .TRUE. 
     1379      ELSE  
     1380          med_diag%TOTREG_N%dgsave = .FALSE. 
     1381      ENDIF 
     1382      IF  (iom_use("TOTRG_SI")) THEN  
     1383          med_diag%TOTRG_SI%dgsave = .TRUE. 
     1384      ELSE  
     1385          med_diag%TOTRG_SI%dgsave = .FALSE. 
     1386      ENDIF 
     1387      IF  (iom_use("REG__100")) THEN  
     1388          med_diag%REG__100%dgsave = .TRUE. 
     1389      ELSE  
     1390          med_diag%REG__100%dgsave = .FALSE. 
     1391      ENDIF 
     1392      IF  (iom_use("REG__200")) THEN  
     1393          med_diag%REG__200%dgsave = .TRUE. 
     1394      ELSE  
     1395          med_diag%REG__200%dgsave = .FALSE. 
     1396      ENDIF 
     1397      IF  (iom_use("REG__500")) THEN  
     1398          med_diag%REG__500%dgsave = .TRUE. 
     1399      ELSE  
     1400          med_diag%REG__500%dgsave = .FALSE. 
     1401      ENDIF 
     1402      IF  (iom_use("REG_1000")) THEN  
     1403          med_diag%REG_1000%dgsave = .TRUE. 
     1404      ELSE  
     1405          med_diag%REG_1000%dgsave = .FALSE. 
     1406      ENDIF 
     1407      IF  (iom_use("FASTN")) THEN  
     1408          med_diag%FASTN%dgsave = .TRUE. 
     1409      ELSE  
     1410          med_diag%FASTN%dgsave = .FALSE. 
     1411      ENDIF 
     1412      IF  (iom_use("FASTSI")) THEN  
     1413          med_diag%FASTSI%dgsave = .TRUE. 
     1414      ELSE  
     1415          med_diag%FASTSI%dgsave = .FALSE. 
     1416      ENDIF 
     1417      IF  (iom_use("FASTFE")) THEN  
     1418          med_diag%FASTFE%dgsave = .TRUE. 
     1419      ELSE  
     1420          med_diag%FASTFE%dgsave = .FALSE. 
     1421      ENDIF 
     1422      IF  (iom_use("FASTC")) THEN  
     1423          med_diag%FASTC%dgsave = .TRUE. 
     1424      ELSE  
     1425          med_diag%FASTC%dgsave = .FALSE. 
     1426      ENDIF 
     1427      IF  (iom_use("FASTCA")) THEN  
     1428          med_diag%FASTCA%dgsave = .TRUE. 
     1429      ELSE  
     1430          med_diag%FASTCA%dgsave = .FALSE. 
     1431      ENDIF 
     1432      IF  (iom_use("FDT__100")) THEN  
     1433          med_diag%FDT__100%dgsave = .TRUE. 
     1434      ELSE  
     1435          med_diag%FDT__100%dgsave = .FALSE. 
     1436      ENDIF 
     1437      IF  (iom_use("FDT__200")) THEN  
     1438          med_diag%FDT__200%dgsave = .TRUE. 
     1439      ELSE  
     1440          med_diag%FDT__200%dgsave = .FALSE. 
     1441      ENDIF 
     1442      IF  (iom_use("FDT__500")) THEN  
     1443          med_diag%FDT__500%dgsave = .TRUE. 
     1444      ELSE  
     1445          med_diag%FDT__500%dgsave = .FALSE. 
     1446      ENDIF 
     1447      IF  (iom_use("FDT_1000")) THEN  
     1448          med_diag%FDT_1000%dgsave = .TRUE. 
     1449      ELSE  
     1450          med_diag%FDT_1000%dgsave = .FALSE. 
     1451      ENDIF 
     1452      IF  (iom_use("RG__100F")) THEN  
     1453          med_diag%RG__100F%dgsave = .TRUE. 
     1454      ELSE  
     1455          med_diag%RG__100F%dgsave = .FALSE. 
     1456      ENDIF 
     1457      IF  (iom_use("RG__200F")) THEN  
     1458          med_diag%RG__200F%dgsave = .TRUE. 
     1459      ELSE  
     1460          med_diag%RG__200F%dgsave = .FALSE. 
     1461      ENDIF 
     1462      IF  (iom_use("RG__500F")) THEN  
     1463          med_diag%RG__500F%dgsave = .TRUE. 
     1464      ELSE  
     1465          med_diag%RG__500F%dgsave = .FALSE. 
     1466      ENDIF 
     1467      IF  (iom_use("RG_1000F")) THEN  
     1468          med_diag%RG_1000F%dgsave = .TRUE. 
     1469      ELSE  
     1470          med_diag%RG_1000F%dgsave = .FALSE. 
     1471      ENDIF 
     1472      IF  (iom_use("FDS__100")) THEN  
     1473          med_diag%FDS__100%dgsave = .TRUE. 
     1474      ELSE  
     1475          med_diag%FDS__100%dgsave = .FALSE. 
     1476      ENDIF 
     1477      IF  (iom_use("FDS__200")) THEN  
     1478          med_diag%FDS__200%dgsave = .TRUE. 
     1479      ELSE  
     1480          med_diag%FDS__200%dgsave = .FALSE. 
     1481      ENDIF 
     1482      IF  (iom_use("FDS__500")) THEN  
     1483          med_diag%FDS__500%dgsave = .TRUE. 
     1484      ELSE  
     1485          med_diag%FDS__500%dgsave = .FALSE. 
     1486      ENDIF 
     1487      IF  (iom_use("FDS_1000")) THEN  
     1488          med_diag%FDS_1000%dgsave = .TRUE. 
     1489      ELSE  
     1490          med_diag%FDS_1000%dgsave = .FALSE. 
     1491      ENDIF 
     1492      IF  (iom_use("RGS_100F")) THEN  
     1493          med_diag%RGS_100F%dgsave = .TRUE. 
     1494      ELSE  
     1495          med_diag%RGS_100F%dgsave = .FALSE. 
     1496      ENDIF 
     1497      IF  (iom_use("RGS_200F")) THEN  
     1498          med_diag%RGS_200F%dgsave = .TRUE. 
     1499      ELSE  
     1500          med_diag%RGS_200F%dgsave = .FALSE. 
     1501      ENDIF 
     1502      IF  (iom_use("RGS_500F")) THEN  
     1503          med_diag%RGS_500F%dgsave = .TRUE. 
     1504      ELSE  
     1505          med_diag%RGS_500F%dgsave = .FALSE. 
     1506      ENDIF 
     1507      IF  (iom_use("RGS1000F")) THEN  
     1508          med_diag%RGS1000F%dgsave = .TRUE. 
     1509      ELSE  
     1510          med_diag%RGS1000F%dgsave = .FALSE. 
     1511      ENDIF 
     1512      IF  (iom_use("REMINN")) THEN  
     1513          med_diag%REMINN%dgsave = .TRUE. 
     1514      ELSE  
     1515          med_diag%REMINN%dgsave = .FALSE. 
     1516      ENDIF 
     1517      IF  (iom_use("REMINSI")) THEN  
     1518          med_diag%REMINSI%dgsave = .TRUE. 
     1519      ELSE  
     1520          med_diag%REMINSI%dgsave = .FALSE. 
     1521      ENDIF 
     1522      IF  (iom_use("REMINFE")) THEN  
     1523          med_diag%REMINFE%dgsave = .TRUE. 
     1524      ELSE  
     1525          med_diag%REMINFE%dgsave = .FALSE. 
     1526      ENDIF 
     1527      IF  (iom_use("REMINC")) THEN  
     1528          med_diag%REMINC%dgsave = .TRUE. 
     1529      ELSE  
     1530          med_diag%REMINC%dgsave = .FALSE. 
     1531      ENDIF 
     1532      IF  (iom_use("REMINCA")) THEN  
     1533          med_diag%REMINCA%dgsave = .TRUE. 
     1534      ELSE  
     1535          med_diag%REMINCA%dgsave = .FALSE. 
     1536      ENDIF 
     1537      IF  (iom_use("SEAFLRN")) THEN  
     1538          med_diag%SEAFLRN%dgsave = .TRUE. 
     1539      ELSE  
     1540          med_diag%SEAFLRN%dgsave = .FALSE. 
     1541      ENDIF 
     1542      IF  (iom_use("SEAFLRSI")) THEN  
     1543          med_diag%SEAFLRSI%dgsave = .TRUE. 
     1544      ELSE  
     1545          med_diag%SEAFLRSI%dgsave = .FALSE. 
     1546      ENDIF 
     1547      IF  (iom_use("SEAFLRFE")) THEN  
     1548          med_diag%SEAFLRFE%dgsave = .TRUE. 
     1549      ELSE  
     1550          med_diag%SEAFLRFE%dgsave = .FALSE. 
     1551      ENDIF 
     1552      IF  (iom_use("SEAFLRC")) THEN  
     1553          med_diag%SEAFLRC%dgsave = .TRUE. 
     1554      ELSE  
     1555          med_diag%SEAFLRC%dgsave = .FALSE. 
     1556      ENDIF 
     1557      IF  (iom_use("SEAFLRCA")) THEN  
     1558          med_diag%SEAFLRCA%dgsave = .TRUE. 
     1559      ELSE  
     1560          med_diag%SEAFLRCA%dgsave = .FALSE. 
     1561      ENDIF 
     1562      IF  (iom_use("MED_QSR")) THEN  
     1563          med_diag%MED_QSR%dgsave = .TRUE. 
     1564      ELSE  
     1565          med_diag%MED_QSR%dgsave = .FALSE. 
     1566      ENDIF 
     1567      IF  (iom_use("MED_XPAR")) THEN  
     1568          med_diag%MED_XPAR%dgsave = .TRUE. 
     1569      ELSE  
     1570          med_diag%MED_XPAR%dgsave = .FALSE. 
     1571      ENDIF 
     1572      IF  (iom_use("INTFLX_N")) THEN  
     1573          med_diag%INTFLX_N%dgsave = .TRUE. 
     1574      ELSE  
     1575          med_diag%INTFLX_N%dgsave = .FALSE. 
     1576      ENDIF 
     1577      IF  (iom_use("INTFLX_SI")) THEN  
     1578          med_diag%INTFLX_SI%dgsave = .TRUE. 
     1579      ELSE  
     1580          med_diag%INTFLX_SI%dgsave = .FALSE. 
     1581      ENDIF 
     1582      IF  (iom_use("INTFLX_FE")) THEN  
     1583          med_diag%INTFLX_FE%dgsave = .TRUE. 
     1584      ELSE  
     1585          med_diag%INTFLX_FE%dgsave = .FALSE. 
     1586      ENDIF 
     1587      IF  (iom_use("INT_PN")) THEN  
     1588          med_diag%INT_PN%dgsave = .TRUE. 
     1589      ELSE  
     1590          med_diag%INT_PN%dgsave = .FALSE. 
     1591      ENDIF 
     1592      IF  (iom_use("INT_PD")) THEN  
     1593          med_diag%INT_PD%dgsave = .TRUE. 
     1594      ELSE  
     1595          med_diag%INT_PD%dgsave = .FALSE. 
     1596      ENDIF 
     1597      IF  (iom_use("ML_PRN")) THEN  
     1598          med_diag%ML_PRN%dgsave = .TRUE. 
     1599      ELSE  
     1600          med_diag%ML_PRN%dgsave = .FALSE. 
     1601      ENDIF 
     1602      IF  (iom_use("ML_PRD")) THEN  
     1603          med_diag%ML_PRD%dgsave = .TRUE. 
     1604      ELSE  
     1605          med_diag%ML_PRD%dgsave = .FALSE. 
     1606      ENDIF 
     1607      IF  (iom_use("OCAL_CCD")) THEN  
     1608          med_diag%OCAL_CCD%dgsave = .TRUE. 
     1609      ELSE  
     1610          med_diag%OCAL_CCD%dgsave = .FALSE. 
     1611      ENDIF 
     1612      IF  (iom_use("OCAL_LVL")) THEN  
     1613          med_diag%OCAL_LVL%dgsave = .TRUE. 
     1614      ELSE  
     1615          med_diag%OCAL_LVL%dgsave = .FALSE. 
     1616      ENDIF 
     1617      IF  (iom_use("FE_0000")) THEN  
     1618          med_diag%FE_0000%dgsave = .TRUE. 
     1619      ELSE  
     1620          med_diag%FE_0000%dgsave = .FALSE. 
     1621      ENDIF 
     1622      IF  (iom_use("FE_0100")) THEN  
     1623          med_diag%FE_0100%dgsave = .TRUE. 
     1624      ELSE  
     1625          med_diag%FE_0100%dgsave = .FALSE. 
     1626      ENDIF 
     1627      IF  (iom_use("FE_0200")) THEN  
     1628          med_diag%FE_0200%dgsave = .TRUE. 
     1629      ELSE  
     1630          med_diag%FE_0200%dgsave = .FALSE. 
     1631      ENDIF 
     1632      IF  (iom_use("FE_0500")) THEN  
     1633          med_diag%FE_0500%dgsave = .TRUE. 
     1634      ELSE  
     1635          med_diag%FE_0500%dgsave = .FALSE. 
     1636      ENDIF 
     1637      IF  (iom_use("FE_1000")) THEN  
     1638          med_diag%FE_1000%dgsave = .TRUE. 
     1639      ELSE  
     1640          med_diag%FE_1000%dgsave = .FALSE. 
     1641      ENDIF 
     1642      IF  (iom_use("MED_XZE")) THEN  
     1643          med_diag%MED_XZE%dgsave = .TRUE. 
     1644      ELSE  
     1645          med_diag%MED_XZE%dgsave = .FALSE. 
     1646      ENDIF 
     1647      IF  (iom_use("WIND")) THEN  
     1648          med_diag%WIND%dgsave = .TRUE. 
     1649      ELSE  
     1650          med_diag%WIND%dgsave = .FALSE. 
     1651      ENDIF 
     1652      IF  (iom_use("ATM_PCO2")) THEN  
     1653          med_diag%ATM_PCO2%dgsave = .TRUE. 
     1654      ELSE  
     1655          med_diag%ATM_PCO2%dgsave = .FALSE. 
     1656      ENDIF 
     1657      IF  (iom_use("OCN_PH")) THEN  
     1658          med_diag%OCN_PH%dgsave = .TRUE. 
     1659      ELSE  
     1660          med_diag%OCN_PH%dgsave = .FALSE. 
     1661      ENDIF 
     1662      IF  (iom_use("OCN_PCO2")) THEN  
     1663          med_diag%OCN_PCO2%dgsave = .TRUE. 
     1664      ELSE  
     1665          med_diag%OCN_PCO2%dgsave = .FALSE. 
     1666      ENDIF 
     1667      IF  (iom_use("OCNH2CO3")) THEN  
     1668          med_diag%OCNH2CO3%dgsave = .TRUE. 
     1669      ELSE  
     1670          med_diag%OCNH2CO3%dgsave = .FALSE. 
     1671      ENDIF 
     1672      IF  (iom_use("OCN_HCO3")) THEN  
     1673          med_diag%OCN_HCO3%dgsave = .TRUE. 
     1674      ELSE  
     1675          med_diag%OCN_HCO3%dgsave = .FALSE. 
     1676      ENDIF 
     1677      IF  (iom_use("OCN_CO3")) THEN  
     1678          med_diag%OCN_CO3%dgsave = .TRUE. 
     1679      ELSE  
     1680          med_diag%OCN_CO3%dgsave = .FALSE. 
     1681      ENDIF 
     1682      IF  (iom_use("CO2FLUX")) THEN  
     1683          med_diag%CO2FLUX%dgsave = .TRUE. 
     1684      ELSE  
     1685          med_diag%CO2FLUX%dgsave = .FALSE. 
     1686      ENDIF 
     1687      IF  (iom_use("OM_CAL")) THEN  
     1688          med_diag%OM_CAL%dgsave = .TRUE. 
     1689      ELSE  
     1690          med_diag%OM_CAL%dgsave = .FALSE. 
     1691      ENDIF 
     1692      IF  (iom_use("OM_ARG")) THEN  
     1693          med_diag%OM_ARG%dgsave = .TRUE. 
     1694      ELSE  
     1695          med_diag%OM_ARG%dgsave = .FALSE. 
     1696      ENDIF 
     1697      IF  (iom_use("TCO2")) THEN  
     1698          med_diag%TCO2%dgsave = .TRUE. 
     1699      ELSE  
     1700          med_diag%TCO2%dgsave = .FALSE. 
     1701      ENDIF 
     1702      IF  (iom_use("TALK")) THEN  
     1703          med_diag%TALK%dgsave = .TRUE. 
     1704      ELSE  
     1705          med_diag%TALK%dgsave = .FALSE. 
     1706      ENDIF 
     1707      IF  (iom_use("KW660")) THEN  
     1708          med_diag%KW660%dgsave = .TRUE. 
     1709      ELSE  
     1710          med_diag%KW660%dgsave = .FALSE. 
     1711      ENDIF 
     1712      IF  (iom_use("ATM_PP0")) THEN  
     1713          med_diag%ATM_PP0%dgsave = .TRUE. 
     1714      ELSE  
     1715          med_diag%ATM_PP0%dgsave = .FALSE. 
     1716      ENDIF 
     1717      IF  (iom_use("O2FLUX")) THEN  
     1718          med_diag%O2FLUX%dgsave = .TRUE. 
     1719      ELSE  
     1720          med_diag%O2FLUX%dgsave = .FALSE. 
     1721      ENDIF 
     1722      IF  (iom_use("O2SAT")) THEN  
     1723          med_diag%O2SAT%dgsave = .TRUE. 
     1724      ELSE  
     1725          med_diag%O2SAT%dgsave = .FALSE. 
     1726      ENDIF 
     1727      IF  (iom_use("CAL_CCD")) THEN  
     1728          med_diag%CAL_CCD%dgsave = .TRUE. 
     1729      ELSE  
     1730          med_diag%CAL_CCD%dgsave = .FALSE. 
     1731      ENDIF 
     1732      IF  (iom_use("ARG_CCD")) THEN  
     1733          med_diag%ARG_CCD%dgsave = .TRUE. 
     1734      ELSE  
     1735          med_diag%ARG_CCD%dgsave = .FALSE. 
     1736      ENDIF 
     1737      IF  (iom_use("SFR_OCAL")) THEN  
     1738          med_diag%SFR_OCAL%dgsave = .TRUE. 
     1739      ELSE  
     1740          med_diag%SFR_OCAL%dgsave = .FALSE. 
     1741      ENDIF 
     1742      IF  (iom_use("SFR_OARG")) THEN  
     1743          med_diag%SFR_OARG%dgsave = .TRUE. 
     1744      ELSE  
     1745          med_diag%SFR_OARG%dgsave = .FALSE. 
     1746      ENDIF 
     1747      IF  (iom_use("N_PROD")) THEN  
     1748          med_diag%N_PROD%dgsave = .TRUE. 
     1749      ELSE  
     1750          med_diag%N_PROD%dgsave = .FALSE. 
     1751      ENDIF 
     1752      IF  (iom_use("N_CONS")) THEN  
     1753          med_diag%N_CONS%dgsave = .TRUE. 
     1754      ELSE  
     1755          med_diag%N_CONS%dgsave = .FALSE. 
     1756      ENDIF 
     1757      IF  (iom_use("C_PROD")) THEN  
     1758          med_diag%C_PROD%dgsave = .TRUE. 
     1759      ELSE  
     1760          med_diag%C_PROD%dgsave = .FALSE. 
     1761      ENDIF 
     1762      IF  (iom_use("C_CONS")) THEN  
     1763          med_diag%C_CONS%dgsave = .TRUE. 
     1764      ELSE  
     1765          med_diag%C_CONS%dgsave = .FALSE. 
     1766      ENDIF 
     1767      IF  (iom_use("O2_PROD")) THEN  
     1768          med_diag%O2_PROD%dgsave = .TRUE. 
     1769      ELSE  
     1770          med_diag%O2_PROD%dgsave = .FALSE. 
     1771      ENDIF 
     1772      IF  (iom_use("O2_CONS")) THEN  
     1773          med_diag%O2_CONS%dgsave = .TRUE. 
     1774      ELSE  
     1775          med_diag%O2_CONS%dgsave = .FALSE. 
     1776      ENDIF 
     1777      IF  (iom_use("O2_ANOX")) THEN  
     1778          med_diag%O2_ANOX%dgsave = .TRUE. 
     1779      ELSE  
     1780          med_diag%O2_ANOX%dgsave = .FALSE. 
     1781      ENDIF 
     1782      IF  (iom_use("RR_0100")) THEN  
     1783          med_diag%RR_0100%dgsave = .TRUE. 
     1784      ELSE  
     1785          med_diag%RR_0100%dgsave = .FALSE. 
     1786      ENDIF 
     1787      IF  (iom_use("RR_0500")) THEN  
     1788          med_diag%RR_0500%dgsave = .TRUE. 
     1789      ELSE  
     1790          med_diag%RR_0500%dgsave = .FALSE. 
     1791      ENDIF 
     1792      IF  (iom_use("RR_1000")) THEN  
     1793          med_diag%RR_1000%dgsave = .TRUE. 
     1794      ELSE  
     1795          med_diag%RR_1000%dgsave = .FALSE. 
     1796      ENDIF 
     1797      IF  (iom_use("IBEN_N")) THEN  
     1798          med_diag%IBEN_N%dgsave = .TRUE. 
     1799      ELSE  
     1800          med_diag%IBEN_N%dgsave = .FALSE. 
     1801      ENDIF 
     1802      IF  (iom_use("IBEN_FE")) THEN  
     1803          med_diag%IBEN_FE%dgsave = .TRUE. 
     1804      ELSE  
     1805          med_diag%IBEN_FE%dgsave = .FALSE. 
     1806      ENDIF 
     1807      IF  (iom_use("IBEN_C")) THEN  
     1808          med_diag%IBEN_C%dgsave = .TRUE. 
     1809      ELSE  
     1810          med_diag%IBEN_C%dgsave = .FALSE. 
     1811      ENDIF 
     1812      IF  (iom_use("IBEN_SI")) THEN  
     1813          med_diag%IBEN_SI%dgsave = .TRUE. 
     1814      ELSE  
     1815          med_diag%IBEN_SI%dgsave = .FALSE. 
     1816      ENDIF 
     1817      IF  (iom_use("IBEN_CA")) THEN  
     1818          med_diag%IBEN_CA%dgsave = .TRUE. 
     1819      ELSE  
     1820          med_diag%IBEN_CA%dgsave = .FALSE. 
     1821      ENDIF 
     1822      IF  (iom_use("OBEN_N")) THEN  
     1823          med_diag%OBEN_N%dgsave = .TRUE. 
     1824      ELSE  
     1825          med_diag%OBEN_N%dgsave = .FALSE. 
     1826      ENDIF 
     1827      IF  (iom_use("OBEN_FE")) THEN  
     1828          med_diag%OBEN_FE%dgsave = .TRUE. 
     1829      ELSE  
     1830          med_diag%OBEN_FE%dgsave = .FALSE. 
     1831      ENDIF 
     1832      IF  (iom_use("OBEN_C")) THEN  
     1833          med_diag%OBEN_C%dgsave = .TRUE. 
     1834      ELSE  
     1835          med_diag%OBEN_C%dgsave = .FALSE. 
     1836      ENDIF 
     1837      IF  (iom_use("OBEN_SI")) THEN  
     1838          med_diag%OBEN_SI%dgsave = .TRUE. 
     1839      ELSE  
     1840          med_diag%OBEN_SI%dgsave = .FALSE. 
     1841      ENDIF 
     1842      IF  (iom_use("OBEN_CA")) THEN  
     1843          med_diag%OBEN_CA%dgsave = .TRUE. 
     1844      ELSE  
     1845          med_diag%OBEN_CA%dgsave = .FALSE. 
     1846      ENDIF 
     1847      IF  (iom_use("BEN_N")) THEN  
     1848          med_diag%BEN_N%dgsave = .TRUE. 
     1849      ELSE  
     1850          med_diag%BEN_N%dgsave = .FALSE. 
     1851      ENDIF 
     1852      IF  (iom_use("BEN_FE")) THEN  
     1853          med_diag%BEN_FE%dgsave = .TRUE. 
     1854      ELSE  
     1855          med_diag%BEN_FE%dgsave = .FALSE. 
     1856      ENDIF 
     1857      IF  (iom_use("BEN_C")) THEN  
     1858          med_diag%BEN_C%dgsave = .TRUE. 
     1859      ELSE  
     1860          med_diag%BEN_C%dgsave = .FALSE. 
     1861      ENDIF 
     1862      IF  (iom_use("BEN_SI")) THEN  
     1863          med_diag%BEN_SI%dgsave = .TRUE. 
     1864      ELSE  
     1865          med_diag%BEN_SI%dgsave = .FALSE. 
     1866      ENDIF 
     1867      IF  (iom_use("BEN_CA")) THEN  
     1868          med_diag%BEN_CA%dgsave = .TRUE. 
     1869      ELSE  
     1870          med_diag%BEN_CA%dgsave = .FALSE. 
     1871      ENDIF 
     1872      IF  (iom_use("RUNOFF")) THEN  
     1873          med_diag%RUNOFF%dgsave = .TRUE. 
     1874      ELSE  
     1875          med_diag%RUNOFF%dgsave = .FALSE. 
     1876      ENDIF 
     1877      IF  (iom_use("RIV_N")) THEN  
     1878          med_diag%RIV_N%dgsave = .TRUE. 
     1879      ELSE  
     1880          med_diag%RIV_N%dgsave = .FALSE. 
     1881      ENDIF 
     1882      IF  (iom_use("RIV_SI")) THEN  
     1883          med_diag%RIV_SI%dgsave = .TRUE. 
     1884      ELSE  
     1885          med_diag%RIV_SI%dgsave = .FALSE. 
     1886      ENDIF 
     1887      IF  (iom_use("RIV_C")) THEN  
     1888          med_diag%RIV_C%dgsave = .TRUE. 
     1889      ELSE  
     1890          med_diag%RIV_C%dgsave = .FALSE. 
     1891      ENDIF 
     1892      IF  (iom_use("RIV_ALK")) THEN  
     1893          med_diag%RIV_ALK%dgsave = .TRUE. 
     1894      ELSE  
     1895          med_diag%RIV_ALK%dgsave = .FALSE. 
     1896      ENDIF 
     1897      IF  (iom_use("DETC")) THEN  
     1898          med_diag%DETC%dgsave = .TRUE. 
     1899      ELSE  
     1900          med_diag%DETC%dgsave = .FALSE. 
     1901      ENDIF 
     1902      IF  (iom_use("SDC__100")) THEN  
     1903          med_diag%SDC__100%dgsave = .TRUE. 
     1904      ELSE  
     1905          med_diag%SDC__100%dgsave = .FALSE. 
     1906      ENDIF 
     1907      IF  (iom_use("SDC__200")) THEN  
     1908          med_diag%SDC__200%dgsave = .TRUE. 
     1909      ELSE  
     1910          med_diag%SDC__200%dgsave = .FALSE. 
     1911      ENDIF 
     1912      IF  (iom_use("SDC__500")) THEN  
     1913          med_diag%SDC__500%dgsave = .TRUE. 
     1914      ELSE  
     1915          med_diag%SDC__500%dgsave = .FALSE. 
     1916      ENDIF 
     1917      IF  (iom_use("SDC_1000")) THEN  
     1918          med_diag%SDC_1000%dgsave = .TRUE. 
     1919      ELSE  
     1920          med_diag%SDC_1000%dgsave = .FALSE. 
     1921      ENDIF 
     1922      IF  (iom_use("INVTC")) THEN  
     1923          med_diag%INVTC%dgsave = .TRUE. 
     1924      ELSE  
     1925          med_diag%INVTC%dgsave = .FALSE. 
     1926      ENDIF 
     1927      IF  (iom_use("INVTALK")) THEN  
     1928          med_diag%INVTALK%dgsave = .TRUE. 
     1929      ELSE  
     1930          med_diag%INVTALK%dgsave = .FALSE. 
     1931      ENDIF 
     1932      IF  (iom_use("INVTO2")) THEN  
     1933          med_diag%INVTO2%dgsave = .TRUE. 
     1934      ELSE  
     1935          med_diag%INVTO2%dgsave = .FALSE. 
     1936      ENDIF 
     1937      IF  (iom_use("LYSO_CA")) THEN  
     1938          med_diag%LYSO_CA%dgsave = .TRUE. 
     1939      ELSE  
     1940          med_diag%LYSO_CA%dgsave = .FALSE. 
     1941      ENDIF 
     1942      IF  (iom_use("COM_RESP")) THEN  
     1943          med_diag%COM_RESP%dgsave = .TRUE. 
     1944      ELSE  
     1945          med_diag%COM_RESP%dgsave = .FALSE. 
     1946      ENDIF 
     1947      IF  (iom_use("PN_LLOSS")) THEN  
     1948          med_diag%PN_LLOSS%dgsave = .TRUE. 
     1949      ELSE  
     1950          med_diag%PN_LLOSS%dgsave = .FALSE. 
     1951      ENDIF 
     1952      IF  (iom_use("PD_LLOSS")) THEN  
     1953          med_diag%PD_LLOSS%dgsave = .TRUE. 
     1954      ELSE  
     1955          med_diag%PD_LLOSS%dgsave = .FALSE. 
     1956      ENDIF 
     1957      IF  (iom_use("ZI_LLOSS")) THEN  
     1958          med_diag%ZI_LLOSS%dgsave = .TRUE. 
     1959      ELSE  
     1960          med_diag%ZI_LLOSS%dgsave = .FALSE. 
     1961      ENDIF 
     1962      IF  (iom_use("ZE_LLOSS")) THEN  
     1963          med_diag%ZE_LLOSS%dgsave = .TRUE. 
     1964      ELSE  
     1965          med_diag%ZE_LLOSS%dgsave = .FALSE. 
     1966      ENDIF 
     1967      IF  (iom_use("ZI_MES_N")) THEN  
     1968          med_diag%ZI_MES_N%dgsave = .TRUE. 
     1969      ELSE  
     1970          med_diag%ZI_MES_N%dgsave = .FALSE. 
     1971      ENDIF 
     1972      IF  (iom_use("ZI_MES_D")) THEN  
     1973          med_diag%ZI_MES_D%dgsave = .TRUE. 
     1974      ELSE  
     1975          med_diag%ZI_MES_D%dgsave = .FALSE. 
     1976      ENDIF 
     1977      IF  (iom_use("ZI_MES_C")) THEN  
     1978          med_diag%ZI_MES_C%dgsave = .TRUE. 
     1979      ELSE  
     1980          med_diag%ZI_MES_C%dgsave = .FALSE. 
     1981      ENDIF 
     1982      IF  (iom_use("ZI_MESDC")) THEN  
     1983          med_diag%ZI_MESDC%dgsave = .TRUE. 
     1984      ELSE  
     1985          med_diag%ZI_MESDC%dgsave = .FALSE. 
     1986      ENDIF 
     1987      IF  (iom_use("ZI_EXCR")) THEN  
     1988          med_diag%ZI_EXCR%dgsave = .TRUE. 
     1989      ELSE  
     1990          med_diag%ZI_EXCR%dgsave = .FALSE. 
     1991      ENDIF 
     1992      IF  (iom_use("ZI_RESP")) THEN  
     1993          med_diag%ZI_RESP%dgsave = .TRUE. 
     1994      ELSE  
     1995          med_diag%ZI_RESP%dgsave = .FALSE. 
     1996      ENDIF 
     1997      IF  (iom_use("ZI_GROW")) THEN  
     1998          med_diag%ZI_GROW%dgsave = .TRUE. 
     1999      ELSE  
     2000          med_diag%ZI_GROW%dgsave = .FALSE. 
     2001      ENDIF 
     2002      IF  (iom_use("ZE_MES_N")) THEN  
     2003          med_diag%ZE_MES_N%dgsave = .TRUE. 
     2004      ELSE  
     2005          med_diag%ZE_MES_N%dgsave = .FALSE. 
     2006      ENDIF 
     2007      IF  (iom_use("ZE_MES_D")) THEN  
     2008          med_diag%ZE_MES_D%dgsave = .TRUE. 
     2009      ELSE  
     2010          med_diag%ZE_MES_D%dgsave = .FALSE. 
     2011      ENDIF 
     2012      IF  (iom_use("ZE_MES_C")) THEN  
     2013          med_diag%ZE_MES_C%dgsave = .TRUE. 
     2014      ELSE  
     2015          med_diag%ZE_MES_C%dgsave = .FALSE. 
     2016      ENDIF 
     2017      IF  (iom_use("ZE_MESDC")) THEN  
     2018          med_diag%ZE_MESDC%dgsave = .TRUE. 
     2019      ELSE  
     2020          med_diag%ZE_MESDC%dgsave = .FALSE. 
     2021      ENDIF 
     2022      IF  (iom_use("ZE_EXCR")) THEN  
     2023          med_diag%ZE_EXCR%dgsave = .TRUE. 
     2024      ELSE  
     2025          med_diag%ZE_EXCR%dgsave = .FALSE. 
     2026      ENDIF 
     2027      IF  (iom_use("ZE_RESP")) THEN  
     2028          med_diag%ZE_RESP%dgsave = .TRUE. 
     2029      ELSE  
     2030          med_diag%ZE_RESP%dgsave = .FALSE. 
     2031      ENDIF 
     2032      IF  (iom_use("ZE_GROW")) THEN  
     2033          med_diag%ZE_GROW%dgsave = .TRUE. 
     2034      ELSE  
     2035          med_diag%ZE_GROW%dgsave = .FALSE. 
     2036      ENDIF 
     2037      IF  (iom_use("MDETC")) THEN  
     2038          med_diag%MDETC%dgsave = .TRUE. 
     2039      ELSE  
     2040          med_diag%MDETC%dgsave = .FALSE. 
     2041      ENDIF 
     2042      IF  (iom_use("GMIDC")) THEN  
     2043          med_diag%GMIDC%dgsave = .TRUE. 
     2044      ELSE  
     2045          med_diag%GMIDC%dgsave = .FALSE. 
     2046      ENDIF 
     2047      IF  (iom_use("GMEDC")) THEN  
     2048          med_diag%GMEDC%dgsave = .TRUE. 
     2049      ELSE  
     2050          med_diag%GMEDC%dgsave = .FALSE. 
     2051      ENDIF 
     2052      IF  (iom_use("INT_ZMI")) THEN  
     2053          med_diag%INT_ZMI%dgsave = .TRUE. 
     2054      ELSE  
     2055          med_diag%INT_ZMI%dgsave = .FALSE. 
     2056      ENDIF 
     2057      IF  (iom_use("INT_ZME")) THEN  
     2058          med_diag%INT_ZME%dgsave = .TRUE. 
     2059      ELSE  
     2060          med_diag%INT_ZME%dgsave = .FALSE. 
     2061      ENDIF 
     2062      IF  (iom_use("INT_DET")) THEN  
     2063          med_diag%INT_DET%dgsave = .TRUE. 
     2064      ELSE  
     2065          med_diag%INT_DET%dgsave = .FALSE. 
     2066      ENDIF 
     2067      IF  (iom_use("INT_DTC")) THEN  
     2068          med_diag%INT_DTC%dgsave = .TRUE. 
     2069      ELSE  
     2070          med_diag%INT_DTC%dgsave = .FALSE. 
     2071      ENDIF 
     2072      IF  (iom_use("DMS_SURF")) THEN  
     2073          med_diag%DMS_SURF%dgsave = .TRUE. 
     2074      ELSE  
     2075          med_diag%DMS_SURF%dgsave = .FALSE. 
     2076      ENDIF 
     2077      IF  (iom_use("DMS_ANDR")) THEN  
     2078          med_diag%DMS_ANDR%dgsave = .TRUE. 
     2079      ELSE  
     2080          med_diag%DMS_ANDR%dgsave = .FALSE. 
     2081      ENDIF 
     2082      IF  (iom_use("DMS_SIMO")) THEN  
     2083          med_diag%DMS_SIMO%dgsave = .TRUE. 
     2084      ELSE  
     2085          med_diag%DMS_SIMO%dgsave = .FALSE. 
     2086      ENDIF 
     2087      IF  (iom_use("DMS_ARAN")) THEN  
     2088          med_diag%DMS_ARAN%dgsave = .TRUE. 
     2089      ELSE  
     2090          med_diag%DMS_ARAN%dgsave = .FALSE. 
     2091      ENDIF 
     2092      IF  (iom_use("DMS_HALL")) THEN  
     2093          med_diag%DMS_HALL%dgsave = .TRUE. 
     2094      ELSE  
     2095          med_diag%DMS_HALL%dgsave = .FALSE. 
     2096      ENDIF 
     2097      IF  (iom_use("ATM_XCO2")) THEN  
     2098          med_diag%ATM_XCO2%dgsave = .TRUE. 
     2099      ELSE  
     2100          med_diag%ATM_XCO2%dgsave = .FALSE. 
     2101      ENDIF 
     2102      IF  (iom_use("OCN_FCO2")) THEN  
     2103          med_diag%OCN_FCO2%dgsave = .TRUE. 
     2104      ELSE  
     2105          med_diag%OCN_FCO2%dgsave = .FALSE. 
     2106      ENDIF 
     2107      IF  (iom_use("ATM_FCO2")) THEN  
     2108          med_diag%ATM_FCO2%dgsave = .TRUE. 
     2109      ELSE  
     2110          med_diag%ATM_FCO2%dgsave = .FALSE. 
     2111      ENDIF 
     2112      IF  (iom_use("OCN_RHOSW")) THEN  
     2113          med_diag%OCN_RHOSW%dgsave = .TRUE. 
     2114      ELSE  
     2115          med_diag%OCN_RHOSW%dgsave = .FALSE. 
     2116      ENDIF 
     2117      IF  (iom_use("OCN_SCHCO2")) THEN  
     2118          med_diag%OCN_SCHCO2%dgsave = .TRUE. 
     2119      ELSE  
     2120          med_diag%OCN_SCHCO2%dgsave = .FALSE. 
     2121      ENDIF 
     2122      IF  (iom_use("OCN_KWCO2")) THEN  
     2123          med_diag%OCN_KWCO2%dgsave = .TRUE. 
     2124      ELSE  
     2125          med_diag%OCN_KWCO2%dgsave = .FALSE. 
     2126      ENDIF 
     2127      IF  (iom_use("OCN_K0")) THEN  
     2128          med_diag%OCN_K0%dgsave = .TRUE. 
     2129      ELSE  
     2130          med_diag%OCN_K0%dgsave = .FALSE. 
     2131      ENDIF 
     2132      IF  (iom_use("CO2STARAIR")) THEN  
     2133          med_diag%CO2STARAIR%dgsave = .TRUE. 
     2134      ELSE  
     2135          med_diag%CO2STARAIR%dgsave = .FALSE. 
     2136      ENDIF 
     2137      IF  (iom_use("OCN_DPCO2")) THEN  
     2138          med_diag%OCN_DPCO2%dgsave = .TRUE. 
     2139      ELSE  
     2140          med_diag%OCN_DPCO2%dgsave = .FALSE. 
    20002141      ENDIF 
    20012142      !! 
    2002       !! 3D fields 
    2003       IF (iom_use("TPP3")) THEN  
    2004          med_diag%TPP3%dgsave = .TRUE. 
    2005       ELSE  
    2006          med_diag%TPP3%dgsave = .FALSE. 
    2007       ENDIF 
    2008       IF (iom_use("DETFLUX3")) THEN  
    2009          med_diag%DETFLUX3%dgsave = .TRUE. 
    2010       ELSE  
    2011          med_diag%DETFLUX3%dgsave = .FALSE. 
    2012       ENDIF 
    2013       IF (iom_use("REMIN3N")) THEN  
    2014          med_diag%REMIN3N%dgsave = .TRUE. 
    2015       ELSE  
    2016          med_diag%REMIN3N%dgsave = .FALSE. 
    2017       ENDIF 
    2018       IF (iom_use("PH3")) THEN  
    2019          med_diag%PH3%dgsave = .TRUE. 
    2020       ELSE  
    2021          med_diag%PH3%dgsave = .FALSE. 
    2022       ENDIF 
    2023       IF (iom_use("OM_CAL3")) THEN  
    2024          med_diag%OM_CAL3%dgsave = .TRUE. 
    2025       ELSE  
    2026          med_diag%OM_CAL3%dgsave = .FALSE. 
     2143      IF  (iom_use("TPP3")) THEN  
     2144          med_diag%TPP3%dgsave = .TRUE. 
     2145      ELSE  
     2146          med_diag%TPP3%dgsave = .FALSE. 
     2147      ENDIF 
     2148      IF  (iom_use("DETFLUX3")) THEN  
     2149          med_diag%DETFLUX3%dgsave = .TRUE. 
     2150      ELSE  
     2151          med_diag%DETFLUX3%dgsave = .FALSE. 
     2152      ENDIF 
     2153      IF  (iom_use("REMIN3N")) THEN  
     2154          med_diag%REMIN3N%dgsave = .TRUE. 
     2155      ELSE  
     2156          med_diag%REMIN3N%dgsave = .FALSE. 
     2157      ENDIF 
     2158      IF  (iom_use("PH3")) THEN  
     2159          med_diag%PH3%dgsave = .TRUE. 
     2160      ELSE  
     2161          med_diag%PH3%dgsave = .FALSE. 
     2162      ENDIF 
     2163      IF  (iom_use("OM_CAL3")) THEN  
     2164          med_diag%OM_CAL3%dgsave = .TRUE. 
     2165      ELSE  
     2166          med_diag%OM_CAL3%dgsave = .FALSE. 
    20272167      ENDIF 
    20282168      !! 
     
    20322172      !! 
    20332173      !! 2D fields 
    2034       IF (iom_use("epC100")) THEN  
    2035          med_diag%epC100%dgsave = .TRUE. 
    2036       ELSE  
    2037          med_diag%epC100%dgsave = .FALSE. 
    2038       ENDIF 
    2039       IF (iom_use("epCALC100")) THEN  
    2040          med_diag%epCALC100%dgsave = .TRUE. 
    2041       ELSE  
    2042          med_diag%epCALC100%dgsave = .FALSE. 
    2043       ENDIF 
    2044       IF (iom_use("epN100")) THEN  
    2045          med_diag%epN100%dgsave = .TRUE. 
    2046       ELSE  
    2047          med_diag%epN100%dgsave = .FALSE. 
    2048       ENDIF 
    2049       IF (iom_use("epSI100")) THEN  
    2050          med_diag%epSI100%dgsave = .TRUE. 
    2051       ELSE  
    2052          med_diag%epSI100%dgsave = .FALSE. 
    2053       ENDIF 
    2054       IF (iom_use("FGCO2")) THEN  
    2055          med_diag%FGCO2%dgsave = .TRUE. 
    2056       ELSE  
    2057          med_diag%FGCO2%dgsave = .FALSE. 
    2058       ENDIF 
    2059       IF (iom_use("INTDISSIC")) THEN  
    2060          med_diag%INTDISSIC%dgsave = .TRUE. 
    2061       ELSE  
    2062          med_diag%INTDISSIC%dgsave = .FALSE. 
    2063       ENDIF 
    2064       IF (iom_use("INTDISSIN")) THEN  
    2065          med_diag%INTDISSIN%dgsave = .TRUE. 
    2066       ELSE  
    2067          med_diag%INTDISSIN%dgsave = .FALSE. 
    2068       ENDIF 
    2069       IF (iom_use("INTDISSISI")) THEN  
    2070          med_diag%INTDISSISI%dgsave = .TRUE. 
    2071       ELSE  
    2072          med_diag%INTDISSISI%dgsave = .FALSE. 
    2073       ENDIF 
    2074       IF (iom_use("INTTALK")) THEN  
    2075          med_diag%INTTALK%dgsave = .TRUE. 
    2076       ELSE  
    2077          med_diag%INTTALK%dgsave = .FALSE. 
    2078       ENDIF 
    2079       IF (iom_use("O2min")) THEN  
    2080          med_diag%O2min%dgsave = .TRUE. 
    2081       ELSE  
    2082          med_diag%O2min%dgsave = .FALSE. 
    2083       ENDIF 
    2084       IF (iom_use("ZO2min")) THEN  
    2085          med_diag%ZO2min%dgsave = .TRUE. 
    2086       ELSE  
    2087          med_diag%ZO2min%dgsave = .FALSE. 
    2088       ENDIF 
    2089       IF (iom_use("FBDDTALK")) THEN  
    2090          med_diag%FBDDTALK%dgsave = .TRUE. 
    2091       ELSE  
    2092          med_diag%FBDDTALK%dgsave = .FALSE. 
    2093       ENDIF 
    2094       IF (iom_use("FBDDTDIC")) THEN  
    2095          med_diag%FBDDTDIC%dgsave = .TRUE. 
    2096       ELSE  
    2097          med_diag%FBDDTDIC%dgsave = .FALSE. 
    2098       ENDIF 
    2099       IF (iom_use("FBDDTDIFE")) THEN  
    2100          med_diag%FBDDTDIFE%dgsave = .TRUE. 
    2101       ELSE  
    2102          med_diag%FBDDTDIFE%dgsave = .FALSE. 
    2103       ENDIF 
    2104       IF (iom_use("FBDDTDIN")) THEN  
    2105          med_diag%FBDDTDIN%dgsave = .TRUE. 
    2106       ELSE  
    2107          med_diag%FBDDTDIN%dgsave = .FALSE. 
    2108       ENDIF 
    2109       IF (iom_use("FBDDTDISI")) THEN  
    2110          med_diag%FBDDTDISI%dgsave = .TRUE. 
    2111       ELSE  
    2112          med_diag%FBDDTDISI%dgsave = .FALSE. 
     2174      IF  (iom_use("epC100")) THEN  
     2175          med_diag%epC100%dgsave = .TRUE. 
     2176      ELSE  
     2177          med_diag%epC100%dgsave = .FALSE. 
     2178      ENDIF 
     2179      IF  (iom_use("epCALC100")) THEN  
     2180          med_diag%epCALC100%dgsave = .TRUE. 
     2181      ELSE  
     2182          med_diag%epCALC100%dgsave = .FALSE. 
     2183      ENDIF 
     2184      IF  (iom_use("epN100")) THEN  
     2185          med_diag%epN100%dgsave = .TRUE. 
     2186      ELSE  
     2187          med_diag%epN100%dgsave = .FALSE. 
     2188      ENDIF 
     2189      IF  (iom_use("epSI100")) THEN  
     2190          med_diag%epSI100%dgsave = .TRUE. 
     2191      ELSE  
     2192          med_diag%epSI100%dgsave = .FALSE. 
     2193      ENDIF 
     2194      IF  (iom_use("FGCO2")) THEN  
     2195          med_diag%FGCO2%dgsave = .TRUE. 
     2196      ELSE  
     2197          med_diag%FGCO2%dgsave = .FALSE. 
     2198      ENDIF 
     2199      IF  (iom_use("INTDISSIC")) THEN  
     2200          med_diag%INTDISSIC%dgsave = .TRUE. 
     2201      ELSE  
     2202          med_diag%INTDISSIC%dgsave = .FALSE. 
     2203      ENDIF 
     2204      IF  (iom_use("INTDISSIN")) THEN  
     2205          med_diag%INTDISSIN%dgsave = .TRUE. 
     2206      ELSE  
     2207          med_diag%INTDISSIN%dgsave = .FALSE. 
     2208      ENDIF 
     2209      IF  (iom_use("INTDISSISI")) THEN  
     2210          med_diag%INTDISSISI%dgsave = .TRUE. 
     2211      ELSE  
     2212          med_diag%INTDISSISI%dgsave = .FALSE. 
     2213      ENDIF 
     2214      IF  (iom_use("INTTALK")) THEN  
     2215          med_diag%INTTALK%dgsave = .TRUE. 
     2216      ELSE  
     2217          med_diag%INTTALK%dgsave = .FALSE. 
     2218      ENDIF 
     2219      IF  (iom_use("O2min")) THEN  
     2220          med_diag%O2min%dgsave = .TRUE. 
     2221      ELSE  
     2222          med_diag%O2min%dgsave = .FALSE. 
     2223      ENDIF 
     2224      IF  (iom_use("ZO2min")) THEN  
     2225          med_diag%ZO2min%dgsave = .TRUE. 
     2226      ELSE  
     2227          med_diag%ZO2min%dgsave = .FALSE. 
     2228      ENDIF 
     2229      IF  (iom_use("FBDDTALK")) THEN  
     2230          med_diag%FBDDTALK%dgsave = .TRUE. 
     2231      ELSE  
     2232          med_diag%FBDDTALK%dgsave = .FALSE. 
     2233      ENDIF 
     2234      IF  (iom_use("FBDDTDIC")) THEN  
     2235          med_diag%FBDDTDIC%dgsave = .TRUE. 
     2236      ELSE  
     2237          med_diag%FBDDTDIC%dgsave = .FALSE. 
     2238      ENDIF 
     2239      IF  (iom_use("FBDDTDIFE")) THEN  
     2240          med_diag%FBDDTDIFE%dgsave = .TRUE. 
     2241      ELSE  
     2242          med_diag%FBDDTDIFE%dgsave = .FALSE. 
     2243      ENDIF 
     2244      IF  (iom_use("FBDDTDIN")) THEN  
     2245          med_diag%FBDDTDIN%dgsave = .TRUE. 
     2246      ELSE  
     2247          med_diag%FBDDTDIN%dgsave = .FALSE. 
     2248      ENDIF 
     2249      IF  (iom_use("FBDDTDISI")) THEN  
     2250          med_diag%FBDDTDISI%dgsave = .TRUE. 
     2251      ELSE  
     2252          med_diag%FBDDTDISI%dgsave = .FALSE. 
    21132253      ENDIF 
    21142254      !! 
    2115       !! 3D fields 
    2116       IF (iom_use("TPPD3")) THEN  
    2117          med_diag%TPPD3%dgsave = .TRUE. 
    2118       ELSE  
    2119          med_diag%TPPD3%dgsave = .FALSE. 
    2120       ENDIF 
    2121       IF (iom_use("BDDTALK3")) THEN  
    2122          med_diag%BDDTALK3%dgsave = .TRUE. 
    2123       ELSE  
    2124          med_diag%BDDTALK3%dgsave = .FALSE. 
    2125       ENDIF 
    2126       IF (iom_use("BDDTDIC3")) THEN  
    2127          med_diag%BDDTDIC3%dgsave = .TRUE. 
    2128       ELSE  
    2129          med_diag%BDDTDIC3%dgsave = .FALSE. 
    2130       ENDIF 
    2131       IF (iom_use("BDDTDIFE3")) THEN  
    2132          med_diag%BDDTDIFE3%dgsave = .TRUE. 
    2133       ELSE  
    2134          med_diag%BDDTDIFE3%dgsave = .FALSE. 
    2135       ENDIF 
    2136       IF (iom_use("BDDTDIN3")) THEN  
    2137          med_diag%BDDTDIN3%dgsave = .TRUE. 
    2138       ELSE  
    2139          med_diag%BDDTDIN3%dgsave = .FALSE. 
    2140       ENDIF 
    2141       IF (iom_use("BDDTDISI3")) THEN  
    2142          med_diag%BDDTDISI3%dgsave = .TRUE. 
    2143       ELSE  
    2144          med_diag%BDDTDISI3%dgsave = .FALSE. 
    2145       ENDIF 
    2146       IF (iom_use("FD_NIT3")) THEN  
    2147          med_diag%FD_NIT3%dgsave = .TRUE. 
    2148       ELSE  
    2149          med_diag%FD_NIT3%dgsave = .FALSE. 
    2150       ENDIF 
    2151       IF (iom_use("FD_SIL3")) THEN  
    2152          med_diag%FD_SIL3%dgsave = .TRUE. 
    2153       ELSE  
    2154          med_diag%FD_SIL3%dgsave = .FALSE. 
    2155       ENDIF 
    2156       IF (iom_use("FD_CAR3")) THEN  
    2157          med_diag%FD_CAR3%dgsave = .TRUE. 
    2158       ELSE  
    2159          med_diag%FD_CAR3%dgsave = .FALSE. 
    2160       ENDIF 
    2161       IF (iom_use("FD_CAL3")) THEN  
    2162          med_diag%FD_CAL3%dgsave = .TRUE. 
    2163       ELSE  
    2164          med_diag%FD_CAL3%dgsave = .FALSE. 
    2165       ENDIF 
    2166       IF (iom_use("CO33")) THEN  
    2167          med_diag%CO33%dgsave = .TRUE. 
    2168       ELSE  
    2169          med_diag%CO33%dgsave = .FALSE. 
    2170       ENDIF 
    2171       IF (iom_use("CO3SATARAG3")) THEN  
    2172          med_diag%CO3SATARAG3%dgsave = .TRUE. 
    2173       ELSE  
    2174          med_diag%CO3SATARAG3%dgsave = .FALSE. 
    2175       ENDIF 
    2176       IF (iom_use("CO3SATCALC3")) THEN  
    2177          med_diag%CO3SATCALC3%dgsave = .TRUE. 
    2178       ELSE  
    2179          med_diag%CO3SATCALC3%dgsave = .FALSE. 
    2180       ENDIF 
    2181       IF (iom_use("DCALC3")) THEN  
    2182          med_diag%DCALC3%dgsave = .TRUE. 
    2183       ELSE  
    2184          med_diag%DCALC3%dgsave = .FALSE. 
    2185       ENDIF 
    2186       IF (iom_use("EXPC3")) THEN  
    2187          med_diag%EXPC3%dgsave = .TRUE. 
    2188       ELSE  
    2189          med_diag%EXPC3%dgsave = .FALSE. 
    2190       ENDIF 
    2191       IF (iom_use("EXPN3")) THEN  
    2192          med_diag%EXPN3%dgsave = .TRUE. 
    2193       ELSE  
    2194          med_diag%EXPN3%dgsave = .FALSE. 
    2195       ENDIF 
    2196       IF (iom_use("FEDISS3")) THEN  
    2197          med_diag%FEDISS3%dgsave = .TRUE. 
    2198       ELSE  
    2199          med_diag%FEDISS3%dgsave = .FALSE. 
    2200       ENDIF 
    2201       IF (iom_use("FESCAV3")) THEN  
    2202          med_diag%FESCAV3%dgsave = .TRUE. 
    2203       ELSE  
    2204          med_diag%FESCAV3%dgsave = .FALSE. 
    2205       ENDIF 
    2206       IF (iom_use("MIGRAZP3")) THEN  
    2207          med_diag%MIGRAZP3%dgsave = .TRUE. 
    2208       ELSE  
    2209          med_diag%MIGRAZP3%dgsave = .FALSE. 
    2210       ENDIF 
    2211       IF (iom_use("MIGRAZD3")) THEN  
    2212          med_diag%MIGRAZD3%dgsave = .TRUE. 
    2213       ELSE  
    2214          med_diag%MIGRAZD3%dgsave = .FALSE. 
    2215       ENDIF 
    2216       IF (iom_use("MEGRAZP3")) THEN  
    2217          med_diag%MEGRAZP3%dgsave = .TRUE. 
    2218       ELSE  
    2219          med_diag%MEGRAZP3%dgsave = .FALSE. 
    2220       ENDIF 
    2221       IF (iom_use("MEGRAZD3")) THEN  
    2222          med_diag%MEGRAZD3%dgsave = .TRUE. 
    2223       ELSE  
    2224          med_diag%MEGRAZD3%dgsave = .FALSE. 
    2225       ENDIF 
    2226       IF (iom_use("MEGRAZZ3")) THEN  
    2227          med_diag%MEGRAZZ3%dgsave = .TRUE. 
    2228       ELSE  
    2229          med_diag%MEGRAZZ3%dgsave = .FALSE. 
    2230       ENDIF 
    2231       IF (iom_use("O2SAT3")) THEN  
    2232          med_diag%O2SAT3%dgsave = .TRUE. 
    2233       ELSE  
    2234          med_diag%O2SAT3%dgsave = .FALSE. 
    2235       ENDIF 
    2236       IF (iom_use("PBSI3")) THEN  
    2237          med_diag%PBSI3%dgsave = .TRUE. 
    2238       ELSE  
    2239          med_diag%PBSI3%dgsave = .FALSE. 
    2240       ENDIF 
    2241       IF (iom_use("PCAL3")) THEN  
    2242          med_diag%PCAL3%dgsave = .TRUE. 
    2243       ELSE  
    2244          med_diag%PCAL3%dgsave = .FALSE. 
    2245       ENDIF 
    2246       IF (iom_use("REMOC3")) THEN  
    2247          med_diag%REMOC3%dgsave = .TRUE. 
    2248       ELSE  
    2249          med_diag%REMOC3%dgsave = .FALSE. 
    2250       ENDIF 
    2251       IF (iom_use("PNLIMJ3")) THEN  
    2252          med_diag%PNLIMJ3%dgsave = .TRUE. 
    2253       ELSE  
    2254          med_diag%PNLIMJ3%dgsave = .FALSE. 
    2255       ENDIF 
    2256       IF (iom_use("PNLIMN3")) THEN  
    2257          med_diag%PNLIMN3%dgsave = .TRUE. 
    2258       ELSE  
    2259          med_diag%PNLIMN3%dgsave = .FALSE. 
    2260       ENDIF 
    2261       IF (iom_use("PNLIMFE3")) THEN  
    2262          med_diag%PNLIMFE3%dgsave = .TRUE. 
    2263       ELSE  
    2264          med_diag%PNLIMFE3%dgsave = .FALSE. 
    2265       ENDIF 
    2266       IF (iom_use("PDLIMJ3")) THEN  
    2267          med_diag%PDLIMJ3%dgsave = .TRUE. 
    2268       ELSE  
    2269          med_diag%PDLIMJ3%dgsave = .FALSE. 
    2270       ENDIF 
    2271       IF (iom_use("PDLIMN3")) THEN  
    2272          med_diag%PDLIMN3%dgsave = .TRUE. 
    2273       ELSE  
    2274          med_diag%PDLIMN3%dgsave = .FALSE. 
    2275       ENDIF 
    2276       IF (iom_use("PDLIMFE3")) THEN  
    2277          med_diag%PDLIMFE3%dgsave = .TRUE. 
    2278       ELSE  
    2279          med_diag%PDLIMFE3%dgsave = .FALSE. 
    2280       ENDIF 
    2281       IF (iom_use("PDLIMSI3")) THEN  
    2282          med_diag%PDLIMSI3%dgsave = .TRUE. 
    2283       ELSE  
    2284          med_diag%PDLIMSI3%dgsave = .FALSE. 
    2285       ENDIF 
    2286        
     2255      !! 3D 
     2256      IF  (iom_use("TPPD3")) THEN  
     2257          med_diag%TPPD3%dgsave = .TRUE. 
     2258      ELSE  
     2259          med_diag%TPPD3%dgsave = .FALSE. 
     2260      ENDIF 
     2261      IF  (iom_use("BDDTALK3")) THEN  
     2262          med_diag%BDDTALK3%dgsave = .TRUE. 
     2263      ELSE  
     2264          med_diag%BDDTALK3%dgsave = .FALSE. 
     2265      ENDIF 
     2266      IF  (iom_use("BDDTDIC3")) THEN  
     2267          med_diag%BDDTDIC3%dgsave = .TRUE. 
     2268      ELSE  
     2269          med_diag%BDDTDIC3%dgsave = .FALSE. 
     2270      ENDIF 
     2271      IF  (iom_use("BDDTDIFE3")) THEN  
     2272          med_diag%BDDTDIFE3%dgsave = .TRUE. 
     2273      ELSE  
     2274          med_diag%BDDTDIFE3%dgsave = .FALSE. 
     2275      ENDIF 
     2276      IF  (iom_use("BDDTDIN3")) THEN  
     2277          med_diag%BDDTDIN3%dgsave = .TRUE. 
     2278      ELSE  
     2279          med_diag%BDDTDIN3%dgsave = .FALSE. 
     2280      ENDIF 
     2281      IF  (iom_use("BDDTDISI3")) THEN  
     2282          med_diag%BDDTDISI3%dgsave = .TRUE. 
     2283      ELSE  
     2284          med_diag%BDDTDISI3%dgsave = .FALSE. 
     2285      ENDIF 
     2286      IF  (iom_use("FD_NIT3")) THEN  
     2287          med_diag%FD_NIT3%dgsave = .TRUE. 
     2288      ELSE  
     2289          med_diag%FD_NIT3%dgsave = .FALSE. 
     2290      ENDIF 
     2291      IF  (iom_use("FD_SIL3")) THEN  
     2292          med_diag%FD_SIL3%dgsave = .TRUE. 
     2293      ELSE  
     2294          med_diag%FD_SIL3%dgsave = .FALSE. 
     2295      ENDIF 
     2296      IF  (iom_use("FD_CAR3")) THEN  
     2297          med_diag%FD_CAR3%dgsave = .TRUE. 
     2298      ELSE  
     2299          med_diag%FD_CAR3%dgsave = .FALSE. 
     2300      ENDIF 
     2301      IF  (iom_use("FD_CAL3")) THEN  
     2302          med_diag%FD_CAL3%dgsave = .TRUE. 
     2303      ELSE  
     2304          med_diag%FD_CAL3%dgsave = .FALSE. 
     2305      ENDIF 
     2306      IF  (iom_use("CO33")) THEN  
     2307          med_diag%CO33%dgsave = .TRUE. 
     2308      ELSE  
     2309          med_diag%CO33%dgsave = .FALSE. 
     2310      ENDIF 
     2311      IF  (iom_use("CO3SATARAG3")) THEN  
     2312          med_diag%CO3SATARAG3%dgsave = .TRUE. 
     2313      ELSE  
     2314          med_diag%CO3SATARAG3%dgsave = .FALSE. 
     2315      ENDIF 
     2316      IF  (iom_use("CO3SATCALC3")) THEN  
     2317          med_diag%CO3SATCALC3%dgsave = .TRUE. 
     2318      ELSE  
     2319          med_diag%CO3SATCALC3%dgsave = .FALSE. 
     2320      ENDIF 
     2321      IF  (iom_use("DCALC3")) THEN  
     2322          med_diag%DCALC3%dgsave = .TRUE. 
     2323      ELSE  
     2324          med_diag%DCALC3%dgsave = .FALSE. 
     2325      ENDIF 
     2326      IF  (iom_use("EXPC3")) THEN  
     2327          med_diag%EXPC3%dgsave = .TRUE. 
     2328      ELSE  
     2329          med_diag%EXPC3%dgsave = .FALSE. 
     2330      ENDIF 
     2331      IF  (iom_use("EXPN3")) THEN  
     2332          med_diag%EXPN3%dgsave = .TRUE. 
     2333      ELSE  
     2334          med_diag%EXPN3%dgsave = .FALSE. 
     2335      ENDIF 
     2336      IF  (iom_use("FEDISS3")) THEN  
     2337          med_diag%FEDISS3%dgsave = .TRUE. 
     2338      ELSE  
     2339          med_diag%FEDISS3%dgsave = .FALSE. 
     2340      ENDIF 
     2341      IF  (iom_use("FESCAV3")) THEN  
     2342          med_diag%FESCAV3%dgsave = .TRUE. 
     2343      ELSE  
     2344          med_diag%FESCAV3%dgsave = .FALSE. 
     2345      ENDIF 
     2346      IF  (iom_use("MIGRAZP3")) THEN  
     2347          med_diag%MIGRAZP3%dgsave = .TRUE. 
     2348      ELSE  
     2349          med_diag%MIGRAZP3%dgsave = .FALSE. 
     2350      ENDIF 
     2351      IF  (iom_use("MIGRAZD3")) THEN  
     2352          med_diag%MIGRAZD3%dgsave = .TRUE. 
     2353      ELSE  
     2354          med_diag%MIGRAZD3%dgsave = .FALSE. 
     2355      ENDIF 
     2356      IF  (iom_use("MEGRAZP3")) THEN  
     2357          med_diag%MEGRAZP3%dgsave = .TRUE. 
     2358      ELSE  
     2359          med_diag%MEGRAZP3%dgsave = .FALSE. 
     2360      ENDIF 
     2361      IF  (iom_use("MEGRAZD3")) THEN  
     2362          med_diag%MEGRAZD3%dgsave = .TRUE. 
     2363      ELSE  
     2364          med_diag%MEGRAZD3%dgsave = .FALSE. 
     2365      ENDIF 
     2366      IF  (iom_use("MEGRAZZ3")) THEN  
     2367          med_diag%MEGRAZZ3%dgsave = .TRUE. 
     2368      ELSE  
     2369          med_diag%MEGRAZZ3%dgsave = .FALSE. 
     2370      ENDIF 
     2371      IF  (iom_use("O2SAT3")) THEN  
     2372          med_diag%O2SAT3%dgsave = .TRUE. 
     2373      ELSE  
     2374          med_diag%O2SAT3%dgsave = .FALSE. 
     2375      ENDIF 
     2376      IF  (iom_use("PBSI3")) THEN  
     2377          med_diag%PBSI3%dgsave = .TRUE. 
     2378      ELSE  
     2379          med_diag%PBSI3%dgsave = .FALSE. 
     2380      ENDIF 
     2381      IF  (iom_use("PCAL3")) THEN  
     2382          med_diag%PCAL3%dgsave = .TRUE. 
     2383      ELSE  
     2384          med_diag%PCAL3%dgsave = .FALSE. 
     2385      ENDIF 
     2386      IF  (iom_use("REMOC3")) THEN  
     2387          med_diag%REMOC3%dgsave = .TRUE. 
     2388      ELSE  
     2389          med_diag%REMOC3%dgsave = .FALSE. 
     2390      ENDIF 
     2391      IF  (iom_use("PNLIMJ3")) THEN  
     2392          med_diag%PNLIMJ3%dgsave = .TRUE. 
     2393      ELSE  
     2394          med_diag%PNLIMJ3%dgsave = .FALSE. 
     2395      ENDIF 
     2396      IF  (iom_use("PNLIMN3")) THEN  
     2397          med_diag%PNLIMN3%dgsave = .TRUE. 
     2398      ELSE  
     2399          med_diag%PNLIMN3%dgsave = .FALSE. 
     2400      ENDIF 
     2401      IF  (iom_use("PNLIMFE3")) THEN  
     2402          med_diag%PNLIMFE3%dgsave = .TRUE. 
     2403      ELSE  
     2404          med_diag%PNLIMFE3%dgsave = .FALSE. 
     2405      ENDIF 
     2406      IF  (iom_use("PDLIMJ3")) THEN  
     2407          med_diag%PDLIMJ3%dgsave = .TRUE. 
     2408      ELSE  
     2409          med_diag%PDLIMJ3%dgsave = .FALSE. 
     2410      ENDIF 
     2411      IF  (iom_use("PDLIMN3")) THEN  
     2412          med_diag%PDLIMN3%dgsave = .TRUE. 
     2413      ELSE  
     2414          med_diag%PDLIMN3%dgsave = .FALSE. 
     2415      ENDIF 
     2416      IF  (iom_use("PDLIMFE3")) THEN  
     2417          med_diag%PDLIMFE3%dgsave = .TRUE. 
     2418      ELSE  
     2419          med_diag%PDLIMFE3%dgsave = .FALSE. 
     2420      ENDIF 
     2421      IF  (iom_use("PDLIMSI3")) THEN  
     2422          med_diag%PDLIMSI3%dgsave = .TRUE. 
     2423      ELSE  
     2424          med_diag%PDLIMSI3%dgsave = .FALSE. 
     2425      ENDIF 
     2426 
    22872427   END SUBROUTINE   trc_nam_iom_medusa 
    22882428    
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcopt_medusa.F90

    r7894 r8074  
    1212   !!              -   !  2008-11  (A. Yool) continuing adaptation for MEDUSA 
    1313   !!              -   !  2010-03  (A. Yool) updated for branch inclusion 
    14    !!              -   !  2014-08  (A. Yool) correct 1% light level calculation 
    15    !!              -   !  2015-07  (A. Yool) updated for temporal averaging 
    16    !!              -   !  2017-03  (Jpalm) correct euphotic layer  
    1714   !!---------------------------------------------------------------------- 
    1815#if defined key_medusa 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcsed_medusa.F90

    r7894 r8074  
    9090      !!              add this trend now to the general trend of tracer (ta,sa,tra): 
    9191      !!                             tra = tra + dz(trn wn) 
     92      !!         
     93      !!              IF 'key_trc_diabio' is defined, the now vertical advection 
     94      !!              trend of passive tracers is saved for futher diagnostics. 
    9295      !!--------------------------------------------------------------------- 
    9396      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index       
     
    137140      ! for detrital nitrogen sedimentation only - jpdet 
    138141      zwork(:,:,1  ) = 0.e0      ! surface value set to zero 
     142      !!    DO ji = 1, jpi 
     143      !!       zirondep(ji,jj,1) = (dustsolub * dust(ji,jj) / (55.85 * rmtss) + 3.e-10 / ryyss) & 
     144      !!       & * rfact2 / fse3t(ji,jj,1) 
     145      !!       zsidep  (ji,jj)   = 8.8 * 0.075 * dust(ji,jj) * rfact2 / & 
     146      !!       & (fse3t(ji,jj,1) * 28.1 * rmtss) 
     147      !!    END DO 
     148      !! END DO 
     149 
     150      ! sedimentation of detrital nitrogen : upstream scheme 
     151      ! ---------------------------------------------------- 
     152      ! 
     153      zwork(:,:,:) = 0.e0        ! initialisation of sinking variable 
     154      ! for detrital nitrogen sedimentation only - jpdet 
     155      zwork(:,:,1  ) = 0.e0      ! surface value set to zero 
    139156      zwork(:,:,jpk) = 0.e0      ! bottom value  set to zero 
    140157      ! 
     
    144161         ! zwork(:,:,jk) = -vsed * max(trn(:,:,jk-1,jpdet),0.d0) * tmask(:,:,jk-1) 
    145162         zwork(:,:,jk) = -vsed * max(trn(:,:,jk-1,jpdet),0.) * tmask(:,:,jk-1) 
     163         ! 
     164         ! AXY (16/01/14): stop sinking in upper 10m to reduce model instability  
     165         !                 in shallower grid cells 
     166         ! if ( jk .lt. 9 ) zwork(:,:,jk) = 0.e0 
    146167      END DO 
    147168      ! 
     
    152173               ztra  = - ( zwork(ji,jj,jk) - zwork(ji,jj,jk+1) ) / fse3t(ji,jj,jk) 
    153174               tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + ztra 
     175# if defined key_trc_diabio 
     176               trbio(ji,jj,jk,8) = ztra 
     177# endif 
    154178               IF (lk_iomput .AND. .NOT. ln_diatrc) THEN 
    155179                     IF( med_diag%DSED%dgsave ) THEN 
    156180                         zw2d(ji,jj) = zw2d(ji,jj) + ztra * fse3t(ji,jj,jk) * 86400. 
    157181                      ENDIF    
     182               ELSE IF( ln_diatrc )  THEN 
     183                    trc2d(ji,jj,8) = trc2d(ji,jj,8) + ztra * fse3t(ji,jj,jk) * 86400. 
    158184               ENDIF     
    159185                 
     
    162188      END DO 
    163189      ! 
     190# if defined key_trc_diabio 
     191      CALL lbc_lnk (trbio(:,:,1,8), 'T', 1. )                    ! Lateral boundary conditions on trcbio 
     192# endif 
     193      IF( ln_diatrc ) CALL lbc_lnk( trc2d(:,:,8), 'T', 1. )      ! Lateral boundary conditions on trc2d 
     194      !! 
    164195      IF (lk_iomput .AND. .NOT. ln_diatrc) THEN 
    165196           IF( med_diag%DSED%dgsave ) THEN 
     
    167198                CALL wrk_dealloc( jpi, jpj,    zw2d  ) 
    168199            ENDIF 
     200      ELSE IF (lk_iomput .AND. ln_diatrc)  THEN     
     201          CALL iom_put( "DSED",trc2d(:,:,8) ) 
    169202      ENDIF 
    170203      !! 
     
    184217         ! zwork(:,:,jk) = -vsed * max(trn(:,:,jk-1,jpdtc),0.d0) * tmask(:,:,jk-1) 
    185218         zwork(:,:,jk) = -vsed * max(trn(:,:,jk-1,jpdtc),0.) * tmask(:,:,jk-1) 
     219         ! 
     220         ! AXY (16/01/14): stop sinking in upper 10m to reduce model instability  
     221         !                 in shallower grid cells 
     222         ! if ( jk .lt. 9 ) zwork(:,:,jk) = 0.e0 
    186223      END DO 
    187224      ! 
     
    192229               ztra  = - ( zwork(ji,jj,jk) - zwork(ji,jj,jk+1) ) / fse3t(ji,jj,jk) 
    193230               tra(ji,jj,jk,jpdtc) = tra(ji,jj,jk,jpdtc) + ztra 
     231!! #  if defined key_trc_diabio 
     232!!                trbio(ji,jj,jk,8) = ztra 
     233!! #  endif 
     234!!             IF( ln_diatrc ) & 
     235!!                &  trc2d(ji,jj,8) = trc2d(ji,jj,8) + ztra * fse3t(ji,jj,jk) * 86400. 
    194236            END DO 
    195237         END DO 
    196238      END DO 
    197239      ! 
     240!! #  if defined key_trc_diabio 
     241!!       CALL lbc_lnk (trbio(:,:,1,8), 'T', 1. )                    ! Lateral boundary conditions on trcbio 
     242!! #  endif 
     243!!       IF( ln_diatrc ) CALL lbc_lnk( trc2d(:,:,8), 'T', 1. )      ! Lateral boundary conditions on trc2d 
     244!! #  if defined key_iomput 
     245!!       CALL iom_put( "DSED",trc2d(:,:,8) ) 
     246!! #  endif 
     247 
    198248# endif 
    199249 
     
    331381      ENDIF 
    332382 
     383      !! AXY (04/11/13): replace this with a call in trc_ini_medusa 
     384      !! AXY (25/02/10) 
     385      !! call routine for populating CCD array if this is the first time-step 
     386      !! IF( kt == nittrc000 ) CALL medusa_ccd( kt ) 
     387 
     388      !! AXY (04/11/13): replace this with a call in trc_ini_medusa 
     389      !! AXY (26/01/12) 
     390      !! call routine for populating river arrays if this is the first time-step 
     391      !! IF( kt == nittrc000 ) CALL medusa_river( kt ) 
     392 
     393      !! AXY (10/02/09) 
     394      !! IF( (jnt == 1) .and. (bdustfer) )  CALL trc_sed_medusa_sbc( kt ) 
     395 
     396      !! JPALM -- 31-03-2016 -- rewrite trc_sed_medusa_sbc. 
     397      !! IF (kt == nittrc000 ) CALL trc_sed_medusa_sbc  
     398 
     399      !! JPALM -- 20-07-2016 -- adapt dust forcing fields reading and conversion 
     400      !!                     To read dust dep in kg-dust/m2/s instead of g-Fe/m2/month  
     401      !!                     So all forcings and coupling dust dep are in the same SI units 
     402      !!                     and then convert in mmol-Fe/m2/day 
     403 
    333404      IF( bdustfer ) THEN 
    334405            CALL fld_read( kt, 1, sf_dust ) 
     
    343414      zirondep(:,:) = dust(:,:) * Fe_dust_mratio / xfe_mass * 1.e6 * 86400.  !! mmol-Fe/m2/d 
    344415       
     416      !! JPALM -- 20-07-2016 -- Zirondep and zsidep are not used. 
     417      !!                     So comment out the following lines. but keep them 
     418      !!                     as we may want to used them later on 
     419      !!================================================      
     420      !! 
     421      !! zirondep(:,:,:) = 0.e0     !! Initialisation of deposition variables 
     422      !! zsidep  (:,:)   = 0.e0 
     423      !! 
     424      !! Iron and Si deposition at the surface 
     425      !! ------------------------------------- 
     426      !! 
     427      !! DO jj = 1, jpj 
     428      !!    DO ji = 1, jpi 
     429      !!       zirondep(ji,jj,1) = (dustsolub * dust(ji,jj) / (55.85 * rmtss) + 3.e-10 / ryyss) & 
     430      !!       & * rfact2 / fse3t(ji,jj,1) 
     431      !!       zsidep  (ji,jj)   = 8.8 * 0.075 * dust(ji,jj) * rfact2 / & 
     432      !!       & (fse3t(ji,jj,1) * 28.1 * rmtss) 
     433      !!    END DO 
     434      !! END DO 
     435 
    345436   END SUBROUTINE trc_sed_medusa_dust 
    346437 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcsms_medusa.F90

    r7894 r8074  
    5959 
    6060      CALL trc_avg_medusa( kt ) ! rolling average module 
    61  
    6261# if defined key_debug_medusa 
    6362      IF(lwp) WRITE(numout,*) ' MEDUSA done trc_avg_medusa' 
     
    6665       
    6766      CALL trc_opt_medusa( kt ) ! optical model 
    68  
    6967# if defined key_debug_medusa 
    7068      IF(lwp) WRITE(numout,*) ' MEDUSA done trc_opt_medusa' 
     
    7472      !! AXY & JPALM (28/02/17): call dust before trc_bio_medusa (because of coupling) 
    7573      CALL trc_sed_medusa_dust( kt ) ! dust submodel 
    76  
    7774# if defined key_debug_medusa 
    7875      IF(lwp) WRITE(numout,*) ' MEDUSA done trc_sed_medusa_dust' 
     
    8178 
    8279# if defined key_kill_medusa 
    83  
    8480      !! MEDUSA skipped 
    8581      IF(lwp) WRITE(numout,*) ' MEDUSA killed at kt =', kt 
     
    8783# else 
    8884      CALL trc_bio_medusa( kt ) ! biological model 
    89  
    9085#  if defined key_debug_medusa 
    9186      IF(lwp) WRITE(numout,*) ' MEDUSA done trc_bio_medusa' 
     
    9489       
    9590      CALL trc_sed_medusa( kt ) ! sedimentation model 
    96  
    9791#  if defined key_debug_medusa 
    9892      IF(lwp) WRITE(numout,*) ' MEDUSA done trc_sed_medusa' 
    9993      CALL flush(numout) 
    10094#  endif 
    101  
    10295# endif 
    10396 
Note: See TracChangeset for help on using the changeset viewer.