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

Changeset 7886


Ignore:
Timestamp:
2017-04-10T17:01:50+02:00 (7 years ago)
Author:
marc
Message:

Changing many of the scalars to 2d arrays in prepartion for implementing Maff's changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90

    r7880 r7886  
    155155      !! 
    156156      !! model state variables 
    157       REAL(wp) ::    zchn,zchd,zphn,zphd,zpds,zzmi 
    158       REAL(wp) ::    zzme,zdet,zdtc,zdin,zsil,zfer 
     157      REAL(wp), DIMENSION(jpi,jpj) ::    zchn,zchd,zphn,zphd,zpds,zzmi 
     158      REAL(wp), DIMENSION(jpi,jpj) ::    zzme,zdet,zdtc,zdin,zsil,zfer 
    159159      REAL(wp) ::    zage 
    160160# if defined key_roam 
    161       REAL(wp) ::    zdic, zalk, zoxy 
    162       REAL(wp) ::    ztmp, zsal 
     161      REAL(wp), DIMENSION(jpi,jpj) ::    zdic, zalk, zoxy 
     162      REAL(wp), DIMENSION(jpi,jpj) ::    ztmp, zsal 
    163163# endif 
    164164# if defined key_mocsy 
    165       REAL(wp) ::    zpho 
     165      REAL(wp), DIMENSION(jpi,jpj) ::    zpho 
    166166# endif 
    167167      !! 
     
    170170      !! AXY (23/08/13): changed from individual variables for each flux to 
    171171      !!                 an array that holds all fluxes 
    172       REAL(wp), DIMENSION(jp_medusa) ::    btra 
     172      REAL(wp), DIMENSION(jpi,jpj,jp_medusa) ::    btra 
    173173      !! 
    174174      !! 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 
     175      REAL(wp), DIMENSION(jpi,jpj) ::    fthetan,faln,fchn1,fchn,fjln,fprn,frn 
     176      REAL(wp), DIMENSION(jpi,jpj) ::    fthetad,fald,fchd1,fchd,fjld,fprd,frd 
    177177      !! AXY (23/11/16): add in light-only limitation term (normalised 0-1 range) 
    178       REAL(wp)                    ::    fjlim_pn, fjlim_pd 
     178      REAL(wp), DIMENSION(jpi,jpj) ::    fjlim_pn, fjlim_pd 
    179179      !! AXY (03/02/11): add in Liebig terms 
    180       REAL(wp) ::    fpnlim, fpdlim 
     180      REAL(wp), DIMENSION(jpi,jpj) ::    fpnlim, fpdlim 
    181181      !! AXY (16/07/09): add in Eppley curve functionality 
    182       REAL(wp) ::    loc_T,fun_T,xvpnT,xvpdT 
     182      REAL(wp), DIMENSION(jpi,jpj) ::    fun_T,xvpnT,xvpdT 
    183183      INTEGER  ::    ieppley 
    184184      !! AXY (16/05/11): per Katya's prompting, add in new T-dependence 
    185185      !!                 for phytoplankton growth only (i.e. no change 
    186186      !!                 for remineralisation) 
    187       REAL(wp) ::    fun_Q10 
     187      REAL(wp), DIMENSION(jpi,jpj) ::    fun_Q10 
    188188      !! AXY (01/03/10): add in mixed layer PP diagnostics 
    189       REAL(wp), DIMENSION(jpi,jpj) ::  fprn_ml,fprd_ml 
     189      REAL(wp), DIMENSION(jpi,jpj) ::    fprn_ml,fprd_ml 
    190190      !! 
    191191      !! nutrient limiting factors 
    192       REAL(wp) ::    fnln,ffln            !! N and Fe 
    193       REAL(wp) ::    fnld,ffld,fsld,fsld2 !! N, Fe and Si 
     192      REAL(wp), DIMENSION(jpi,jpj) ::    fnln,ffln            !! N and Fe 
     193      REAL(wp), DIMENSION(jpi,jpj) ::    fnld,ffld,fsld,fsld2 !! N, Fe and Si 
    194194      !! 
    195195      !! silicon cycle 
    196       REAL(wp) ::    fsin,fnsi,fsin1,fnsi1,fnsi2,fprds,fsdiss 
     196      REAL(wp), DIMENSION(jpi,jpj) ::    fsin,fnsi,fprds,fsdiss 
     197      REAL(wp)                     ::    fsin1,fnsi1,fnsi2 
    197198      !! 
    198199      !! iron cycle; includes parameters for Parekh et al. (2005) iron scheme 
    199       REAL(wp) ::    ffetop,ffebot,ffescav 
     200      REAL(wp), DIMENSION(jpi,jpj) ::    ffetop,ffebot,ffescav 
    200201      REAL(wp) ::    xLgF, xFeT, xFeF, xFeL         !! state variables for iron-ligand system 
    201202      REAL(wp), DIMENSION(jpi,jpj) ::  xFree        !! state variables for iron-ligand system 
     
    214215      !! 
    215216      !! microzooplankton grazing 
    216       REAL(wp) ::    fmi1,fmi,fgmipn,fgmid,fgmidc 
    217       REAL(wp) ::    finmi,ficmi,fstarmi,fmith,fmigrow,fmiexcr,fmiresp 
     217      REAL(wp), DIMENSION(jpi,jpj) ::    fmi1,fmi,fgmipn,fgmid,fgmidc 
     218      REAL(wp), DIMENSION(jpi,jpj) ::    finmi,ficmi,fstarmi,fmith,fmigrow,fmiexcr,fmiresp 
    218219      !! 
    219220      !! mesozooplankton grazing 
    220       REAL(wp) ::    fme1,fme,fgmepn,fgmepd,fgmepds,fgmezmi,fgmed,fgmedc 
    221       REAL(wp) ::    finme,ficme,fstarme,fmeth,fmegrow,fmeexcr,fmeresp 
     221      REAL(wp), DIMENSION(jpi,jpj) ::    fme1,fme,fgmepn,fgmepd,fgmepds,fgmezmi,fgmed,fgmedc 
     222      REAL(wp), DIMENSION(jpi,jpj) ::    finme,ficme,fstarme,fmeth,fmegrow,fmeexcr,fmeresp 
    222223      !! 
    223224      !! mortality/Remineralisation (defunct parameter "fz" removed) 
    224       REAL(wp) ::    fdpn,fdpd,fdpds,fdzmi,fdzme,fdd 
     225      REAL(wp, DIMENSION(jpi,jpj)) ::    fdpn,fdpd,fdpds,fdzmi,fdzme,fdd 
    225226# if defined key_roam 
    226       REAL(wp) ::    fddc 
    227 # endif 
    228       REAL(wp) ::    fdpn2,fdpd2,fdpds2,fdzmi2,fdzme2 
    229       REAL(wp) ::    fslown, fslowc 
     227      REAL(wp, DIMENSION(jpi,jpj)) ::    fddc 
     228# endif 
     229      REAL(wp), DIMENSION(jpi,jpj) ::    fdpn2,fdpd2,fdpds2,fdzmi2,fdzme2 
     230      REAL(wp), DIMENSION(jpi,jpj) ::    fslown, fslowc 
    230231      REAL(wp), DIMENSION(jpi,jpj) ::    fslownflux, fslowcflux 
    231       REAL(wp) ::    fregen,fregensi 
     232      REAL(wp), DIMENSION(jpi,jpj) ::    fregen,fregensi 
    232233      REAL(wp), DIMENSION(jpi,jpj) ::    fregenfast,fregenfastsi 
    233234# if defined key_roam 
    234       REAL(wp) ::    fregenc 
     235! Doesn't look like this is used - marc 10/4/17 
     236!      REAL(wp), DIMENSION(jpi,jpj) ::    fregenc 
    235237      REAL(wp), DIMENSION(jpi,jpj) ::    fregenfastc 
    236238# endif 
    237239      !! 
    238240      !! 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 
     241      REAL(WP), DIMENSION(jpi,jpj) ::    fdep1,fcaco3 
     242      REAL(WP), DIMENSION(jpi,jpj) ::    ftempn,ftempsi,ftempfe,ftempc,ftempca 
     243      REAL(wp), DIMENSION(jpi,jpj) ::    freminn,freminsi,freminfe,freminc,freminca 
    242244      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 
     245      REAL(wp), DIMENSION(jpi,jpj) ::    fprotf 
    246246      REAL(wp), DIMENSION(jpi,jpj) ::    fsedn,fsedsi,fsedfe,fsedc,fsedca 
    247247      REAL(wp), DIMENSION(jpi,jpj) ::    fccd 
    248       REAL(wp) ::    fccd_dep 
    249       !! AXY (28/11/16): fix mbathy bug 
    250       INTEGER  ::    jmbathy 
     248      REAL(wp), DIMENSION(jpi,jpj) ::    fccd_dep 
    251249      !! 
    252250      !! AXY (06/07/11): alternative fast detritus schemes 
     
    254252      !! 
    255253      !! AXY (08/07/11): fate of fast detritus reaching the seafloor 
    256       REAL(wp) ::    ffast2slown,ffast2slowfe,ffast2slowc 
     254! I don't think ffast2slowfe is used - marc 10/4/17 
     255!      REAL(wp), DIMENSION(jpi,jpj) ::    ffast2slown,ffast2slowfe,ffast2slowc 
     256      REAL(wp), DIMENSION(jpi,jpj) ::    ffast2slown,ffast2slow 
    257257      !! 
    258258      !! conservation law 
     
    299299      INTEGER, DIMENSION(jpi,jpj) ::     i2_omcal,i2_omarg 
    300300      !! 
    301       !! ROAM air-sea flux and diagnostic parameters 
    302       REAL(wp) ::    f_wind 
    303301      !! 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 
     302      REAL(wp)                     ::    f_xco2a 
     303      REAL(wp), DIMENSION(jpi,jpj) ::    f_ph, f_pco2w, f_h2co3, f_hco3, f_co3, f_co2flux 
     304      REAL(wp), DIMENSION(jpi,jpj) ::    f_TDIC, f_TALK, f_dcf, f_henry 
     305      REAL(wp), DIMENSION(jpi,jpj) ::    f_pp0 
     306      REAL(wp), DIMENSION(jpi,jpj) ::    f_kw660, f_o2flux, f_o2sat, f_o2sat3 
    309307      REAL(wp), DIMENSION(jpi,jpj) ::    f_omcal, f_omarg 
    310308      !! 
    311309      !! 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 
     310      REAL(wp), DIMENSION(jpi,jpj) ::    f_fco2w, f_BetaD, f_rhosw, f_opres, f_insitut, f_pco2atm, f_fco2atm 
     311      REAL(wp), DIMENSION(jpi,jpj) ::    f_schmidtco2, f_kwco2, f_K0, f_co2starair, f_dpco2, f_kwo2 
    314312      !! jpalm 14-07-2016: convert CO2flux diag from mmol/m2/d to kg/m2/s 
    315313      REAL, PARAMETER :: weight_CO2_mol = 44.0095  !! g / mol 
     
    318316 
    319317      !! 
    320       INTEGER  ::    iters 
     318      INTEGER, DIMENSION(jpi,jpj)  ::    iters 
    321319      REAL(wp) ::    f_year 
    322320      INTEGER  ::    i_year 
     
    329327      !! 
    330328      !! oxygen production and consumption (and non-consumption) 
    331       REAL(wp) ::    fo2_prod, fo2_cons, fo2_ncons, fo2_ccons 
     329      REAL(wp), DIMENSION(jpi,jpj) ::    fo2_prod, fo2_cons, fo2_ncons, fo2_ccons 
    332330      REAL(wp), DIMENSION(jpi,jpj) ::    foxy_prod, foxy_cons, foxy_anox 
    333331      !! Jpalm (11-08-2014) 
    334332      !! add DMS in MEDUSA for UKESM1 model 
    335       REAL(wp) ::    dms_surf 
     333      REAL(wp), DIMENSION(jpi,jpj) ::    dms_surf 
    336334      !! AXY (13/03/15): add in other DMS calculations 
    337       REAL(wp) ::    dms_andr, dms_simo, dms_aran, dms_hall 
     335      REAL(wp), DIMENSION(jpi,jpj) ::    dms_andr, dms_simo, dms_aran, dms_hall 
    338336 
    339337# endif 
     
    352350      REAL(wp), DIMENSION(jpi,jpj) :: f_runoff, f_riv_n, f_riv_si, f_riv_c, f_riv_alk 
    353351      !! 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 
     352      REAL(wp), DIMENSION(jpi,jpj) :: f_riv_loc_n, f_riv_loc_si, f_riv_loc_c, f_riv_loc_alk 
    355353      !! 
    356354      !! Jpalm -- 11-10-2015 -- adapt diag to iom_use 
     
    13591357                     !! do carbonate chemistry 
    13601358                     !! 
    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                      !! 
    13661359                     !! 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 
     1360                     zdic(ji,jj) = max(0.,trn(ji,jj,jk,jpdic)) !! dissolved inorganic carbon 
     1361                     zalk(ji,jj) = max(0.,trn(ji,jj,jk,jpalk)) !! alkalinity 
     1362                     ztmp(ji,jj) = tsn(ji,jj,jk,jp_tem)        !! temperature 
     1363                     zsal(ji,jj) = tsn(ji,jj,jk,jp_sal)        !! salinity 
    13711364#  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 
     1365                     zsil(ji,jj) = max(0.,trn(ji,jj,jk,jpsil))        !! silicic acid 
     1366                     zpho(ji,jj) = max(0.,trn(ji,jj,jk,jpdin)) / 16.0 !! phosphate via DIN and Redfield 
    13741367#  endif 
    13751368           !! 
    13761369           !! AXY (28/02/14): check input fields 
    1377            if (ztmp .lt. -3.0 .or. ztmp .gt. 40.0 ) then 
     1370           if (ztmp(ji,jj) .lt. -3.0 .or. ztmp(ji,jj) .gt. 40.0 ) then 
    13781371                        IF(lwp) WRITE(numout,*) ' trc_bio_medusa: T WARNING 3D, ', & 
    13791372                        tsb(ji,jj,jk,jp_tem), tsn(ji,jj,jk,jp_tem), ' at (',    & 
     
    13811374         IF(lwp) WRITE(numout,*) ' trc_bio_medusa: T SWITCHING 3D, ', & 
    13821375         tsn(ji,jj,jk,jp_tem), ' -> ', tsb(ji,jj,jk,jp_tem) 
    1383                         ztmp = tsb(ji,jj,jk,jp_tem)     !! temperature 
     1376                        ztmp(ji,jj) = tsb(ji,jj,jk,jp_tem)     !! temperature 
    13841377                     endif 
    1385            if (zsal .lt. 0.0 .or. zsal .gt. 45.0 ) then 
     1378           if (zsal(ji,jj) .lt. 0.0 .or. zsal(ji,jj) .gt. 45.0 ) then 
    13861379                        IF(lwp) WRITE(numout,*) ' trc_bio_medusa: S WARNING 3D, ', & 
    13871380                        tsb(ji,jj,jk,jp_sal), tsn(ji,jj,jk,jp_sal), ' at (',    & 
     
    13901383                     !! 
    13911384                     !! blank input variables not used at this stage (they relate to air-sea flux) 
    1392                      f_kw660 = 1.0 
    1393                      f_pp0   = 1.0 
     1385                     f_kw660(ji,jj) = 1.0 
     1386                     f_pp0(ji,jj)   = 1.0 
    13941387                     !! 
    13951388                     !! calculate carbonate chemistry at grid cell midpoint 
     
    13971390                     !! AXY (22/06/15): use Orr & Epitalon (2015) MOCSY-2 carbonate 
    13981391                     !!                 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 
     1392                     CALL mocsy_interface( ztmp(ji,jj), zsal(ji,jj), zalk(ji,jj), zdic(ji,jj), zsil(ji,jj), zpho(ji,jj),         &    ! inputs 
     1393                     f_pp0(ji,jj), fsdept(ji,jj,jk), gphit(ji,jj), f_kw660(ji,jj), f_xco2a, 1,                  &    ! inputs 
     1394                     f_ph(ji,jj), f_pco2w(ji,jj), f_fco2w(ji,jj), f_h2co3(ji,jj), f_hco3(ji,jj), f_co3(ji,jj), f_omarg(ji,jj),   &    ! outputs 
     1395                     f_omcal(ji,jj), f_BetaD(ji,jj), f_rhosw(ji,jj), f_opres(ji,jj), f_insitut(ji,jj),             &    ! outputs 
     1396                     f_pco2atm(ji,jj), f_fco2atm(ji,jj), f_schmidtco2(ji,jj), f_kwco2(ji,jj), f_K0(ji,jj),                &    ! outputs 
     1397                     f_co2starair(ji,jj), f_co2flux(ji,jj), f_dpco2(ji,jj) )                                     ! outputs 
    14051398                     !! 
    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 
     1399                     f_TDIC(ji,jj) = (zdic(ji,jj) / f_rhosw(ji,jj)) * 1000. ! mmol / m3 -> umol / kg 
     1400                     f_TALK(ji,jj) = (zalk(ji,jj) / f_rhosw(ji,jj)) * 1000. !  meq / m3 ->  ueq / kg 
     1401                     f_dcf(ji,jj)  = f_rhosw(ji,jj) 
    14091402#  else 
    14101403                     !! AXY (22/06/15): use old PML carbonate chemistry package (the 
    14111404                     !!                 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 
     1405                     CALL trc_co2_medusa( ztmp(ji,jj), zsal(ji,jj), zdic(ji,jj), zalk(ji,jj), fsdept(ji,jj,jk), f_kw660(ji,jj),      &    ! inputs 
     1406                     f_xco2a, f_ph(ji,jj), f_pco2w(ji,jj), f_h2co3(ji,jj), f_hco3(ji,jj), f_co3(ji,jj), f_omcal(ji,jj),   &    ! outputs 
     1407                     f_omarg(ji,jj), f_co2flux(ji,jj), f_TDIC(ji,jj), f_TALK(ji,jj), f_dcf(ji,jj), f_henry(ji,jj), iters(ji,jj))      ! outputs 
    14151408                     !!  
    14161409                     !! AXY (28/02/14): check output fields 
    1417                      if (iters .eq. 25) then 
     1410                     if (iters(ji,jj) .eq. 25) then 
    14181411                        IF(lwp) WRITE(numout,*) ' trc_bio_medusa: 3D ITERS WARNING, ', & 
    1419                         iters, ' AT (', ji, ', ', jj, ', ', jk, ') AT ', kt 
     1412                        iters(ji,jj), ' AT (', ji, ', ', jj, ', ', jk, ') AT ', kt 
    14201413                     endif 
    14211414#  endif 
    14221415                     !! 
    14231416                     !! 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 
     1417                     f3_pH(ji,jj,jk)    = f_ph(ji,jj) 
     1418                     f3_h2co3(ji,jj,jk) = f_h2co3(ji,jj) 
     1419                     f3_hco3(ji,jj,jk)  = f_hco3(ji,jj) 
     1420                     f3_co3(ji,jj,jk)   = f_co3(ji,jj) 
    14281421                     f3_omcal(ji,jj,jk) = f_omcal(ji,jj) 
    14291422                     f3_omarg(ji,jj,jk) = f_omarg(ji,jj) 
     
    14321425                     if (i2_omcal(ji,jj) .eq. 0 .and. f_omcal(ji,jj) .lt. 1.0) then 
    14331426                        if (jk .eq. 1) then 
    1434                            f2_ccd_cal(ji,jj) = fdep2 
     1427                           f2_ccd_cal(ji,jj) = fsdept(ji,jj,jk) 
    14351428                        else 
    14361429                           fq0 = f3_omcal(ji,jj,jk-1) - f_omcal(ji,jj) 
    14371430                           fq1 = f3_omcal(ji,jj,jk-1) - 1.0 
    14381431                           fq2 = fq1 / (fq0 + tiny(fq0)) 
    1439                            fq3 = fdep2 - fsdept(ji,jj,jk-1) 
     1432                           fq3 = fsdept(ji,jj,jk) - fsdept(ji,jj,jk-1) 
    14401433                           fq4 = fq2 * fq3 
    14411434                           f2_ccd_cal(ji,jj) = fsdept(ji,jj,jk-1) + fq4 
     
    14431436                        i2_omcal(ji,jj)   = 1 
    14441437                     endif 
    1445                      if ( i2_omcal(ji,jj) .eq. 0 .and. jk .eq. jmbathy ) then 
     1438                     if ( i2_omcal(ji,jj) .eq. 0 .and. jk .eq. mbathy(ji,jj) ) then 
    14461439                        !! reached seafloor and still no dissolution; set to seafloor (W-point) 
    14471440                        f2_ccd_cal(ji,jj) = fsdepw(ji,jj,jk+1) 
     
    14521445                     if (i2_omarg(ji,jj) .eq. 0 .and. f_omarg(ji,jj) .lt. 1.0) then 
    14531446                        if (jk .eq. 1) then 
    1454                            f2_ccd_arg(ji,jj) = fdep2 
     1447                           f2_ccd_arg(ji,jj) = fsdept(ji,jj,jk) 
    14551448                        else 
    14561449                           fq0 = f3_omarg(ji,jj,jk-1) - f_omarg(ji,jj) 
    14571450                           fq1 = f3_omarg(ji,jj,jk-1) - 1.0 
    14581451                           fq2 = fq1 / (fq0 + tiny(fq0)) 
    1459                            fq3 = fdep2 - fsdept(ji,jj,jk-1) 
     1452                           fq3 = fsdept(ji,jj,jk) - fsdept(ji,jj,jk-1) 
    14601453                           fq4 = fq2 * fq3 
    14611454                           f2_ccd_arg(ji,jj) = fsdept(ji,jj,jk-1) + fq4 
     
    14631456                        i2_omarg(ji,jj)   = 1 
    14641457                     endif 
    1465                      if ( i2_omarg(ji,jj) .eq. 0 .and. jk .eq. jmbathy ) then 
     1458                     if ( i2_omarg(ji,jj) .eq. 0 .and. jk .eq. mbathy(ji,jj) ) then 
    14661459                        !! reached seafloor and still no dissolution; set to seafloor (W-point) 
    14671460                        f2_ccd_arg(ji,jj) = fsdepw(ji,jj,jk+1) 
     
    15141507               !!--------------------------------------------------------------------- 
    15151508               !! 
    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) 
    15201509               !! AXY (01/03/10): set up level depth (bottom of level) 
    1521                fdep1 = fdep + fthk 
     1510               fdep1(ji,jj) = fsdepw(ji,jj,jk) + fse3t(ji,jj,jk) 
    15221511               !! AXY (28/11/16): local seafloor depth 
    15231512               !!                 previously mbathy(ji,jj) - 1, now mbathy(ji,jj) 
    1524                jmbathy = mbathy(ji,jj) 
     1513               mbathy(ji,jj) = mbathy(ji,jj) 
    15251514               !! 
    15261515               !! set up model tracers 
    15271516               !! negative values of state variables are not allowed to 
    15281517               !! 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 
     1518               zchn(ji,jj) = max(0.,trn(ji,jj,jk,jpchn)) !! non-diatom chlorophyll 
     1519               zchd(ji,jj) = max(0.,trn(ji,jj,jk,jpchd)) !! diatom chlorophyll 
     1520               zphn(ji,jj) = max(0.,trn(ji,jj,jk,jpphn)) !! non-diatoms 
     1521               zphd(ji,jj) = max(0.,trn(ji,jj,jk,jpphd)) !! diatoms 
     1522               zpds(ji,jj) = max(0.,trn(ji,jj,jk,jppds)) !! diatom silicon 
    15341523               !! 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. 
     1524               if (zchn(ji,jj).eq.0.) zphn(ji,jj) = 0. 
     1525               if (zchd(ji,jj).eq.0.) zphd(ji,jj) = 0. 
     1526               if (zphn(ji,jj).eq.0.) zchn(ji,jj) = 0. 
     1527               if (zphd(ji,jj).eq.0.) zchd(ji,jj) = 0. 
    15391528          !! 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" 
     1529          if (zpds(ji,jj).eq.0.) zphd(ji,jj) = 0. 
     1530          if (zphd(ji,jj).eq.0.) zpds(ji,jj) = 0. 
     1531               zzmi(ji,jj) = max(0.,trn(ji,jj,jk,jpzmi)) !! microzooplankton 
     1532               zzme(ji,jj) = max(0.,trn(ji,jj,jk,jpzme)) !! mesozooplankton 
     1533               zdet(ji,jj) = max(0.,trn(ji,jj,jk,jpdet)) !! detrital nitrogen 
     1534               zdin(ji,jj) = max(0.,trn(ji,jj,jk,jpdin)) !! dissolved inorganic nitrogen 
     1535               zsil(ji,jj) = max(0.,trn(ji,jj,jk,jpsil)) !! dissolved silicic acid 
     1536               zfer(ji,jj) = max(0.,trn(ji,jj,jk,jpfer)) !! dissolved "iron" 
    15481537# 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 
     1538               zdtc(ji,jj) = max(0.,trn(ji,jj,jk,jpdtc)) !! detrital carbon 
     1539               zdic(ji,jj) = max(0.,trn(ji,jj,jk,jpdic)) !! dissolved inorganic carbon 
     1540               zalk(ji,jj) = max(0.,trn(ji,jj,jk,jpalk)) !! alkalinity 
     1541               zoxy(ji,jj) = max(0.,trn(ji,jj,jk,jpoxy)) !! oxygen 
    15531542#  if defined key_axy_carbchem && defined key_mocsy 
    1554                zpho = max(0.,trn(ji,jj,jk,jpdin)) / 16.0 !! phosphate via DIN and Redfield 
     1543               zpho(ji,jj) = max(0.,trn(ji,jj,jk,jpdin)) / 16.0 !! phosphate via DIN and Redfield 
    15551544#  endif 
    15561545               !! 
    15571546               !! also need physical parameters for gas exchange calculations 
    1558                ztmp = tsn(ji,jj,jk,jp_tem) 
    1559                zsal = tsn(ji,jj,jk,jp_sal) 
     1547               ztmp(ji,jj) = tsn(ji,jj,jk,jp_tem) 
     1548               zsal(ji,jj) = tsn(ji,jj,jk,jp_sal) 
    15601549               !! 
    15611550          !! AXY (28/02/14): check input fields 
    1562                if (ztmp .lt. -3.0 .or. ztmp .gt. 40.0 ) then 
     1551               if (ztmp(ji,jj) .lt. -3.0 .or. ztmp(ji,jj) .gt. 40.0 ) then 
    15631552                  IF(lwp) WRITE(numout,*) ' trc_bio_medusa: T WARNING 2D, ', & 
    15641553                  tsb(ji,jj,jk,jp_tem), tsn(ji,jj,jk,jp_tem), ' at (',    & 
     
    15661555        IF(lwp) WRITE(numout,*) ' trc_bio_medusa: T SWITCHING 2D, ', & 
    15671556                  tsn(ji,jj,jk,jp_tem), ' -> ', tsb(ji,jj,jk,jp_tem) 
    1568                   ztmp = tsb(ji,jj,jk,jp_tem) !! temperature 
     1557                  ztmp(ji,jj) = tsb(ji,jj,jk,jp_tem) !! temperature 
    15691558               endif 
    1570                if (zsal .lt. 0.0 .or. zsal .gt. 45.0 ) then 
     1559               if (zsal(ji,jj) .lt. 0.0 .or. zsal(ji,jj) .gt. 45.0 ) then 
    15711560                  IF(lwp) WRITE(numout,*) ' trc_bio_medusa: S WARNING 2D, ', & 
    15721561                  tsb(ji,jj,jk,jp_sal), tsn(ji,jj,jk,jp_sal), ' at (',    & 
     
    15741563               endif 
    15751564# else 
    1576                zdtc = zdet * xthetad              !! implicit detrital carbon 
     1565               zdtc(ji,jj) = zdet(ji,jj) * xthetad              !! implicit detrital carbon 
    15771566# endif 
    15781567# if defined key_debug_medusa 
     
    16121601               if (idf.eq.1.AND.idfval.eq.1) then 
    16131602                  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 
     1603                  IF (lwp) write (numout,*) 'fthk(',jk,') = ', fse3t(ji,jj,jk) 
     1604                  IF (lwp) write (numout,*) 'zphn(',jk,') = ', zphn(ji,jj) 
     1605                  IF (lwp) write (numout,*) 'zphd(',jk,') = ', zphd(ji,jj) 
     1606                  IF (lwp) write (numout,*) 'zpds(',jk,') = ', zpds(ji,jj) 
     1607                  IF (lwp) write (numout,*) 'zzmi(',jk,') = ', zzmi(ji,jj) 
     1608                  IF (lwp) write (numout,*) 'zzme(',jk,') = ', zzme(ji,jj) 
     1609                  IF (lwp) write (numout,*) 'zdet(',jk,') = ', zdet(ji,jj) 
     1610                  IF (lwp) write (numout,*) 'zdin(',jk,') = ', zdin(ji,jj) 
     1611                  IF (lwp) write (numout,*) 'zsil(',jk,') = ', zsil(ji,jj) 
     1612                  IF (lwp) write (numout,*) 'zfer(',jk,') = ', zfer(ji,jj) 
    16241613#  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                   
     1614                  IF (lwp) write (numout,*) 'zdtc(',jk,') = ', zdtc(ji,jj) 
     1615                  IF (lwp) write (numout,*) 'zdic(',jk,') = ', zdic(ji,jj) 
     1616                  IF (lwp) write (numout,*) 'zalk(',jk,') = ', zalk(ji,jj) 
     1617                  IF (lwp) write (numout,*) 'zoxy(',jk,') = ', zoxy(ji,jj)                   
    16291618#  endif 
    16301619               endif 
     
    16421631                  IF ( med_diag%INVTN%dgsave )   THEN 
    16431632                     ftot_n(ji,jj)  = ftot_n(ji,jj) + & 
    1644                              (fthk * ( zphn + zphd + zzmi + zzme + zdet + zdin ) ) 
     1633                             (fse3t(ji,jj,jk) * ( zphn(ji,jj) + zphd(ji,jj) + zzmi(ji,jj) + zzme(ji,jj) + zdet(ji,jj) + zdin(ji,jj) ) ) 
    16451634                  ENDIF 
    16461635                  IF ( med_diag%INVTSI%dgsave )  THEN 
    16471636                     ftot_si(ji,jj) = ftot_si(ji,jj) + &  
    1648                              (fthk * ( zpds + zsil ) ) 
     1637                             (fse3t(ji,jj,jk) * ( zpds(ji,jj) + zsil(ji,jj) ) ) 
    16491638                  ENDIF 
    16501639                  IF ( med_diag%INVTFE%dgsave )  THEN 
    16511640                     ftot_fe(ji,jj) = ftot_fe(ji,jj) + &  
    1652                              (fthk * ( xrfn * ( zphn + zphd + zzmi + zzme + zdet ) + zfer ) ) 
     1641                             (fse3t(ji,jj,jk) * ( xrfn * ( zphn(ji,jj) + zphd(ji,jj) + zzmi(ji,jj) + zzme(ji,jj) + zdet(ji,jj) ) + zfer(ji,jj) ) ) 
    16531642                  ENDIF 
    16541643# if defined key_roam 
    16551644                  IF ( med_diag%INVTC%dgsave )  THEN 
    16561645                     ftot_c(ji,jj)  = ftot_c(ji,jj) + &  
    1657                              (fthk * ( (xthetapn * zphn) + (xthetapd * zphd) + & 
    1658                              (xthetazmi * zzmi) + (xthetazme * zzme) + zdtc +   & 
    1659                              zdic ) ) 
     1646                             (fse3t(ji,jj,jk) * ( (xthetapn * zphn(ji,jj)) + (xthetapd * zphd(ji,jj)) + & 
     1647                             (xthetazmi * zzmi(ji,jj)) + (xthetazme * zzme(ji,jj)) + zdtc(ji,jj) +   & 
     1648                             zdic(ji,jj) ) ) 
    16601649                  ENDIF 
    16611650                  IF ( med_diag%INVTALK%dgsave ) THEN 
    1662                      ftot_a(ji,jj)  = ftot_a(ji,jj) + (fthk * ( zalk ) ) 
     1651                     ftot_a(ji,jj)  = ftot_a(ji,jj) + (fse3t(ji,jj,jk) * ( zalk(ji,jj) ) ) 
    16631652                  ENDIF 
    16641653                  IF ( med_diag%INVTO2%dgsave )  THEN 
    1665                      ftot_o2(ji,jj) = ftot_o2(ji,jj) + (fthk * ( zoxy ) ) 
     1654                     ftot_o2(ji,jj) = ftot_o2(ji,jj) + (fse3t(ji,jj,jk) * ( zoxy(ji,jj) ) ) 
    16661655                  ENDIF 
    16671656                  !! 
    16681657                  !! AXY (10/11/16): CMIP6 diagnostics 
    16691658                  IF ( med_diag%INTDISSIC%dgsave ) THEN 
    1670                      intdissic(ji,jj) = intdissic(ji,jj) + (fthk * zdic) 
     1659                     intdissic(ji,jj) = intdissic(ji,jj) + (fse3t(ji,jj,jk) * zdic(ji,jj)) 
    16711660                  ENDIF 
    16721661                  IF ( med_diag%INTDISSIN%dgsave ) THEN 
    1673                      intdissin(ji,jj) = intdissin(ji,jj) + (fthk * zdin) 
     1662                     intdissin(ji,jj) = intdissin(ji,jj) + (fse3t(ji,jj,jk) * zdin(ji,jj)) 
    16741663                  ENDIF 
    16751664                  IF ( med_diag%INTDISSISI%dgsave ) THEN 
    1676                      intdissisi(ji,jj) = intdissisi(ji,jj) + (fthk * zsil) 
     1665                     intdissisi(ji,jj) = intdissisi(ji,jj) + (fse3t(ji,jj,jk) * zsil(ji,jj)) 
    16771666                  ENDIF 
    16781667                  IF ( med_diag%INTTALK%dgsave ) THEN 
    1679                      inttalk(ji,jj) = inttalk(ji,jj) + (fthk * zalk) 
     1668                     inttalk(ji,jj) = inttalk(ji,jj) + (fse3t(ji,jj,jk) * zalk(ji,jj)) 
    16801669                  ENDIF 
    16811670                  IF ( med_diag%O2min%dgsave ) THEN 
    1682                      if ( zoxy < o2min(ji,jj) ) then 
    1683                         o2min(ji,jj)  = zoxy 
     1671                     if ( zoxy(ji,jj) < o2min(ji,jj) ) then 
     1672                        o2min(ji,jj)  = zoxy(ji,jj) 
    16841673                        IF ( med_diag%ZO2min%dgsave ) THEN 
    1685                            zo2min(ji,jj) = (fdep + fdep1) / 2. !! layer midpoint 
     1674                           zo2min(ji,jj) = (fsdepw(ji,jj,jk) + fdep1(ji,jj)) / 2. !! layer midpoint 
    16861675                        ENDIF 
    16871676                     endif 
     
    17011690                  !! Air-sea gas exchange 
    17021691                  !!---------------------------------------------------------------------- 
    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) 
    17161692                  IF (lk_oasis) THEN 
    17171693                     f_xco2a = PCO2a_in_cpl(ji,jj)        !! use 2D atm xCO2 from atm coupling 
     
    17311707                     CALL flush(numout) 
    17321708#   endif 
    1733                   CALL gas_transfer( f_wind, 1, 7, &  ! inputs 
    1734                                      f_kw660 )        ! outputs 
     1709                  CALL gas_transfer( wndm(ji,jj), 1, 7, &  ! inputs 
     1710                                     f_kw660(ji,jj) )        ! outputs 
    17351711#   if defined key_debug_medusa 
    17361712                     IF (lwp) write (numout,*) 'trc_bio_medusa: exiting gas_transfer' 
     
    17411717                  !! of the UKESM1 atmosphere  
    17421718                  !!                                      
    1743                   f_pp0   = 1.0 
    1744                   !! 
    1745                   !! IF(lwp) WRITE(numout,*) ' MEDUSA ztmp    =', ztmp 
     1719                  f_pp0(ji,jj)   = 1.0 
     1720                  !! 
     1721                  !! IF(lwp) WRITE(numout,*) ' MEDUSA ztmp    =', ztmp(ji,jj) 
    17461722                  !! IF(lwp) WRITE(numout,*) ' MEDUSA zwind_i =', zwind_i(ji,jj) 
    17471723                  !! IF(lwp) WRITE(numout,*) ' MEDUSA zwind_j =', zwind_j(ji,jj) 
    1748                   !! IF(lwp) WRITE(numout,*) ' MEDUSA f_wind  =', f_wind 
     1724                  !! IF(lwp) WRITE(numout,*) ' MEDUSA wndm    =', wndm(ji,jj) 
    17491725                  !! IF(lwp) WRITE(numout,*) ' MEDUSA fr_i    =', fr_i(ji,jj) 
    17501726                  !! 
     
    17551731                  !!                 chemistry package; note that depth is set to 
    17561732                  !!                 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 
     1733                  CALL mocsy_interface( ztmp(ji,jj), zsal(ji,jj), zalk(ji,jj), zdic(ji,jj), zsil(ji,jj), zpho(ji,jj),        &  ! inputs 
     1734                  f_pp0(ji,jj), 0.0, gphit(ji,jj), f_kw660(ji,jj), f_xco2a, 1,                   &  ! inputs 
     1735                  f_ph(ji,jj), f_pco2w(ji,jj), f_fco2w(ji,jj), f_h2co3(ji,jj), f_hco3(ji,jj), f_co3(ji,jj), f_omarg(ji,jj),  &  ! outputs 
     1736                  f_omcal(ji,jj), f_BetaD(ji,jj), f_rhosw(ji,jj), f_opres(ji,jj), f_insitut(ji,jj),            &  ! outputs 
     1737                  f_pco2atm(ji,jj), f_fco2atm(ji,jj), f_schmidtco2(ji,jj), f_kwco2(ji,jj), f_K0(ji,jj),               &  ! outputs 
     1738                  f_co2starair(ji,jj), f_co2flux(ji,jj), f_dpco2(ji,jj) )                                  ! outputs 
     1739                  !! 
     1740                  f_TDIC(ji,jj) = (zdic(ji,jj) / f_rhosw(ji,jj)) * 1000. ! mmol / m3 -> umol / kg 
     1741                  f_TALK(ji,jj) = (zalk(ji,jj) / f_rhosw(ji,jj)) * 1000. !  meq / m3 ->  ueq / kg 
     1742                  f_dcf(ji,jj)  = f_rhosw(ji,jj) 
    17671743#   else                   
    1768                   iters = 0 
     1744                  iters(ji,jj) = 0 
    17691745                  !! 
    17701746                  !! 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 
     1747                  CALL trc_co2_medusa( ztmp(ji,jj), zsal(ji,jj), zdic(ji,jj), zalk(ji,jj), 0.0, f_kw660(ji,jj), f_xco2a,  &  ! inputs 
     1748                  f_ph(ji,jj), f_pco2w(ji,jj), f_h2co3(ji,jj), f_hco3(ji,jj), f_co3(ji,jj), f_omcal(ji,jj),               &  ! outputs 
     1749                  f_omarg(ji,jj), f_co2flux(ji,jj), f_TDIC(ji,jj), f_TALK(ji,jj), f_dcf(ji,jj), f_henry(ji,jj), iters(ji,jj) )      ! outputs 
    17741750                  !! 
    17751751                  !! AXY (09/01/14): removed iteration and NaN checks; these have 
     
    17791755                  !!                 output warnings are retained here so that 
    17801756                  !!                 failure position can be determined 
    1781                   if (iters .eq. 25) then 
     1757                  if (iters(ji,jj) .eq. 25) then 
    17821758                     IF(lwp) WRITE(numout,*) ' trc_bio_medusa: ITERS WARNING, ', & 
    1783                      iters, ' AT (', ji, ', ', jj, ', ', jk, ') AT ', kt 
     1759                     iters(ji,jj), ' AT (', ji, ', ', jj, ', ', jk, ') AT ', kt 
    17841760                  endif 
    17851761#   endif 
     
    17871763                  !! AXY (18/04/13): switch off carbonate chemistry calculations; provide 
    17881764                  !!                 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 
     1765                  f_ph(ji,jj)           = 8.1 
     1766                  f_pco2w(ji,jj)        = f_xco2a 
     1767                  f_h2co3(ji,jj)        = 0.005 * zdic(ji,jj) 
     1768                  f_hco3(ji,jj)         = 0.865 * zdic(ji,jj) 
     1769                  f_co3(ji,jj)          = 0.130 * zdic(ji,jj) 
    17941770                  f_omcal(ji,jj) = 4. 
    17951771                  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. 
     1772                  f_co2flux(ji,jj)      = 0. 
     1773                  f_TDIC(ji,jj)         = zdic(ji,jj) 
     1774                  f_TALK(ji,jj)         = zalk(ji,jj) 
     1775                  f_dcf(ji,jj)          = 1.026 
     1776                  f_henry(ji,jj)        = 1. 
    18011777                  !! 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. 
     1778                  f_fco2w(ji,jj)        = f_xco2a 
     1779                  f_BetaD(ji,jj)        = 1. 
     1780                  f_rhosw(ji,jj)        = 1.026 
     1781                  f_opres(ji,jj)        = 0. 
     1782                  f_insitut(ji,jj)      = ztmp(ji,jj) 
     1783                  f_pco2atm(ji,jj)      = f_xco2a 
     1784                  f_fco2atm(ji,jj)      = f_xco2a 
     1785                  f_schmidtco2(ji,jj)   = 660. 
     1786                  f_kwco2(ji,jj)        = 0. 
     1787                  f_K0(ji,jj)           = 0. 
     1788                  f_co2starair(ji,jj)   = f_xco2a 
     1789                  f_dpco2(ji,jj)        = 0. 
    18141790#  endif 
    18151791                  !! 
    18161792                  !! 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 
     1793                  f_co2flux(ji,jj) = (1. - fr_i(ji,jj)) * f_co2flux(ji,jj) * 86400. / fse3t(ji,jj,jk) 
    18181794                  !! 
    18191795                  !! oxygen (O2); OCMIP-2 code 
    18201796                  !! AXY (23/06/15): amend input list for oxygen to account for common gas 
    18211797                  !!                 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 
     1798                  !! Note that f_kwo2 is an about from the subroutine below, 
     1799                  !! which doesn't seem to be used - marc 10/4/17  
     1800                  CALL trc_oxy_medusa( ztmp(ji,jj), zsal(ji,jj), f_kw660(ji,jj), f_pp0(ji,jj), zoxy(ji,jj),  &  ! inputs 
     1801                  f_kwo2(ji,jj), f_o2flux(ji,jj), f_o2sat(ji,jj) )                                ! outputs 
    18261802                  !! 
    18271803                  !! 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 
     1804                  f_o2flux(ji,jj)  = (1. - fr_i(ji,jj)) * f_o2flux(ji,jj) * 86400. / fse3t(ji,jj,jk) 
    18291805                  !! 
    18301806                  !! Jpalm (08-2014) 
     
    18461822                     if (jdms_input .eq. 0) then 
    18471823                        !! 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 
     1824                        CALL trc_dms_medusa( zchn(ji,jj), zchd(ji,jj), hmld(ji,jj), qsr(ji,jj), zdin(ji,jj), &  ! inputs 
     1825                        dms_andr(ji,jj), dms_simo(ji,jj), dms_aran(ji,jj), dms_hall(ji,jj) )                           ! outputs 
    18501826                     else 
    18511827                        !! use diel-average inputs 
    18521828                        CALL trc_dms_medusa( zn_dms_chn(ji,jj), zn_dms_chd(ji,jj), &  ! inputs 
    18531829                        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 
     1830                        dms_andr(ji,jj), dms_simo(ji,jj), dms_aran(ji,jj), dms_hall(ji,jj) )                      ! outputs 
    18551831                     endif 
    18561832                     !! 
    18571833                     !! assign correct output to variable passed to atmosphere 
    18581834                     if     (jdms_model .eq. 1) then 
    1859                         dms_surf = dms_andr 
     1835                        dms_surf(ji,jj) = dms_andr(ji,jj) 
    18601836                     elseif (jdms_model .eq. 2) then 
    1861                         dms_surf = dms_simo 
     1837                        dms_surf(ji,jj) = dms_simo(ji,jj) 
    18621838                     elseif (jdms_model .eq. 3) then 
    1863                         dms_surf = dms_aran 
     1839                        dms_surf(ji,jj) = dms_aran(ji,jj) 
    18641840                     elseif (jdms_model .eq. 4) then 
    1865                         dms_surf = dms_hall 
     1841                        dms_surf(ji,jj) = dms_hall(ji,jj) 
    18661842                     endif 
    18671843                     !! 
     
    18691845                     IF( lk_iomput ) THEN 
    18701846                       IF( med_diag%DMS_SURF%dgsave ) THEN 
    1871                          dms_surf2d(ji,jj) = dms_surf 
     1847                         dms_surf2d(ji,jj) = dms_surf(ji,jj) 
    18721848                       ENDIF 
    18731849                       IF( med_diag%DMS_ANDR%dgsave ) THEN 
    1874                          dms_andr2d(ji,jj) = dms_andr 
     1850                         dms_andr2d(ji,jj) = dms_andr(ji,jj) 
    18751851                       ENDIF 
    18761852                       IF( med_diag%DMS_SIMO%dgsave ) THEN 
    1877                          dms_simo2d(ji,jj) = dms_simo 
     1853                         dms_simo2d(ji,jj) = dms_simo(ji,jj) 
    18781854                       ENDIF 
    18791855                       IF( med_diag%DMS_ARAN%dgsave ) THEN 
    1880                          dms_aran2d(ji,jj) = dms_aran 
     1856                         dms_aran2d(ji,jj) = dms_aran(ji,jj) 
    18811857                       ENDIF 
    18821858                       IF( med_diag%DMS_HALL%dgsave ) THEN 
    1883                          dms_hall2d(ji,jj) = dms_hall 
     1859                         dms_hall2d(ji,jj) = dms_hall(ji,jj) 
    18841860                       ENDIF 
    18851861#   if defined key_debug_medusa 
     
    18981874                  !! IF( med_diag%FGCO2%dgsave ) THEN 
    18991875                     !! 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 
     1876                     fgco2(ji,jj) = f_co2flux(ji,jj) * fse3t(ji,jj,jk) * CO2flux_conv  !! mmol-C/m3/d -> kg-CO2/m2/s 
    19011877                  !! ENDIF 
    19021878                  IF ( lk_iomput ) THEN 
    19031879                      IF( med_diag%ATM_PCO2%dgsave ) THEN 
    1904                          f_pco2a2d(ji,jj) = f_pco2atm 
     1880                         f_pco2a2d(ji,jj) = f_pco2atm(ji,jj) 
    19051881                      ENDIF 
    19061882                      IF( med_diag%OCN_PCO2%dgsave ) THEN 
    1907                          f_pco2w2d(ji,jj) = f_pco2w 
     1883                         f_pco2w2d(ji,jj) = f_pco2w(ji,jj) 
    19081884                      ENDIF 
    19091885                      IF( med_diag%CO2FLUX%dgsave ) THEN 
    1910                          f_co2flux2d(ji,jj) = f_co2flux * fthk           !! mmol/m3/d -> mmol/m2/d 
     1886                         f_co2flux(ji,jj)2d(ji,jj) = f_co2flux(ji,jj) * fse3t(ji,jj,jk)           !! mmol/m3/d -> mmol/m2/d 
    19111887                      ENDIF 
    19121888                      IF( med_diag%TCO2%dgsave ) THEN 
    1913                          f_TDIC2d(ji,jj) = f_TDIC 
     1889                         f_TDIC2d(ji,jj) = f_TDIC(ji,jj) 
    19141890                      ENDIF 
    19151891                      IF( med_diag%TALK%dgsave ) THEN 
    1916                          f_TALK2d(ji,jj) = f_TALK 
     1892                         f_TALK2d(ji,jj) = f_TALK(ji,jj) 
    19171893                      ENDIF 
    19181894                      IF( med_diag%KW660%dgsave ) THEN 
    1919                          f_kw6602d(ji,jj) = f_kw660 
     1895                         f_kw6602d(ji,jj) = f_kw660(ji,jj) 
    19201896                      ENDIF 
    19211897                      IF( med_diag%ATM_PP0%dgsave ) THEN 
    1922                          f_pp02d(ji,jj) = f_pp0 
     1898                         f_pp02d(ji,jj) = f_pp0(ji,jj) 
    19231899                      ENDIF 
    19241900                      IF( med_diag%O2FLUX%dgsave ) THEN 
    1925                          f_o2flux2d(ji,jj) = f_o2flux 
     1901                         f_o2flux2d(ji,jj) = f_o2flux(ji,jj) 
    19261902                      ENDIF 
    19271903                      IF( med_diag%O2SAT%dgsave ) THEN 
    1928                          f_o2sat2d(ji,jj) = f_o2sat 
     1904                         f_o2sat2d(ji,jj) = f_o2sat(ji,jj) 
    19291905                      ENDIF 
    19301906                      !! AXY (24/11/16): add in extra MOCSY diagnostics 
     
    19331909                      ENDIF 
    19341910                      IF( med_diag%OCN_FCO2%dgsave ) THEN 
    1935                          f_fco2w_2d(ji,jj) = f_fco2w 
     1911                         f_fco2w_2d(ji,jj) = f_fco2w(ji,jj) 
    19361912                      ENDIF 
    19371913                      IF( med_diag%ATM_FCO2%dgsave ) THEN 
    1938                          f_fco2a_2d(ji,jj) = f_fco2atm 
     1914                         f_fco2a_2d(ji,jj) = f_fco2atm(ji,jj) 
    19391915                      ENDIF 
    19401916                      IF( med_diag%OCN_RHOSW%dgsave ) THEN 
    1941                          f_ocnrhosw_2d(ji,jj) = f_rhosw 
     1917                         f_ocnrhosw_2d(ji,jj) = f_rhosw(ji,jj) 
    19421918                      ENDIF 
    19431919                      IF( med_diag%OCN_SCHCO2%dgsave ) THEN 
    1944                          f_ocnschco2_2d(ji,jj) = f_schmidtco2 
     1920                         f_ocnschco2_2d(ji,jj) = f_schmidtco2(ji,jj) 
    19451921                      ENDIF 
    19461922                      IF( med_diag%OCN_KWCO2%dgsave ) THEN 
    1947                          f_ocnkwco2_2d(ji,jj) = f_kwco2 
     1923                         f_ocnkwco2_2d(ji,jj) = f_kwco2(ji,jj) 
    19481924                      ENDIF 
    19491925                      IF( med_diag%OCN_K0%dgsave ) THEN 
    1950                          f_ocnk0_2d(ji,jj) = f_K0 
     1926                         f_ocnk0_2d(ji,jj) = f_K0(ji,jj) 
    19511927                      ENDIF 
    19521928                      IF( med_diag%CO2STARAIR%dgsave ) THEN 
    1953                          f_co2starair_2d(ji,jj) = f_co2starair 
     1929                         f_co2starair_2d(ji,jj) = f_co2starair(ji,jj) 
    19541930                      ENDIF 
    19551931                      IF( med_diag%OCN_DPCO2%dgsave ) THEN 
    1956                          f_ocndpco2_2d(ji,jj) = f_dpco2 
     1932                         f_ocndpco2_2d(ji,jj) = f_dpco2(ji,jj) 
    19571933                      ENDIF 
    19581934                  ENDIF 
     
    19631939               !! AXY (11/11/16): CMIP6 oxygen saturation 3D diagnostic 
    19641940               IF ( med_diag%O2SAT3%dgsave ) THEN 
    1965                   call oxy_sato( ztmp, zsal, f_o2sat3 ) 
     1941                  call oxy_sato( ztmp(ji,jj), zsal(ji,jj), f_o2sat3 ) 
    19661942                  o2sat3(ji, jj, jk) = f_o2sat3 
    19671943               ENDIF 
     
    20492025               !! 
    20502026               !! non-diatoms 
    2051           if (zphn.GT.rsmall) then 
    2052                   fthetan = max(tiny(zchn), (zchn * xxi) / (zphn + tiny(zphn))) 
    2053                   faln    = xaln * fthetan 
     2027          if (zphn(ji,jj).GT.rsmall) then 
     2028                  fthetan(ji,jj) = max(tiny(zchn(ji,jj)), (zchn(ji,jj) * xxi) / (zphn(ji,jj) + tiny(zphn(ji,jj)))) 
     2029                  faln(ji,jj)    = xaln * fthetan(ji,jj) 
    20542030               else 
    2055                   fthetan = 0. 
    2056                   faln    = 0. 
     2031                  fthetan(ji,jj) = 0. 
     2032                  faln(ji,jj)    = 0. 
    20572033               endif 
    20582034               !! 
    20592035               !! diatoms 
    2060           if (zphd.GT.rsmall) then 
    2061                   fthetad = max(tiny(zchd), (zchd * xxi) / (zphd + tiny(zphd))) 
    2062                   fald    = xald * fthetad 
     2036          if (zphd(ji,jj).GT.rsmall) then 
     2037                  fthetad(ji,jj) = max(tiny(zchd(ji,jj)), (zchd(ji,jj) * xxi) / (zphd(ji,jj) + tiny(zphd(ji,jj)))) 
     2038                  fald(ji,jj)    = xald * fthetad(ji,jj) 
    20632039               else 
    2064                   fthetad = 0. 
    2065                   fald    = 0. 
     2040                  fthetad(ji,jj) = 0. 
     2041                  fald(ji,jj)    = 0. 
    20662042               endif 
    20672043 
     
    20702046               if (idf.eq.1.AND.idfval.eq.1) then 
    20712047                  IF (lwp) write (numout,*) '------------------------------' 
    2072                   IF (lwp) write (numout,*) 'faln(',jk,') = ', faln 
    2073                   IF (lwp) write (numout,*) 'fald(',jk,') = ', fald 
     2048                  IF (lwp) write (numout,*) 'faln(',jk,') = ', faln(ji,jj) 
     2049                  IF (lwp) write (numout,*) 'fald(',jk,') = ', fald(ji,jj) 
    20742050               endif 
    20752051# endif 
     
    20922068               !! AXY (16/07/09) 
    20932069               !! 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) 
     2070               fun_T(ji,jj)   = 1.066**(1.0 * tsn(ji,jj,jk,jp_tem)) 
    20962071               !! AXY (16/05/11): add in new Q10 (1.5, not 2.0) for 
    20972072               !phytoplankton 
    20982073               !!                 growth; remin. unaffected 
    2099                fun_Q10 = jq10**((loc_T - 0.0) / 10.0) 
     2074               fun_Q10(ji,jj) = jq10**((tsn(ji,jj,jk,jp_tem) - 0.0) / 10.0) 
    21002075               if (jphy.eq.1) then 
    2101                   xvpnT = xvpn * fun_T 
    2102                   xvpdT = xvpd * fun_T 
     2076                  xvpnT(ji,jj) = xvpn * fun_T(ji,jj) 
     2077                  xvpdT(ji,jj) = xvpd * fun_T(ji,jj) 
    21032078               elseif (jphy.eq.2) then 
    2104                   xvpnT = xvpn * fun_Q10 
    2105                   xvpdT = xvpd * fun_Q10 
     2079                  xvpnT(ji,jj) = xvpn * fun_Q10(ji,jj) 
     2080                  xvpdT(ji,jj) = xvpd * fun_Q10(ji,jj) 
    21062081               else 
    2107                   xvpnT = xvpn 
    2108                   xvpdT = xvpd 
     2082                  xvpnT(ji,jj) = xvpn 
     2083                  xvpdT(ji,jj) = xvpd 
    21092084               endif 
    21102085               !! 
    21112086               !! 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)) 
     2087               fchn1(ji,jj)   = (xvpnT(ji,jj) * xvpnT(ji,jj)) + (faln(ji,jj) * faln(ji,jj) * xpar(ji,jj,jk) * xpar(ji,jj,jk)) 
     2088               if (fchn1(ji,jj).GT.rsmall) then 
     2089                  fchn(ji,jj)    = xvpnT(ji,jj) / (sqrt(fchn1(ji,jj)) + tiny(fchn1(ji,jj))) 
    21152090               else 
    2116                   fchn    = 0. 
     2091                  fchn(ji,jj)    = 0. 
    21172092               endif 
    2118                fjln    = fchn * faln * xpar(ji,jj,jk) !! non-diatom J term 
    2119                fjlim_pn = fjln / xvpnT 
     2093               fjln(ji,jj)    = fchn(ji,jj) * faln(ji,jj) * xpar(ji,jj,jk) !! non-diatom J term 
     2094               fjlim_pn(ji,jj) = fjln(ji,jj) / xvpnT(ji,jj) 
    21202095               !! 
    21212096               !! 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)) 
     2097               fchd1(ji,jj)   = (xvpdT(ji,jj) * xvpdT(ji,jj)) + (fald(ji,jj) * fald(ji,jj) * xpar(ji,jj,jk) * xpar(ji,jj,jk)) 
     2098               if (fchd1(ji,jj).GT.rsmall) then 
     2099                  fchd(ji,jj)    = xvpdT(ji,jj) / (sqrt(fchd1(ji,jj)) + tiny(fchd1(ji,jj))) 
    21252100               else 
    2126                   fchd    = 0. 
     2101                  fchd(ji,jj)    = 0. 
    21272102               endif 
    2128                fjld    = fchd * fald * xpar(ji,jj,jk) !! diatom J term 
    2129                fjlim_pd = fjld / xvpdT 
     2103               fjld(ji,jj)    = fchd(ji,jj) * fald(ji,jj) * xpar(ji,jj,jk) !! diatom J term 
     2104               fjlim_pd(ji,jj) = fjld(ji,jj) / xvpdT(ji,jj) 
    21302105       
    21312106# if defined key_debug_medusa 
     
    21332108               if (idf.eq.1.AND.idfval.eq.1) then 
    21342109                  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 
     2110                  IF (lwp) write (numout,*) 'fchn(',jk,') = ', fchn(ji,jj) 
     2111                  IF (lwp) write (numout,*) 'fchd(',jk,') = ', fchd(ji,jj) 
     2112                  IF (lwp) write (numout,*) 'fjln(',jk,') = ', fjln(ji,jj) 
     2113                  IF (lwp) write (numout,*) 'fjld(',jk,') = ', fjld(ji,jj) 
    21392114               endif 
    21402115# endif 
     
    21452120               !! 
    21462121               !! non-diatoms (N, Fe) 
    2147                fnln = zdin / (zdin + xnln) !! non-diatom Qn term 
    2148                ffln = zfer / (zfer + xfln) !! non-diatom Qf term 
     2122               fnln(ji,jj) = zdin(ji,jj) / (zdin(ji,jj) + xnln) !! non-diatom Qn term 
     2123               ffln(ji,jj) = zfer(ji,jj) / (zfer(ji,jj) + xfln) !! non-diatom Qf term 
    21492124               !! 
    21502125               !! 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 
     2126               fnld(ji,jj) = zdin(ji,jj) / (zdin(ji,jj) + xnld) !! diatom Qn term 
     2127               fsld(ji,jj) = zsil(ji,jj) / (zsil(ji,jj) + xsld) !! diatom Qs term 
     2128               ffld(ji,jj) = zfer(ji,jj) / (zfer(ji,jj) + xfld) !! diatom Qf term 
    21542129 
    21552130# if defined key_debug_medusa 
     
    21572132               if (idf.eq.1.AND.idfval.eq.1) then 
    21582133                  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 
     2134                  IF (lwp) write (numout,*) 'fnln(',jk,') = ', fnln(ji,jj) 
     2135                  IF (lwp) write (numout,*) 'fnld(',jk,') = ', fnld(ji,jj) 
     2136                  IF (lwp) write (numout,*) 'ffln(',jk,') = ', ffln(ji,jj) 
     2137                  IF (lwp) write (numout,*) 'ffld(',jk,') = ', ffld(ji,jj) 
     2138                  IF (lwp) write (numout,*) 'fsld(',jk,') = ', fsld(ji,jj) 
    21642139               endif 
    21652140# endif 
     
    21722147               if (jliebig .eq. 0) then 
    21732148                  !! multiplicative nutrient limitation 
    2174                   fpnlim = fnln * ffln 
     2149                  fpnlim(ji,jj) = fnln(ji,jj) * ffln(ji,jj) 
    21752150               elseif (jliebig .eq. 1) then 
    21762151                  !! Liebig Law (= most limiting) nutrient limitation 
    2177                   fpnlim = min(fnln, ffln) 
     2152                  fpnlim(ji,jj) = min(fnln(ji,jj), ffln(ji,jj)) 
    21782153               endif 
    2179                fprn = fjln * fpnlim 
     2154               fprn(ji,jj) = fjln(ji,jj) * fpnlim(ji,jj) 
    21802155 
    21812156               !!---------------------------------------------------------------------- 
     
    21912166               if (jliebig .eq. 0) then 
    21922167                  !! multiplicative nutrient limitation 
    2193                   fpdlim = fnld * ffld 
     2168                  fpdlim(ji,jj) = fnld(ji,jj) * ffld(ji,jj) 
    21942169               elseif (jliebig .eq. 1) then 
    21952170                  !! Liebig Law (= most limiting) nutrient limitation 
    2196                   fpdlim = min(fnld, ffld) 
     2171                  fpdlim(ji,jj) = min(fnld(ji,jj), ffld(ji,jj)) 
    21972172               endif 
    21982173               !! 
    2199           if (zphd.GT.rsmall .AND. zpds.GT.rsmall) then 
     2174          if (zphd(ji,jj).GT.rsmall .AND. zpds(ji,jj).GT.rsmall) then 
    22002175                  !! "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 
     2176                  ! fsin(ji,jj)  = zpds(ji,jj) / (zphd(ji,jj) + tiny(zphd(ji,jj))) 
     2177                  ! fnsi(ji,jj)  = zphd(ji,jj) / (zpds(ji,jj) + tiny(zpds(ji,jj))) 
     2178                  fsin(ji,jj) = 0.0 
     2179                  IF( zphd(ji,jj) .GT. rsmall) fsin(ji,jj)  = zpds(ji,jj) / zphd(ji,jj) 
     2180                  fnsi(ji,jj) = 0.0 
     2181                  IF( zpds(ji,jj) .GT. rsmall) fnsi(ji,jj)  = zphd(ji,jj) / zpds(ji,jj) 
    22072182                  !! AXY (23/02/10): these next variables derive from Mongin et al. (2003) 
    22082183                  fsin1 = 3.0 * xsin0 !! = 0.6 
     
    22122187                  !! conditionalities based on ratios 
    22132188                  !! 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 
     2189                  if (fsin(ji,jj).le.xsin0) then 
     2190                     fprd(ji,jj)  = 0.0 
     2191                     fsld2(ji,jj) = 0.0 
     2192                  elseif (fsin(ji,jj).lt.fsin1) then 
     2193                     fprd(ji,jj)  = xuif * ((fsin(ji,jj) - xsin0) / (fsin(ji,jj) + tiny(fsin(ji,jj)))) * (fjld(ji,jj) * fpdlim(ji,jj)) 
     2194                     fsld2(ji,jj) = xuif * ((fsin(ji,jj) - xsin0) / (fsin(ji,jj) + tiny(fsin(ji,jj)))) 
     2195                  elseif (fsin(ji,jj).ge.fsin1) then 
     2196                     fprd(ji,jj)  = (fjld(ji,jj) * fpdlim(ji,jj)) 
     2197                     fsld2(ji,jj) = 1.0 
    22232198                  endif 
    22242199                  !! 
    22252200                  !! 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) 
     2201                  if (fsin(ji,jj).lt.fnsi1) then 
     2202                     fprds(ji,jj) = (fjld(ji,jj) * fsld(ji,jj)) 
     2203                  elseif (fsin(ji,jj).lt.fnsi2) then 
     2204                     fprds(ji,jj) = xuif * ((fnsi(ji,jj) - xnsi0) / (fnsi(ji,jj) + tiny(fnsi(ji,jj)))) * (fjld(ji,jj) * fsld(ji,jj)) 
    22302205                  else 
    2231                      fprds = 0.0 
     2206                     fprds(ji,jj) = 0.0 
    22322207                  endif      
    22332208               else 
    2234                   fsin  = 0.0 
    2235                   fnsi  = 0.0 
    2236                   fprd  = 0.0 
    2237                   fsld2 = 0.0 
    2238                   fprds = 0.0 
     2209                  fsin(ji,jj)  = 0.0 
     2210                  fnsi(ji,jj)  = 0.0 
     2211                  fprd(ji,jj)  = 0.0 
     2212                  fsld2(ji,jj) = 0.0 
     2213                  fprds(ji,jj) = 0.0 
    22392214               endif 
    22402215 
     
    22432218               if (idf.eq.1.AND.idfval.eq.1) then 
    22442219                  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 
     2220                  IF (lwp) write (numout,*) 'fsin(',jk,')   = ', fsin(ji,jj) 
     2221                  IF (lwp) write (numout,*) 'fnsi(',jk,')   = ', fnsi(ji,jj) 
     2222                  IF (lwp) write (numout,*) 'fsld2(',jk,')  = ', fsld2(ji,jj) 
     2223                  IF (lwp) write (numout,*) 'fprn(',jk,')   = ', fprn(ji,jj) 
     2224                  IF (lwp) write (numout,*) 'fprd(',jk,')   = ', fprd(ji,jj) 
     2225                  IF (lwp) write (numout,*) 'fprds(',jk,')  = ', fprds(ji,jj) 
    22512226               endif 
    22522227# endif 
     
    22612236               !!---------------------------------------------------------------------- 
    22622237               !! 
    2263                if (fdep1.le.hmld(ji,jj)) then 
     2238               if (fdep1(ji,jj).le.hmld(ji,jj)) then 
    22642239                  !! this level is entirely in the mixed layer 
    22652240                  fq0 = 1.0 
    2266                elseif (fdep.ge.hmld(ji,jj)) then 
     2241               elseif (fsdepw(ji,jj,jk).ge.hmld(ji,jj)) then 
    22672242                  !! this level is entirely below the mixed layer 
    22682243                  fq0 = 0.0 
    22692244               else 
    22702245                  !! this level straddles the mixed layer 
    2271                   fq0 = (hmld(ji,jj) - fdep) / fthk 
     2246                  fq0 = (hmld(ji,jj) - fsdepw(ji,jj,jk)) / fse3t(ji,jj,jk) 
    22722247               endif 
    22732248               !! 
    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) 
     2249               fprn_ml(ji,jj) = fprn_ml(ji,jj) + (fprn(ji,jj) * zphn(ji,jj) * fse3t(ji,jj,jk) * fq0) 
     2250               fprd_ml(ji,jj) = fprd_ml(ji,jj) + (fprd(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk) * fq0) 
    22762251                
    22772252               !!---------------------------------------------------------------------- 
    22782253               !! Vertical Integral -- 
    22792254               !!---------------------------------------------------------------------- 
    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 
     2255               ftot_pn(ji,jj)  = ftot_pn(ji,jj)  + (zphn(ji,jj) * fse3t(ji,jj,jk))   !! vertical integral non-diatom phytoplankton 
     2256               ftot_pd(ji,jj)  = ftot_pd(ji,jj)  + (zphd(ji,jj) * fse3t(ji,jj,jk))   !! vertical integral diatom phytoplankton 
     2257               ftot_zmi(ji,jj) = ftot_zmi(ji,jj) + (zzmi(ji,jj) * fse3t(ji,jj,jk))   !! vertical integral microzooplankton 
     2258               ftot_zme(ji,jj) = ftot_zme(ji,jj) + (zzme(ji,jj) * fse3t(ji,jj,jk))   !! vertical integral mesozooplankton 
     2259               ftot_det(ji,jj) = ftot_det(ji,jj) + (zdet(ji,jj) * fse3t(ji,jj,jk))   !! vertical integral slow detritus, nitrogen 
     2260               ftot_dtc(ji,jj) = ftot_dtc(ji,jj) + (zdtc(ji,jj) * fse3t(ji,jj,jk))   !! vertical integral slow detritus, carbon 
    22862261                
    22872262               !!---------------------------------------------------------------------- 
     
    22892264               !!---------------------------------------------------------------------- 
    22902265               !! 
    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)) 
     2266               !! frn(ji,jj) = (xthetam / fthetan(ji,jj)) * (fprn(ji,jj) / (fthetan(ji,jj) * xpar(ji,jj,jk))) 
     2267               !! frd(ji,jj) = (xthetam / fthetad(ji,jj)) * (fprd(ji,jj) / (fthetad(ji,jj) * xpar(ji,jj,jk))) 
     2268               frn(ji,jj) = (xthetam * fchn(ji,jj) * fnln(ji,jj) * ffln(ji,jj)       ) / (fthetan(ji,jj) + tiny(fthetan(ji,jj))) 
    22942269               !! AXY (12/05/09): there's potentially a problem here; fsld, silicic acid  
    22952270               !!   limitation, is used in the following line to regulate chlorophyll  
     
    22972272               !!   of biomass growth; the Mongin term term used in growth is more complex 
    22982273               !!   than the simple multiplicative function used below 
    2299                !! frd = (xthetam * fchd * fnld * ffld * fsld) / (fthetad + tiny(fthetad)) 
     2274               !! frd(ji,jj) = (xthetam * fchd(ji,jj) * fnld(ji,jj) * ffld(ji,jj) * fsld(ji,jj)) / (fthetad(ji,jj) + tiny(fthetad(ji,jj))) 
    23002275               !! AXY (12/05/09): this replacement line uses the new variable, fsld2, to 
    23012276               !!   regulate chlorophyll growth 
    2302                frd = (xthetamd * fchd * fnld * ffld * fsld2) / (fthetad + tiny(fthetad)) 
     2277               frd(ji,jj) = (xthetamd * fchd(ji,jj) * fnld(ji,jj) * ffld(ji,jj) * fsld2(ji,jj)) / (fthetad(ji,jj) + tiny(fthetad(ji,jj))) 
    23032278 
    23042279# if defined key_debug_medusa 
     
    23062281               if (idf.eq.1.AND.idfval.eq.1) then 
    23072282                  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 
     2283                  IF (lwp) write (numout,*) 'fthetan(',jk,') = ', fthetan(ji,jj) 
     2284                  IF (lwp) write (numout,*) 'fthetad(',jk,') = ', fthetad(ji,jj) 
     2285                  IF (lwp) write (numout,*) 'frn(',jk,')     = ', frn(ji,jj) 
     2286                  IF (lwp) write (numout,*) 'frd(',jk,')     = ', frd(ji,jj) 
    23122287               endif 
    23132288# endif 
     
    23292304               !!---------------------------------------------------------------------- 
    23302305               !! 
    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 
     2306               fmi1(ji,jj)    = (xkmi * xkmi) + (xpmipn * zphn(ji,jj) * zphn(ji,jj)) + (xpmid * zdet(ji,jj) * zdet(ji,jj)) 
     2307               fmi(ji,jj)     = xgmi * zzmi(ji,jj) / fmi1(ji,jj) 
     2308               fgmipn(ji,jj)  = fmi(ji,jj) * xpmipn * zphn(ji,jj) * zphn(ji,jj)   !! grazing on non-diatoms 
     2309               fgmid(ji,jj)   = fmi(ji,jj) * xpmid  * zdet(ji,jj) * zdet(ji,jj)   !! grazing on detrital nitrogen 
    23352310# if defined key_roam 
    2336                fgmidc  = rsmall !acc 
    2337                IF ( zdet .GT. rsmall ) fgmidc  = (zdtc / (zdet + tiny(zdet))) * fgmid  !! grazing on detrital carbon 
     2311               fgmidc(ji,jj)  = rsmall !acc 
     2312               IF ( zdet(ji,jj) .GT. rsmall ) fgmidc(ji,jj)  = (zdtc(ji,jj) / (zdet(ji,jj) + tiny(zdet(ji,jj)))) * fgmid(ji,jj)  !! grazing on detrital carbon 
    23382313# else 
    23392314               !! AXY (26/11/08): implicit detrital carbon change 
    2340                fgmidc  = xthetad * fgmid              !! grazing on detrital carbon 
     2315               fgmidc(ji,jj)  = xthetad * fgmid(ji,jj)              !! grazing on detrital carbon 
    23412316# endif 
    23422317               !! 
    23432318               !! which translates to these incoming N and C fluxes 
    2344                finmi   = (1.0 - xphi) * (fgmipn + fgmid) 
    2345                ficmi   = (1.0 - xphi) * ((xthetapn * fgmipn) + fgmidc) 
     2319               finmi(ji,jj)   = (1.0 - xphi) * (fgmipn(ji,jj) + fgmid(ji,jj)) 
     2320               ficmi(ji,jj)   = (1.0 - xphi) * ((xthetapn * fgmipn(ji,jj)) + fgmidc(ji,jj)) 
    23462321               !! 
    23472322               !! the ideal food C:N ratio for microzooplankton 
    23482323               !! xbetan = 0.77; xthetaz = 5.625; xbetac = 0.64; xkc = 0.80 
    2349                fstarmi = (xbetan * xthetazmi) / (xbetac * xkc) 
     2324               fstarmi(ji,jj) = (xbetan * xthetazmi) / (xbetac * xkc) 
    23502325               !! 
    23512326               !! process these to determine proportioning of grazed N and C 
    23522327               !! (since there is no explicit consideration of respiration, 
    23532328               !! 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 
     2329               fmith(ji,jj)   = (ficmi(ji,jj) / (finmi(ji,jj) + tiny(finmi(ji,jj)))) 
     2330               if (fmith(ji,jj).ge.fstarmi(ji,jj)) then 
     2331                  fmigrow(ji,jj) = xbetan * finmi(ji,jj) 
     2332                  fmiexcr(ji,jj) = 0.0 
    23582333               else 
    2359                   fmigrow = (xbetac * xkc * ficmi) / xthetazmi 
    2360                   fmiexcr = ficmi * ((xbetan / (fmith + tiny(fmith))) - ((xbetac * xkc) / xthetazmi)) 
     2334                  fmigrow(ji,jj) = (xbetac * xkc * ficmi(ji,jj)) / xthetazmi 
     2335                  fmiexcr(ji,jj) = ficmi(ji,jj) * ((xbetan / (fmith(ji,jj) + tiny(fmith(ji,jj)))) - ((xbetac * xkc) / xthetazmi)) 
    23612336               endif 
    23622337# if defined key_roam 
    2363                fmiresp = (xbetac * ficmi) - (xthetazmi * fmigrow) 
     2338               fmiresp(ji,jj) = (xbetac * ficmi(ji,jj)) - (xthetazmi * fmigrow(ji,jj)) 
    23642339# endif 
    23652340 
     
    23682343               if (idf.eq.1.AND.idfval.eq.1) then 
    23692344                  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 
     2345                  IF (lwp) write (numout,*) 'fmi1(',jk,')    = ', fmi1(ji,jj) 
     2346                  IF (lwp) write (numout,*) 'fmi(',jk,')     = ', fmi(ji,jj) 
     2347                  IF (lwp) write (numout,*) 'fgmipn(',jk,')  = ', fgmipn(ji,jj) 
     2348                  IF (lwp) write (numout,*) 'fgmid(',jk,')   = ', fgmid(ji,jj) 
     2349                  IF (lwp) write (numout,*) 'fgmidc(',jk,')  = ', fgmidc(ji,jj) 
     2350                  IF (lwp) write (numout,*) 'finmi(',jk,')   = ', finmi(ji,jj) 
     2351                  IF (lwp) write (numout,*) 'ficmi(',jk,')   = ', ficmi(ji,jj) 
     2352                  IF (lwp) write (numout,*) 'fstarmi(',jk,') = ', fstarmi(ji,jj) 
     2353                  IF (lwp) write (numout,*) 'fmith(',jk,')   = ', fmith(ji,jj) 
     2354                  IF (lwp) write (numout,*) 'fmigrow(',jk,') = ', fmigrow(ji,jj) 
     2355                  IF (lwp) write (numout,*) 'fmiexcr(',jk,') = ', fmiexcr(ji,jj) 
    23812356#  if defined key_roam 
    2382                   IF (lwp) write (numout,*) 'fmiresp(',jk,') = ', fmiresp 
     2357                  IF (lwp) write (numout,*) 'fmiresp(',jk,') = ', fmiresp(ji,jj) 
    23832358#  endif 
    23842359               endif 
     
    23892364               !!---------------------------------------------------------------------- 
    23902365               !! 
    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 
     2366               fme1(ji,jj)    = (xkme * xkme) + (xpmepn * zphn(ji,jj) * zphn(ji,jj)) + (xpmepd * zphd(ji,jj) * zphd(ji,jj)) + &  
     2367                         (xpmezmi * zzmi(ji,jj) * zzmi(ji,jj)) + (xpmed * zdet(ji,jj) * zdet(ji,jj)) 
     2368               fme(ji,jj)     = xgme * zzme(ji,jj) / fme1(ji,jj) 
     2369               fgmepn(ji,jj)  = fme(ji,jj) * xpmepn  * zphn(ji,jj) * zphn(ji,jj)  !! grazing on non-diatoms 
     2370               fgmepd(ji,jj)  = fme(ji,jj) * xpmepd  * zphd(ji,jj) * zphd(ji,jj)  !! grazing on diatoms 
     2371               fgmepds(ji,jj) = fsin(ji,jj) * fgmepd(ji,jj)                !! grazing on diatom silicon 
     2372               fgmezmi(ji,jj) = fme(ji,jj) * xpmezmi * zzmi(ji,jj) * zzmi(ji,jj)  !! grazing on microzooplankton 
     2373               fgmed(ji,jj)   = fme(ji,jj) * xpmed   * zdet(ji,jj) * zdet(ji,jj)  !! grazing on detrital nitrogen 
    23992374# if defined key_roam 
    2400                fgmedc  = rsmall !acc 
    2401                IF ( zdet .GT. rsmall ) fgmedc  = (zdtc / (zdet + tiny(zdet))) * fgmed  !! grazing on detrital carbon 
     2375               fgmedc(ji,jj)  = rsmall !acc 
     2376               IF ( zdet(ji,jj) .GT. rsmall ) fgmedc(ji,jj)  = (zdtc(ji,jj) / (zdet(ji,jj) + tiny(zdet(ji,jj)))) * fgmed(ji,jj)  !! grazing on detrital carbon 
    24022377# else 
    24032378               !! AXY (26/11/08): implicit detrital carbon change 
    2404                fgmedc  = xthetad * fgmed              !! grazing on detrital carbon 
     2379               fgmedc(ji,jj)  = xthetad * fgmed(ji,jj)              !! grazing on detrital carbon 
    24052380# endif 
    24062381               !! 
    24072382               !! 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) 
     2383               finme(ji,jj)   = (1.0 - xphi) * (fgmepn(ji,jj) + fgmepd(ji,jj) + fgmezmi(ji,jj) + fgmed(ji,jj)) 
     2384               ficme(ji,jj)   = (1.0 - xphi) * ((xthetapn * fgmepn(ji,jj)) + (xthetapd * fgmepd(ji,jj)) + & 
     2385                        (xthetazmi * fgmezmi(ji,jj)) + fgmedc(ji,jj)) 
    24112386               !! 
    24122387               !! the ideal food C:N ratio for mesozooplankton 
    24132388               !! xbetan = 0.77; xthetaz = 5.625; xbetac = 0.64; xkc = 0.80 
    2414                fstarme = (xbetan * xthetazme) / (xbetac * xkc) 
     2389               fstarme(ji,jj) = (xbetan * xthetazme) / (xbetac * xkc) 
    24152390               !! 
    24162391               !! process these to determine proportioning of grazed N and C 
    24172392               !! (since there is no explicit consideration of respiration, 
    24182393               !! 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 
     2394               fmeth(ji,jj)   = (ficme(ji,jj) / (finme(ji,jj) + tiny(finme(ji,jj)))) 
     2395               if (fmeth(ji,jj).ge.fstarme(ji,jj)) then 
     2396                  fmegrow(ji,jj) = xbetan * finme(ji,jj) 
     2397                  fmeexcr(ji,jj) = 0.0 
    24232398               else 
    2424                   fmegrow = (xbetac * xkc * ficme) / xthetazme 
    2425                   fmeexcr = ficme * ((xbetan / (fmeth + tiny(fmeth))) - ((xbetac * xkc) / xthetazme)) 
     2399                  fmegrow(ji,jj) = (xbetac * xkc * ficme(ji,jj)) / xthetazme 
     2400                  fmeexcr(ji,jj) = ficme(ji,jj) * ((xbetan / (fmeth(ji,jj) + tiny(fmeth(ji,jj)))) - ((xbetac * xkc) / xthetazme)) 
    24262401               endif 
    24272402# if defined key_roam 
    2428                fmeresp = (xbetac * ficme) - (xthetazme * fmegrow) 
     2403               fmeresp(ji,jj) = (xbetac * ficme(ji,jj)) - (xthetazme * fmegrow(ji,jj)) 
    24292404# endif 
    24302405 
     
    24332408               if (idf.eq.1.AND.idfval.eq.1) then 
    24342409                  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 
     2410                  IF (lwp) write (numout,*) 'fme1(',jk,')    = ', fme1(ji,jj) 
     2411                  IF (lwp) write (numout,*) 'fme(',jk,')     = ', fme(ji,jj) 
     2412                  IF (lwp) write (numout,*) 'fgmepn(',jk,')  = ', fgmepn(ji,jj) 
     2413                  IF (lwp) write (numout,*) 'fgmepd(',jk,')  = ', fgmepd(ji,jj) 
     2414                  IF (lwp) write (numout,*) 'fgmepds(',jk,') = ', fgmepds(ji,jj) 
     2415                  IF (lwp) write (numout,*) 'fgmezmi(',jk,') = ', fgmezmi(ji,jj) 
     2416                  IF (lwp) write (numout,*) 'fgmed(',jk,')   = ', fgmed(ji,jj) 
     2417                  IF (lwp) write (numout,*) 'fgmedc(',jk,')  = ', fgmedc(ji,jj) 
     2418                  IF (lwp) write (numout,*) 'finme(',jk,')   = ', finme(ji,jj) 
     2419                  IF (lwp) write (numout,*) 'ficme(',jk,')   = ', ficme(ji,jj) 
     2420                  IF (lwp) write (numout,*) 'fstarme(',jk,') = ', fstarme(ji,jj) 
     2421                  IF (lwp) write (numout,*) 'fmeth(',jk,')   = ', fmeth(ji,jj) 
     2422                  IF (lwp) write (numout,*) 'fmegrow(',jk,') = ', fmegrow(ji,jj) 
     2423                  IF (lwp) write (numout,*) 'fmeexcr(',jk,') = ', fmeexcr(ji,jj) 
    24492424#  if defined key_roam 
    2450                   IF (lwp) write (numout,*) 'fmeresp(',jk,') = ', fmeresp 
     2425                  IF (lwp) write (numout,*) 'fmeresp(',jk,') = ', fmeresp(ji,jj) 
    24512426#  endif 
    24522427               endif 
    24532428# endif 
    24542429 
    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) ) 
     2430               fzmi_i(ji,jj)  = fzmi_i(ji,jj)  + fse3t(ji,jj,jk) * (  & 
     2431                  fgmipn(ji,jj) + fgmid(ji,jj) ) 
     2432               fzmi_o(ji,jj)  = fzmi_o(ji,jj)  + fse3t(ji,jj,jk) * (  & 
     2433                  fmigrow(ji,jj) + (xphi * (fgmipn(ji,jj) + fgmid(ji,jj))) + fmiexcr(ji,jj) + ((1.0 - xbetan) * finmi(ji,jj)) ) 
     2434               fzme_i(ji,jj)  = fzme_i(ji,jj)  + fse3t(ji,jj,jk) * (  & 
     2435                  fgmepn(ji,jj) + fgmepd(ji,jj) + fgmezmi(ji,jj) + fgmed(ji,jj) ) 
     2436               fzme_o(ji,jj)  = fzme_o(ji,jj)  + fse3t(ji,jj,jk) * (  & 
     2437                  fmegrow(ji,jj) + (xphi * (fgmepn(ji,jj) + fgmepd(ji,jj) + fgmezmi(ji,jj) + fgmed(ji,jj))) + fmeexcr(ji,jj) + ((1.0 - xbetan) * finme(ji,jj)) ) 
    24632438 
    24642439               !!---------------------------------------------------------------------- 
     
    24672442               !!---------------------------------------------------------------------- 
    24682443               !! 
    2469                fdpn2  = xmetapn  * zphn 
    2470                fdpd2  = xmetapd  * zphd 
    2471                fdpds2 = xmetapd  * zpds 
    2472                fdzmi2 = xmetazmi * zzmi 
    2473                fdzme2 = xmetazme * zzme 
     2444               fdpn2(ji,jj)  = xmetapn  * zphn(ji,jj) 
     2445               fdpd2(ji,jj)  = xmetapd  * zphd(ji,jj) 
     2446               fdpds2(ji,jj) = xmetapd  * zpds(ji,jj) 
     2447               fdzmi2(ji,jj) = xmetazmi * zzmi(ji,jj) 
     2448               fdzme2(ji,jj) = xmetazme * zzme(ji,jj) 
    24742449 
    24752450               !!---------------------------------------------------------------------- 
     
    24802455               !! 
    24812456               !! 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))) 
     2457               if (jmpn.eq.1) fdpn(ji,jj) = xmpn * zphn(ji,jj)               !! linear 
     2458               if (jmpn.eq.2) fdpn(ji,jj) = xmpn * zphn(ji,jj) * zphn(ji,jj)        !! quadratic 
     2459               if (jmpn.eq.3) fdpn(ji,jj) = xmpn * zphn(ji,jj) * &           !! hyperbolic 
     2460                  (zphn(ji,jj) / (xkphn + zphn(ji,jj))) 
     2461               if (jmpn.eq.4) fdpn(ji,jj) = xmpn * zphn(ji,jj) * &           !! sigmoid 
     2462                  ((zphn(ji,jj) * zphn(ji,jj)) / (xkphn + (zphn(ji,jj) * zphn(ji,jj)))) 
    24882463               !! 
    24892464               !! 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 
     2465               if (jmpd.eq.1) fdpd(ji,jj) = xmpd * zphd(ji,jj)               !! linear 
     2466               if (jmpd.eq.2) fdpd(ji,jj) = xmpd * zphd(ji,jj) * zphd(ji,jj)        !! quadratic 
     2467               if (jmpd.eq.3) fdpd(ji,jj) = xmpd * zphd(ji,jj) * &           !! hyperbolic 
     2468                  (zphd(ji,jj) / (xkphd + zphd(ji,jj))) 
     2469               if (jmpd.eq.4) fdpd(ji,jj) = xmpd * zphd(ji,jj) * &           !! sigmoid 
     2470                  ((zphd(ji,jj) * zphd(ji,jj)) / (xkphd + (zphd(ji,jj) * zphd(ji,jj)))) 
     2471               fdpds(ji,jj) = fdpd(ji,jj) * fsin(ji,jj) 
    24972472               !! 
    24982473               !! 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))) 
     2474               if (jmzmi.eq.1) fdzmi(ji,jj) = xmzmi * zzmi(ji,jj)            !! linear 
     2475               if (jmzmi.eq.2) fdzmi(ji,jj) = xmzmi * zzmi(ji,jj) * zzmi(ji,jj)     !! quadratic 
     2476               if (jmzmi.eq.3) fdzmi(ji,jj) = xmzmi * zzmi(ji,jj) * &        !! hyperbolic 
     2477                  (zzmi(ji,jj) / (xkzmi + zzmi(ji,jj))) 
     2478               if (jmzmi.eq.4) fdzmi(ji,jj) = xmzmi * zzmi(ji,jj) * &        !! sigmoid 
     2479                  ((zzmi(ji,jj) * zzmi(ji,jj)) / (xkzmi + (zzmi(ji,jj) * zzmi(ji,jj)))) 
    25052480               !! 
    25062481               !! 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))) 
     2482               if (jmzme.eq.1) fdzme(ji,jj) = xmzme * zzme(ji,jj)            !! linear 
     2483               if (jmzme.eq.2) fdzme(ji,jj) = xmzme * zzme(ji,jj) * zzme(ji,jj)     !! quadratic 
     2484               if (jmzme.eq.3) fdzme(ji,jj) = xmzme * zzme(ji,jj) * &        !! hyperbolic 
     2485                  (zzme(ji,jj) / (xkzme + zzme(ji,jj))) 
     2486               if (jmzme.eq.4) fdzme(ji,jj) = xmzme * zzme(ji,jj) * &        !! sigmoid 
     2487                  ((zzme(ji,jj) * zzme(ji,jj)) / (xkzme + (zzme(ji,jj) * zzme(ji,jj)))) 
    25132488 
    25142489               !!---------------------------------------------------------------------- 
     
    25192494               if (jmd.eq.1) then 
    25202495                  !! temperature-dependent 
    2521                   fdd  = xmd  * fun_T * zdet 
     2496                  fdd(ji,jj)  = xmd  * fun_T(ji,jj) * zdet(ji,jj) 
    25222497# if defined key_roam 
    2523                   fddc = xmdc * fun_T * zdtc 
     2498                  fddc(ji,jj) = xmdc * fun_T(ji,jj) * zdtc(ji,jj) 
    25242499# endif 
    25252500               elseif (jmd.eq.2) then 
    25262501                  !! AXY (16/05/13): add in Q10-based parameterisation (def in nmlst) 
    25272502                  !! temperature-dependent 
    2528                   fdd  = xmd  * fun_Q10 * zdet 
     2503                  fdd(ji,jj)  = xmd  * fun_Q10(ji,jj) * zdet(ji,jj) 
    25292504#if defined key_roam 
    2530                   fddc = xmdc * fun_Q10 * zdtc 
     2505                  fddc(ji,jj) = xmdc * fun_Q10(ji,jj) * zdtc(ji,jj) 
    25312506#endif 
    25322507               else 
    25332508                  !! temperature-independent 
    2534                   fdd  = xmd  * zdet 
     2509                  fdd(ji,jj)  = xmd  * zdet(ji,jj) 
    25352510# if defined key_roam 
    2536                   fddc = xmdc * zdtc 
     2511                  fddc(ji,jj) = xmdc * zdtc(ji,jj) 
    25372512# endif 
    25382513               endif 
    25392514               !! 
    25402515               !! 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 
     2516               if ((jk.eq.mbathy(ji,jj)) .and. jsfd.eq.1) then 
     2517                  fdd(ji,jj)  = 1.0  * zdet(ji,jj) 
    25432518# if defined key_roam 
    2544                   fddc = 1.0  * zdtc 
     2519                  fddc(ji,jj) = 1.0  * zdtc(ji,jj) 
    25452520# endif 
    25462521               endif 
     
    25502525               if (idf.eq.1.AND.idfval.eq.1) then 
    25512526                  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 
     2527                  IF (lwp) write (numout,*) 'fdpn2(',jk,') = ', fdpn2(ji,jj) 
     2528                  IF (lwp) write (numout,*) 'fdpd2(',jk,') = ', fdpd2(ji,jj) 
     2529                  IF (lwp) write (numout,*) 'fdpds2(',jk,')= ', fdpds2(ji,jj) 
     2530                  IF (lwp) write (numout,*) 'fdzmi2(',jk,')= ', fdzmi2(ji,jj) 
     2531                  IF (lwp) write (numout,*) 'fdzme2(',jk,')= ', fdzme2(ji,jj) 
     2532                  IF (lwp) write (numout,*) 'fdpn(',jk,')  = ', fdpn(ji,jj) 
     2533                  IF (lwp) write (numout,*) 'fdpd(',jk,')  = ', fdpd(ji,jj) 
     2534                  IF (lwp) write (numout,*) 'fdpds(',jk,') = ', fdpds(ji,jj) 
     2535                  IF (lwp) write (numout,*) 'fdzmi(',jk,') = ', fdzmi(ji,jj) 
     2536                  IF (lwp) write (numout,*) 'fdzme(',jk,') = ', fdzme(ji,jj) 
     2537                  IF (lwp) write (numout,*) 'fdd(',jk,')   = ', fdd(ji,jj) 
    25632538#  if defined key_roam 
    2564                   IF (lwp) write (numout,*) 'fddc(',jk,')  = ', fddc 
     2539                  IF (lwp) write (numout,*) 'fddc(',jk,')  = ', fddc(ji,jj) 
    25652540#  endif 
    25662541               endif 
     
    25732548               !!---------------------------------------------------------------------- 
    25742549               !! 
    2575                if ((jk.eq.jmbathy) .and. jorgben.eq.1) then 
     2550               if ((jk.eq.mbathy(ji,jj)) .and. jorgben.eq.1) then 
    25762551                  !! this is the BOTTOM OCEAN BOX -> into the benthic pool! 
    25772552                  !! 
    2578                   f_sbenin_n(ji,jj)  = (zdet * vsed * 86400.) 
    2579                   f_sbenin_fe(ji,jj) = (zdet * vsed * 86400. * xrfn) 
     2553                  f_sbenin_n(ji,jj)  = (zdet(ji,jj) * vsed * 86400.) 
     2554                  f_sbenin_fe(ji,jj) = (zdet(ji,jj) * vsed * 86400. * xrfn) 
    25802555# if defined key_roam 
    2581                   f_sbenin_c(ji,jj)  = (zdtc * vsed * 86400.) 
     2556                  f_sbenin_c(ji,jj)  = (zdtc(ji,jj) * vsed * 86400.) 
    25822557# else 
    2583                   f_sbenin_c(ji,jj)  = (zdet * vsed * 86400. * xthetad) 
     2558                  f_sbenin_c(ji,jj)  = (zdet(ji,jj) * vsed * 86400. * xthetad) 
    25842559# endif 
    25852560               endif 
     
    25942569               !! 
    25952570               !! total iron concentration (mmol Fe / m3 -> umol Fe / m3) 
    2596                xFeT        = zfer * 1.e3 
     2571               xFeT        = zfer(ji,jj) * 1.e3 
    25972572               !! 
    25982573               !! calculate fractionation (based on Diat-HadOCC; in turn based on Parekh et al., 2004) 
     
    26082583               !! "free" iron concentration (and convert to mmol Fe / m3) 
    26092584               xFeF        = (xFeT - xFeL) * 1.e-3 
    2610                xFree(ji,jj)= xFeF / (zfer + tiny(zfer)) 
     2585               xFree(ji,jj)= xFeF / (zfer(ji,jj) + tiny(zfer(ji,jj))) 
    26112586               !! 
    26122587               !! scavenging of iron (multiple schemes); I'm only really happy with the  
     
    26212596                  !!---------------------------------------------------------------------- 
    26222597                  !! 
    2623                   ffescav     = xk_sc_Fe * xFeF                     ! = mmol/m3/d 
     2598                  ffescav(ji,jj)     = xk_sc_Fe * xFeF                     ! = mmol/m3/d 
    26242599                  !! 
    26252600                  !!---------------------------------------------------------------------- 
     
    26522627                  !! scale of 1 day; seems reasonable to me ... (famous last words) 
    26532628                  !! 
    2654                   ffescav     = ffescav + fdeltaFe                  ! = mmol/m3/d 
     2629                  ffescav(ji,jj)     = ffescav(ji,jj) + fdeltaFe                  ! = mmol/m3/d 
    26552630                  !! 
    26562631# if defined key_deep_fe_fix 
     
    26702645                  !! justifying this in a paper though! 
    26712646                  !! 
    2672                   if ((fdep.gt.1000.) .and. (xFeT.lt.0.5)) then 
    2673                      ffescav = 0. 
     2647                  if ((fsdepw(ji,jj,jk).gt.1000.) .and. (xFeT.lt.0.5)) then 
     2648                     ffescav(ji,jj) = 0. 
    26742649                  endif 
    26752650# endif 
     
    26842659                  !! 
    26852660                  !! total iron concentration (mmol Fe / m3 -> umol Fe / m3) 
    2686                   xFeT        = zfer * 1.e3 
     2661                  xFeT        = zfer(ji,jj) * 1.e3 
    26872662                  !! 
    26882663                  !! this has a base scavenging rate (12% / y) which is modified by local 
     
    27132688                  !! by a magic factor, 0.002, to get it into nmol C / cm2 / s 
    27142689                  !! 
    2715                   fscal_part = ((xthetapn * zphn) + (xthetapd * zphd) + (xthetazmi * zzmi) + & 
    2716                   (xthetazme * zzme) + (xthetad * zdet)) * 0.002 
     2690                  fscal_part = ((xthetapn * zphn(ji,jj)) + (xthetapd * zphd(ji,jj)) + (xthetazmi * zzmi(ji,jj)) + & 
     2691                  (xthetazme * zzme(ji,jj)) + (xthetad * zdet(ji,jj))) * 0.002 
    27172692                  !! 
    27182693                  !! calculate scaling factor for base scavenging rate 
     
    27482723                  !! apply the calculated scavenging rate ... 
    27492724                  !! 
    2750                   ffescav = fscal_scav * zfer 
     2725                  ffescav(ji,jj) = fscal_scav * zfer(ji,jj) 
    27512726                  !! 
    27522727               elseif (jiron.eq.3) then 
     
    27622737                  !! 
    27632738                  !! total iron concentration (mmol Fe / m3 -> umol Fe / m3) 
    2764                   xFeT        = zfer * 1.e3 
     2739                  xFeT        = zfer(ji,jj) * 1.e3 
    27652740                  !! 
    27662741                  !! this has a base scavenging rate which is modified by local 
     
    28222797                  !! apply the calculated scavenging rate ... 
    28232798                  !! 
    2824                   ffescav = fscal_scav * zfer 
     2799                  ffescav(ji,jj) = fscal_scav * zfer(ji,jj) 
    28252800                  !! 
    28262801               elseif (jiron.eq.4) then 
     
    28612836                  !! 
    28622837                  !! sum these two terms together 
    2863                   ffescav     = xORGscav + xINORGscav 
     2838                  ffescav(ji,jj)     = xORGscav + xINORGscav 
    28642839               else 
    28652840                  !!---------------------------------------------------------------------- 
     
    28692844                  !! you fool! 
    28702845                  !!---------------------------------------------------------------------- 
    2871                   ffescav     = 0. 
     2846                  ffescav(ji,jj)     = 0. 
    28722847               endif 
    28732848 
     
    28792854               if (jk.eq.1) then 
    28802855                  !! zirondep   is in mmol-Fe / m2 / day 
    2881                   !! ffetop     is in mmol-dissolved-Fe / m3 / day 
    2882                   ffetop  = zirondep(ji,jj) * xfe_sol / fthk  
     2856                  !! ffetop(ji,jj)     is in mmol-dissolved-Fe / m3 / day 
     2857                  ffetop(ji,jj)  = zirondep(ji,jj) * xfe_sol / fse3t(ji,jj,jk)  
    28832858               else 
    2884                   ffetop  = 0.0 
     2859                  ffetop(ji,jj)  = 0.0 
    28852860               endif 
    28862861               !! 
     
    28882863               !! AXY (10/07/12): amended to only apply sedimentary flux up to ~500 m down 
    28892864               !! if (jk.eq.(mbathy(ji,jj)-1).AND.jk.lt.i1100) then 
    2890                if ((jk.eq.jmbathy).AND.jk.le.i0500) then 
     2865               if ((jk.eq.mbathy(ji,jj)).AND.jk.le.i0500) then 
    28912866                  !! Moore et al. (2004) cite a coastal California value of 5 umol/m2/d, but adopt a 
    28922867                  !! global value of 2 umol/m2/d for all areas < 1100 m; here we use this latter value 
    28932868                  !! but apply it everywhere 
    28942869                  !! AXY (21/07/09): actually, let's just apply it below 1100 m (levels 1-37) 
    2895                   ffebot  = (xfe_sed / fthk) 
     2870                  ffebot(ji,jj)  = (xfe_sed / fse3t(ji,jj,jk)) 
    28962871               else 
    2897                   ffebot  = 0.0 
     2872                  ffebot(ji,jj)  = 0.0 
    28982873               endif 
    28992874 
     
    29032878               !! iron addition at the seafloor is still permitted with the idea that this extra 
    29042879               !! iron will be removed by the restoration away from the source 
    2905                !! ffescav = 0.0 
    2906                !! ffetop  = 0.0 
    2907                !! ffebot  = 0.0 
     2880               !! ffescav(ji,jj) = 0.0 
     2881               !! ffetop(ji,jj)  = 0.0 
     2882               !! ffebot(ji,jj)  = 0.0 
    29082883 
    29092884# if defined key_debug_medusa 
     
    29132888                  IF (lwp) write (numout,*) 'xfe_sol  = ', xfe_sol 
    29142889                  IF (lwp) write (numout,*) 'xfe_mass = ', xfe_mass 
    2915                   IF (lwp) write (numout,*) 'ffetop(',jk,')  = ', ffetop 
    2916                   IF (lwp) write (numout,*) 'ffebot(',jk,')  = ', ffebot 
     2890                  IF (lwp) write (numout,*) 'ffetop(',jk,')  = ', ffetop(ji,jj) 
     2891                  IF (lwp) write (numout,*) 'ffebot(',jk,')  = ', ffebot(ji,jj) 
    29172892                  IF (lwp) write (numout,*) 'xFree(',jk,')   = ', xFree(ji,jj) 
    2918                   IF (lwp) write (numout,*) 'ffescav(',jk,') = ', ffescav 
     2893                  IF (lwp) write (numout,*) 'ffescav(',jk,') = ', ffescav(ji,jj) 
    29192894               endif 
    29202895# endif 
     
    29252900               !! 
    29262901               !! diatom frustule dissolution 
    2927                fsdiss  = xsdiss * zpds 
     2902               fsdiss(ji,jj)  = xsdiss * zpds(ji,jj) 
    29282903 
    29292904# if defined key_debug_medusa 
     
    29312906               if (idf.eq.1.AND.idfval.eq.1) then 
    29322907                  IF (lwp) write (numout,*) '------------------------------' 
    2933                   IF (lwp) write (numout,*) 'fsdiss(',jk,')  = ', fsdiss 
     2908                  IF (lwp) write (numout,*) 'fsdiss(',jk,')  = ', fsdiss(ji,jj) 
    29342909               endif 
    29352910# endif 
     
    29412916               !! to allow the split between fast and slow detritus to be  
    29422917               !! diagnosed 
    2943                fslown  = fdpn + fdzmi + ((1.0 - xfdfrac1) * fdpd) + & 
    2944                ((1.0 - xfdfrac2) * fdzme) + ((1.0 - xbetan) * (finmi + finme)) 
     2918               fslown(ji,jj)  = fdpn(ji,jj) + fdzmi(ji,jj) + ((1.0 - xfdfrac1) * fdpd(ji,jj)) + & 
     2919               ((1.0 - xfdfrac2) * fdzme(ji,jj)) + ((1.0 - xbetan) * (finmi(ji,jj) + finme(ji,jj))) 
    29452920               !! 
    29462921               !! this variable records the slow detrital sinking flux at this 
     
    29482923               !! standard depths in the diagnostic outputs; needs to be 
    29492924               !! adjusted from per second to per day because of parameter vsed 
    2950                fslownflux(ji,jj) = zdet * vsed * 86400. 
     2925               fslownflux(ji,jj) = zdet(ji,jj) * vsed * 86400. 
    29512926# if defined key_roam 
    29522927               !! 
    29532928               !! 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)) 
     2929               fslowc(ji,jj)  = (xthetapn * fdpn(ji,jj)) + (xthetazmi * fdzmi(ji,jj)) + & 
     2930               (xthetapd * (1.0 - xfdfrac1) * fdpd(ji,jj)) + & 
     2931               (xthetazme * (1.0 - xfdfrac2) * fdzme(ji,jj)) + & 
     2932               ((1.0 - xbetac) * (ficmi(ji,jj) + ficme(ji,jj))) 
    29582933               !! 
    29592934               !! this variable records the slow detrital sinking flux at this 
     
    29612936               !! standard depths in the diagnostic outputs; needs to be 
    29622937               !! adjusted from per second to per day because of parameter vsed 
    2963                fslowcflux(ji,jj) = zdtc * vsed * 86400. 
     2938               fslowcflux(ji,jj) = zdtc(ji,jj) * vsed * 86400. 
    29642939# endif 
    29652940 
     
    29752950               !! 
    29762951               !! 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 
     2952               fregen(ji,jj)   = (( (xphi * (fgmipn(ji,jj) + fgmid(ji,jj))) +                &  ! messy feeding 
     2953               (xphi * (fgmepn(ji,jj) + fgmepd(ji,jj) + fgmezmi(ji,jj) + fgmed(ji,jj))) +           &  ! messy feeding 
     2954               fmiexcr(ji,jj) + fmeexcr(ji,jj) + fdd(ji,jj) +                                &  ! excretion + D remin. 
     2955               fdpn2(ji,jj) + fdpd2(ji,jj) + fdzmi2(ji,jj) + fdzme2(ji,jj)) * fse3t(ji,jj,jk))                    ! linear mortality 
    29812956               !! 
    29822957               !! 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 
     2958               fregensi(ji,jj) = (( fsdiss(ji,jj) + ((1.0 - xfdfrac1) * fdpds(ji,jj)) +      &  ! dissolution + non-lin. mortality 
     2959               ((1.0 - xfdfrac3) * fgmepds(ji,jj)) +                           &  ! egestion by zooplankton 
     2960               fdpds2(ji,jj)) * fse3t(ji,jj,jk))                                             ! linear mortality 
    29862961# if defined key_roam 
    29872962               !! 
    29882963               !! 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 
     2964! Doesn't look this is used - marc 10/4/17 
     2965!               fregenc(ji,jj)  = (( (xphi * ((xthetapn * fgmipn(ji,jj)) + fgmidc(ji,jj))) +  &  ! messy feeding 
     2966!               (xphi * ((xthetapn * fgmepn(ji,jj)) + (xthetapd * fgmepd(ji,jj)) +     &  ! messy feeding 
     2967!               (xthetazmi * fgmezmi(ji,jj)) + fgmedc(ji,jj))) +                       &  ! messy feeding 
     2968!               fmiresp(ji,jj) + fmeresp(ji,jj) + fddc(ji,jj) +                               &  ! respiration + D remin. 
     2969!               (xthetapn * fdpn2(ji,jj)) + (xthetapd * fdpd2(ji,jj)) +                &  ! linear mortality 
     2970!               (xthetazmi * fdzmi2(ji,jj)) + (xthetazme * fdzme2(ji,jj))) * fse3t(ji,jj,jk))        ! linear mortality 
    29952971# endif 
    29962972 
     
    30052981               !! 
    30062982               !! nitrogen:   diatom and mesozooplankton mortality 
    3007                ftempn         = b0 * ((xfdfrac1 * fdpd)  + (xfdfrac2 * fdzme)) 
     2983               ftempn(ji,jj)         = b0 * ((xfdfrac1 * fdpd(ji,jj))  + (xfdfrac2 * fdzme(ji,jj))) 
    30082984               !! 
    30092985               !! silicon:    diatom mortality and grazed diatoms 
    3010                ftempsi        = b0 * ((xfdfrac1 * fdpds) + (xfdfrac3 * fgmepds)) 
     2986               ftempsi(ji,jj)        = b0 * ((xfdfrac1 * fdpds(ji,jj)) + (xfdfrac3 * fgmepds(ji,jj))) 
    30112987               !! 
    30122988               !! iron:       diatom and mesozooplankton mortality 
    3013                ftempfe        = b0 * (((xfdfrac1 * fdpd) + (xfdfrac2 * fdzme)) * xrfn) 
     2989               ftempfe(ji,jj)        = b0 * (((xfdfrac1 * fdpd(ji,jj)) + (xfdfrac2 * fdzme(ji,jj))) * xrfn) 
    30142990               !! 
    30152991               !! carbon:     diatom and mesozooplankton mortality 
    3016                ftempc         = b0 * ((xfdfrac1 * xthetapd * fdpd) + &  
    3017                                 (xfdfrac2 * xthetazme * fdzme)) 
     2992               ftempc(ji,jj)         = b0 * ((xfdfrac1 * xthetapd * fdpd(ji,jj)) + &  
     2993                                (xfdfrac2 * xthetazme * fdzme(ji,jj))) 
    30182994               !! 
    30192995# if defined key_roam 
    30202996               if (jrratio.eq.0) then 
    30212997                  !! CaCO3:      latitudinally-based fraction of total primary production 
    3022                   !!               absolute latitude of current grid cell 
    3023                   flat           = abs(gphit(ji,jj)) 
    30242998                  !!               0.10 at equator; 0.02 at pole 
    3025                   fcaco3         = xcaco3a + ((xcaco3b - xcaco3a) * ((90.0 - flat) / 90.0)) 
     2999                  fcaco3(ji,jj)         = xcaco3a + ((xcaco3b - xcaco3a) * ((90.0 - abs(gphit(ji,jj))) / 90.0)) 
    30263000               elseif (jrratio.eq.1) then 
    30273001                  !! CaCO3:      Ridgwell et al. (2007) submodel, version 1 
     
    30323006                     fq1 = 0. 
    30333007                  endif 
    3034                   fcaco3 = xridg_r0 * fq1 
     3008                  fcaco3(ji,jj) = xridg_r0 * fq1 
    30353009               elseif (jrratio.eq.2) then 
    30363010                  !! CaCO3:      Ridgwell et al. (2007) submodel, version 2 
     
    30413015                     fq1 = 0. 
    30423016                  endif 
    3043                   fcaco3 = xridg_r0 * fq1 
     3017                  fcaco3(ji,jj) = xridg_r0 * fq1 
    30443018               endif 
    30453019# else 
    30463020               !! CaCO3:      latitudinally-based fraction of total primary production 
    3047                !!               absolute latitude of current grid cell 
    3048                flat           = abs(gphit(ji,jj)) 
    30493021               !!               0.10 at equator; 0.02 at pole 
    3050                fcaco3         = xcaco3a + ((xcaco3b - xcaco3a) * ((90.0 - flat) / 90.0)) 
     3022               fcaco3(ji,jj)         = xcaco3a + ((xcaco3b - xcaco3a) * ((90.0 - abs(gphit(ji,jj))) / 90.0)) 
    30513023# endif 
    30523024               !! AXY (09/03/09): convert CaCO3 production from function of  
     
    30563028               !! chlorophyll to an export flux for which they apply conversion  
    30573029               !! factors to estimate the various elemental fractions (Si, Ca) 
    3058                ftempca        = ftempc * fcaco3 
     3030               ftempca(ji,jj)        = ftempc(ji,jj) * fcaco3(ji,jj) 
    30593031 
    30603032# if defined key_debug_medusa 
    30613033               !! integrate total fast detritus production 
    30623034               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) 
     3035                  fifd_n(ji,jj)  = fifd_n(ji,jj)  + (ftempn(ji,jj)  * fse3t(ji,jj,jk)) 
     3036                  fifd_si(ji,jj) = fifd_si(ji,jj) + (ftempsi(ji,jj) * fse3t(ji,jj,jk)) 
     3037                  fifd_fe(ji,jj) = fifd_fe(ji,jj) + (ftempfe(ji,jj) * fse3t(ji,jj,jk)) 
    30663038#  if defined key_roam 
    3067                   fifd_c(ji,jj)  = fifd_c(ji,jj)  + (ftempc  * fthk) 
     3039                  fifd_c(ji,jj)  = fifd_c(ji,jj)  + (ftempc(ji,jj)  * fse3t(ji,jj,jk)) 
    30683040#  endif 
    30693041               endif 
     
    30723044               if (idf.eq.1.AND.idfval.eq.1) then 
    30733045                  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 
     3046                  IF (lwp) write (numout,*) 'fdpd(',jk,')    = ', fdpd(ji,jj) 
     3047                  IF (lwp) write (numout,*) 'fdzme(',jk,')   = ', fdzme(ji,jj) 
     3048                  IF (lwp) write (numout,*) 'ftempn(',jk,')  = ', ftempn(ji,jj) 
     3049                  IF (lwp) write (numout,*) 'ftempsi(',jk,') = ', ftempsi(ji,jj) 
     3050                  IF (lwp) write (numout,*) 'ftempfe(',jk,') = ', ftempfe(ji,jj) 
     3051                  IF (lwp) write (numout,*) 'ftempc(',jk,')  = ', ftempc(ji,jj) 
     3052                  IF (lwp) write (numout,*) 'ftempca(',jk,') = ', ftempca(ji,jj) 
     3053                  IF (lwp) write (numout,*) 'flat(',jk,')    = ', abs(gphit(ji,jj)) 
     3054                  IF (lwp) write (numout,*) 'fcaco3(',jk,')  = ', fcaco3(ji,jj) 
    30833055               endif 
    30843056# endif 
     
    31513123                     !! this is the SURFACE OCEAN BOX (no remineralisation) 
    31523124                     !! 
    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 
     3125                     freminc(ji,jj)  = 0.0 
     3126                     freminn(ji,jj)  = 0.0 
     3127                     freminfe(ji,jj) = 0.0 
     3128                     freminsi(ji,jj) = 0.0 
     3129                     freminca(ji,jj) = 0.0 
     3130                  elseif (jk.le.mbathy(ji,jj)) then 
    31593131                     !! this is an OCEAN BOX (remineralise some material) 
    31603132                     !! 
     
    31623134                     if (jocalccd.eq.0) then 
    31633135                        !! use default CCD field 
    3164                         fccd_dep = ocal_ccd(ji,jj) 
     3136                        fccd_dep(ji,jj) = ocal_ccd(ji,jj) 
    31653137                     elseif (jocalccd.eq.1) then 
    31663138                        !! use calculated CCD field 
    3167                         fccd_dep = f2_ccd_cal(ji,jj) 
     3139                        fccd_dep(ji,jj) = f2_ccd_cal(ji,jj) 
    31683140                     endif 
    31693141                     !! 
     
    31783150                        !! it needs to be protected in case ALL C is protected 
    31793151                        if (fq4.lt.fq1) then 
    3180                            fprotf   = (fq4 / (fq1 + tiny(fq1)))      !! protected fraction of total organic C     (non-dim) 
     3152                           fprotf(ji,jj)   = (fq4 / (fq1 + tiny(fq1)))      !! protected fraction of total organic C     (non-dim) 
    31813153                        else 
    3182                            fprotf   = 1.0                            !! all organic C is protected                (non-dim) 
     3154                           fprotf(ji,jj)   = 1.0                            !! all organic C is protected                (non-dim) 
    31833155                        endif 
    3184                         fq5      = (1.0 - fprotf)                    !! unprotected fraction of total organic C   (non-dim) 
     3156                        fq5      = (1.0 - fprotf(ji,jj))                    !! unprotected fraction of total organic C   (non-dim) 
    31853157                        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) 
     3158                        fq7      = (fq6 * exp(-(fse3t(ji,jj,jk) / xfastc)))     !! how much unprotected C leaves this box    (mol) 
     3159                        fq8      = (fq7 + (fq0 * fprotf(ji,jj)))            !! how much total C leaves this box          (mol) 
     3160                        freminc(ji,jj)  = (fq0 - fq8) / fse3t(ji,jj,jk)                !! C remineralisation in this box            (mol) 
    31893161                        ffastc(ji,jj) = fq8                           
    31903162# if defined key_debug_medusa 
     
    31943166                              IF (lwp) write (numout,*) 'totalC(',jk,')  = ', fq1 
    31953167                              IF (lwp) write (numout,*) 'prtctC(',jk,')  = ', fq4 
    3196                               IF (lwp) write (numout,*) 'fprotf(',jk,')  = ', fprotf 
     3168                              IF (lwp) write (numout,*) 'fprotf(',jk,')  = ', fprotf(ji,jj) 
    31973169                              IF (lwp) write (numout,*) '------------------------------' 
    31983170                              IF (lwp) write (numout,*) 'IN   C(',jk,')  = ', fq0 
    3199                               IF (lwp) write (numout,*) 'LOST C(',jk,')  = ', freminc * fthk 
     3171                              IF (lwp) write (numout,*) 'LOST C(',jk,')  = ', freminc(ji,jj) * fse3t(ji,jj,jk) 
    32003172                              IF (lwp) write (numout,*) 'OUT  C(',jk,')  = ', fq8 
    3201                               IF (lwp) write (numout,*) 'NEW  C(',jk,')  = ', ftempc * fthk 
     3173                              IF (lwp) write (numout,*) 'NEW  C(',jk,')  = ', ftempc(ji,jj) * fse3t(ji,jj,jk) 
    32023174                           endif 
    32033175# endif 
    32043176                        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) 
     3177                        fq1      = fq0 * exp(-(fse3t(ji,jj,jk) / xfastc))       !! how much organic C leaves this box        (mol) 
     3178                        freminc(ji,jj)  = (fq0 - fq1) / fse3t(ji,jj,jk)                !! C remineralisation in this box            (mol) 
    32073179                        ffastc(ji,jj)  = fq1 
    32083180                     endif 
     
    32113183                     fq0      = ffastn(ji,jj)                        !! how much organic N enters this box        (mol) 
    32123184                     if (iball.eq.1) then 
    3213                         fq5      = (1.0 - fprotf)                    !! unprotected fraction of total organic N   (non-dim) 
     3185                        fq5      = (1.0 - fprotf(ji,jj))                    !! unprotected fraction of total organic N   (non-dim) 
    32143186                        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) 
     3187                        fq7      = (fq6 * exp(-(fse3t(ji,jj,jk) / xfastc)))     !! how much unprotected N leaves this box    (mol) 
     3188                        fq8      = (fq7 + (fq0 * fprotf(ji,jj)))            !! how much total N leaves this box          (mol) 
     3189                        freminn(ji,jj)  = (fq0 - fq8) / fse3t(ji,jj,jk)                !! N remineralisation in this box            (mol) 
    32183190                        ffastn(ji,jj)  = fq8 
    32193191# if defined key_debug_medusa 
     
    32233195                           IF (lwp) write (numout,*) 'totalN(',jk,')  = ', fq1 
    32243196                           IF (lwp) write (numout,*) 'prtctN(',jk,')  = ', fq4 
    3225                            IF (lwp) write (numout,*) 'fprotf(',jk,')  = ', fprotf 
     3197                           IF (lwp) write (numout,*) 'fprotf(',jk,')  = ', fprotf(ji,jj) 
    32263198                           IF (lwp) write (numout,*) '------------------------------' 
    3227                            if (freminn < 0.0) then 
     3199                           if (freminn(ji,jj) < 0.0) then 
    32283200                              IF (lwp) write (numout,*) '** FREMIN ERROR **' 
    32293201                           endif 
    32303202                           IF (lwp) write (numout,*) 'IN   N(',jk,')  = ', fq0 
    3231                            IF (lwp) write (numout,*) 'LOST N(',jk,')  = ', freminn * fthk 
     3203                           IF (lwp) write (numout,*) 'LOST N(',jk,')  = ', freminn(ji,jj) * fse3t(ji,jj,jk) 
    32323204                           IF (lwp) write (numout,*) 'OUT  N(',jk,')  = ', fq8 
    3233                            IF (lwp) write (numout,*) 'NEW  N(',jk,')  = ', ftempn * fthk 
     3205                           IF (lwp) write (numout,*) 'NEW  N(',jk,')  = ', ftempn(ji,jj) * fse3t(ji,jj,jk) 
    32343206                        endif 
    32353207# endif 
    32363208                     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) 
     3209                        fq1      = fq0 * exp(-(fse3t(ji,jj,jk) / xfastc))       !! how much organic N leaves this box        (mol) 
     3210                        freminn(ji,jj)  = (fq0 - fq1) / fse3t(ji,jj,jk)                !! N remineralisation in this box            (mol) 
    32393211                        ffastn(ji,jj)  = fq1 
    32403212                     endif 
     
    32433215                     fq0      = ffastfe(ji,jj)                       !! how much organic Fe enters this box       (mol) 
    32443216                     if (iball.eq.1) then 
    3245                         fq5      = (1.0 - fprotf)                    !! unprotected fraction of total organic Fe  (non-dim) 
     3217                        fq5      = (1.0 - fprotf(ji,jj))                    !! unprotected fraction of total organic Fe  (non-dim) 
    32463218                        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) 
     3219                        fq7      = (fq6 * exp(-(fse3t(ji,jj,jk) / xfastc)))     !! how much unprotected Fe leaves this box   (mol) 
     3220                        fq8      = (fq7 + (fq0 * fprotf(ji,jj)))            !! how much total Fe leaves this box         (mol)             
     3221                        freminfe(ji,jj) = (fq0 - fq8) / fse3t(ji,jj,jk)                !! Fe remineralisation in this box           (mol) 
    32503222                        ffastfe(ji,jj) = fq8 
    32513223                     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) 
     3224                        fq1      = fq0 * exp(-(fse3t(ji,jj,jk) / xfastc))       !! how much total Fe leaves this box         (mol)       
     3225                        freminfe(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk)                !! Fe remineralisation in this box           (mol) 
    32543226                        ffastfe(ji,jj) = fq1 
    32553227                     endif 
     
    32573229                     !! === biogenic silicon === 
    32583230                     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) 
     3231                     fq1      = fq0 * exp(-(fse3t(ji,jj,jk) / xfastsi))         !! how much  opal leaves this box            (mol) 
     3232                     freminsi(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk)                   !! Si remineralisation in this box           (mol) 
    32613233                     ffastsi(ji,jj) = fq1 
    32623234                     !! 
    32633235                     !! === biogenic calcium carbonate === 
    32643236                     fq0      = ffastca(ji,jj)                       !! how much CaCO3 enters this box            (mol) 
    3265                      if (fdep.le.fccd_dep) then 
     3237                     if (fsdepw(ji,jj,jk).le.fccd_dep(ji,jj)) then 
    32663238                        !! whole grid cell above CCD 
    32673239                        fq1      = fq0                               !! above lysocline, no Ca dissolves          (mol) 
    3268                         freminca = 0.0                               !! above lysocline, no Ca dissolves          (mol) 
     3240                        freminca(ji,jj) = 0.0                               !! above lysocline, no Ca dissolves          (mol) 
    32693241                        fccd(ji,jj) = real(jk)                       !! which is the last level above the CCD?    (#) 
    3270                      elseif (fdep.ge.fccd_dep) then 
     3242                     elseif (fsdepw(ji,jj,jk).ge.fccd_dep(ji,jj)) then 
    32713243                        !! 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) 
     3244                        fq1      = fq0 * exp(-(fse3t(ji,jj,jk) / xfastca))      !! how much CaCO3 leaves this box            (mol) 
     3245                        freminca(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk)                !! Ca remineralisation in this box           (mol) 
    32743246                     else 
    32753247                        !! partial grid cell below CCD 
    3276                         fq2      = fdep1 - fccd_dep                  !! amount of grid cell below CCD             (m) 
     3248                        fq2      = fdep1(ji,jj) - fccd_dep(ji,jj)                  !! amount of grid cell below CCD             (m) 
    32773249                        fq1      = fq0 * exp(-(fq2 / xfastca))       !! how much CaCO3 leaves this box            (mol) 
    3278                         freminca = (fq0 - fq1) / fthk                !! Ca remineralisation in this box           (mol) 
     3250                        freminca(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk)                !! Ca remineralisation in this box           (mol) 
    32793251                     endif 
    32803252                     ffastca(ji,jj) = fq1  
    32813253                  else 
    32823254                     !! 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               
     3255                     freminc(ji,jj)  = 0.0 
     3256                     freminn(ji,jj)  = 0.0 
     3257                     freminfe(ji,jj) = 0.0 
     3258                     freminsi(ji,jj) = 0.0 
     3259                     freminca(ji,jj) = 0.0               
    32883260                  endif 
    32893261 
     
    33343306                     !! this is the SURFACE OCEAN BOX (no remineralisation) 
    33353307                     !! 
    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 
     3308                     freminc(ji,jj)  = 0.0 
     3309                     freminn(ji,jj)  = 0.0 
     3310                     freminfe(ji,jj) = 0.0 
     3311                     freminsi(ji,jj) = 0.0 
     3312                     freminca(ji,jj) = 0.0 
     3313                  elseif (jk.le.mbathy(ji,jj)) then 
    33423314                     !! this is an OCEAN BOX (remineralise some material) 
    33433315                     !! 
    33443316                     !! === organic carbon === 
    33453317                     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) 
     3318                     fq1      = fq0 * ((fdep1(ji,jj)/fsdepw(ji,jj,jk))**fb_val)         !! how much organic C leaves this box        (mol) 
     3319                     freminc(ji,jj)  = (fq0 - fq1) / fse3t(ji,jj,jk)                   !! C remineralisation in this box            (mol) 
    33483320                     ffastc(ji,jj)  = fq1 
    33493321                     !! 
    33503322                     !! === organic nitrogen === 
    33513323                     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) 
     3324                     fq1      = fq0 * ((fdep1(ji,jj)/fsdepw(ji,jj,jk))**fb_val)         !! how much organic N leaves this box        (mol) 
     3325                     freminn(ji,jj)  = (fq0 - fq1) / fse3t(ji,jj,jk)                   !! N remineralisation in this box            (mol) 
    33543326                     ffastn(ji,jj)  = fq1 
    33553327                     !! 
    33563328                     !! === organic iron === 
    33573329                     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) 
     3330                     fq1      = fq0 * ((fdep1(ji,jj)/fsdepw(ji,jj,jk))**fb_val)         !! how much organic Fe leaves this box       (mol) 
     3331                     freminfe(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk)                   !! Fe remineralisation in this box           (mol) 
    33603332                     ffastfe(ji,jj) = fq1 
    33613333                     !! 
    33623334                     !! === biogenic silicon === 
    33633335                     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) 
     3336                     fq1      = fq0 * exp(-(fse3t(ji,jj,jk) / xfastsi))         !! how much  opal leaves this box            (mol) 
     3337                     freminsi(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk)                   !! Si remineralisation in this box           (mol) 
    33663338                     ffastsi(ji,jj) = fq1 
    33673339                     !! 
    33683340                     !! === biogenic calcium carbonate === 
    33693341                     fq0      = ffastca(ji,jj)                       !! how much CaCO3 enters this box            (mol) 
    3370                      if (fdep.le.ocal_ccd(ji,jj)) then 
     3342                     if (fsdepw(ji,jj,jk).le.ocal_ccd(ji,jj)) then 
    33713343                        !! whole grid cell above CCD 
    33723344                        fq1      = fq0                               !! above lysocline, no Ca dissolves          (mol) 
    3373                         freminca = 0.0                               !! above lysocline, no Ca dissolves          (mol) 
     3345                        freminca(ji,jj) = 0.0                               !! above lysocline, no Ca dissolves          (mol) 
    33743346                        fccd(ji,jj) = real(jk)                       !! which is the last level above the CCD?    (#) 
    3375                      elseif (fdep.ge.ocal_ccd(ji,jj)) then 
     3347                     elseif (fsdepw(ji,jj,jk).ge.ocal_ccd(ji,jj)) then 
    33763348                        !! 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) 
     3349                        fq1      = fq0 * exp(-(fse3t(ji,jj,jk) / xfastca))      !! how much CaCO3 leaves this box            (mol) 
     3350                        freminca(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk)                !! Ca remineralisation in this box           (mol) 
    33793351                     else 
    33803352                        !! partial grid cell below CCD 
    3381                         fq2      = fdep1 - ocal_ccd(ji,jj)           !! amount of grid cell below CCD             (m) 
     3353                        fq2      = fdep1(ji,jj) - ocal_ccd(ji,jj)           !! amount of grid cell below CCD             (m) 
    33823354                        fq1      = fq0 * exp(-(fq2 / xfastca))       !! how much CaCO3 leaves this box            (mol) 
    3383                         freminca = (fq0 - fq1) / fthk                !! Ca remineralisation in this box           (mol) 
     3355                        freminca(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk)                !! Ca remineralisation in this box           (mol) 
    33843356                     endif 
    33853357                     ffastca(ji,jj) = fq1  
    33863358                  else 
    33873359                     !! 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               
     3360                     freminc(ji,jj)  = 0.0 
     3361                     freminn(ji,jj)  = 0.0 
     3362                     freminfe(ji,jj) = 0.0 
     3363                     freminsi(ji,jj) = 0.0 
     3364                     freminca(ji,jj) = 0.0               
    33933365                  endif 
    33943366 
     
    34063378               !! 
    34073379               !! === organic carbon ===                          (diatom and mesozooplankton mortality) 
    3408                ffastc(ji,jj)  = ffastc(ji,jj)  + (ftempc  * fthk) 
     3380               ffastc(ji,jj)  = ffastc(ji,jj)  + (ftempc(ji,jj)  * fse3t(ji,jj,jk)) 
    34093381               !! 
    34103382               !! === organic nitrogen ===                        (diatom and mesozooplankton mortality) 
    3411                ffastn(ji,jj)  = ffastn(ji,jj)  + (ftempn  * fthk) 
     3383               ffastn(ji,jj)  = ffastn(ji,jj)  + (ftempn(ji,jj)  * fse3t(ji,jj,jk)) 
    34123384               !! 
    34133385               !! === organic iron ===                            (diatom and mesozooplankton mortality) 
    3414                ffastfe(ji,jj) = ffastfe(ji,jj) + (ftempfe * fthk) 
     3386               ffastfe(ji,jj) = ffastfe(ji,jj) + (ftempfe(ji,jj) * fse3t(ji,jj,jk)) 
    34153387               !! 
    34163388               !! === biogenic silicon ===                        (diatom mortality and grazed diatoms) 
    3417                ffastsi(ji,jj) = ffastsi(ji,jj) + (ftempsi * fthk) 
     3389               ffastsi(ji,jj) = ffastsi(ji,jj) + (ftempsi(ji,jj) * fse3t(ji,jj,jk)) 
    34183390               !! 
    34193391               !! === biogenic calcium carbonate ===              (latitudinally-based fraction of total primary production) 
    3420                ffastca(ji,jj) = ffastca(ji,jj) + (ftempca * fthk) 
     3392               ffastca(ji,jj) = ffastca(ji,jj) + (ftempca(ji,jj) * fse3t(ji,jj,jk)) 
    34213393 
    34223394               !!---------------------------------------------------------------------- 
     
    34563428               !!---------------------------------------------------------------------- 
    34573429               !!  
    3458                ffast2slowc  = 0.0 
    3459                ffast2slown  = 0.0 
    3460                ffast2slowfe = 0.0 
    3461                !! 
    3462                if (jk.eq.jmbathy) then 
     3430               ffast2slowc(ji,jj)  = 0.0 
     3431               ffast2slown(ji,jj)  = 0.0 
     3432! I don't think this is used - marc 10/4/17 
     3433!               ffast2slowfe(ji,jj) = 0.0 
     3434               !! 
     3435               if (jk.eq.mbathy(ji,jj)) then 
    34633436                  !! this is the BOTTOM OCEAN BOX (remineralise everything) 
    34643437                  !! 
     
    34673440                  !! === organic carbon === 
    34683441                  if (jfdfate.eq.0 .and. jorgben.eq.0) then 
    3469                      freminc  = freminc + (ffastc(ji,jj) / fthk)    !! C remineralisation in this box            (mol/m3) 
     3442                     freminc(ji,jj)  = freminc(ji,jj) + (ffastc(ji,jj) / fse3t(ji,jj,jk))    !! C remineralisation in this box            (mol/m3) 
    34703443                  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 
     3444                     ffast2slowc(ji,jj) = ffastc(ji,jj) / fse3t(ji,jj,jk)             !! fast C -> slow C                          (mol/m3) 
     3445                     fslowc(ji,jj)      = fslowc(ji,jj) + ffast2slowc(ji,jj) 
    34733446                  elseif (jfdfate.eq.0 .and. jorgben.eq.1) then 
    34743447                     f_fbenin_c(ji,jj)  = ffastc(ji,jj)             !! fast C -> benthic C                       (mol/m2) 
     
    34793452                  !! === organic nitrogen === 
    34803453                  if (jfdfate.eq.0 .and. jorgben.eq.0) then 
    3481                      freminn  = freminn + (ffastn(ji,jj) / fthk)    !! N remineralisation in this box            (mol/m3) 
     3454                     freminn(ji,jj)  = freminn(ji,jj) + (ffastn(ji,jj) / fse3t(ji,jj,jk))    !! N remineralisation in this box            (mol/m3) 
    34823455                  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 
     3456                     ffast2slown(ji,jj) = ffastn(ji,jj) / fse3t(ji,jj,jk)             !! fast N -> slow N                          (mol/m3) 
     3457                     fslown(ji,jj)      = fslown(ji,jj) + ffast2slown(ji,jj) 
    34853458                  elseif (jfdfate.eq.0 .and. jorgben.eq.1) then 
    34863459                     f_fbenin_n(ji,jj)  = ffastn(ji,jj)             !! fast N -> benthic N                       (mol/m2) 
     
    34913464                  !! === organic iron === 
    34923465                  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) 
     3466                     freminfe(ji,jj) = freminfe(ji,jj) + (ffastfe(ji,jj) / fse3t(ji,jj,jk))  !! Fe remineralisation in this box           (mol/m3) 
     3467! I don't think ffast2slowfe is used - marc 10/4/17 
     3468!                  elseif (jfdfate.eq.1 .and. jorgben.eq.0) then 
     3469!                     ffast2slowfe(ji,jj) = ffastn(ji,jj) / fse3t(ji,jj,jk)            !! fast Fe -> slow Fe                        (mol/m3) 
    34963470                  elseif (jfdfate.eq.0 .and. jorgben.eq.1) then 
    34973471                     f_fbenin_fe(ji,jj) = ffastfe(ji,jj)            !! fast Fe -> benthic Fe                     (mol/m2) 
     
    35023476                  !! === biogenic silicon === 
    35033477                  if (jinorgben.eq.0) then 
    3504                      freminsi = freminsi + (ffastsi(ji,jj) / fthk)  !! Si remineralisation in this box           (mol/m3) 
     3478                     freminsi(ji,jj) = freminsi(ji,jj) + (ffastsi(ji,jj) / fse3t(ji,jj,jk))  !! Si remineralisation in this box           (mol/m3) 
    35053479                  elseif (jinorgben.eq.1) then 
    35063480                     f_fbenin_si(ji,jj) = ffastsi(ji,jj)            !! fast Si -> benthic Si                     (mol/m2) 
     
    35113485                  !! === biogenic calcium carbonate === 
    35123486                  if (jinorgben.eq.0) then 
    3513                      freminca = freminca + (ffastca(ji,jj) / fthk)  !! Ca remineralisation in this box           (mol/m3)  
     3487                     freminca(ji,jj) = freminca(ji,jj) + (ffastca(ji,jj) / fse3t(ji,jj,jk))  !! Ca remineralisation in this box           (mol/m3)  
    35143488                  elseif (jinorgben.eq.1) then 
    35153489                     f_fbenin_ca(ji,jj) = ffastca(ji,jj)            !! fast Ca -> benthic Ca                     (mol/m2) 
     
    35253499                  !!---------------------------------------------------------------------- 
    35263500                  !! 
    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) 
     3501                  fofd_n(ji,jj)  = fofd_n(ji,jj)  + (freminn(ji,jj)  * fse3t(ji,jj,jk)) 
     3502                  fofd_si(ji,jj) = fofd_si(ji,jj) + (freminsi(ji,jj) * fse3t(ji,jj,jk)) 
     3503                  fofd_fe(ji,jj) = fofd_fe(ji,jj) + (freminfe(ji,jj) * fse3t(ji,jj,jk)) 
    35303504#  if defined key_roam 
    3531                   fofd_c(ji,jj)  = fofd_c(ji,jj)  + (freminc  * fthk) 
     3505                  fofd_c(ji,jj)  = fofd_c(ji,jj)  + (freminc(ji,jj)  * fse3t(ji,jj,jk)) 
    35323506#  endif 
    35333507               endif 
     
    35393513               !! 
    35403514               !! update fast-sinking regeneration arrays 
    3541                fregenfast(ji,jj)   = fregenfast(ji,jj)   + (freminn  * fthk) 
    3542                fregenfastsi(ji,jj) = fregenfastsi(ji,jj) + (freminsi * fthk) 
     3515               fregenfast(ji,jj)   = fregenfast(ji,jj)   + (freminn(ji,jj)  * fse3t(ji,jj,jk)) 
     3516               fregenfastsi(ji,jj) = fregenfastsi(ji,jj) + (freminsi(ji,jj) * fse3t(ji,jj,jk)) 
    35433517# if defined key_roam 
    3544                fregenfastc(ji,jj)  = fregenfastc(ji,jj)  + (freminc  * fthk) 
     3518               fregenfastc(ji,jj)  = fregenfastc(ji,jj)  + (freminc(ji,jj)  * fse3t(ji,jj,jk)) 
    35453519# endif 
    35463520 
     
    35493523               !!---------------------------------------------------------------------- 
    35503524               !! 
    3551                if (jk.eq.jmbathy) then 
     3525               if (jk.eq.mbathy(ji,jj)) then 
    35523526                  !! 
    35533527                  !! organic components 
     
    35643538                     !! 
    35653539                     !! account for CaCO3 that dissolves when it shouldn't 
    3566                      if ( fdep .le. fccd_dep ) then 
     3540                     if ( fsdepw(ji,jj,jk) .le. fccd_dep(ji,jj) ) then 
    35673541                        f_benout_lyso_ca(ji,jj) = xsedca * zn_sed_ca(ji,jj) 
    35683542                     endif 
     
    35813555               !!---------------------------------------------------------------------- 
    35823556               !! 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) ) 
     3557               btra(ji,jj,jpchn) = b0 * ( & 
     3558                 + ((frn(ji,jj) * fprn(ji,jj) * zphn(ji,jj)) - fgmipn(ji,jj) - fgmepn(ji,jj) - fdpn(ji,jj) - fdpn2(ji,jj)) * (fthetan(ji,jj) / xxi) ) 
     3559               btra(ji,jj,jpchd) = b0 * ( & 
     3560                 + ((frd(ji,jj) * fprd(ji,jj) * zphd(ji,jj)) - fgmepd(ji,jj) - fdpd(ji,jj) - fdpd2(ji,jj)) * (fthetad(ji,jj) / xxi) ) 
    35873561               !! 
    35883562               !!---------------------------------------------------------------------- 
    35893563               !! 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 ) 
     3564               btra(ji,jj,jpphn) = b0 * ( & 
     3565                 + (fprn(ji,jj) * zphn(ji,jj)) - fgmipn(ji,jj) - fgmepn(ji,jj) - fdpn(ji,jj) - fdpn2(ji,jj) ) 
     3566               btra(ji,jj,jpphd) = b0 * ( & 
     3567                 + (fprd(ji,jj) * zphd(ji,jj)) - fgmepd(ji,jj) - fdpd(ji,jj) - fdpd2(ji,jj) ) 
     3568               btra(ji,jj,jppds) = b0 * ( & 
     3569                 + (fprds(ji,jj) * zpds(ji,jj)) - fgmepds(ji,jj) - fdpds(ji,jj) - fsdiss(ji,jj) - fdpds2(ji,jj) ) 
    35963570               !! 
    35973571               !!---------------------------------------------------------------------- 
    35983572               !! zooplankton 
    3599                btra(jpzmi) = b0 * ( & 
    3600                  + fmigrow - fgmezmi - fdzmi - fdzmi2 ) 
    3601                btra(jpzme) = b0 * ( & 
    3602                  + fmegrow - fdzme - fdzme2 ) 
     3573               btra(ji,jj,jpzmi) = b0 * ( & 
     3574                 + fmigrow(ji,jj) - fgmezmi(ji,jj) - fdzmi(ji,jj) - fdzmi2(ji,jj) ) 
     3575               btra(ji,jj,jpzme) = b0 * ( & 
     3576                 + fmegrow(ji,jj) - fdzme(ji,jj) - fdzme2(ji,jj) ) 
    36033577               !! 
    36043578               !!---------------------------------------------------------------------- 
    36053579               !! 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 
     3580               btra(ji,jj,jpdet) = b0 * ( & 
     3581                 + fdpn(ji,jj) + ((1.0 - xfdfrac1) * fdpd(ji,jj))              &  ! mort. losses 
     3582                 + fdzmi(ji,jj) + ((1.0 - xfdfrac2) * fdzme(ji,jj))            &  ! mort. losses 
     3583                 + ((1.0 - xbetan) * (finmi(ji,jj) + finme(ji,jj)))            &  ! assim. inefficiency 
     3584                 - fgmid(ji,jj) - fgmed(ji,jj) - fdd(ji,jj)                           &  ! grazing and remin. 
     3585                 + ffast2slown(ji,jj) )                                    ! seafloor fast->slow 
    36123586               !! 
    36133587               !!---------------------------------------------------------------------- 
    36143588               !! dissolved inorganic nitrogen nutrient 
    36153589               fn_cons = 0.0  & 
    3616                  - (fprn * zphn) - (fprd * zphd)                    ! primary production 
     3590                 - (fprn(ji,jj) * zphn(ji,jj)) - (fprd(ji,jj) * zphd(ji,jj))                    ! primary production 
    36173591               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 
     3592                 + (xphi * (fgmipn(ji,jj) + fgmid(ji,jj)))                     &  ! messy feeding remin. 
     3593                 + (xphi * (fgmepn(ji,jj) + fgmepd(ji,jj) + fgmezmi(ji,jj) + fgmed(ji,jj)))  &  ! messy feeding remin. 
     3594                 + fmiexcr(ji,jj) + fmeexcr(ji,jj) + fdd(ji,jj) + freminn(ji,jj)             &  ! excretion and remin. 
     3595                 + fdpn2(ji,jj) + fdpd2(ji,jj) + fdzmi2(ji,jj) + fdzme2(ji,jj)                  ! metab. losses 
    36223596               !!  
    36233597               !! riverine flux 
    36243598               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 
     3599                  f_riv_loc_n(ji,jj) = f_riv_n(ji,jj) * friver_dep(jk,mbathy(ji,jj)) / fse3t(ji,jj,jk) 
     3600                  fn_prod = fn_prod + f_riv_loc_n(ji,jj) 
    36273601               endif 
    36283602               !!   
    36293603               !! 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) 
     3604               if (jk.eq.mbathy(ji,jj) .and. jorgben.eq.1 .and. ibenthic.eq.1) then 
     3605                  fn_prod = fn_prod + (f_benout_n(ji,jj) / fse3t(ji,jj,jk)) 
    36323606               endif 
    36333607               !! 
    3634                btra(jpdin) = b0 * ( & 
     3608               btra(ji,jj,jpdin) = b0 * ( & 
    36353609                 fn_prod + fn_cons ) 
    36363610               !! 
    3637                fnit_cons(ji,jj) = fnit_cons(ji,jj) + ( fthk * (  &  ! consumption of dissolved nitrogen 
     3611               fnit_cons(ji,jj) = fnit_cons(ji,jj) + ( fse3t(ji,jj,jk) * (  &  ! consumption of dissolved nitrogen 
    36383612                 fn_cons ) ) 
    3639                fnit_prod(ji,jj) = fnit_prod(ji,jj) + ( fthk * (  &  ! production of dissolved nitrogen 
     3613               fnit_prod(ji,jj) = fnit_prod(ji,jj) + ( fse3t(ji,jj,jk) * (  &  ! production of dissolved nitrogen 
    36403614                 fn_prod ) ) 
    36413615               !! 
     
    36433617               !! dissolved silicic acid nutrient 
    36443618               fs_cons = 0.0  & 
    3645                  - (fprds * zpds)                                   ! opal production 
     3619                 - (fprds(ji,jj) * zpds(ji,jj))                                   ! opal production 
    36463620               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 
     3621                 + fsdiss(ji,jj)                                        &  ! opal dissolution 
     3622                 + ((1.0 - xfdfrac1) * fdpds(ji,jj))                    &  ! mort. loss 
     3623                 + ((1.0 - xfdfrac3) * fgmepds(ji,jj))                  &  ! egestion of grazed Si 
     3624                 + freminsi(ji,jj) + fdpds2(ji,jj)                                ! fast diss. and metab. losses 
    36513625               !!  
    36523626               !! riverine flux 
    36533627               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 
     3628                  f_riv_loc_si(ji,jj) = f_riv_si(ji,jj) * friver_dep(jk,mbathy(ji,jj)) / fse3t(ji,jj,jk) 
     3629                  fs_prod = fs_prod + f_riv_loc_si(ji,jj) 
    36563630               endif 
    36573631               !!   
    36583632               !! 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) 
     3633               if (jk.eq.mbathy(ji,jj) .and. jinorgben.eq.1 .and. ibenthic.eq.1) then 
     3634                  fs_prod = fs_prod + (f_benout_si(ji,jj) / fse3t(ji,jj,jk)) 
    36613635               endif 
    36623636               !! 
    3663                btra(jpsil) = b0 * ( & 
     3637               btra(ji,jj,jpsil) = b0 * ( & 
    36643638                 fs_prod + fs_cons ) 
    36653639               !! 
    3666                fsil_cons(ji,jj) = fsil_cons(ji,jj) + ( fthk * (  &  ! consumption of dissolved silicon 
     3640               fsil_cons(ji,jj) = fsil_cons(ji,jj) + ( fse3t(ji,jj,jk) * (  &  ! consumption of dissolved silicon 
    36673641                 fs_cons ) ) 
    3668                fsil_prod(ji,jj) = fsil_prod(ji,jj) + ( fthk * (  &  ! production of dissolved silicon 
     3642               fsil_prod(ji,jj) = fsil_prod(ji,jj) + ( fse3t(ji,jj,jk) * (  &  ! production of dissolved silicon 
    36693643                 fs_prod ) ) 
    36703644               !! 
    36713645               !!---------------------------------------------------------------------- 
    36723646               !! dissolved "iron" nutrient 
    3673                btra(jpfer) = b0 * ( & 
    3674                + (xrfn * btra(jpdin)) + ffetop + ffebot - ffescav ) 
     3647               btra(ji,jj,jpfer) = b0 * ( & 
     3648               + (xrfn * btra(ji,jj,jpdin)) + ffetop(ji,jj) + ffebot(ji,jj) - ffescav(ji,jj) ) 
    36753649 
    36763650# if defined key_roam 
     
    36783652               !!---------------------------------------------------------------------- 
    36793653               !! 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 
     3654               btra(ji,jj,jpdtc) = b0 * ( & 
     3655                 + (xthetapn * fdpn(ji,jj)) + ((1.0 - xfdfrac1) * (xthetapd * fdpd(ji,jj)))      &  ! mort. losses 
     3656                 + (xthetazmi * fdzmi(ji,jj)) + ((1.0 - xfdfrac2) * (xthetazme * fdzme(ji,jj)))  &  ! mort. losses 
     3657                 + ((1.0 - xbetac) * (ficmi(ji,jj) + ficme(ji,jj)))                              &  ! assim. inefficiency 
     3658                 - fgmidc(ji,jj) - fgmedc(ji,jj) - fddc(ji,jj)                                          &  ! grazing and remin. 
     3659                 + ffast2slowc(ji,jj) )                                                      ! seafloor fast->slow 
    36863660               !! 
    36873661               !!---------------------------------------------------------------------- 
    36883662               !! dissolved inorganic carbon 
    36893663               fc_cons = 0.0  & 
    3690                  - (xthetapn * fprn * zphn) - (xthetapd * fprd * zphd)                ! primary production 
     3664                 - (xthetapn * fprn(ji,jj) * zphn(ji,jj)) - (xthetapd * fprd(ji,jj) * zphd(ji,jj))                ! primary production 
    36913665               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 
     3666                 + (xthetapn * xphi * fgmipn(ji,jj)) + (xphi * fgmidc(ji,jj))                    &  ! messy feeding remin 
     3667                 + (xthetapn * xphi * fgmepn(ji,jj)) + (xthetapd * xphi * fgmepd(ji,jj))         &  ! messy feeding remin 
     3668                 + (xthetazmi * xphi * fgmezmi(ji,jj)) + (xphi * fgmedc(ji,jj))                  &  ! messy feeding remin 
     3669                 + fmiresp(ji,jj) + fmeresp(ji,jj) + fddc(ji,jj) + freminc(ji,jj) + (xthetapn * fdpn2(ji,jj))         &  ! resp., remin., losses 
     3670                 + (xthetapd * fdpd2(ji,jj)) + (xthetazmi * fdzmi2(ji,jj))                       &  ! losses 
     3671                 + (xthetazme * fdzme2(ji,jj))                                               ! losses 
    36983672               !!  
    36993673               !! riverine flux 
    37003674               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 
     3675                  f_riv_loc_c(ji,jj) = f_riv_c(ji,jj) * friver_dep(jk,mbathy(ji,jj)) / fse3t(ji,jj,jk) 
     3676                  fc_prod = fc_prod + f_riv_loc_c(ji,jj) 
    37033677               endif 
    37043678               !!   
    37053679               !! 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) 
     3680               if (jk.eq.mbathy(ji,jj) .and. jorgben.eq.1 .and. ibenthic.eq.1) then 
     3681                  fc_prod = fc_prod + (f_benout_c(ji,jj) / fse3t(ji,jj,jk)) 
    37083682               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) 
     3683               if (jk.eq.mbathy(ji,jj) .and. jinorgben.eq.1 .and. ibenthic.eq.1) then 
     3684                  fc_prod = fc_prod + (f_benout_ca(ji,jj) / fse3t(ji,jj,jk)) 
    37113685               endif 
    37123686               !! 
     
    37153689               !! 
    37163690               !! CaCO3 
    3717                fc_prod = fc_prod - ftempca + freminca 
     3691               fc_prod = fc_prod - ftempca(ji,jj) + freminca(ji,jj) 
    37183692               !!  
    37193693               !! riverine flux 
     
    37223696               endif 
    37233697               !! 
    3724                btra(jpdic) = b0 * ( & 
     3698               btra(ji,jj,jpdic) = b0 * ( & 
    37253699                 fc_prod + fc_cons ) 
    37263700               !! 
    3727                fcar_cons(ji,jj) = fcar_cons(ji,jj) + ( fthk * (  &  ! consumption of dissolved carbon 
     3701               fcar_cons(ji,jj) = fcar_cons(ji,jj) + ( fse3t(ji,jj,jk) * (  &  ! consumption of dissolved carbon 
    37283702                 fc_cons ) ) 
    3729                fcar_prod(ji,jj) = fcar_prod(ji,jj) + ( fthk * (  &  ! production of dissolved carbon 
     3703               fcar_prod(ji,jj) = fcar_prod(ji,jj) + ( fse3t(ji,jj,jk) * (  &  ! production of dissolved carbon 
    37303704                 fc_prod ) ) 
    37313705               !! 
     
    37333707               !! alkalinity 
    37343708               fa_prod = 0.0  & 
    3735                  + (2.0 * freminca)                                                   ! CaCO3 dissolution 
     3709                 + (2.0 * freminca(ji,jj))                                                   ! CaCO3 dissolution 
    37363710               fa_cons = 0.0  & 
    3737                  - (2.0 * ftempca)                                                    ! CaCO3 production 
     3711                 - (2.0 * ftempca(ji,jj))                                                    ! CaCO3 production 
    37383712               !!  
    37393713               !! riverine flux 
    37403714               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 
     3715                  f_riv_loc_alk(ji,jj) = f_riv_alk(ji,jj) * friver_dep(jk,mbathy(ji,jj)) / fse3t(ji,jj,jk) 
     3716                  fa_prod = fa_prod + f_riv_loc_alk(ji,jj) 
    37433717               endif 
    37443718               !!   
    37453719               !! 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) 
     3720               if (jk.eq.mbathy(ji,jj) .and. jinorgben.eq.1 .and. ibenthic.eq.1) then 
     3721                  fa_prod = fa_prod + (2.0 * f_benout_ca(ji,jj) / fse3t(ji,jj,jk)) 
    37483722               endif 
    37493723               !! 
    3750                btra(jpalk) = b0 * ( & 
     3724               btra(ji,jj,jpalk) = b0 * ( & 
    37513725                 fa_prod + fa_cons ) 
    37523726               !! 
    37533727               !!---------------------------------------------------------------------- 
    37543728               !! 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 
     3729               fo2_prod(ji,jj) = 0.0 & 
     3730                 + (xthetanit * fprn(ji,jj) * zphn(ji,jj))                                      & ! Pn primary production, N 
     3731                 + (xthetanit * fprd(ji,jj) * zphd(ji,jj))                                      & ! Pd primary production, N 
     3732                 + (xthetarem * xthetapn * fprn(ji,jj) * zphn(ji,jj))                           & ! Pn primary production, C 
     3733                 + (xthetarem * xthetapd * fprd(ji,jj) * zphd(ji,jj))                             ! Pd primary production, C 
     3734               fo2_ncons(ji,jj) = 0.0 & 
     3735                 - (xthetanit * xphi * fgmipn(ji,jj))                                    & ! Pn messy feeding remin., N 
     3736                 - (xthetanit * xphi * fgmid(ji,jj))                                     & ! D  messy feeding remin., N 
     3737                 - (xthetanit * xphi * fgmepn(ji,jj))                                    & ! Pn messy feeding remin., N 
     3738                 - (xthetanit * xphi * fgmepd(ji,jj))                                    & ! Pd messy feeding remin., N 
     3739                 - (xthetanit * xphi * fgmezmi(ji,jj))                                   & ! Zi messy feeding remin., N 
     3740                 - (xthetanit * xphi * fgmed(ji,jj))                                     & ! D  messy feeding remin., N 
     3741                 - (xthetanit * fmiexcr(ji,jj))                                          & ! microzoo excretion, N 
     3742                 - (xthetanit * fmeexcr(ji,jj))                                          & ! mesozoo  excretion, N 
     3743                 - (xthetanit * fdd(ji,jj))                                              & ! slow detritus remin., N  
     3744                 - (xthetanit * freminn(ji,jj))                                          & ! fast detritus remin., N 
     3745                 - (xthetanit * fdpn2(ji,jj))                                            & ! Pn  losses, N 
     3746                 - (xthetanit * fdpd2(ji,jj))                                            & ! Pd  losses, N 
     3747                 - (xthetanit * fdzmi2(ji,jj))                                           & ! Zmi losses, N 
     3748                 - (xthetanit * fdzme2(ji,jj))                                             ! Zme losses, N 
    37753749               !!   
    37763750               !! 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) 
     3751               if (jk.eq.mbathy(ji,jj) .and. jorgben.eq.1 .and. ibenthic.eq.1) then 
     3752                  fo2_ncons(ji,jj) = fo2_ncons(ji,jj) - (xthetanit * f_benout_n(ji,jj) / fse3t(ji,jj,jk)) 
    37793753               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 
     3754               fo2_ccons(ji,jj) = 0.0 & 
     3755                 - (xthetarem * xthetapn * xphi * fgmipn(ji,jj))                         & ! Pn messy feeding remin., C 
     3756                 - (xthetarem * xphi * fgmidc(ji,jj))                                    & ! D  messy feeding remin., C 
     3757                 - (xthetarem * xthetapn * xphi * fgmepn(ji,jj))                         & ! Pn messy feeding remin., C 
     3758                 - (xthetarem * xthetapd * xphi * fgmepd(ji,jj))                         & ! Pd messy feeding remin., C 
     3759                 - (xthetarem * xthetazmi * xphi * fgmezmi(ji,jj))                       & ! Zi messy feeding remin., C 
     3760                 - (xthetarem * xphi * fgmedc(ji,jj))                                    & ! D  messy feeding remin., C 
     3761                 - (xthetarem * fmiresp(ji,jj))                                          & ! microzoo respiration, C 
     3762                 - (xthetarem * fmeresp(ji,jj))                                          & ! mesozoo  respiration, C 
     3763                 - (xthetarem * fddc(ji,jj))                                             & ! slow detritus remin., C 
     3764                 - (xthetarem * freminc(ji,jj))                                          & ! fast detritus remin., C 
     3765                 - (xthetarem * xthetapn * fdpn2(ji,jj))                                 & ! Pn  losses, C 
     3766                 - (xthetarem * xthetapd * fdpd2(ji,jj))                                 & ! Pd  losses, C 
     3767                 - (xthetarem * xthetazmi * fdzmi2(ji,jj))                               & ! Zmi losses, C 
     3768                 - (xthetarem * xthetazme * fdzme2(ji,jj))                                 ! Zme losses, C 
    37953769               !!   
    37963770               !! 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) 
     3771               if (jk.eq.mbathy(ji,jj) .and. jorgben.eq.1 .and. ibenthic.eq.1) then 
     3772                  fo2_ccons(ji,jj) = fo2_ccons(ji,jj) - (xthetarem * f_benout_c(ji,jj) / fse3t(ji,jj,jk)) 
    37993773               endif 
    3800                fo2_cons = fo2_ncons + fo2_ccons 
     3774               fo2_cons(ji,jj) = fo2_ncons(ji,jj) + fo2_ccons(ji,jj) 
    38013775               !! 
    38023776               !! 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 ) 
     3777               if (zoxy(ji,jj).lt.xo2min) then  ! deficient O2; production fluxes only 
     3778                  btra(ji,jj,jpoxy) = b0 * ( & 
     3779                    fo2_prod(ji,jj) ) 
     3780                  foxy_prod(ji,jj) = foxy_prod(ji,jj) + ( fse3t(ji,jj,jk) * fo2_prod(ji,jj) ) 
     3781                  foxy_anox(ji,jj) = foxy_anox(ji,jj) + ( fse3t(ji,jj,jk) * fo2_cons(ji,jj) ) 
    38083782               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 ) 
     3783                  btra(ji,jj,jpoxy) = b0 * ( & 
     3784                    fo2_prod(ji,jj) + fo2_cons(ji,jj) ) 
     3785                  foxy_prod(ji,jj) = foxy_prod(ji,jj) + ( fse3t(ji,jj,jk) * fo2_prod(ji,jj) ) 
     3786                  foxy_cons(ji,jj) = foxy_cons(ji,jj) + ( fse3t(ji,jj,jk) * fo2_cons(ji,jj) ) 
    38133787               endif 
    38143788               !! 
     
    38173791                  !! 
    38183792                  !! CO2 flux 
    3819                   btra(jpdic) = btra(jpdic) + (b0 * f_co2flux) 
     3793                  btra(ji,jj,jpdic) = btra(ji,jj,jpdic) + (b0 * f_co2flux(ji,jj)) 
    38203794                  !! 
    38213795                  !! O2 flux (mol/m3/s -> mmol/m3/d) 
    3822                   btra(jpoxy) = btra(jpoxy) + (b0 * f_o2flux) 
     3796                  btra(ji,jj,jpoxy) = btra(ji,jj,jpoxy) + (b0 * f_o2flux(ji,jj)) 
    38233797               endif 
    38243798# endif 
     
    38283802               if (idf.eq.1.AND.idfval.eq.1) then 
    38293803                  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) 
     3804                  IF (lwp) write (numout,*) 'btra(ji,jj,jpchn)(',jk,')  = ', btra(ji,jj,jpchn) 
     3805                  IF (lwp) write (numout,*) 'btra(ji,jj,jpchd)(',jk,')  = ', btra(ji,jj,jpchd) 
     3806                  IF (lwp) write (numout,*) 'btra(ji,jj,jpphn)(',jk,')  = ', btra(ji,jj,jpphn) 
     3807                  IF (lwp) write (numout,*) 'btra(ji,jj,jpphd)(',jk,')  = ', btra(ji,jj,jpphd) 
     3808                  IF (lwp) write (numout,*) 'btra(ji,jj,jppds)(',jk,')  = ', btra(ji,jj,jppds) 
     3809                  IF (lwp) write (numout,*) 'btra(ji,jj,jpzmi)(',jk,')  = ', btra(ji,jj,jpzmi) 
     3810                  IF (lwp) write (numout,*) 'btra(ji,jj,jpzme)(',jk,')  = ', btra(ji,jj,jpzme) 
     3811                  IF (lwp) write (numout,*) 'btra(ji,jj,jpdet)(',jk,')  = ', btra(ji,jj,jpdet) 
     3812                  IF (lwp) write (numout,*) 'btra(ji,jj,jpdin)(',jk,')  = ', btra(ji,jj,jpdin) 
     3813                  IF (lwp) write (numout,*) 'btra(ji,jj,jpsil)(',jk,')  = ', btra(ji,jj,jpsil) 
     3814                  IF (lwp) write (numout,*) 'btra(ji,jj,jpfer)(',jk,')  = ', btra(ji,jj,jpfer) 
    38413815#  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) 
     3816                  IF (lwp) write (numout,*) 'btra(ji,jj,jpdtc)(',jk,')  = ', btra(ji,jj,jpdtc) 
     3817                  IF (lwp) write (numout,*) 'btra(ji,jj,jpdic)(',jk,')  = ', btra(ji,jj,jpdic) 
     3818                  IF (lwp) write (numout,*) 'btra(ji,jj,jpalk)(',jk,')  = ', btra(ji,jj,jpalk) 
     3819                  IF (lwp) write (numout,*) 'btra(ji,jj,jpoxy)(',jk,')  = ', btra(ji,jj,jpoxy) 
    38463820#  endif 
    38473821               endif 
     
    38543828               !! === nitrogen === 
    38553829               fflx_n(ji,jj)  = fflx_n(ji,jj)  + & 
    3856                   fthk * ( btra(jpphn) + btra(jpphd) + btra(jpzmi) + btra(jpzme) + btra(jpdet) + btra(jpdin) ) 
     3830                  fse3t(ji,jj,jk) * ( btra(ji,jj,jpphn) + btra(ji,jj,jpphd) + btra(ji,jj,jpzmi) + btra(ji,jj,jpzme) + btra(ji,jj,jpdet) + btra(ji,jj,jpdin) ) 
    38573831               !! === silicon === 
    38583832               fflx_si(ji,jj) = fflx_si(ji,jj) + & 
    3859                   fthk * ( btra(jppds) + btra(jpsil) ) 
     3833                  fse3t(ji,jj,jk) * ( btra(ji,jj,jppds) + btra(ji,jj,jpsil) ) 
    38603834               !! === iron === 
    38613835               fflx_fe(ji,jj) = fflx_fe(ji,jj) + & 
    3862                   fthk * ( ( xrfn * ( btra(jpphn) + btra(jpphd) + btra(jpzmi) + btra(jpzme) + btra(jpdet)) ) + btra(jpfer) ) 
     3836                  fse3t(ji,jj,jk) * ( ( xrfn * ( btra(ji,jj,jpphn) + btra(ji,jj,jpphd) + btra(ji,jj,jpzmi) + btra(ji,jj,jpzme) + btra(ji,jj,jpdet)) ) + btra(ji,jj,jpfer) ) 
    38633837# if defined key_roam 
    38643838               !! === carbon === 
    38653839               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) ) 
     3840                  fse3t(ji,jj,jk) * ( (xthetapn * btra(ji,jj,jpphn)) + (xthetapd * btra(ji,jj,jpphd)) + & 
     3841                  (xthetazmi * btra(ji,jj,jpzmi)) + (xthetazme * btra(ji,jj,jpzme)) + btra(ji,jj,jpdtc) + btra(ji,jj,jpdic) ) 
    38683842               !! === alkalinity === 
    38693843               fflx_a(ji,jj)  = fflx_a(ji,jj)  + & 
    3870                   fthk * ( btra(jpalk) ) 
     3844                  fse3t(ji,jj,jk) * ( btra(ji,jj,jpalk) ) 
    38713845               !! === oxygen === 
    38723846               fflx_o2(ji,jj) = fflx_o2(ji,jj) + & 
    3873                   fthk * ( btra(jpoxy) ) 
     3847                  fse3t(ji,jj,jk) * ( btra(ji,jj,jpoxy) ) 
    38743848# endif 
    38753849 
     
    38953869# endif                
    38963870               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.) 
     3871                  tra(ji,jj,jk,jpchn) = tra(ji,jj,jk,jpchn) + (btra(ji,jj,jpchn) / 86400.) 
     3872                  tra(ji,jj,jk,jpchd) = tra(ji,jj,jk,jpchd) + (btra(ji,jj,jpchd) / 86400.) 
     3873                  tra(ji,jj,jk,jpphn) = tra(ji,jj,jk,jpphn) + (btra(ji,jj,jpphn) / 86400.) 
     3874                  tra(ji,jj,jk,jpphd) = tra(ji,jj,jk,jpphd) + (btra(ji,jj,jpphd) / 86400.) 
     3875                  tra(ji,jj,jk,jppds) = tra(ji,jj,jk,jppds) + (btra(ji,jj,jppds) / 86400.) 
     3876                  tra(ji,jj,jk,jpzmi) = tra(ji,jj,jk,jpzmi) + (btra(ji,jj,jpzmi) / 86400.) 
     3877                  tra(ji,jj,jk,jpzme) = tra(ji,jj,jk,jpzme) + (btra(ji,jj,jpzme) / 86400.) 
     3878                  tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + (btra(ji,jj,jpdet) / 86400.) 
     3879                  tra(ji,jj,jk,jpdin) = tra(ji,jj,jk,jpdin) + (btra(ji,jj,jpdin) / 86400.) 
     3880                  tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) + (btra(ji,jj,jpsil) / 86400.) 
     3881                  tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + (btra(ji,jj,jpfer) / 86400.) 
    39083882# if defined key_roam 
    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.) 
     3883                  tra(ji,jj,jk,jpdtc) = tra(ji,jj,jk,jpdtc) + (btra(ji,jj,jpdtc) / 86400.) 
     3884                  tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + (btra(ji,jj,jpdic) / 86400.) 
     3885                  tra(ji,jj,jk,jpalk) = tra(ji,jj,jk,jpalk) + (btra(ji,jj,jpalk) / 86400.) 
     3886                  tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + (btra(ji,jj,jpoxy) / 86400.) 
    39133887# endif 
    39143888               endif                
     
    39163890               !! AXY (18/11/16): CMIP6 diagnostics 
    39173891               IF( med_diag%FBDDTALK%dgsave )  THEN 
    3918                   fbddtalk(ji,jj)  =  fbddtalk(ji,jj)  + (btra(jpalk) * fthk) 
     3892                  fbddtalk(ji,jj)  =  fbddtalk(ji,jj)  + (btra(ji,jj,jpalk) * fse3t(ji,jj,jk)) 
    39193893               ENDIF 
    39203894               IF( med_diag%FBDDTDIC%dgsave )  THEN 
    3921                   fbddtdic(ji,jj)  =  fbddtdic(ji,jj)  + (btra(jpdic) * fthk) 
     3895                  fbddtdic(ji,jj)  =  fbddtdic(ji,jj)  + (btra(ji,jj,jpdic) * fse3t(ji,jj,jk)) 
    39223896               ENDIF 
    39233897               IF( med_diag%FBDDTDIFE%dgsave ) THEN 
    3924                   fbddtdife(ji,jj) =  fbddtdife(ji,jj) + (btra(jpfer) * fthk) 
     3898                  fbddtdife(ji,jj) =  fbddtdife(ji,jj) + (btra(ji,jj,jpfer) * fse3t(ji,jj,jk)) 
    39253899               ENDIF 
    39263900               IF( med_diag%FBDDTDIN%dgsave )  THEN 
    3927                   fbddtdin(ji,jj)  =  fbddtdin(ji,jj)  + (btra(jpdin) * fthk) 
     3901                  fbddtdin(ji,jj)  =  fbddtdin(ji,jj)  + (btra(ji,jj,jpdin) * fse3t(ji,jj,jk)) 
    39283902               ENDIF 
    39293903               IF( med_diag%FBDDTDISI%dgsave ) THEN 
    3930                   fbddtdisi(ji,jj) =  fbddtdisi(ji,jj) + (btra(jpsil) * fthk) 
     3904                  fbddtdisi(ji,jj) =  fbddtdisi(ji,jj) + (btra(ji,jj,jpsil) * fse3t(ji,jj,jk)) 
    39313905               ENDIF 
    39323906          !! 
    39333907               IF( med_diag%BDDTALK3%dgsave )  THEN 
    3934                   bddtalk3(ji,jj,jk)  =  btra(jpalk) 
     3908                  bddtalk3(ji,jj,jk)  =  btra(ji,jj,jpalk) 
    39353909               ENDIF 
    39363910               IF( med_diag%BDDTDIC3%dgsave )  THEN 
    3937                   bddtdic3(ji,jj,jk)  =  btra(jpdic) 
     3911                  bddtdic3(ji,jj,jk)  =  btra(ji,jj,jpdic) 
    39383912               ENDIF 
    39393913               IF( med_diag%BDDTDIFE3%dgsave ) THEN 
    3940                   bddtdife3(ji,jj,jk) =  btra(jpfer) 
     3914                  bddtdife3(ji,jj,jk) =  btra(ji,jj,jpfer) 
    39413915               ENDIF 
    39423916               IF( med_diag%BDDTDIN3%dgsave )  THEN 
    3943                   bddtdin3(ji,jj,jk)  =  btra(jpdin) 
     3917                  bddtdin3(ji,jj,jk)  =  btra(ji,jj,jpdin) 
    39443918               ENDIF 
    39453919               IF( med_diag%BDDTDISI3%dgsave ) THEN 
    3946                   bddtdisi3(ji,jj,jk) =  btra(jpsil) 
     3920                  bddtdisi3(ji,jj,jk) =  btra(ji,jj,jpsil) 
    39473921               ENDIF 
    39483922 
     
    39603934               !! 
    39613935               DO jn = 1,jptra 
    3962                   fq0 = btra(jn) 
     3936                  fq0 = btra(ji,jj,jn) 
    39633937                  !! AXY (30/01/14): "isnan" problem on HECTOR 
    39643938                  !! if (fq0 /= fq0 ) then 
    39653939                  if ( ieee_is_nan( fq0 ) ) then 
    39663940                     !! there's a NaN here 
    3967                      if (lwp) write(numout,*) 'NAN detected in btra(', ji, ',', & 
     3941                     if (lwp) write(numout,*) 'NAN detected in btra(ji,jj,', ji, ',', & 
    39683942                     & jj, ',', jk, ',', jn, ') at time', kt 
    39693943           CALL ctl_stop( 'trcbio_medusa, NAN in btra field' ) 
     
    39933967               !!---------------------------------------------------------------------- 
    39943968               !! 
    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) 
     3969               !! fnit0 = btra(ji,jj,jpphn) + btra(ji,jj,jpphd) + btra(ji,jj,jpzmi) + btra(ji,jj,jpzme) + btra(ji,jj,jpdet) + btra(ji,jj,jpdin)  ! + ftempn(ji,jj) 
     3970               !! fsil0 = btra(ji,jj,jppds) + btra(ji,jj,jpsil)                              ! + ftempsi(ji,jj) 
     3971               !! ffer0 = (xrfn * fnit0) + btra(ji,jj,jpfer) 
    39983972# if defined key_roam 
    39993973               !! fcar0 = 0. 
     
    40274001               !! 
    40284002               IF(lwp) WRITE(numout,*) ' MEDUSA does not support key_trc_diabio' 
    4029                !!               trbio(ji,jj,jk, 1) = fprn 
     4003               !!               trbio(ji,jj,jk, 1) = fprn(ji,jj) 
    40304004# endif 
    40314005 
     
    40414015#   endif 
    40424016                  IF ( med_diag%PRN%dgsave ) THEN 
    4043                       fprn2d(ji,jj) = fprn2d(ji,jj) + (fprn  * zphn * fthk)  
     4017                      fprn2d(ji,jj) = fprn2d(ji,jj) + (fprn(ji,jj)  * zphn(ji,jj) * fse3t(ji,jj,jk))  
    40444018                  ENDIF 
    40454019                  IF ( med_diag%MPN%dgsave ) THEN 
    4046                       fdpn2d(ji,jj) = fdpn2d(ji,jj) + (fdpn         * fthk) 
     4020                      fdpn2d(ji,jj) = fdpn2d(ji,jj) + (fdpn(ji,jj)         * fse3t(ji,jj,jk)) 
    40474021                  ENDIF 
    40484022                  IF ( med_diag%PRD%dgsave ) THEN 
    4049                       fprd2d(ji,jj) = fprd2d(ji,jj) + (fprd  * zphd * fthk) 
     4023                      fprd2d(ji,jj) = fprd2d(ji,jj) + (fprd(ji,jj)  * zphd(ji,jj) * fse3t(ji,jj,jk)) 
    40504024                  ENDIF 
    40514025                  IF( med_diag%MPD%dgsave ) THEN 
    4052                       fdpd2d(ji,jj) = fdpd2d(ji,jj) + (fdpd         * fthk)  
     4026                      fdpd2d(ji,jj) = fdpd2d(ji,jj) + (fdpd(ji,jj)         * fse3t(ji,jj,jk))  
    40534027                  ENDIF 
    40544028                  !  IF( med_diag%DSED%dgsave ) THEN 
     
    40564030                  !  ENDIF 
    40574031                  IF( med_diag%OPAL%dgsave ) THEN 
    4058                       fprds2d(ji,jj) = fprds2d(ji,jj) + (fprds * zpds * fthk)  
     4032                      fprds2d(ji,jj) = fprds2d(ji,jj) + (fprds(ji,jj) * zpds(ji,jj) * fse3t(ji,jj,jk))  
    40594033                  ENDIF 
    40604034                  IF( med_diag%OPALDISS%dgsave ) THEN 
    4061                       fsdiss2d(ji,jj) = fsdiss2d(ji,jj) + (fsdiss  * fthk 
     4035                      fsdiss2d(ji,jj) = fsdiss2d(ji,jj) + (fsdiss(ji,jj)  * fse3t(ji,jj,jk) 
    40624036                  ENDIF 
    40634037                  IF( med_diag%GMIPn%dgsave ) THEN 
    4064                       fgmipn2d(ji,jj) = fgmipn2d(ji,jj) + (fgmipn  * fthk)  
     4038                      fgmipn2d(ji,jj) = fgmipn2d(ji,jj) + (fgmipn(ji,jj)  * fse3t(ji,jj,jk))  
    40654039                  ENDIF 
    40664040                  IF( med_diag%GMID%dgsave ) THEN 
    4067                       fgmid2d(ji,jj) = fgmid2d(ji,jj) + (fgmid   * fthk)  
     4041                      fgmid2d(ji,jj) = fgmid2d(ji,jj) + (fgmid(ji,jj)   * fse3t(ji,jj,jk))  
    40684042                  ENDIF 
    40694043                  IF( med_diag%MZMI%dgsave ) THEN 
    4070                       fdzmi2d(ji,jj) = fdzmi2d(ji,jj) + (fdzmi   * fthk)  
     4044                      fdzmi2d(ji,jj) = fdzmi2d(ji,jj) + (fdzmi(ji,jj)   * fse3t(ji,jj,jk))  
    40714045                  ENDIF 
    40724046                  IF( med_diag%GMEPN%dgsave ) THEN 
    4073                       fgmepn2d(ji,jj) = fgmepn2d(ji,jj) + (fgmepn  * fthk) 
     4047                      fgmepn2d(ji,jj) = fgmepn2d(ji,jj) + (fgmepn(ji,jj)  * fse3t(ji,jj,jk)) 
    40744048                  ENDIF 
    40754049                  IF( med_diag%GMEPD%dgsave ) THEN 
    4076                       fgmepd2d(ji,jj) = fgmepd2d(ji,jj) + (fgmepd  * fthk)  
     4050                      fgmepd2d(ji,jj) = fgmepd2d(ji,jj) + (fgmepd(ji,jj)  * fse3t(ji,jj,jk))  
    40774051                  ENDIF 
    40784052                  IF( med_diag%GMEZMI%dgsave ) THEN 
    4079                       fgmezmi2d(ji,jj) = fgmezmi2d(ji,jj) + (fgmezmi * fthk)  
     4053                      fgmezmi2d(ji,jj) = fgmezmi2d(ji,jj) + (fgmezmi(ji,jj) * fse3t(ji,jj,jk))  
    40804054                  ENDIF 
    40814055                  IF( med_diag%GMED%dgsave ) THEN 
    4082                       fgmed2d(ji,jj) = fgmed2d(ji,jj) + (fgmed   * fthk)  
     4056                      fgmed2d(ji,jj) = fgmed2d(ji,jj) + (fgmed(ji,jj)   * fse3t(ji,jj,jk))  
    40834057                  ENDIF 
    40844058                  IF( med_diag%MZME%dgsave ) THEN 
    4085                       fdzme2d(ji,jj) = fdzme2d(ji,jj) + (fdzme   * fthk)  
     4059                      fdzme2d(ji,jj) = fdzme2d(ji,jj) + (fdzme(ji,jj)   * fse3t(ji,jj,jk))  
    40864060                  ENDIF 
    40874061                  !  IF( med_diag%DEXP%dgsave ) THEN 
     
    40894063                  !  ENDIF 
    40904064                  IF( med_diag%DETN%dgsave ) THEN 
    4091                       fslown2d(ji,jj) = fslown2d(ji,jj) + (fslown  * fthk 
     4065                      fslown2d(ji,jj) = fslown2d(ji,jj) + (fslown(ji,jj)  * fse3t(ji,jj,jk) 
    40924066                  ENDIF 
    40934067                  IF( med_diag%MDET%dgsave ) THEN 
    4094                       fdd2d(ji,jj) = fdd2d(ji,jj) + (fdd     * fthk)  
     4068                      fdd2d(ji,jj) = fdd2d(ji,jj) + (fdd(ji,jj)     * fse3t(ji,jj,jk))  
    40954069                  ENDIF 
    40964070                  IF( med_diag%AEOLIAN%dgsave ) THEN 
    4097                       ffetop2d(ji,jj) = ffetop2d(ji,jj) + (ffetop  * fthk)  
     4071                      ffetop2d(ji,jj) = ffetop2d(ji,jj) + (ffetop(ji,jj)  * fse3t(ji,jj,jk))  
    40984072                  ENDIF 
    40994073                  IF( med_diag%BENTHIC%dgsave ) THEN 
    4100                       ffebot2d(ji,jj) = ffebot2d(ji,jj) + (ffebot  * fthk)  
     4074                      ffebot2d(ji,jj) = ffebot2d(ji,jj) + (ffebot(ji,jj)  * fse3t(ji,jj,jk))  
    41014075                  ENDIF 
    41024076                  IF( med_diag%SCAVENGE%dgsave ) THEN 
    4103                       ffescav2d(ji,jj) = ffescav2d(ji,jj) + (ffescav * fthk 
     4077                      ffescav2d(ji,jj) = ffescav2d(ji,jj) + (ffescav(ji,jj) * fse3t(ji,jj,jk) 
    41044078                  ENDIF 
    41054079                  IF( med_diag%PN_JLIM%dgsave ) THEN 
    4106                       ! fjln2d(ji,jj) = fjln2d(ji,jj) + (fjln  * zphn * fthk)  
    4107                       fjln2d(ji,jj) = fjln2d(ji,jj) + (fjlim_pn * zphn * fthk)  
     4080                      ! fjln2d(ji,jj) = fjln2d(ji,jj) + (fjln(ji,jj)  * zphn(ji,jj) * fse3t(ji,jj,jk))  
     4081                      fjln2d(ji,jj) = fjln2d(ji,jj) + (fjlim_pn(ji,jj) * zphn(ji,jj) * fse3t(ji,jj,jk))  
    41084082                  ENDIF 
    41094083                  IF( med_diag%PN_NLIM%dgsave ) THEN 
    4110                       fnln2d(ji,jj) = fnln2d(ji,jj) + (fnln  * zphn * fthk)  
     4084                      fnln2d(ji,jj) = fnln2d(ji,jj) + (fnln(ji,jj)  * zphn(ji,jj) * fse3t(ji,jj,jk))  
    41114085                  ENDIF 
    41124086                  IF( med_diag%PN_FELIM%dgsave ) THEN 
    4113                       ffln2d(ji,jj) = ffln2d(ji,jj) + (ffln  * zphn * fthk)  
     4087                      ffln2d(ji,jj) = ffln2d(ji,jj) + (ffln(ji,jj)  * zphn(ji,jj) * fse3t(ji,jj,jk))  
    41144088                  ENDIF 
    41154089                  IF( med_diag%PD_JLIM%dgsave ) THEN 
    4116                       ! fjld2d(ji,jj) = fjld2d(ji,jj) + (fjld  * zphd * fthk)  
    4117                       fjld2d(ji,jj) = fjld2d(ji,jj) + (fjlim_pd * zphd * fthk)  
     4090                      ! fjld2d(ji,jj) = fjld2d(ji,jj) + (fjld(ji,jj)  * zphd(ji,jj) * fse3t(ji,jj,jk))  
     4091                      fjld2d(ji,jj) = fjld2d(ji,jj) + (fjlim_pd(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk))  
    41184092                  ENDIF 
    41194093                  IF( med_diag%PD_NLIM%dgsave ) THEN 
    4120                       fnld2d(ji,jj) = fnld2d(ji,jj) + (fnld  * zphd * fthk)  
     4094                      fnld2d(ji,jj) = fnld2d(ji,jj) + (fnld(ji,jj)  * zphd(ji,jj) * fse3t(ji,jj,jk))  
    41214095                  ENDIF 
    41224096                  IF( med_diag%PD_FELIM%dgsave ) THEN 
    4123                       ffld2d(ji,jj) = ffld2d(ji,jj) + (ffld  * zphd * fthk)  
     4097                      ffld2d(ji,jj) = ffld2d(ji,jj) + (ffld(ji,jj)  * zphd(ji,jj) * fse3t(ji,jj,jk))  
    41244098                  ENDIF 
    41254099                  IF( med_diag%PD_SILIM%dgsave ) THEN 
    4126                       fsld2d2(ji,jj) = fsld2d2(ji,jj) + (fsld2 * zphd * fthk)  
     4100                      fsld2d2(ji,jj) = fsld2d2(ji,jj) + (fsld2(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk))  
    41274101                  ENDIF 
    41284102                  IF( med_diag%PDSILIM2%dgsave ) THEN 
    4129                       fsld2d(ji,jj) = fsld2d(ji,jj) + (fsld  * zphd * fthk) 
     4103                      fsld2d(ji,jj) = fsld2d(ji,jj) + (fsld(ji,jj)  * zphd(ji,jj) * fse3t(ji,jj,jk)) 
    41304104                  ENDIF 
    41314105                  !!  
    41324106                  IF( med_diag%TOTREG_N%dgsave ) THEN 
    4133                       fregen2d(ji,jj) = fregen2d(ji,jj) + fregen 
     4107                      fregen2d(ji,jj) = fregen2d(ji,jj) + fregen(ji,jj) 
    41344108                  ENDIF 
    41354109                  IF( med_diag%TOTRG_SI%dgsave ) THEN 
    4136                       fregensi2d(ji,jj) = fregensi2d(ji,jj) + fregensi 
     4110                      fregensi2d(ji,jj) = fregensi2d(ji,jj) + fregensi(ji,jj) 
    41374111                  ENDIF 
    41384112                  !!  
    41394113                  IF( med_diag%FASTN%dgsave ) THEN 
    4140                       ftempn2d(ji,jj) = ftempn2d(ji,jj) + (ftempn  * fthk) 
     4114                      ftempn2d(ji,jj) = ftempn2d(ji,jj) + (ftempn(ji,jj)  * fse3t(ji,jj,jk)) 
    41414115                  ENDIF 
    41424116                  IF( med_diag%FASTSI%dgsave ) THEN 
    4143                       ftempsi2d(ji,jj) = ftempsi2d(ji,jj) + (ftempsi * fthk) 
     4117                      ftempsi2d(ji,jj) = ftempsi2d(ji,jj) + (ftempsi(ji,jj) * fse3t(ji,jj,jk)) 
    41444118                  ENDIF 
    41454119                  IF( med_diag%FASTFE%dgsave ) THEN 
    4146                       ftempfe2d(ji,jj) =ftempfe2d(ji,jj)  + (ftempfe * fthk 
     4120                      ftempfe2d(ji,jj) =ftempfe2d(ji,jj)  + (ftempfe(ji,jj) * fse3t(ji,jj,jk) 
    41474121                  ENDIF 
    41484122                  IF( med_diag%FASTC%dgsave ) THEN 
    4149                       ftempc2d(ji,jj) = ftempc2d(ji,jj) + (ftempc  * fthk) 
     4123                      ftempc2d(ji,jj) = ftempc2d(ji,jj) + (ftempc(ji,jj)  * fse3t(ji,jj,jk)) 
    41504124                  ENDIF 
    41514125                  IF( med_diag%FASTCA%dgsave ) THEN 
    4152                       ftempca2d(ji,jj) = ftempca2d(ji,jj) + (ftempca * fthk) 
     4126                      ftempca2d(ji,jj) = ftempca2d(ji,jj) + (ftempca(ji,jj) * fse3t(ji,jj,jk)) 
    41534127                  ENDIF 
    41544128                  !!  
    41554129                  IF( med_diag%REMINN%dgsave ) THEN 
    4156                       freminn2d(ji,jj) = freminn2d(ji,jj) + (freminn  * fthk) 
     4130                      freminn2d(ji,jj) = freminn2d(ji,jj) + (freminn(ji,jj)  * fse3t(ji,jj,jk)) 
    41574131                  ENDIF 
    41584132                  IF( med_diag%REMINSI%dgsave ) THEN 
    4159                       freminsi2d(ji,jj) = freminsi2d(ji,jj) + (freminsi * fthk) 
     4133                      freminsi2d(ji,jj) = freminsi2d(ji,jj) + (freminsi(ji,jj) * fse3t(ji,jj,jk)) 
    41604134                  ENDIF 
    41614135                  IF( med_diag%REMINFE%dgsave ) THEN 
    4162                       freminfe2d(ji,jj)= freminfe2d(ji,jj) + (freminfe * fthk)  
     4136                      freminfe2d(ji,jj)= freminfe2d(ji,jj) + (freminfe(ji,jj) * fse3t(ji,jj,jk))  
    41634137                  ENDIF 
    41644138                  IF( med_diag%REMINC%dgsave ) THEN 
    4165                       freminc2d(ji,jj) = freminc2d(ji,jj) + (freminc  * fthk)  
     4139                      freminc2d(ji,jj) = freminc2d(ji,jj) + (freminc(ji,jj)  * fse3t(ji,jj,jk))  
    41664140                  ENDIF 
    41674141                  IF( med_diag%REMINCA%dgsave ) THEN 
    4168                       freminca2d(ji,jj) = freminca2d(ji,jj) + (freminca * fthk)  
     4142                      freminca2d(ji,jj) = freminca2d(ji,jj) + (freminca(ji,jj) * fse3t(ji,jj,jk))  
    41694143                  ENDIF 
    41704144                  !! 
     
    42004174                        ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall) 
    42014175                     ENDIF 
    4202                   ELSE IF (jk.eq.jmbathy) THEN 
     4176                  ELSE IF (jk.eq.mbathy(ji,jj)) THEN 
    42034177                     IF( med_diag%IBEN_N%dgsave ) THEN 
    42044178                        iben_n2d(ji,jj) = f_sbenin_n(ji,jj)  + f_fbenin_n(ji,jj) 
     
    42444218                  !! 
    42454219                  IF( med_diag%RIV_N%dgsave ) THEN 
    4246                      rivn2d(ji,jj) = rivn2d(ji,jj) +  (f_riv_loc_n * fthk) 
     4220                     rivn2d(ji,jj) = rivn2d(ji,jj) +  (f_riv_loc_n(ji,jj) * fse3t(ji,jj,jk)) 
    42474221                  ENDIF 
    42484222                  IF( med_diag%RIV_SI%dgsave ) THEN 
    4249                      rivsi2d(ji,jj) = rivsi2d(ji,jj) +  (f_riv_loc_si * fthk) 
     4223                     rivsi2d(ji,jj) = rivsi2d(ji,jj) +  (f_riv_loc_si(ji,jj) * fse3t(ji,jj,jk)) 
    42504224                  ENDIF 
    42514225                  IF( med_diag%RIV_C%dgsave ) THEN 
    4252                      rivc2d(ji,jj) = rivc2d(ji,jj) +  (f_riv_loc_c * fthk) 
     4226                     rivc2d(ji,jj) = rivc2d(ji,jj) +  (f_riv_loc_c(ji,jj) * fse3t(ji,jj,jk)) 
    42534227                  ENDIF 
    42544228                  IF( med_diag%RIV_ALK%dgsave ) THEN 
    4255                      rivalk2d(ji,jj) = rivalk2d(ji,jj) +  (f_riv_loc_alk * fthk) 
     4229                     rivalk2d(ji,jj) = rivalk2d(ji,jj) +  (f_riv_loc_alk(ji,jj) * fse3t(ji,jj,jk)) 
    42564230                  ENDIF 
    42574231                  IF( med_diag%DETC%dgsave ) THEN 
    4258                      fslowc2d(ji,jj) = fslowc2d(ji,jj) + (fslowc  * fthk)    
     4232                     fslowc2d(ji,jj) = fslowc2d(ji,jj) + (fslowc(ji,jj)  * fse3t(ji,jj,jk))    
    42594233                  ENDIF 
    42604234                  !!  
     
    42624236                  !! 
    42634237                  IF( med_diag%PN_LLOSS%dgsave ) THEN 
    4264                      fdpn22d(ji,jj) = fdpn22d(ji,jj) + (fdpn2  * fthk) 
     4238                     fdpn22d(ji,jj) = fdpn22d(ji,jj) + (fdpn2(ji,jj)  * fse3t(ji,jj,jk)) 
    42654239                  ENDIF 
    42664240                  IF( med_diag%PD_LLOSS%dgsave ) THEN 
    4267                      fdpd22d(ji,jj) = fdpd22d(ji,jj) + (fdpd2  * fthk) 
     4241                     fdpd22d(ji,jj) = fdpd22d(ji,jj) + (fdpd2(ji,jj)  * fse3t(ji,jj,jk)) 
    42684242                  ENDIF 
    42694243                  IF( med_diag%ZI_LLOSS%dgsave ) THEN 
    4270                      fdzmi22d(ji,jj) = fdzmi22d(ji,jj) + (fdzmi2 * fthk) 
     4244                     fdzmi22d(ji,jj) = fdzmi22d(ji,jj) + (fdzmi2(ji,jj) * fse3t(ji,jj,jk)) 
    42714245                  ENDIF 
    42724246                  IF( med_diag%ZE_LLOSS%dgsave ) THEN 
    4273                      fdzme22d(ji,jj) = fdzme22d(ji,jj) + (fdzme2 * fthk) 
     4247                     fdzme22d(ji,jj) = fdzme22d(ji,jj) + (fdzme2(ji,jj) * fse3t(ji,jj,jk)) 
    42744248                  ENDIF 
    42754249                  IF( med_diag%ZI_MES_N%dgsave ) THEN 
    42764250                     zimesn2d(ji,jj) = zimesn2d(ji,jj) +  & 
    4277                      (xphi * (fgmipn + fgmid) * fthk) 
     4251                     (xphi * (fgmipn(ji,jj) + fgmid(ji,jj)) * fse3t(ji,jj,jk)) 
    42784252                  ENDIF 
    42794253                  IF( med_diag%ZI_MES_D%dgsave ) THEN 
    42804254                     zimesd2d(ji,jj) = zimesd2d(ji,jj) + &  
    4281                      ((1. - xbetan) * finmi * fthk) 
     4255                     ((1. - xbetan) * finmi(ji,jj) * fse3t(ji,jj,jk)) 
    42824256                  ENDIF 
    42834257                  IF( med_diag%ZI_MES_C%dgsave ) THEN 
    42844258                     zimesc2d(ji,jj) = zimesc2d(ji,jj) + & 
    4285                      (xphi * ((xthetapn * fgmipn) + fgmidc) * fthk) 
     4259                     (xphi * ((xthetapn * fgmipn(ji,jj)) + fgmidc(ji,jj)) * fse3t(ji,jj,jk)) 
    42864260                  ENDIF 
    42874261                  IF( med_diag%ZI_MESDC%dgsave ) THEN 
    42884262                     zimesdc2d(ji,jj) = zimesdc2d(ji,jj) + & 
    4289                      ((1. - xbetac) * ficmi * fthk) 
     4263                     ((1. - xbetac) * ficmi(ji,jj) * fse3t(ji,jj,jk)) 
    42904264                  ENDIF 
    42914265                  IF( med_diag%ZI_EXCR%dgsave ) THEN 
    4292                      ziexcr2d(ji,jj) = ziexcr2d(ji,jj) +  (fmiexcr * fthk) 
     4266                     ziexcr2d(ji,jj) = ziexcr2d(ji,jj) +  (fmiexcr(ji,jj) * fse3t(ji,jj,jk)) 
    42934267                  ENDIF 
    42944268                  IF( med_diag%ZI_RESP%dgsave ) THEN 
    4295                      ziresp2d(ji,jj) = ziresp2d(ji,jj) +  (fmiresp * fthk) 
     4269                     ziresp2d(ji,jj) = ziresp2d(ji,jj) +  (fmiresp(ji,jj) * fse3t(ji,jj,jk)) 
    42964270                  ENDIF 
    42974271                  IF( med_diag%ZI_GROW%dgsave ) THEN 
    4298                      zigrow2d(ji,jj) = zigrow2d(ji,jj) + (fmigrow * fthk) 
     4272                     zigrow2d(ji,jj) = zigrow2d(ji,jj) + (fmigrow(ji,jj) * fse3t(ji,jj,jk)) 
    42994273                  ENDIF 
    43004274                  IF( med_diag%ZE_MES_N%dgsave ) THEN 
    43014275                     zemesn2d(ji,jj) = zemesn2d(ji,jj) + & 
    4302                      (xphi * (fgmepn + fgmepd + fgmezmi + fgmed) * fthk) 
     4276                     (xphi * (fgmepn(ji,jj) + fgmepd(ji,jj) + fgmezmi(ji,jj) + fgmed(ji,jj)) * fse3t(ji,jj,jk)) 
    43034277                  ENDIF 
    43044278                  IF( med_diag%ZE_MES_D%dgsave ) THEN 
    43054279                     zemesd2d(ji,jj) = zemesd2d(ji,jj) + & 
    4306                      ((1. - xbetan) * finme * fthk) 
     4280                     ((1. - xbetan) * finme(ji,jj) * fse3t(ji,jj,jk)) 
    43074281                  ENDIF 
    43084282                  IF( med_diag%ZE_MES_C%dgsave ) THEN 
    43094283                     zemesc2d(ji,jj) = zemesc2d(ji,jj) +                         &  
    4310                      (xphi * ((xthetapn * fgmepn) + (xthetapd * fgmepd) +  & 
    4311                      (xthetazmi * fgmezmi) + fgmedc) * fthk) 
     4284                     (xphi * ((xthetapn * fgmepn(ji,jj)) + (xthetapd * fgmepd(ji,jj)) +  & 
     4285                     (xthetazmi * fgmezmi(ji,jj)) + fgmedc(ji,jj)) * fse3t(ji,jj,jk)) 
    43124286                  ENDIF 
    43134287                  IF( med_diag%ZE_MESDC%dgsave ) THEN 
    43144288                     zemesdc2d(ji,jj) = zemesdc2d(ji,jj) +  & 
    4315                      ((1. - xbetac) * ficme * fthk) 
     4289                     ((1. - xbetac) * ficme(ji,jj) * fse3t(ji,jj,jk)) 
    43164290                  ENDIF 
    43174291                  IF( med_diag%ZE_EXCR%dgsave ) THEN 
    4318                      zeexcr2d(ji,jj) = zeexcr2d(ji,jj) + (fmeexcr * fthk) 
     4292                     zeexcr2d(ji,jj) = zeexcr2d(ji,jj) + (fmeexcr(ji,jj) * fse3t(ji,jj,jk)) 
    43194293                  ENDIF 
    43204294                  IF( med_diag%ZE_RESP%dgsave ) THEN 
    4321                      zeresp2d(ji,jj) = zeresp2d(ji,jj) + (fmeresp * fthk) 
     4295                     zeresp2d(ji,jj) = zeresp2d(ji,jj) + (fmeresp(ji,jj) * fse3t(ji,jj,jk)) 
    43224296                  ENDIF 
    43234297                  IF( med_diag%ZE_GROW%dgsave ) THEN 
    4324                      zegrow2d(ji,jj) = zegrow2d(ji,jj) + (fmegrow * fthk) 
     4298                     zegrow2d(ji,jj) = zegrow2d(ji,jj) + (fmegrow(ji,jj) * fse3t(ji,jj,jk)) 
    43254299                  ENDIF 
    43264300                  IF( med_diag%MDETC%dgsave ) THEN 
    4327                      mdetc2d(ji,jj) = mdetc2d(ji,jj) + (fddc * fthk) 
     4301                     mdetc2d(ji,jj) = mdetc2d(ji,jj) + (fddc(ji,jj) * fse3t(ji,jj,jk)) 
    43284302                  ENDIF 
    43294303                  IF( med_diag%GMIDC%dgsave ) THEN 
    4330                      gmidc2d(ji,jj) = gmidc2d(ji,jj) + (fgmidc * fthk) 
     4304                     gmidc2d(ji,jj) = gmidc2d(ji,jj) + (fgmidc(ji,jj) * fse3t(ji,jj,jk)) 
    43314305                  ENDIF 
    43324306                  IF( med_diag%GMEDC%dgsave ) THEN 
    4333                      gmedc2d(ji,jj) = gmedc2d(ji,jj) + (fgmedc  * fthk) 
     4307                     gmedc2d(ji,jj) = gmedc2d(ji,jj) + (fgmedc(ji,jj)  * fse3t(ji,jj,jk)) 
    43344308                  ENDIF 
    43354309                  !! 
     
    43384312                  !! ** 3D diagnostics 
    43394313                  IF( med_diag%TPP3%dgsave ) THEN 
    4340                      tpp3d(ji,jj,jk) =  (fprn * zphn) + (fprd * zphd) 
     4314                     tpp3d(ji,jj,jk) =  (fprn(ji,jj) * zphn(ji,jj)) + (fprd(ji,jj) * zphd(ji,jj)) 
    43414315                     !CALL iom_put( "TPP3"  , tpp3d ) 
    43424316                  ENDIF 
    43434317                  IF( med_diag%TPPD3%dgsave ) THEN 
    4344                      tppd3(ji,jj,jk) =  (fprd * zphd) 
     4318                     tppd3(ji,jj,jk) =  (fprd(ji,jj) * zphd(ji,jj)) 
    43454319                  ENDIF 
    43464320                   
    43474321                  IF( med_diag%REMIN3N%dgsave ) THEN 
    4348                      remin3dn(ji,jj,jk) = fregen + (freminn * fthk) !! remineralisation 
     4322                     remin3dn(ji,jj,jk) = fregen(ji,jj) + (freminn(ji,jj) * fse3t(ji,jj,jk)) !! remineralisation 
    43494323                     !CALL iom_put( "REMIN3N"  , remin3dn ) 
    43504324                  ENDIF 
     
    43584332        !! AXY (09/11/16): CMIP6 diagnostics 
    43594333        IF ( med_diag%DCALC3%dgsave   ) THEN 
    4360                      dcalc3(ji,jj,jk) = freminca 
     4334                     dcalc3(ji,jj,jk) = freminca(ji,jj) 
    43614335                  ENDIF 
    43624336        IF ( med_diag%FEDISS3%dgsave  ) THEN 
    4363                      fediss3(ji,jj,jk) = ffetop 
     4337                     fediss3(ji,jj,jk) = ffetop(ji,jj) 
    43644338                  ENDIF 
    43654339        IF ( med_diag%FESCAV3%dgsave  ) THEN 
    4366                      fescav3(ji,jj,jk) = ffescav 
     4340                     fescav3(ji,jj,jk) = ffescav(ji,jj) 
    43674341                  ENDIF 
    43684342        IF ( med_diag%MIGRAZP3%dgsave ) THEN 
    4369                      migrazp3(ji,jj,jk) = fgmipn * xthetapn 
     4343                     migrazp3(ji,jj,jk) = fgmipn(ji,jj) * xthetapn 
    43704344                  ENDIF 
    43714345        IF ( med_diag%MIGRAZD3%dgsave ) THEN 
    4372                      migrazd3(ji,jj,jk) = fgmidc 
     4346                     migrazd3(ji,jj,jk) = fgmidc(ji,jj) 
    43734347                  ENDIF 
    43744348        IF ( med_diag%MEGRAZP3%dgsave ) THEN 
    4375                      megrazp3(ji,jj,jk) = (fgmepn * xthetapn) + (fgmepd * xthetapd) 
     4349                     megrazp3(ji,jj,jk) = (fgmepn(ji,jj) * xthetapn) + (fgmepd(ji,jj) * xthetapd) 
    43764350                  ENDIF 
    43774351        IF ( med_diag%MEGRAZD3%dgsave ) THEN 
    4378                      megrazd3(ji,jj,jk) = fgmedc 
     4352                     megrazd3(ji,jj,jk) = fgmedc(ji,jj) 
    43794353                  ENDIF 
    43804354        IF ( med_diag%MEGRAZZ3%dgsave ) THEN 
    4381                      megrazz3(ji,jj,jk) = (fgmezmi * xthetazmi) 
     4355                     megrazz3(ji,jj,jk) = (fgmezmi(ji,jj) * xthetazmi) 
    43824356                  ENDIF 
    43834357        IF ( med_diag%PBSI3%dgsave    ) THEN 
    4384                      pbsi3(ji,jj,jk)    = (fprds * zpds) 
     4358                     pbsi3(ji,jj,jk)    = (fprds(ji,jj) * zpds(ji,jj)) 
    43854359                  ENDIF 
    43864360        IF ( med_diag%PCAL3%dgsave    ) THEN 
    4387                      pcal3(ji,jj,jk)    = ftempca 
     4361                     pcal3(ji,jj,jk)    = ftempca(ji,jj) 
    43884362                  ENDIF 
    43894363        IF ( med_diag%REMOC3%dgsave   ) THEN 
    4390                      remoc3(ji,jj,jk)   = freminc 
     4364                     remoc3(ji,jj,jk)   = freminc(ji,jj) 
    43914365                  ENDIF 
    43924366        IF ( med_diag%PNLIMJ3%dgsave  ) THEN 
    4393                      ! pnlimj3(ji,jj,jk)  = fjln 
    4394                      pnlimj3(ji,jj,jk)  = fjlim_pn 
     4367                     ! pnlimj3(ji,jj,jk)  = fjln(ji,jj) 
     4368                     pnlimj3(ji,jj,jk)  = fjlim_pn(ji,jj) 
    43954369                  ENDIF 
    43964370        IF ( med_diag%PNLIMN3%dgsave  ) THEN 
    4397                      pnlimn3(ji,jj,jk)  = fnln 
     4371                     pnlimn3(ji,jj,jk)  = fnln(ji,jj) 
    43984372                  ENDIF 
    43994373        IF ( med_diag%PNLIMFE3%dgsave ) THEN 
    4400                      pnlimfe3(ji,jj,jk) = ffln 
     4374                     pnlimfe3(ji,jj,jk) = ffln(ji,jj) 
    44014375                  ENDIF 
    44024376        IF ( med_diag%PDLIMJ3%dgsave  ) THEN 
    4403                      ! pdlimj3(ji,jj,jk)  = fjld 
    4404                      pdlimj3(ji,jj,jk)  = fjlim_pd 
     4377                     ! pdlimj3(ji,jj,jk)  = fjld(ji,jj) 
     4378                     pdlimj3(ji,jj,jk)  = fjlim_pd(ji,jj) 
    44054379                  ENDIF 
    44064380        IF ( med_diag%PDLIMN3%dgsave  ) THEN 
    4407                      pdlimn3(ji,jj,jk)  = fnld 
     4381                     pdlimn3(ji,jj,jk)  = fnld(ji,jj) 
    44084382                  ENDIF 
    44094383        IF ( med_diag%PDLIMFE3%dgsave ) THEN 
    4410                      pdlimfe3(ji,jj,jk) = ffld 
     4384                     pdlimfe3(ji,jj,jk) = ffld(ji,jj) 
    44114385                  ENDIF 
    44124386        IF ( med_diag%PDLIMSI3%dgsave ) THEN 
    4413                      pdlimsi3(ji,jj,jk) = fsld2 
     4387                     pdlimsi3(ji,jj,jk) = fsld2(ji,jj) 
    44144388                  ENDIF 
    44154389                  !! 
     
    44304404                  trc2d(ji,jj,2)  =  ftot_si(ji,jj)                            !! silicon  inventory 
    44314405                  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 
     4406                  trc2d(ji,jj,4)  = trc2d(ji,jj,4)  + (fprn(ji,jj)  * zphn(ji,jj) * fse3t(ji,jj,jk))    !! non-diatom production 
     4407                  trc2d(ji,jj,5)  = trc2d(ji,jj,5)  + (fdpn(ji,jj)         * fse3t(ji,jj,jk))    !! non-diatom non-grazing losses 
     4408                  trc2d(ji,jj,6)  = trc2d(ji,jj,6)  + (fprd(ji,jj)  * zphd(ji,jj) * fse3t(ji,jj,jk))    !! diatom production 
     4409                  trc2d(ji,jj,7)  = trc2d(ji,jj,7)  + (fdpd(ji,jj)         * fse3t(ji,jj,jk))    !! diatom non-grazing losses 
    44364410                  !! 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 
     4411                  trc2d(ji,jj,9)  = trc2d(ji,jj,9)  + (fprds(ji,jj) * zpds(ji,jj) * fse3t(ji,jj,jk))    !! diatom silicon production 
     4412                  trc2d(ji,jj,10) = trc2d(ji,jj,10) + (fsdiss(ji,jj)  * fse3t(ji,jj,jk))         !! diatom silicon dissolution 
     4413                  trc2d(ji,jj,11) = trc2d(ji,jj,11) + (fgmipn(ji,jj)  * fse3t(ji,jj,jk))         !! microzoo grazing on non-diatoms 
     4414                  trc2d(ji,jj,12) = trc2d(ji,jj,12) + (fgmid(ji,jj)   * fse3t(ji,jj,jk))         !! microzoo grazing on detrital nitrogen 
     4415                  trc2d(ji,jj,13) = trc2d(ji,jj,13) + (fdzmi(ji,jj)   * fse3t(ji,jj,jk))         !! microzoo non-grazing losses 
     4416                  trc2d(ji,jj,14) = trc2d(ji,jj,14) + (fgmepn(ji,jj)  * fse3t(ji,jj,jk))         !! mesozoo  grazing on non-diatoms 
     4417                  trc2d(ji,jj,15) = trc2d(ji,jj,15) + (fgmepd(ji,jj)  * fse3t(ji,jj,jk))         !! mesozoo  grazing on diatoms 
     4418                  trc2d(ji,jj,16) = trc2d(ji,jj,16) + (fgmezmi(ji,jj) * fse3t(ji,jj,jk))         !! mesozoo  grazing on microzoo 
     4419                  trc2d(ji,jj,17) = trc2d(ji,jj,17) + (fgmed(ji,jj)   * fse3t(ji,jj,jk))         !! mesozoo  grazing on detrital nitrogen 
     4420                  trc2d(ji,jj,18) = trc2d(ji,jj,18) + (fdzme(ji,jj)   * fse3t(ji,jj,jk))         !! mesozoo  non-grazing losses 
    44474421                  !! 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 
     4422                  trc2d(ji,jj,20) = trc2d(ji,jj,20) + (fslown(ji,jj)  * fse3t(ji,jj,jk))         !! slow sinking detritus N production 
     4423                  trc2d(ji,jj,21) = trc2d(ji,jj,21) + (fdd(ji,jj)     * fse3t(ji,jj,jk))         !! detrital remineralisation 
     4424                  trc2d(ji,jj,22) = trc2d(ji,jj,22) + (ffetop(ji,jj)  * fse3t(ji,jj,jk))         !! aeolian  iron addition 
     4425                  trc2d(ji,jj,23) = trc2d(ji,jj,23) + (ffebot(ji,jj)  * fse3t(ji,jj,jk))         !! seafloor iron addition 
     4426                  trc2d(ji,jj,24) = trc2d(ji,jj,24) + (ffescav(ji,jj) * fse3t(ji,jj,jk))         !! "free" iron scavenging 
     4427                  trc2d(ji,jj,25) = trc2d(ji,jj,25) + (fjlim_pn(ji,jj) * zphn(ji,jj) * fse3t(ji,jj,jk)) !! non-diatom J  limitation term  
     4428                  trc2d(ji,jj,26) = trc2d(ji,jj,26) + (fnln(ji,jj)  * zphn(ji,jj) * fse3t(ji,jj,jk))    !! non-diatom N  limitation term  
     4429                  trc2d(ji,jj,27) = trc2d(ji,jj,27) + (ffln(ji,jj)  * zphn(ji,jj) * fse3t(ji,jj,jk))    !! non-diatom Fe limitation term  
     4430                  trc2d(ji,jj,28) = trc2d(ji,jj,28) + (fjlim_pd(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk)) !! diatom     J  limitation term  
     4431                  trc2d(ji,jj,29) = trc2d(ji,jj,29) + (fnld(ji,jj)  * zphd(ji,jj) * fse3t(ji,jj,jk))    !! diatom     N  limitation term  
     4432                  trc2d(ji,jj,30) = trc2d(ji,jj,30) + (ffld(ji,jj)  * zphd(ji,jj) * fse3t(ji,jj,jk))    !! diatom     Fe limitation term  
     4433                  trc2d(ji,jj,31) = trc2d(ji,jj,31) + (fsld2(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk))    !! diatom     Si limitation term  
     4434                  trc2d(ji,jj,32) = trc2d(ji,jj,32) + (fsld(ji,jj)  * zphd(ji,jj) * fse3t(ji,jj,jk))    !! diatom     Si uptake limitation term 
    44614435                  if (jk.eq.i0100) trc2d(ji,jj,33) = fslownflux(ji,jj)         !! slow detritus flux at  100 m 
    44624436                  if (jk.eq.i0200) trc2d(ji,jj,34) = fslownflux(ji,jj)         !! slow detritus flux at  200 m 
    44634437                  if (jk.eq.i0500) trc2d(ji,jj,35) = fslownflux(ji,jj)         !! slow detritus flux at  500 m 
    44644438                  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 
     4439                  trc2d(ji,jj,37) = trc2d(ji,jj,37) + fregen(ji,jj)                   !! non-fast N  full column regeneration 
     4440                  trc2d(ji,jj,38) = trc2d(ji,jj,38) + fregensi(ji,jj)                 !! non-fast Si full column regeneration 
    44674441                  if (jk.eq.i0100) trc2d(ji,jj,39) = trc2d(ji,jj,37)           !! non-fast N  regeneration to  100 m 
    44684442                  if (jk.eq.i0200) trc2d(ji,jj,40) = trc2d(ji,jj,37)           !! non-fast N  regeneration to  200 m 
    44694443                  if (jk.eq.i0500) trc2d(ji,jj,41) = trc2d(ji,jj,37)           !! non-fast N  regeneration to  500 m 
    44704444                  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 
     4445                  trc2d(ji,jj,43) = trc2d(ji,jj,43) + (ftempn(ji,jj)  * fse3t(ji,jj,jk))         !! fast sinking detritus N production 
     4446                  trc2d(ji,jj,44) = trc2d(ji,jj,44) + (ftempsi(ji,jj) * fse3t(ji,jj,jk))         !! fast sinking detritus Si production 
     4447                  trc2d(ji,jj,45) = trc2d(ji,jj,45) + (ftempfe(ji,jj) * fse3t(ji,jj,jk))         !! fast sinking detritus Fe production 
     4448                  trc2d(ji,jj,46) = trc2d(ji,jj,46) + (ftempc(ji,jj)  * fse3t(ji,jj,jk))         !! fast sinking detritus C production 
     4449                  trc2d(ji,jj,47) = trc2d(ji,jj,47) + (ftempca(ji,jj) * fse3t(ji,jj,jk))         !! fast sinking detritus CaCO3 production 
    44764450                  if (jk.eq.i0100) trc2d(ji,jj,48) = ffastn(ji,jj)             !! fast detritus N  flux at  100 m 
    44774451                  if (jk.eq.i0200) trc2d(ji,jj,49) = ffastn(ji,jj)             !! fast detritus N  flux at  200 m 
     
    44904464                  if (jk.eq.i0500) trc2d(ji,jj,62) = fregenfastsi(ji,jj)       !! Si regeneration to  500 m 
    44914465                  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 
     4466                  trc2d(ji,jj,64) = trc2d(ji,jj,64) + (freminn(ji,jj)  * fse3t(ji,jj,jk))        !! sum of fast-sinking N  fluxes 
     4467                  trc2d(ji,jj,65) = trc2d(ji,jj,65) + (freminsi(ji,jj) * fse3t(ji,jj,jk))        !! sum of fast-sinking Si fluxes 
     4468                  trc2d(ji,jj,66) = trc2d(ji,jj,66) + (freminfe(ji,jj) * fse3t(ji,jj,jk))        !! sum of fast-sinking Fe fluxes 
     4469                  trc2d(ji,jj,67) = trc2d(ji,jj,67) + (freminc(ji,jj)  * fse3t(ji,jj,jk))        !! sum of fast-sinking C  fluxes 
     4470                  trc2d(ji,jj,68) = trc2d(ji,jj,68) + (freminca(ji,jj) * fse3t(ji,jj,jk))        !! sum of fast-sinking Ca fluxes 
     4471                  if (jk.eq.mbathy(ji,jj)) then 
    44984472                     trc2d(ji,jj,69) = fsedn(ji,jj)                                   !! N  sedimentation flux                                   
    44994473                     trc2d(ji,jj,70) = fsedsi(ji,jj)                                  !! Si sedimentation flux 
     
    45044478                  if (jk.eq.1)  trc2d(ji,jj,74) = qsr(ji,jj) 
    45054479                  if (jk.eq.1)  trc2d(ji,jj,75) = xpar(ji,jj,jk) 
    4506                   !! if (jk.eq.1)  trc2d(ji,jj,75) = real(iters) 
     4480                  !! if (jk.eq.1)  trc2d(ji,jj,75) = real(iters(ji,jj)) 
    45074481                  !! diagnostic fields 76 to 80 calculated below 
    45084482                  trc2d(ji,jj,81) = trc2d(ji,jj,81) + fprn_ml(ji,jj)           !! mixed layer non-diatom production 
     
    45254499                  !! ROAM provisionally has access to a further 20 2D diagnostics 
    45264500                  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 
     4501                     trc2d(ji,jj,91)  = trc2d(ji,jj,91)  + wndm(ji,jj)              !! surface wind 
     4502                     trc2d(ji,jj,92)  = trc2d(ji,jj,92)  + f_pco2atm(ji,jj)           !! atmospheric pCO2 
     4503                     trc2d(ji,jj,93)  = trc2d(ji,jj,93)  + f_ph(ji,jj)                !! ocean pH 
     4504                     trc2d(ji,jj,94)  = trc2d(ji,jj,94)  + f_pco2w(ji,jj)             !! ocean pCO2 
     4505                     trc2d(ji,jj,95)  = trc2d(ji,jj,95)  + f_h2co3(ji,jj)             !! ocean H2CO3 conc. 
     4506                     trc2d(ji,jj,96)  = trc2d(ji,jj,96)  + f_hco3(ji,jj)              !! ocean HCO3 conc. 
     4507                     trc2d(ji,jj,97)  = trc2d(ji,jj,97)  + f_co3(ji,jj)               !! ocean CO3 conc. 
     4508                     trc2d(ji,jj,98)  = trc2d(ji,jj,98)  + f_co2flux(ji,jj)           !! air-sea CO2 flux 
    45354509                     trc2d(ji,jj,99)  = trc2d(ji,jj,99)  + f_omcal(ji,jj)      !! ocean omega calcite  
    45364510                     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 
     4511                     trc2d(ji,jj,101) = trc2d(ji,jj,101) + f_TDIC(ji,jj)              !! ocean TDIC 
     4512                     trc2d(ji,jj,102) = trc2d(ji,jj,102) + f_TALK(ji,jj)              !! ocean TALK 
     4513                     trc2d(ji,jj,103) = trc2d(ji,jj,103) + f_kw660(ji,jj)             !! surface kw660 
     4514                     trc2d(ji,jj,104) = trc2d(ji,jj,104) + f_pp0(ji,jj)               !! surface pressure 
     4515                     trc2d(ji,jj,105) = trc2d(ji,jj,105) + f_o2flux(ji,jj)            !! air-sea O2 flux 
     4516                     trc2d(ji,jj,106) = trc2d(ji,jj,106) + f_o2sat(ji,jj)             !! ocean O2 saturation 
    45434517                     trc2d(ji,jj,107) = f2_ccd_cal(ji,jj)                      !! depth calcite CCD 
    45444518                     trc2d(ji,jj,108) = f2_ccd_arg(ji,jj)                      !! depth aragonite CCD 
    45454519                  endif 
    4546                   if (jk .eq. jmbathy) then 
     4520                  if (jk .eq. mbathy(ji,jj)) then 
    45474521                     trc2d(ji,jj,109) = f3_omcal(ji,jj,jk)                     !! seafloor omega calcite 
    45484522                     trc2d(ji,jj,110) = f3_omarg(ji,jj,jk)                     !! seafloor omega aragonite 
     
    45534527                  if (jk.eq.i1000) trc2d(ji,jj,120) = ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall)  !! rain ratio at 1000 m 
    45544528                  !! AXY (18/01/12): benthic flux diagnostics 
    4555                   if (jk.eq.jmbathy) then 
     4529                  if (jk.eq.mbathy(ji,jj)) then 
    45564530                     trc2d(ji,jj,121) = f_sbenin_n(ji,jj)  + f_fbenin_n(ji,jj) 
    45574531                     trc2d(ji,jj,122) = f_sbenin_fe(ji,jj) + f_fbenin_fe(ji,jj) 
     
    45684542                  trc2d(ji,jj,136) = f_runoff(ji,jj) 
    45694543                  !! 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 
     4544                  trc2d(ji,jj,137) = trc2d(ji,jj,137) + (f_riv_loc_n(ji,jj) * fse3t(ji,jj,jk)) 
     4545                  trc2d(ji,jj,138) = trc2d(ji,jj,138) + (f_riv_loc_si(ji,jj) * fse3t(ji,jj,jk)) 
     4546                  trc2d(ji,jj,139) = trc2d(ji,jj,139) + (f_riv_loc_c(ji,jj) * fse3t(ji,jj,jk)) 
     4547                  trc2d(ji,jj,140) = trc2d(ji,jj,140) + (f_riv_loc_alk(ji,jj) * fse3t(ji,jj,jk)) 
     4548                  trc2d(ji,jj,141) = trc2d(ji,jj,141) + (fslowc(ji,jj)  * fse3t(ji,jj,jk))       !! slow sinking detritus C production 
    45754549                  if (jk.eq.i0100) trc2d(ji,jj,142) = fslowcflux(ji,jj)        !! slow detritus flux at  100 m 
    45764550                  if (jk.eq.i0200) trc2d(ji,jj,143) = fslowcflux(ji,jj)        !! slow detritus flux at  200 m 
     
    45804554                  trc2d(ji,jj,147)  = trc2d(ji,jj,147)  + ftot_a(ji,jj)        !! alkalinity inventory 
    45814555                  trc2d(ji,jj,148)  = trc2d(ji,jj,148)  + ftot_o2(ji,jj)       !! oxygen     inventory 
    4582                   if (jk.eq.jmbathy) then 
     4556                  if (jk.eq.mbathy(ji,jj)) then 
    45834557                     trc2d(ji,jj,149) = f_benout_lyso_ca(ji,jj) 
    45844558                  endif 
    4585                   trc2d(ji,jj,150) = fcomm_resp(ji,jj) * fthk                  !! community respiration 
     4559                  trc2d(ji,jj,150) = fcomm_resp(ji,jj) * fse3t(ji,jj,jk)                  !! community respiration 
    45864560        !! 
    45874561        !! AXY (14/02/14): a Valentines Day gift to BASIN - a shedload of new 
     
    45934567                  !! linear losses 
    45944568                  !! non-diatom 
    4595                   trc2d(ji,jj,151) = trc2d(ji,jj,151) + (fdpn2  * fthk) 
     4569                  trc2d(ji,jj,151) = trc2d(ji,jj,151) + (fdpn2(ji,jj)  * fse3t(ji,jj,jk)) 
    45964570                  !! diatom 
    4597                   trc2d(ji,jj,152) = trc2d(ji,jj,152) + (fdpd2  * fthk) 
     4571                  trc2d(ji,jj,152) = trc2d(ji,jj,152) + (fdpd2(ji,jj)  * fse3t(ji,jj,jk)) 
    45984572                  !! microzooplankton 
    4599                   trc2d(ji,jj,153) = trc2d(ji,jj,153) + (fdzmi2 * fthk) 
     4573                  trc2d(ji,jj,153) = trc2d(ji,jj,153) + (fdzmi2(ji,jj) * fse3t(ji,jj,jk)) 
    46004574                  !! mesozooplankton 
    4601                   trc2d(ji,jj,154) = trc2d(ji,jj,154) + (fdzme2 * fthk) 
     4575                  trc2d(ji,jj,154) = trc2d(ji,jj,154) + (fdzme2(ji,jj) * fse3t(ji,jj,jk)) 
    46024576                  !! ---------------------------------------------------------------------- 
    46034577                  !! microzooplankton grazing 
    46044578                  !! microzooplankton messy -> N 
    4605                   trc2d(ji,jj,155) = trc2d(ji,jj,155) + (xphi * (fgmipn + fgmid) * fthk) 
     4579                  trc2d(ji,jj,155) = trc2d(ji,jj,155) + (xphi * (fgmipn(ji,jj) + fgmid(ji,jj)) * fse3t(ji,jj,jk)) 
    46064580                  !! microzooplankton messy -> D 
    4607                   trc2d(ji,jj,156) = trc2d(ji,jj,156) + ((1. - xbetan) * finmi * fthk) 
     4581                  trc2d(ji,jj,156) = trc2d(ji,jj,156) + ((1. - xbetan) * finmi(ji,jj) * fse3t(ji,jj,jk)) 
    46084582                  !! microzooplankton messy -> DIC 
    4609                   trc2d(ji,jj,157) = trc2d(ji,jj,157) + (xphi * ((xthetapn * fgmipn) + fgmidc) * fthk) 
     4583                  trc2d(ji,jj,157) = trc2d(ji,jj,157) + (xphi * ((xthetapn * fgmipn(ji,jj)) + fgmidc(ji,jj)) * fse3t(ji,jj,jk)) 
    46104584                  !! microzooplankton messy -> Dc 
    4611                   trc2d(ji,jj,158) = trc2d(ji,jj,158) + ((1. - xbetac) * ficmi * fthk) 
     4585                  trc2d(ji,jj,158) = trc2d(ji,jj,158) + ((1. - xbetac) * ficmi(ji,jj) * fse3t(ji,jj,jk)) 
    46124586                  !! microzooplankton excretion 
    4613                   trc2d(ji,jj,159) = trc2d(ji,jj,159) + (fmiexcr * fthk) 
     4587                  trc2d(ji,jj,159) = trc2d(ji,jj,159) + (fmiexcr(ji,jj) * fse3t(ji,jj,jk)) 
    46144588                  !! microzooplankton respiration 
    4615                   trc2d(ji,jj,160) = trc2d(ji,jj,160) + (fmiresp * fthk) 
     4589                  trc2d(ji,jj,160) = trc2d(ji,jj,160) + (fmiresp(ji,jj) * fse3t(ji,jj,jk)) 
    46164590                  !! microzooplankton growth 
    4617                   trc2d(ji,jj,161) = trc2d(ji,jj,161) + (fmigrow * fthk) 
     4591                  trc2d(ji,jj,161) = trc2d(ji,jj,161) + (fmigrow(ji,jj) * fse3t(ji,jj,jk)) 
    46184592                  !! ---------------------------------------------------------------------- 
    46194593                  !! mesozooplankton grazing 
    46204594                  !! mesozooplankton messy -> N 
    4621                   trc2d(ji,jj,162) = trc2d(ji,jj,162) + (xphi * (fgmepn + fgmepd + fgmezmi + fgmed) * fthk) 
     4595                  trc2d(ji,jj,162) = trc2d(ji,jj,162) + (xphi * (fgmepn(ji,jj) + fgmepd(ji,jj) + fgmezmi(ji,jj) + fgmed(ji,jj)) * fse3t(ji,jj,jk)) 
    46224596                  !! mesozooplankton messy -> D 
    4623                   trc2d(ji,jj,163) = trc2d(ji,jj,163) + ((1. - xbetan) * finme * fthk) 
     4597                  trc2d(ji,jj,163) = trc2d(ji,jj,163) + ((1. - xbetan) * finme(ji,jj) * fse3t(ji,jj,jk)) 
    46244598                  !! mesozooplankton messy -> DIC 
    4625                   trc2d(ji,jj,164) = trc2d(ji,jj,164) + (xphi * ((xthetapn * fgmepn) + (xthetapd * fgmepd) + & 
    4626                   &                  (xthetazmi * fgmezmi) + fgmedc) * fthk) 
     4599                  trc2d(ji,jj,164) = trc2d(ji,jj,164) + (xphi * ((xthetapn * fgmepn(ji,jj)) + (xthetapd * fgmepd(ji,jj)) + & 
     4600                  &                  (xthetazmi * fgmezmi(ji,jj)) + fgmedc(ji,jj)) * fse3t(ji,jj,jk)) 
    46274601                  !! mesozooplankton messy -> Dc 
    4628                   trc2d(ji,jj,165) = trc2d(ji,jj,165) + ((1. - xbetac) * ficme * fthk) 
     4602                  trc2d(ji,jj,165) = trc2d(ji,jj,165) + ((1. - xbetac) * ficme(ji,jj) * fse3t(ji,jj,jk)) 
    46294603                  !! mesozooplankton excretion 
    4630                   trc2d(ji,jj,166) = trc2d(ji,jj,166) + (fmeexcr * fthk) 
     4604                  trc2d(ji,jj,166) = trc2d(ji,jj,166) + (fmeexcr(ji,jj) * fse3t(ji,jj,jk)) 
    46314605                  !! mesozooplankton respiration 
    4632                   trc2d(ji,jj,167) = trc2d(ji,jj,167) + (fmeresp * fthk) 
     4606                  trc2d(ji,jj,167) = trc2d(ji,jj,167) + (fmeresp(ji,jj) * fse3t(ji,jj,jk)) 
    46334607                  !! mesozooplankton growth 
    4634                   trc2d(ji,jj,168) = trc2d(ji,jj,168) + (fmegrow * fthk) 
     4608                  trc2d(ji,jj,168) = trc2d(ji,jj,168) + (fmegrow(ji,jj) * fse3t(ji,jj,jk)) 
    46354609                  !! ---------------------------------------------------------------------- 
    46364610                  !! 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 
     4611                  trc2d(ji,jj,169) = trc2d(ji,jj,169) + (fddc(ji,jj)    * fse3t(ji,jj,jk)) !! detrital C remineralisation 
     4612                  trc2d(ji,jj,170) = trc2d(ji,jj,170) + (fgmidc(ji,jj)  * fse3t(ji,jj,jk)) !! microzoo grazing on detrital carbon 
     4613                  trc2d(ji,jj,171) = trc2d(ji,jj,171) + (fgmedc(ji,jj)  * fse3t(ji,jj,jk)) !! mesozoo  grazing on detrital carbon 
    46404614                  !! 
    46414615                  !! ---------------------------------------------------------------------- 
     
    46464620        !!                 below this section) 
    46474621        !! 
    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                  !! 
    46874622                  !! extract relevant BASIN fields at 150m 
    46884623                  if (jk .eq. i0150) then 
     
    47384673                  !!^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
    47394674                  if ((jk .eq. 1) .and.( jdms.eq.1)) then 
    4740                      trc2d(ji,jj,221) = dms_surf          !! DMS surface concentration  
     4675                     trc2d(ji,jj,221) = dms_surf(ji,jj)          !! DMS surface concentration  
    47414676                     !! 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  
     4677                     trc2d(ji,jj,222) = dms_andr(ji,jj)          !! DMS surface concentration  
     4678                     trc2d(ji,jj,223) = dms_simo(ji,jj)          !! DMS surface concentration  
     4679                     trc2d(ji,jj,224) = dms_aran(ji,jj)          !! DMS surface concentration  
     4680                     trc2d(ji,jj,225) = dms_hall(ji,jj)          !! DMS surface concentration  
    47464681                  endif 
    47474682# endif 
     
    47564691                  !!---------------------------------------------------------------------- 
    47574692                  !! 
    4758                   trc3d(ji,jj,jk,1)  = ((fprn + fprd) * zphn)     !! primary production   
     4693                  trc3d(ji,jj,jk,1)  = ((fprn(ji,jj) + fprd(ji,jj)) * zphn(ji,jj))     !! primary production   
    47594694                  trc3d(ji,jj,jk,2)  = fslownflux(ji,jj) + ffastn(ji,jj) !! detrital flux 
    4760                   trc3d(ji,jj,jk,3)  = fregen + (freminn * fthk)  !! remineralisation 
     4695                  trc3d(ji,jj,jk,3)  = fregen(ji,jj) + (freminn(ji,jj) * fse3t(ji,jj,jk))  !! remineralisation 
    47614696# if defined key_roam 
    47624697                  trc3d(ji,jj,jk,4)  = f3_pH(ji,jj,jk)            !! pH 
Note: See TracChangeset for help on using the changeset viewer.