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 5931 for branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90 – NEMO

Ignore:
Timestamp:
2015-11-26T17:28:18+01:00 (8 years ago)
Author:
jpalmier
Message:

JPALM --26-11-2015 -- Update MEDUSA diagnostics with iom_use

File:
1 edited

Legend:

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

    r5841 r5931  
    1818   !!  -   !  2015-06  (A. Yool)              Update to include MOCSY 
    1919   !!  -   !  2015-07  (A. Yool)              Update for rolling averages 
     20   !!  -   !  2015-10  (J. Palm)              Update for diag outputs through iom_use   
    2021   !!---------------------------------------------------------------------- 
    2122   !! 
     
    6869# if defined key_iomput 
    6970      USE iom 
     71      USE trc_nam_dia         ! JPALM 13-11-2015 -- if iom_use for diag 
     72      USE trc_nam_iom_medusa  ! JPALM 13-11-2015 -- if iom_use for diag 
    7073# endif 
    7174# if defined key_roam 
     
    165168      !! 
    166169      !! primary production and chl related quantities       
    167       REAL(wp) ::    fthetan,faln,fchn1,fchn,fjln,fprn,frn 
    168       REAL(wp) ::    fthetad,fald,fchd1,fchd,fjld,fprd,frd 
     170      REAL(wp)                     ::    fthetan,faln,fchn1,fchn,fjln,fprn,frn 
     171      REAL(wp), DIMENSION(jpi,jpj) ::    fprn2d 
     172      REAL(wp)                     ::    fthetad,fald,fchd1,fchd,fjld,fprd,frd 
     173      REAL(wp), DIMENSION(jpi,jpj) ::    fprd2d 
    169174      !! AXY (03/02/11): add in Liebig terms 
    170175      REAL(wp) ::    fpnlim, fpdlim 
     
    173178      INTEGER  ::    ieppley 
    174179      !! AXY (01/03/10): add in mixed layer PP diagnostics 
    175       REAL(wp) ::    fprn_ml,fprd_ml 
     180      REAL(wp), DIMENSION(jpi,jpj) ::  fprn_ml,fprd_ml 
    176181      !! 
    177182      !! nutrient limiting factors 
     
    184189      !! iron cycle; includes parameters for Parekh et al. (2005) iron scheme 
    185190      REAL(wp) ::    ffetop,ffebot,ffescav 
    186       REAL(wp) ::    xLgF, xFeT, xFeF, xFeL, xFree  !! state variables for iron-ligand system 
     191      REAL(wp) ::    xLgF, xFeT, xFeF, xFeL         !! state variables for iron-ligand system 
     192      REAL(wp), DIMENSION(jpi,jpj) ::  xFree        !! state variables for iron-ligand system 
    187193      REAL(wp) ::    xb_coef_tmp, xb2M4ac           !! iron-ligand parameters 
    188194      REAL(wp) ::    xmaxFeF,fdeltaFe               !! max Fe' parameters 
     
    208214      !! mortality/Remineralisation (defunct parameter "fz" removed) 
    209215      REAL(wp) ::    fdpn,fdpd,fdpds,fdzmi,fdzme,fdd 
     216      REAL(wp), DIMENSION(jpi,jpj)  ::    fdpn2d,fdpd2d 
    210217# if defined key_roam 
    211218      REAL(wp) ::    fddc 
    212219# endif 
    213220      REAL(wp) ::    fdpn2,fdpd2,fdpds2,fdzmi2,fdzme2 
    214       REAL(wp) ::    fslown, fslownflux 
    215       REAL(wp) ::    fslowc, fslowcflux 
     221      REAL(wp) ::    fslown, fslowc 
     222      REAL(wp), DIMENSION(jpi,jpj) ::    fslownflux, fslowcflux 
    216223      REAL(wp) ::    fregen,fregensi 
    217224      REAL(wp), DIMENSION(jpi,jpj) ::    fregenfast,fregenfastsi 
     
    229236      REAL(wp) ::    fheren,fheresi,fherefe,fherec,fhereca 
    230237      REAL(wp) ::    fprotf 
    231       REAL(wp) ::    fsedn,fsedsi,fsedfe,fsedc,fsedca 
     238      REAL(wp), DIMENSION(jpi,jpj) ::    fsedn,fsedsi,fsedfe,fsedc,fsedca 
    232239      REAL(wp), DIMENSION(jpi,jpj) ::    fccd 
    233240      REAL(wp) ::    fccd_dep 
     
    249256      !! 
    250257      !! water column nutrient and flux integrals 
    251       REAL(wp) ::    ftot_n,ftot_si,ftot_fe 
     258      REAL(wp), DIMENSION(jpi,jpj) ::    ftot_n,ftot_si,ftot_fe 
    252259      REAL(wp), DIMENSION(jpi,jpj) ::    fflx_n,fflx_si,fflx_fe 
    253260      REAL(wp), DIMENSION(jpi,jpj) ::    fifd_n,fifd_si,fifd_fe 
    254261      REAL(wp), DIMENSION(jpi,jpj) ::    fofd_n,fofd_si,fofd_fe 
    255262# if defined key_roam 
    256       REAL(wp) ::    ftot_c,ftot_a,ftot_o2 
     263      REAL(wp), DIMENSION(jpi,jpj) ::    ftot_c,ftot_a,ftot_o2 
    257264      REAL(wp), DIMENSION(jpi,jpj) ::    fflx_c,fflx_a,fflx_o2 
    258265      REAL(wp), DIMENSION(jpi,jpj) ::    fifd_c,fifd_a,fifd_o2 
     
    301308      !! carbon, alkalinity production and consumption 
    302309      REAL(wp) ::    fc_prod, fc_cons, fa_prod, fa_cons 
    303       REAL(wp) ::    fcomm_resp 
     310      REAL(wp), DIMENSION(jpi,jpj) ::    fcomm_resp 
    304311      REAL(wp), DIMENSION(jpi,jpj) ::    fcar_prod, fcar_cons 
    305312      !! 
     
    331338      !! horizontal grid location 
    332339      REAL(wp) ::    flatx, flonx 
    333  
     340      !! 
     341      !! Jpalm -- 11-10-2015 -- adapt diag to iom_use 
     342      !! 2D var for diagnostics. 
     343      REAL(wp), POINTER, DIMENSION(:,:  ) :: fprn2d, fdpn2d, fprd2d, fdpd2d, fprds2d, fsdiss2d, fgmipn2d 
     344      REAL(wp), POINTER, DIMENSION(:,:  ) :: fgmid2d, fdzmi2d, fgmepn2d, fgmepd2d, fgmezmi2d, fgmed2d 
     345      REAL(wp), POINTER, DIMENSION(:,:  ) :: fdzme2d, fslown2d, fdd2d, ffetop2d, ffebot2d, ffescav2d 
     346      REAL(wp), POINTER, DIMENSION(:,:  ) :: fjln2d, fnln2d, ffln2d, fjld2d, fnld2d, ffld2d, fsld2d2 
     347      REAL(wp), POINTER, DIMENSION(:,:  ) :: fsld2d, fregen2d, fregensi2d, ftempn2d, ftempsi2d, ftempfe2d 
     348      REAL(wp), POINTER, DIMENSION(:,:  ) :: ftempc2d, ftempca2d, freminn2d, freminsi2d, freminfe2d 
     349      REAL(wp), POINTER, DIMENSION(:,:  ) :: freminc2d, freminca2d 
     350      REAL(wp), POINTER, DIMENSION(:,:  ) :: zw2d 
     351# if defined key_roam 
     352      REAL(wp), POINTER, DIMENSION(:,:  ) :: ffastca2d, rivn2d, rivsi2d, rivc2d, rivalk2d, fslowc2d 
     353      REAL(wp), POINTER, DIMENSION(:,:  ) :: fdpn22d, fdpd22d, fdzmi22d, fdzme22d, zimesn2d, zimesd2d 
     354      REAL(wp), POINTER, DIMENSION(:,:  ) :: zimesc2d, zimesdc2d, ziexcr2d, ziresp2d, zigrow2d, zemesn2d 
     355      REAL(wp), POINTER, DIMENSION(:,:  ) :: zemesd2d, zemesc2d, zemesdc2d, zeexcr2d, zeresp2d, zegrow2d 
     356      REAL(wp), POINTER, DIMENSION(:,:  ) :: mdetc2d, gmidc2d, gmedc2d, f_pco2a2d, f_pco2w2d, f_co2flux2d 
     357      REAL(wp), POINTER, DIMENSION(:,:  ) :: f_TDIC2d, f_TALK2d, f_kw6602d, f_pp02d, f_o2flux2d, f_o2sat2d 
     358      REAL(wp), POINTER, DIMENSION(:,:  ) :: dms_surf2d, dms_andr2d, dms_simo2d, dms_aran2d, dms_hall2d 
     359# endif 
     360      !! 2D var for diagnostics. 
     361      REAL(wp), POINTER, DIMENSION(:,:,:) :: tpp3d, detflux3d, remin3dn 
    334362      !!--------------------------------------------------------------------- 
    335363 
     
    435463      fflx_a(:,:)  = 0.0        !! alkalinity flux total 
    436464      fflx_o2(:,:) = 0.0        !! oxygen     flux total 
     465      ftot_c(:,:)  = 0.0        !! carbon     inventory 
     466      ftot_a(:,:)  = 0.0        !! alkalinity inventory 
     467      ftot_o2(:,:) = 0.0        !! oxygen     inventory 
    437468      fifd_c(:,:)  = 0.0        !! carbon     fast detritus production 
    438469      fifd_a(:,:)  = 0.0        !! alkalinity fast detritus production 
     
    453484      foxy_anox(:,:) = 0.0      !! unrealised oxygen consumption 
    454485# endif 
     486      ftot_n(:,:)   = 0.0       !! N inventory  
     487      ftot_si(:,:)  = 0.0       !! Si inventory 
     488      ftot_fe(:,:)  = 0.0       !! Fe inventory 
    455489      ftot_pn(:,:)  = 0.0       !! integrated non-diatom phytoplankton 
    456490      ftot_pd(:,:)  = 0.0       !! integrated diatom     phytoplankton 
     
    487521      f_riv_c(:,:)   = 0.0      !! riverine C   input  
    488522      f_riv_alk(:,:) = 0.0      !! riverine alk input  
    489  
     523      !! 
     524      !! allocate and initiate 2D diag 
     525      !! ----------------------------- 
     526      !! Juju :: add kt condition !! 
     527      IF( lk_iomput .AND. .NOT.  ln_diatrc ) THEN     
     528      CALL wrk_alloc( jpi, jpj,      zw2d ) 
     529      zw2d(:,:)      = 0.0      !! 
     530      IF ( med_diag%PRN%dgsave ) THEN 
     531         CALL wrk_alloc( jpi, jpj,   fprn2d    ) 
     532         fprn2d(:,:)      = 0.0      !! 
     533      ENDIF 
     534      IF ( med_diag%MPN%dgsave ) THEN 
     535         CALL wrk_alloc( jpi, jpj,   fdpn2d    ) 
     536         fdpn2d(:,:)      = 0.0      !! 
     537      ENDIF 
     538      IF ( med_diag%PRD%dgsave ) THEN 
     539         CALL wrk_alloc( jpi, jpj,   fprd2d    ) 
     540         fprd2d(:,:)      = 0.0      !! 
     541      ENDIF 
     542      IF( med_diag%MPD%dgsave ) THEN 
     543         CALL wrk_alloc( jpi, jpj,   fdpd2d    ) 
     544         fdpd2d(:,:)      = 0.0      !! 
     545      ENDIF 
     546      IF( med_diag%OPAL%dgsave ) THEN 
     547         CALL wrk_alloc( jpi, jpj,   fprds2d    ) 
     548         fprds2d(:,:)      = 0.0      !! 
     549      ENDIF 
     550      IF( med_diag%OPALDISS%dgsave ) THEN 
     551         CALL wrk_alloc( jpi, jpj,   fsdiss2d    ) 
     552         fsdiss2d(:,:)      = 0.0      !! 
     553      ENDIF 
     554      IF( med_diag%GMIPn%dgsave ) THEN 
     555         CALL wrk_alloc( jpi, jpj,   fgmipn2d    ) 
     556         fgmipn2d(:,:)      = 0.0      !! 
     557      ENDIF 
     558      IF( med_diag%GMID%dgsave ) THEN 
     559         CALL wrk_alloc( jpi, jpj,   fgmid2d    ) 
     560         fgmid2d(:,:)      = 0.0      !! 
     561      ENDIF 
     562      IF( med_diag%MZMI%dgsave ) THEN 
     563         CALL wrk_alloc( jpi, jpj,   fdzmi2d    ) 
     564         fdzmi2d(:,:)      = 0.0      !! 
     565      ENDIF 
     566      IF( med_diag%GMEPN%dgsave ) THEN 
     567         CALL wrk_alloc( jpi, jpj,   fgmepn2d    ) 
     568         fgmepn2d(:,:)      = 0.0      !! 
     569      ENDIF 
     570      IF( med_diag%GMEPD%dgsave ) THEN 
     571         CALL wrk_alloc( jpi, jpj,   fgmepd2d    ) 
     572         fgmepd2d(:,:)      = 0.0      !! 
     573      ENDIF 
     574      IF( med_diag%GMEZMI%dgsave ) THEN 
     575         CALL wrk_alloc( jpi, jpj,   fgmezmi2d    ) 
     576         fgmezmi2d(:,:)      = 0.0      !! 
     577      ENDIF 
     578      IF( med_diag%GMED%dgsave ) THEN 
     579         CALL wrk_alloc( jpi, jpj,   fgmed2d    ) 
     580         fgmed2d(:,:)      = 0.0      !! 
     581      ENDIF 
     582      IF( med_diag%MZME%dgsave ) THEN 
     583         CALL wrk_alloc( jpi, jpj,   fdzme2d    ) 
     584         fdzme2d(:,:)      = 0.0      !! 
     585      ENDIF 
     586      IF( med_diag%DETN%dgsave ) THEN 
     587         CALL wrk_alloc( jpi, jpj,   fslown2d    ) 
     588         fslown2d(:,:)      = 0.0      !! 
     589      ENDIF 
     590      IF( med_diag%MDET%dgsave ) THEN 
     591         CALL wrk_alloc( jpi, jpj,   fdd2d    ) 
     592         fdd2d(:,:)      = 0.0      !! 
     593      ENDIF       
     594      IF( med_diag%AEOLIAN%dgsave ) THEN 
     595         CALL wrk_alloc( jpi, jpj,   ffetop2d    ) 
     596         ffetop2d(:,:)      = 0.0      !! 
     597      ENDIF 
     598      IF( med_diag%BENTHIC%dgsave ) THEN 
     599         CALL wrk_alloc( jpi, jpj,    ffebot2d   ) 
     600         ffebot2d(:,:)      = 0.0      !! 
     601      ENDIF 
     602      IF( med_diag%SCAVENGE%dgsave ) THEN 
     603         CALL wrk_alloc( jpi, jpj,   ffescav2d    ) 
     604         ffescav2d(:,:)      = 0.0      !! 
     605      ENDIF 
     606      IF( med_diag%PN_JLIM%dgsave ) THEN 
     607         CALL wrk_alloc( jpi, jpj,   fjln2d    ) 
     608         fjln2d(:,:)      = 0.0      !! 
     609      ENDIF 
     610      IF( med_diag%PN_NLIM%dgsave ) THEN 
     611         CALL wrk_alloc( jpi, jpj,   fnln2d    ) 
     612         fnln2d(:,:)      = 0.0      !! 
     613      ENDIF 
     614      IF( med_diag%PN_FELIM%dgsave ) THEN 
     615         CALL wrk_alloc( jpi, jpj,   ffln2d    ) 
     616         ffln2d(:,:)      = 0.0      !! 
     617      ENDIF 
     618      IF( med_diag%PD_JLIM%dgsave ) THEN 
     619         CALL wrk_alloc( jpi, jpj,   fjld2d    ) 
     620         fjld2d(:,:)      = 0.0      !! 
     621      ENDIF 
     622      IF( med_diag%PD_NLIM%dgsave ) THEN 
     623         CALL wrk_alloc( jpi, jpj,   fnld2d    ) 
     624         fnld2d(:,:)      = 0.0      !! 
     625      ENDIF 
     626      IF( med_diag%PD_FELIM%dgsave ) THEN 
     627         CALL wrk_alloc( jpi, jpj,   ffld2d    ) 
     628         ffld2d(:,:)      = 0.0      !! 
     629      ENDIF 
     630      IF( med_diag%PD_SILIM%dgsave ) THEN 
     631         CALL wrk_alloc( jpi, jpj,   fsld2d2    ) 
     632         fsld2d2(:,:)      = 0.0      !! 
     633      ENDIF 
     634      IF( med_diag%PDSILIM2%dgsave ) THEN 
     635         CALL wrk_alloc( jpi, jpj,   fsld2d    ) 
     636         fsld2d(:,:)      = 0.0      !! 
     637      ENDIF 
     638      !!  
     639      IF( med_diag%TOTREG_N%dgsave ) THEN 
     640         CALL wrk_alloc( jpi, jpj,   fregen2d    ) 
     641         fregen2d(:,:)      = 0.0      !! 
     642      ENDIF 
     643      IF( med_diag%TOTRG_SI%dgsave ) THEN 
     644         CALL wrk_alloc( jpi, jpj,   fregensi2d    ) 
     645         fregensi2d(:,:)      = 0.0      !! 
     646      ENDIF 
     647                !!  
     648      IF( med_diag%FASTN%dgsave ) THEN 
     649         CALL wrk_alloc( jpi, jpj,   ftempn2d    ) 
     650         ftempn2d(:,:)      = 0.0      !! 
     651      ENDIF 
     652      IF( med_diag%FASTSI%dgsave ) THEN 
     653         CALL wrk_alloc( jpi, jpj,   ftempsi2d    ) 
     654         ftempsi2d(:,:)      = 0.0      !! 
     655      ENDIF 
     656      IF( med_diag%FASTFE%dgsave ) THEN 
     657         CALL wrk_alloc( jpi, jpj,  ftempfe2d     ) 
     658         ftempfe2d(:,:)      = 0.0      !! 
     659      ENDIF 
     660      IF( med_diag%FASTC%dgsave ) THEN 
     661         CALL wrk_alloc( jpi, jpj,  ftempc2d     ) 
     662         ftempc2d(:,:)      = 0.0      !! 
     663      ENDIF 
     664      IF( med_diag%FASTCA%dgsave ) THEN 
     665         CALL wrk_alloc( jpi, jpj,   ftempca2d    ) 
     666         ftempca2d(:,:)      = 0.0      !! 
     667      ENDIF      
     668      !!  
     669      IF( med_diag%REMINN%dgsave ) THEN 
     670         CALL wrk_alloc( jpi, jpj,    freminn2d   ) 
     671         freminn2d(:,:)      = 0.0      !! 
     672      ENDIF 
     673      IF( med_diag%REMINSI%dgsave ) THEN 
     674         CALL wrk_alloc( jpi, jpj,    freminsi2d   ) 
     675         freminsi2d(:,:)      = 0.0      !! 
     676      ENDIF 
     677      IF( med_diag%REMINFE%dgsave ) THEN 
     678         CALL wrk_alloc( jpi, jpj,    freminfe2d   ) 
     679         freminfe2d(:,:)      = 0.0      !! 
     680      ENDIF 
     681      IF( med_diag%REMINC%dgsave ) THEN 
     682         CALL wrk_alloc( jpi, jpj,   freminc2d    ) 
     683         freminc2d(:,:)      = 0.0      !!  
     684      ENDIF 
     685      IF( med_diag%REMINCA%dgsave ) THEN 
     686         CALL wrk_alloc( jpi, jpj,   freminca2d    ) 
     687         freminca2d(:,:)      = 0.0      !! 
     688      ENDIF 
     689# if defined key_roam                   
     690      IF( med_diag%RR_0100%dgsave ) THEN 
     691         CALL wrk_alloc( jpi, jpj,   ffastca2d    ) 
     692         ffastca2d(:,:)      = 0.0      !! 
     693      ENDIF       
     694      IF( med_diag%RIV_N%dgsave ) THEN 
     695         CALL wrk_alloc( jpi, jpj,    rivn2d   ) 
     696         rivn2d(:,:)      = 0.0      !! 
     697      ENDIF 
     698      IF( med_diag%RIV_SI%dgsave ) THEN 
     699         CALL wrk_alloc( jpi, jpj,    rivsi2d   ) 
     700         rivsi2d(:,:)      = 0.0      !! 
     701      ENDIF 
     702      IF( med_diag%RIV_C%dgsave ) THEN 
     703         CALL wrk_alloc( jpi, jpj,   rivc2d    ) 
     704         rivc2d(:,:)      = 0.0      !! 
     705      ENDIF 
     706      IF( med_diag%RIV_ALK%dgsave ) THEN 
     707         CALL wrk_alloc( jpi, jpj,    rivalk2d   ) 
     708         rivalk2d(:,:)      = 0.0      !! 
     709      ENDIF 
     710      IF( med_diag%DETC%dgsave ) THEN 
     711         CALL wrk_alloc( jpi, jpj,    fslowc2d   ) 
     712         fslowc2d(:,:)      = 0.0      !! 
     713      ENDIF  
     714      IF( med_diag%PN_LLOSS%dgsave ) THEN 
     715         CALL wrk_alloc( jpi, jpj,    fdpn22d   ) 
     716         fdpn22d(:,:)      = 0.0      !! 
     717      ENDIF 
     718      IF( med_diag%PD_LLOSS%dgsave ) THEN 
     719         CALL wrk_alloc( jpi, jpj,    fdpd22d   ) 
     720         fdpd22d(:,:)      = 0.0      !! 
     721      ENDIF 
     722      IF( med_diag%ZI_LLOSS%dgsave ) THEN 
     723         CALL wrk_alloc( jpi, jpj,    fdzmi22d   ) 
     724         fdzmi22d(:,:)      = 0.0      !! 
     725      ENDIF 
     726      IF( med_diag%ZE_LLOSS%dgsave ) THEN 
     727         CALL wrk_alloc( jpi, jpj,   fdzme22d    ) 
     728         fdzme22d(:,:)      = 0.0      !! 
     729      ENDIF 
     730      IF( med_diag%ZI_MES_N%dgsave ) THEN    
     731         CALL wrk_alloc( jpi, jpj,   zimesn2d    ) 
     732         zimesn2d(:,:)      = 0.0      !! 
     733      ENDIF 
     734      IF( med_diag%ZI_MES_D%dgsave ) THEN 
     735      CALL wrk_alloc( jpi, jpj,    zimesd2d   ) 
     736         zimesd2d(:,:)      = 0.0      !! 
     737      ENDIF 
     738      IF( med_diag%ZI_MES_C%dgsave ) THEN 
     739      CALL wrk_alloc( jpi, jpj,    zimesc2d   ) 
     740         zimesc2d(:,:)      = 0.0      !! 
     741      ENDIF 
     742      IF( med_diag%ZI_MESDC%dgsave ) THEN 
     743      CALL wrk_alloc( jpi, jpj,    zimesdc2d   ) 
     744         zimesdc2d(:,:)      = 0.0      !! 
     745      ENDIF 
     746      IF( med_diag%ZI_EXCR%dgsave ) THEN 
     747      CALL wrk_alloc( jpi, jpj,     ziexcr2d  ) 
     748         ziexcr2d(:,:)      = 0.0      !! 
     749      ENDIF 
     750      IF( med_diag%ZI_RESP%dgsave ) THEN 
     751         CALL wrk_alloc( jpi, jpj,    ziresp2d   ) 
     752         ziresp2d(:,:)      = 0.0      !! 
     753      ENDIF 
     754      IF( med_diag%ZI_GROW%dgsave ) THEN 
     755         CALL wrk_alloc( jpi, jpj,    zigrow2d   ) 
     756         zigrow2d(:,:)      = 0.0      !! 
     757      ENDIF 
     758      IF( med_diag%ZE_MES_N%dgsave ) THEN 
     759         CALL wrk_alloc( jpi, jpj,   zemesn2d    ) 
     760         zemesn2d(:,:)      = 0.0      !! 
     761      ENDIF 
     762      IF( med_diag%ZE_MES_D%dgsave ) THEN 
     763         CALL wrk_alloc( jpi, jpj,    zemesd2d   ) 
     764         zemesd2d(:,:)      = 0.0      !! 
     765      ENDIF 
     766      IF( med_diag%ZE_MES_C%dgsave ) THEN 
     767         CALL wrk_alloc( jpi, jpj,    zemesc2d   ) 
     768         zemesc2d(:,:)      = 0.0      !! 
     769      ENDIF 
     770      IF( med_diag%ZE_MESDC%dgsave ) THEN 
     771         CALL wrk_alloc( jpi, jpj,    zemesdc2d   ) 
     772         zemesdc2d(:,:)      = 0.0      !! 
     773      ENDIF 
     774      IF( med_diag%ZE_EXCR%dgsave ) THEN 
     775         CALL wrk_alloc( jpi, jpj,    zeexcr2d   ) 
     776         zeexcr2d(:,:)      = 0.0      !! 
     777      ENDIF                   
     778      IF( med_diag%ZE_RESP%dgsave ) THEN 
     779         CALL wrk_alloc( jpi, jpj,    zeresp2d   ) 
     780         zeresp2d(:,:)      = 0.0      !! 
     781      ENDIF 
     782      IF( med_diag%ZE_GROW%dgsave ) THEN 
     783         CALL wrk_alloc( jpi, jpj,    zegrow2d   ) 
     784         zegrow2d(:,:)      = 0.0      !! 
     785      ENDIF 
     786      IF( med_diag%MDETC%dgsave ) THEN 
     787         CALL wrk_alloc( jpi, jpj,   mdetc2d    ) 
     788         mdetc2d(:,:)      = 0.0      !! 
     789      ENDIF 
     790      IF( med_diag%GMIDC%dgsave ) THEN 
     791         CALL wrk_alloc( jpi, jpj,    gmidc2d   ) 
     792         gmidc2d(:,:)      = 0.0      !! 
     793      ENDIF 
     794      IF( med_diag%GMEDC%dgsave ) THEN 
     795         CALL wrk_alloc( jpi, jpj,    gmedc2d   ) 
     796         gmedc2d(:,:)      = 0.0      !! 
     797      ENDIF 
     798      IF( med_diag%ATM_PCO2%dgsave ) THEN 
     799         CALL wrk_alloc( jpi, jpj,    f_pco2a2d   ) 
     800         f_pco2a2d(:,:)      = 0.0      !! 
     801      ENDIF 
     802      IF( med_diag%OCN_PCO2%dgsave ) THEN 
     803         CALL wrk_alloc( jpi, jpj,    f_pco2w2d   ) 
     804         f_pco2w2d(:,:)      = 0.0      !! 
     805      ENDIF 
     806      IF( med_diag%CO2FLUX%dgsave ) THEN 
     807         CALL wrk_alloc( jpi, jpj,    f_co2flux2d   ) 
     808         f_co2flux2d(:,:)      = 0.0      !! 
     809      ENDIF 
     810      IF( med_diag%TCO2%dgsave ) THEN 
     811         CALL wrk_alloc( jpi, jpj,   f_TDIC2d    ) 
     812         f_TDIC2d(:,:)      = 0.0      !! 
     813      ENDIF 
     814      IF( med_diag%TALK%dgsave ) THEN 
     815         CALL wrk_alloc( jpi, jpj,    f_TALK2d   ) 
     816         f_TALK2d(:,:)      = 0.0      !! 
     817      ENDIF 
     818      IF( med_diag%KW660%dgsave ) THEN 
     819         CALL wrk_alloc( jpi, jpj,    f_kw6602d   ) 
     820         f_kw6602d(:,:)      = 0.0      !! 
     821      ENDIF 
     822      IF( med_diag%ATM_PP0%dgsave ) THEN 
     823         CALL wrk_alloc( jpi, jpj,    f_pp02d   ) 
     824         f_pp02d(:,:)      = 0.0      !! 
     825      ENDIF 
     826      IF( med_diag%O2FLUX%dgsave ) THEN 
     827         CALL wrk_alloc( jpi, jpj,   f_o2flux2d    ) 
     828         f_o2flux2d(:,:)      = 0.0      !! 
     829      ENDIF 
     830      IF( med_diag%O2SAT%dgsave ) THEN 
     831         CALL wrk_alloc( jpi, jpj,    f_o2sat2d   ) 
     832         f_o2sat2d(:,:)      = 0.0      !! 
     833      ENDIF    
     834      IF (jdms .eq. 1) THEN 
     835         IF( med_diag%DMS_SURF%dgsave ) THEN 
     836            CALL wrk_alloc( jpi, jpj,  dms_surf2d     ) 
     837         dms_surf2d(:,:)      = 0.0      !! 
     838         ENDIF 
     839         IF( med_diag%DMS_ANDR%dgsave ) THEN 
     840            CALL wrk_alloc( jpi, jpj,   dms_andr2d    ) 
     841         dms_andr2d(:,:)      = 0.0      !! 
     842         ENDIF 
     843         IF( med_diag%DMS_SIMO%dgsave ) THEN 
     844            CALL wrk_alloc( jpi, jpj,  dms_simo2d     ) 
     845        dms_simo2d (:,:)      = 0.0      !! 
     846         ENDIF 
     847         IF( med_diag%DMS_ARAN%dgsave ) THEN 
     848            CALL wrk_alloc( jpi, jpj,   dms_aran2d    ) 
     849        dms_aran2d (:,:)      = 0.0      !! 
     850         ENDIF 
     851         IF( med_diag%DMS_HALL%dgsave ) THEN 
     852            CALL wrk_alloc( jpi, jpj,   dms_hall2d    ) 
     853         dms_hall2d(:,:)      = 0.0      !! 
     854         ENDIF 
     855      ENDIF    
     856# endif   
     857         IF( med_diag%TPP3%dgsave ) THEN 
     858             CALL wrk_alloc( jpi, jpj, jpk,       tpp3d ) 
     859             tpp3d(:,:,:)      = 0.0  !!  
     860         ENDIF 
     861         IF( med_diag%DETFLUX3%dgsave ) THEN 
     862             CALL wrk_alloc( jpi, jpj, jpk,        detflux3d ) 
     863             detflux3d(:,:,:)      = 0.0  !!  
     864         ENDIF 
     865          IF( med_diag%REMIN3N%dgsave ) THEN 
     866             CALL wrk_alloc( jpi, jpj, jpk,        remin3dn ) 
     867             remin3dn(:,:,:)      = 0.0  !!  
     868          ENDIF 
     869      ENDIF 
     870      !! lk_iomput                                    
     871      !! 
    490872# if defined key_axy_nancheck 
    491873      DO jn = 1,jptra 
     
    6651047                     f3_omarg(ji,jj,jk) = f_omarg(ji,jj) 
    6661048                     !! 
     1049                     !! store 2D outputs 
     1050                     IF ( lk_iomput .and.(jk.eq.1) ) THEN 
     1051                        IF( med_diag%ATM_PCO2%dgsave ) THEN 
     1052                            f_pco2a2d(ji,jj) = f_pco2a 
     1053                        ENDIF 
     1054                        IF( med_diag%OCN_PCO2%dgsave ) THEN 
     1055                            f_pco2w2d(ji,jj) = f_pco2w 
     1056                        ENDIF 
     1057                        IF( med_diag%CO2FLUX%dgsave ) THEN 
     1058                            f_co2flux2d(ji,jj) = f_co2flux 
     1059                        ENDIF 
     1060                        IF( med_diag%TCO2%dgsave ) THEN 
     1061                             f_TDIC2d(ji,jj) = f_TDIC  
     1062                        ENDIF 
     1063                        IF( med_diag%TALK%dgsave ) THEN 
     1064                             f_TALK2d(ji,jj) = f_TALK  
     1065                        ENDIF 
     1066                        IF( med_diag%KW660%dgsave ) THEN 
     1067                             f_kw6602d(ji,jj) = f_kw660  
     1068                        ENDIF 
     1069                        IF( med_diag%ATM_PP0%dgsave ) THEN 
     1070                            f_pp02d(ji,jj) = f_pp0  
     1071                        ENDIF 
     1072                        IF( med_diag%O2FLUX%dgsave ) THEN 
     1073                             f_o2flux2d(ji,jj) = f_o2flux  
     1074                        ENDIF 
     1075                        IF( med_diag%O2SAT%dgsave ) THEN 
     1076                             f_o2sat2d(ji,jj) = f_o2sat  
     1077                        ENDIF                      
     1078                     ENDIF                      
     1079                     !! 
    6671080                     !! CCD calculation: calcite 
    6681081                     if (i2_omcal(ji,jj) .eq. 0 .and. f_omcal(ji,jj) .lt. 1.0) then 
     
    8741287 
    8751288               !! sum tracers for inventory checks 
    876                ftot_n  = fthk * ( zphn + zphd + zzmi + zzme + zdet + zdin ) 
    877                ftot_si = fthk * ( zpds + zsil ) 
    878                ftot_fe = fthk * ( xrfn * ( zphn + zphd + zzmi + zzme + zdet ) + zfer ) 
     1289               IF( lk_iomput ) THEN 
     1290                  IF ( med_diag%INVTN%dgsave )   THEN 
     1291                     ftot_n(ji,jj)  = ftot_n(ji,jj) + & 
     1292                             (fthk * ( zphn + zphd + zzmi + zzme + zdet + zdin ) ) 
     1293                  ENDIF 
     1294                  IF ( med_diag%INVTSI%dgsave )  THEN 
     1295                     ftot_si(ji,jj) = ftot_si(ji,jj) + &  
     1296                             (fthk * ( zpds + zsil ) ) 
     1297                  ENDIF 
     1298                  IF ( med_diag%INVTFE%dgsave )  THEN 
     1299                     ftot_fe(ji,jj) = ftot_fe(ji,jj) + &  
     1300                             (fthk * ( xrfn * ( zphn + zphd + zzmi + zzme + zdet ) + zfer ) ) 
     1301                  ENDIF 
    8791302# if defined key_roam 
    880                ftot_c  = fthk * ( (xthetapn * zphn) + (xthetapd * zphd) + & 
    881                          (xthetazmi * zzmi) + (xthetazme * zzme) + zdtc + & 
    882                          zdic ) 
    883                ftot_a  = fthk * ( zalk ) 
    884                ftot_o2 = fthk * ( zoxy ) 
     1303                  IF ( med_diag%INVTC%dgsave )  THEN 
     1304                     ftot_c(ji,jj)  = ftot_c(ji,jj) + &  
     1305                             (fthk * ( (xthetapn * zphn) + (xthetapd * zphd) + & 
     1306                             (xthetazmi * zzmi) + (xthetazme * zzme) + zdtc +   & 
     1307                             zdic ) ) 
     1308                  ENDIF 
     1309                  IF ( med_diag%INVTALK%dgsave ) THEN 
     1310                     ftot_a(ji,jj)  = ftot_a(ji,jj) + (fthk * ( zalk ) ) 
     1311                  ENDIF 
     1312                  IF ( med_diag%INVTO2%dgsave )  THEN 
     1313                     ftot_o2(ji,jj) = ftot_o2(ji,jj) + (fthk * ( zoxy ) ) 
     1314                  ENDIF 
    8851315# endif 
    8861316               CALL flush(numout) 
     
    10561486                        dms_surf = dms_hall 
    10571487                     endif 
     1488                     !! 
     1489                     !! 2D diag through iom_use 
     1490                     IF( lk_iomput ) THEN 
     1491                       IF( med_diag%DMS_SURF%dgsave ) THEN 
     1492                         dms_surf2d(ji,jj) = dms_surf 
     1493                       ENDIF 
     1494                       IF( med_diag%DMS_ANDR%dgsave ) THEN 
     1495                         dms_andr2d(ji,jj) = dms_andr 
     1496                       ENDIF 
     1497                       IF( med_diag%DMS_SIMO%dgsave ) THEN 
     1498                         dms_simo2d(ji,jj) = dms_simo 
     1499                       ENDIF 
     1500                       IF( med_diag%DMS_ARAN%dgsave ) THEN 
     1501                         dms_aran2d(ji,jj) = dms_aran 
     1502                       ENDIF 
     1503                       IF( med_diag%DMS_HALL%dgsave ) THEN 
     1504                         dms_hall2d(ji,jj) = dms_hall 
     1505                       ENDIF 
     1506                     ENDIF 
     1507                     !! End iom 
    10581508                  ENDIF 
    10591509                  !! End DMS Loop 
     
    13561806               endif 
    13571807               !! 
    1358                fprn_ml = (fprn * zphn * fthk * fq0) 
    1359                fprd_ml = (fprd * zphd * fthk * fq0) 
    1360  
     1808               fprn_ml(ji,jj) = fprn_ml(ji,jj) + (fprn * zphn * fthk * fq0) 
     1809               fprd_ml(ji,jj) = fprd_ml(ji,jj) + (fprd * zphd * fthk * fq0) 
     1810                
     1811               !!---------------------------------------------------------------------- 
     1812               !! Vertical Integral -- 
     1813               !!---------------------------------------------------------------------- 
     1814               ftot_pn(ji,jj)  = ftot_pn(ji,jj)  + (zphn * fthk)   !! vertical integral non-diatom phytoplankton 
     1815               ftot_pd(ji,jj)  = ftot_pd(ji,jj)  + (zphd * fthk)   !! vertical integral diatom phytoplankton 
     1816               ftot_zmi(ji,jj) = ftot_zmi(ji,jj) + (zzmi * fthk)   !! vertical integral microzooplankton 
     1817               ftot_zme(ji,jj) = ftot_zme(ji,jj) + (zzme * fthk)   !! vertical integral mesozooplankton 
     1818               ftot_det(ji,jj) = ftot_det(ji,jj) + (zdet * fthk)   !! vertical integral slow detritus, nitrogen 
     1819               ftot_dtc(ji,jj) = ftot_dtc(ji,jj) + (zdtc * fthk)   !! vertical integral slow detritus, carbon 
     1820                
    13611821               !!---------------------------------------------------------------------- 
    13621822               !! More chlorophyll calculations 
     
    16752135               !! "free" iron concentration (and convert to mmol Fe / m3) 
    16762136               xFeF        = (xFeT - xFeL) * 1.e-3 
    1677                xFree       = xFeF / (zfer + tiny(zfer)) 
     2137               xFree(ji,jj)= xFeF / (zfer + tiny(zfer)) 
    16782138               !! 
    16792139               !! scavenging of iron (multiple schemes); I'm only really happy with the  
     
    19822442                  IF (lwp) write (numout,*) 'ffetop(',jk,')  = ', ffetop 
    19832443                  IF (lwp) write (numout,*) 'ffebot(',jk,')  = ', ffebot 
    1984                   IF (lwp) write (numout,*) 'xFree(',jk,')   = ', xFree 
     2444                  IF (lwp) write (numout,*) 'xFree(',jk,')   = ', xFree(ji,jj) 
    19852445                  IF (lwp) write (numout,*) 'ffescav(',jk,') = ', ffescav 
    19862446               endif 
     
    20152475               !! standard depths in the diagnostic outputs; needs to be 
    20162476               !! adjusted from per second to per day because of parameter vsed 
    2017                fslownflux = zdet * vsed * 86400. 
     2477               fslownflux(ji,jj) = zdet * vsed * 86400. 
    20182478# if defined key_roam 
    20192479               !! 
     
    20282488               !! standard depths in the diagnostic outputs; needs to be 
    20292489               !! adjusted from per second to per day because of parameter vsed 
    2030                fslowcflux = zdtc * vsed * 86400. 
     2490               fslowcflux(ji,jj) = zdtc * vsed * 86400. 
    20312491# endif 
    20322492 
     
    25413001                     f_fbenin_c(ji,jj)  = ffastc(ji,jj)             !! fast C -> benthic C                       (mol/m2) 
    25423002                  endif 
    2543                   fsedc    = ffastc(ji,jj)                          !! record seafloor C                         (mol/m2) 
     3003                  fsedc(ji,jj)   = ffastc(ji,jj)                          !! record seafloor C                         (mol/m2) 
    25443004                  ffastc(ji,jj)  = 0.0 
    25453005                  !! 
     
    25533013                     f_fbenin_n(ji,jj)  = ffastn(ji,jj)             !! fast N -> benthic N                       (mol/m2) 
    25543014                  endif 
    2555                   fsedn    = ffastn(ji,jj)                          !! record seafloor N                         (mol/m2) 
     3015                  fsedn(ji,jj)   = ffastn(ji,jj)                          !! record seafloor N                         (mol/m2) 
    25563016                  ffastn(ji,jj)  = 0.0 
    25573017                  !! 
     
    25643024                     f_fbenin_fe(ji,jj) = ffastfe(ji,jj)            !! fast Fe -> benthic Fe                     (mol/m2) 
    25653025                  endif 
    2566                   fsedfe   = ffastfe(ji,jj)                         !! record seafloor Fe                        (mol/m2) 
     3026                  fsedfe(ji,jj)  = ffastfe(ji,jj)                         !! record seafloor Fe                        (mol/m2) 
    25673027                  ffastfe(ji,jj) = 0.0 
    25683028                  !! 
     
    25733033                     f_fbenin_si(ji,jj) = ffastsi(ji,jj)            !! fast Si -> benthic Si                     (mol/m2) 
    25743034                  endif 
    2575                   fsedsi   = ffastsi(ji,jj)                         !! record seafloor Si                        (mol/m2) 
     3035                  fsedsi(ji,jj)   = ffastsi(ji,jj)                         !! record seafloor Si                        (mol/m2) 
    25763036                  ffastsi(ji,jj) = 0.0 
    25773037                  !! 
     
    25823042                     f_fbenin_ca(ji,jj) = ffastca(ji,jj)            !! fast Ca -> benthic Ca                     (mol/m2) 
    25833043                  endif 
    2584                   fsedca   = ffastca(ji,jj)                         !! record seafloor Ca                        (mol/m2) 
     3044                  fsedca(ji,jj)   = ffastca(ji,jj)                         !! record seafloor Ca                        (mol/m2) 
    25853045                  ffastca(ji,jj) = 0.0 
    25863046               endif 
     
    27793239               !! 
    27803240               !! community respiration (does not include CaCO3 terms - obviously!) 
    2781                fcomm_resp = fc_prod 
     3241               fcomm_resp(ji,jj) = fcomm_resp(ji,jj) + fc_prod 
    27823242               !! 
    27833243               !! CaCO3 
     
    30573517# endif 
    30583518 
    3059                IF( ln_diatrc ) THEN 
     3519               IF( lk_iomput  .AND.  .NOT.  ln_diatrc  ) THEN 
     3520         !!---------------------------------------------------------------------- 
     3521         !! Add in XML diagnostics stuff 
     3522         !!---------------------------------------------------------------------- 
     3523         !! 
     3524         !! ** 2D diagnostics 
     3525                  IF ( med_diag%PRN%dgsave ) THEN 
     3526                      fprn2d(ji,jj) = fprn2d(ji,jj) + (fprn  * zphn * fthk)  
     3527                  ENDIF 
     3528                  IF ( med_diag%MPN%dgsave ) THEN 
     3529                      fdpn2d(ji,jj) = fdpn2d(ji,jj) + (fdpn         * fthk) 
     3530                  ENDIF 
     3531                  IF ( med_diag%PRD%dgsave ) THEN 
     3532                      fprd2d(ji,jj) = fprd2d(ji,jj) + (fprd  * zphd * fthk) 
     3533                  ENDIF 
     3534                  IF( med_diag%MPD%dgsave ) THEN 
     3535                      fdpd2d(ji,jj) = fdpd2d(ji,jj) + (fdpd         * fthk)  
     3536                  ENDIF 
     3537                !  IF( med_diag%DSED%dgsave ) THEN 
     3538                !      CALL iom_put( "DSED"  , ftot_n ) 
     3539                !  ENDIF 
     3540                  IF( med_diag%OPAL%dgsave ) THEN 
     3541                      fprds2d(ji,jj) = fprds2d(ji,jj) + (fprds * zpds * fthk)  
     3542                  ENDIF 
     3543                  IF( med_diag%OPALDISS%dgsave ) THEN 
     3544                      fsdiss2d(ji,jj) = fsdiss2d(ji,jj) + (fsdiss  * fthk)   
     3545                  ENDIF 
     3546                  IF( med_diag%GMIPn%dgsave ) THEN 
     3547                      fgmipn2d(ji,jj) = fgmipn2d(ji,jj) + (fgmipn  * fthk)  
     3548                  ENDIF 
     3549                  IF( med_diag%GMID%dgsave ) THEN 
     3550                      fgmid2d(ji,jj) = fgmid2d(ji,jj) + (fgmid   * fthk)  
     3551                  ENDIF 
     3552                  IF( med_diag%MZMI%dgsave ) THEN 
     3553                      fdzmi2d(ji,jj) = fdzmi2d(ji,jj) + (fdzmi   * fthk)  
     3554                  ENDIF 
     3555                  IF( med_diag%GMEPN%dgsave ) THEN 
     3556                      fgmepn2d(ji,jj) = fgmepn2d(ji,jj) + (fgmepn  * fthk) 
     3557                  ENDIF 
     3558                  IF( med_diag%GMEPD%dgsave ) THEN 
     3559                      fgmepd2d(ji,jj) = fgmepd2d(ji,jj) + (fgmepd  * fthk)  
     3560                  ENDIF 
     3561                  IF( med_diag%GMEZMI%dgsave ) THEN 
     3562                      fgmezmi2d(ji,jj) = fgmezmi2d(ji,jj) + (fgmezmi * fthk)  
     3563                  ENDIF 
     3564                  IF( med_diag%GMED%dgsave ) THEN 
     3565                      fgmed2d(ji,jj) = fgmed2d(ji,jj) + (fgmed   * fthk)  
     3566                  ENDIF 
     3567                  IF( med_diag%MZME%dgsave ) THEN 
     3568                      fdzme2d(ji,jj) = fdzme2d(ji,jj) + (fdzme   * fthk)  
     3569                  ENDIF 
     3570                !  IF( med_diag%DEXP%dgsave ) THEN 
     3571                !      CALL iom_put( "DEXP"  , ftot_n ) 
     3572                !  ENDIF 
     3573                  IF( med_diag%DETN%dgsave ) THEN 
     3574                      fslown2d(ji,jj) = fslown2d(ji,jj) + (fslown  * fthk)   
     3575                  ENDIF 
     3576                  IF( med_diag%MDET%dgsave ) THEN 
     3577                      fdd2d(ji,jj) = fdd2d(ji,jj) + (fdd     * fthk)  
     3578                  ENDIF 
     3579                  IF( med_diag%AEOLIAN%dgsave ) THEN 
     3580                      ffetop2d(ji,jj) = ffetop2d(ji,jj) + (ffetop  * fthk)  
     3581                  ENDIF 
     3582                  IF( med_diag%BENTHIC%dgsave ) THEN 
     3583                      ffebot2d(ji,jj) = ffebot2d(ji,jj) + (ffebot  * fthk)  
     3584                  ENDIF 
     3585                  IF( med_diag%SCAVENGE%dgsave ) THEN 
     3586                      ffescav2d(ji,jj) = ffescav2d(ji,jj) + (ffescav * fthk)   
     3587                  ENDIF 
     3588                  IF( med_diag%PN_JLIM%dgsave ) THEN 
     3589                      fjln2d(ji,jj) = fjln2d(ji,jj) + (fjln  * zphn * fthk)  
     3590                  ENDIF 
     3591                  IF( med_diag%PN_NLIM%dgsave ) THEN 
     3592                      fnln2d(ji,jj) = fnln2d(ji,jj) + (fnln  * zphn * fthk)  
     3593                  ENDIF 
     3594                  IF( med_diag%PN_FELIM%dgsave ) THEN 
     3595                      ffln2d(ji,jj) = ffln2d(ji,jj) + (ffln  * zphn * fthk)  
     3596                  ENDIF 
     3597                  IF( med_diag%PD_JLIM%dgsave ) THEN 
     3598                      fjld2d(ji,jj) = fjld2d(ji,jj) + (fjld  * zphd * fthk)  
     3599                  ENDIF 
     3600                  IF( med_diag%PD_NLIM%dgsave ) THEN 
     3601                      fnld2d(ji,jj) = fnld2d(ji,jj) + (fnld  * zphd * fthk)  
     3602                  ENDIF 
     3603                  IF( med_diag%PD_FELIM%dgsave ) THEN 
     3604                      ffld2d(ji,jj) = ffld2d(ji,jj) + (ffld  * zphd * fthk)  
     3605                  ENDIF 
     3606                  IF( med_diag%PD_SILIM%dgsave ) THEN 
     3607                      fsld2d2(ji,jj) = fsld2d2(ji,jj) + (fsld2 * zphd * fthk)  
     3608                  ENDIF 
     3609                  IF( med_diag%PDSILIM2%dgsave ) THEN 
     3610                      fsld2d(ji,jj) = fsld2d(ji,jj) + (fsld  * zphd * fthk) 
     3611                  ENDIF 
     3612                !!  
     3613                  IF( med_diag%TOTREG_N%dgsave ) THEN 
     3614                      fregen2d(ji,jj) = fregen2d(ji,jj) + fregen 
     3615                  ENDIF 
     3616                  IF( med_diag%TOTRG_SI%dgsave ) THEN 
     3617                      fregensi2d() = fregensi2d() + fregensi 
     3618                  ENDIF 
     3619                !!  
     3620                  IF( med_diag%FASTN%dgsave ) THEN 
     3621                      ftempn2d(ji,jj) = ftempn2d(ji,jj) + (ftempn  * fthk) 
     3622                  ENDIF 
     3623                  IF( med_diag%FASTSI%dgsave ) THEN 
     3624                      ftempsi2d(ji,jj) = ftempsi2d(ji,jj) + (ftempsi * fthk) 
     3625                  ENDIF 
     3626                  IF( med_diag%FASTFE%dgsave ) THEN 
     3627                      ftempfe2d(ji,jj) =ftempfe2d(ji,jj)  + (ftempfe * fthk)   
     3628                  ENDIF 
     3629                  IF( med_diag%FASTC%dgsave ) THEN 
     3630                      ftempc2d(ji,jj) = ftempc2d(ji,jj) + (ftempc  * fthk) 
     3631                  ENDIF 
     3632                  IF( med_diag%FASTCA%dgsave ) THEN 
     3633                      ftempca2d(ji,jj) = ftempca2d(ji,jj) + (ftempca * fthk) 
     3634                  ENDIF 
     3635                !!  
     3636                  IF( med_diag%REMINN%dgsave ) THEN 
     3637                      freminn2d(ji,jj) = freminn2d(ji,jj) + (freminn  * fthk) 
     3638                  ENDIF 
     3639                  IF( med_diag%REMINSI%dgsave ) THEN 
     3640                      freminsi2d(ji,jj) = freminsi2d(ji,jj) + (freminsi * fthk) 
     3641                  ENDIF 
     3642                  IF( med_diag%REMINFE%dgsave ) THEN 
     3643                      freminfe2d(ji,jj)= freminfe2d(ji,jj) + (freminfe * fthk)  
     3644                  ENDIF 
     3645                  IF( med_diag%REMINC%dgsave ) THEN 
     3646                      freminc2d(ji,jj) = freminc2d(ji,jj) + (freminc  * fthk)  
     3647                  ENDIF 
     3648                  IF( med_diag%REMINCA%dgsave ) THEN 
     3649                      freminca2d(ji,jj) = freminca2d(ji,jj) + (freminca * fthk)  
     3650                  ENDIF 
     3651                !! 
     3652                !! 
     3653                !! 
     3654                !!   
     3655                !!  
     3656                !! 
     3657                !!  
     3658                !! 
     3659                !! 
     3660# if defined key_roam             
     3661                 IF (jk.eq.i0100) THEN 
     3662                     IF( med_diag%RR_0100%dgsave ) THEN 
     3663                         ffastca2d(ji,jj) =   & 
     3664                            ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall) 
     3665                     ENDIF                      
     3666                 ELSE IF (jk.eq.i0500) THEN  
     3667                     IF( med_diag%RR_0500%dgsave ) THEN 
     3668                         ffastca2d(ji,jj) =   & 
     3669                            ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall) 
     3670                     ENDIF                         
     3671                 ELSE IF (jk.eq.i1000) THEN 
     3672                     IF( med_diag%RR_1000%dgsave ) THEN 
     3673                         ffastca2d(ji,jj) =   & 
     3674                            ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall) 
     3675                     ENDIF                      
     3676                 ENDIF 
     3677                !! 
     3678                !! 
     3679                  IF( med_diag%RIV_N%dgsave ) THEN 
     3680                      rivn2d(ji,jj) = rivn2d(ji,jj) +  (f_riv_loc_n * fthk) 
     3681                  ENDIF 
     3682                  IF( med_diag%RIV_SI%dgsave ) THEN 
     3683                      rivsi2d(ji,jj) = rivsi2d(ji,jj) +  (f_riv_loc_si * fthk) 
     3684                  ENDIF 
     3685                  IF( med_diag%RIV_C%dgsave ) THEN 
     3686                      rivc2d(ji,jj) = rivc2d(ji,jj) +  (f_riv_loc_c * fthk) 
     3687                  ENDIF 
     3688                  IF( med_diag%RIV_ALK%dgsave ) THEN 
     3689                      rivalk2d(ji,jj) = rivalk2d(ji,jj) +  (f_riv_loc_alk * fthk) 
     3690                  ENDIF 
     3691                  IF( med_diag%DETC%dgsave ) THEN 
     3692                      fslowc2d(ji,jj) = fslowc2d(ji,jj) + (fslowc  * fthk)    
     3693                  ENDIF 
     3694                !!  
     3695                !!               
     3696                !! 
     3697                  IF( med_diag%PN_LLOSS%dgsave ) THEN 
     3698                      fdpn22d(ji,jj) = fdpn22d(ji,jj) + (fdpn2  * fthk) 
     3699                  ENDIF 
     3700                  IF( med_diag%PD_LLOSS%dgsave ) THEN 
     3701                      fdpd22d(ji,jj) = fdpd22d(ji,jj) + (fdpd2  * fthk) 
     3702                  ENDIF 
     3703                  IF( med_diag%ZI_LLOSS%dgsave ) THEN 
     3704                      fdzmi22d(ji,jj) = fdzmi22d(ji,jj) + (fdzmi2 * fthk) 
     3705                  ENDIF 
     3706                  IF( med_diag%ZE_LLOSS%dgsave ) THEN 
     3707                      fdzme22d(ji,jj) = fdzme22d(ji,jj) + (fdzme2 * fthk) 
     3708                  ENDIF 
     3709                  IF( med_diag%ZI_MES_N%dgsave ) THEN 
     3710                      zimesn2d(ji,jj) = zimesn2d(ji,jj) +  & 
     3711                                      (xphi * (fgmipn + fgmid) * fthk) 
     3712                  ENDIF 
     3713                  IF( med_diag%ZI_MES_D%dgsave ) THEN 
     3714                      zimesd2d(ji,jj) = zimesd2d(ji,jj) + &  
     3715                                      ((1. - xbetan) * finmi * fthk) 
     3716                  ENDIF 
     3717                  IF( med_diag%ZI_MES_C%dgsave ) THEN 
     3718                      zimesc2d(ji,jj) = zimesc2d(ji,jj) + & 
     3719                             (xphi * ((xthetapn * fgmipn) + fgmidc) * fthk) 
     3720                  ENDIF 
     3721                  IF( med_diag%ZI_MESDC%dgsave ) THEN 
     3722                      zimesdc2d(ji,jj) = zimesdc2d(ji,jj) + & 
     3723                                       ((1. - xbetac) * ficmi * fthk) 
     3724                  ENDIF 
     3725                  IF( med_diag%ZI_EXCR%dgsave ) THEN 
     3726                      ziexcr2d(ji,jj) = ziexcr2d(ji,jj) +  (fmiexcr * fthk) 
     3727                  ENDIF 
     3728                  IF( med_diag%ZI_RESP%dgsave ) THEN 
     3729                      ziresp2d(ji,jj) = ziresp2d(ji,jj) +  (fmiresp * fthk) 
     3730                  ENDIF 
     3731                  IF( med_diag%ZI_GROW%dgsave ) THEN 
     3732                      zigrow2d(ji,jj) = zigrow2d(ji,jj) + (fmigrow * fthk) 
     3733                  ENDIF 
     3734                  IF( med_diag%ZE_MES_N%dgsave ) THEN 
     3735                      zemesn2d(ji,jj) = zemesn2d(ji,jj) + & 
     3736                          (xphi * (fgmepn + fgmepd + fgmezmi + fgmed) * fthk) 
     3737                  ENDIF 
     3738                  IF( med_diag%ZE_MES_D%dgsave ) THEN 
     3739                      zemesd2d(ji,jj) = zemesd2d(ji,jj) + & 
     3740                                      ((1. - xbetan) * finme * fthk) 
     3741                  ENDIF 
     3742                  IF( med_diag%ZE_MES_C%dgsave ) THEN 
     3743                      zemesc2d(ji,jj) = zemesc2d(ji,jj) +                         &  
     3744                            (xphi * ((xthetapn * fgmepn) + (xthetapd * fgmepd) +  & 
     3745                            (xthetazmi * fgmezmi) + fgmedc) * fthk) 
     3746                  ENDIF 
     3747                  IF( med_diag%ZE_MESDC%dgsave ) THEN 
     3748                      zemesdc2d(ji,jj) = zemesdc2d(ji,jj) +  & 
     3749                                       ((1. - xbetac) * ficme * fthk) 
     3750                  ENDIF 
     3751                  IF( med_diag%ZE_EXCR%dgsave ) THEN 
     3752                      zeexcr2d(ji,jj) = zeexcr2d(ji,jj) + (fmeexcr * fthk) 
     3753                  ENDIF 
     3754                  IF( med_diag%ZE_RESP%dgsave ) THEN 
     3755                      zeresp2d(ji,jj) = zeresp2d(ji,jj) + (fmeresp * fthk) 
     3756                  ENDIF 
     3757                  IF( med_diag%ZE_GROW%dgsave ) THEN 
     3758                      zegrow2d(ji,jj) = zegrow2d(ji,jj) + (fmegrow * fthk) 
     3759                  ENDIF 
     3760                  IF( med_diag%MDETC%dgsave ) THEN 
     3761                      mdetc2d(ji,jj) = mdetc2d(ji,jj) + (fddc * fthk) 
     3762                  ENDIF 
     3763                  IF( med_diag%GMIDC%dgsave ) THEN 
     3764                      gmidc2d(ji,jj) = gmidc2d(ji,jj) + (fgmidc * fthk) 
     3765                  ENDIF 
     3766                  IF( med_diag%GMEDC%dgsave ) THEN 
     3767                      gmedc2d(ji,jj) = gmedc2d(ji,jj) + (fgmedc  * fthk) 
     3768                  ENDIF 
     3769# endif                    
     3770                !!  
     3771         !! 
     3772         !! 
     3773         !! 
     3774         !! 
     3775         !! ** 3D diagnostics 
     3776                  IF( med_diag%TPP3%dgsave ) THEN 
     3777                      tpp3d(ji,jj,jk) =  (fprn + fprd) * zphn  
     3778                      !CALL iom_put( "TPP3"  , tpp3d ) 
     3779                  ENDIF 
     3780 
     3781                  IF( med_diag%REMIN3N%dgsave ) THEN 
     3782                      remin3dn(ji,jj,jk) = fregen + (freminn * fthk)  !! remineralisation 
     3783                      !CALL iom_put( "REMIN3N"  , remin3dn ) 
     3784                  ENDIF 
     3785                  IF( med_diag%PH3%dgsave ) THEN 
     3786                      CALL iom_put( "PH3"  , f3_pH ) 
     3787                  ENDIF 
     3788                  IF( med_diag%OM_CAL3%dgsave ) THEN 
     3789                      CALL iom_put( "OM_CAL3"  , f3_omcal ) 
     3790                  ENDIF 
     3791         !! 
     3792         !! 
     3793         !! ** Without using iom_use 
     3794               ELSE IF( ln_diatrc ) THEN 
    30603795                  !!---------------------------------------------------------------------- 
    30613796                  !! Prepare 2D diagnostics 
     
    30653800                  !!    IF (lwp) write (*,*) '*******!MEDUSA DIAADD!*******',kt 
    30663801                  !! endif      
    3067                   trc2d(ji,jj,1)  = trc2d(ji,jj,1)  + ftot_n                   !! nitrogen inventory 
    3068                   trc2d(ji,jj,2)  = trc2d(ji,jj,2)  + ftot_si                  !! silicon  inventory 
    3069                   trc2d(ji,jj,3)  = trc2d(ji,jj,3)  + ftot_fe                  !! iron     inventory 
     3802                  trc2d(ji,jj,1)  =  ftot_n(ji,jj)                             !! nitrogen inventory 
     3803                  trc2d(ji,jj,2)  =  ftot_si(ji,jj)                            !! silicon  inventory 
     3804                  trc2d(ji,jj,3)  =  ftot_fe(ji,jj)                            !! iron     inventory 
    30703805                  trc2d(ji,jj,4)  = trc2d(ji,jj,4)  + (fprn  * zphn * fthk)    !! non-diatom production 
    30713806                  trc2d(ji,jj,5)  = trc2d(ji,jj,5)  + (fdpn         * fthk)    !! non-diatom non-grazing losses 
     
    30973832                  trc2d(ji,jj,31) = trc2d(ji,jj,31) + (fsld2 * zphd * fthk)    !! diatom     Si limitation term  
    30983833                  trc2d(ji,jj,32) = trc2d(ji,jj,32) + (fsld  * zphd * fthk)    !! diatom     Si uptake limitation term 
    3099                   if (jk.eq.i0100) trc2d(ji,jj,33) = fslownflux                !! slow detritus flux at  100 m 
    3100                   if (jk.eq.i0200) trc2d(ji,jj,34) = fslownflux                !! slow detritus flux at  200 m 
    3101                   if (jk.eq.i0500) trc2d(ji,jj,35) = fslownflux                !! slow detritus flux at  500 m 
    3102                   if (jk.eq.i1000) trc2d(ji,jj,36) = fslownflux                !! slow detritus flux at 1000 m 
     3834                  if (jk.eq.i0100) trc2d(ji,jj,33) = fslownflux(ji,jj)         !! slow detritus flux at  100 m 
     3835                  if (jk.eq.i0200) trc2d(ji,jj,34) = fslownflux(ji,jj)         !! slow detritus flux at  200 m 
     3836                  if (jk.eq.i0500) trc2d(ji,jj,35) = fslownflux(ji,jj)         !! slow detritus flux at  500 m 
     3837                  if (jk.eq.i1000) trc2d(ji,jj,36) = fslownflux(ji,jj)         !! slow detritus flux at 1000 m 
    31033838                  trc2d(ji,jj,37) = trc2d(ji,jj,37) + fregen                   !! non-fast N  full column regeneration 
    31043839                  trc2d(ji,jj,38) = trc2d(ji,jj,38) + fregensi                 !! non-fast Si full column regeneration 
     
    31443879                  !! if (jk.eq.1)  trc2d(ji,jj,75) = real(iters) 
    31453880                  !! diagnostic fields 76 to 80 calculated below 
    3146                   trc2d(ji,jj,81) = trc2d(ji,jj,81) + fprn_ml                  !! mixed layer non-diatom production 
    3147                   trc2d(ji,jj,82) = trc2d(ji,jj,82) + fprd_ml                  !! mixed layer     diatom production 
     3881                  trc2d(ji,jj,81) = trc2d(ji,jj,81) + fprn_ml(ji,jj)           !! mixed layer non-diatom production 
     3882                  trc2d(ji,jj,82) = trc2d(ji,jj,82) + fprd_ml(ji,jj)           !! mixed layer     diatom production 
    31483883# if defined key_gulf_finland 
    31493884                  if (jk.eq.1)  trc2d(ji,jj,83) = real(ibio_switch)            !! Gulf of Finland check 
     
    31523887# endif 
    31533888                  trc2d(ji,jj,84) = fccd(ji,jj)                                !! last model level above calcite CCD depth 
    3154                   if (jk.eq.1)     trc2d(ji,jj,85) = xFree                     !! surface "free" iron 
    3155                   if (jk.eq.i0200) trc2d(ji,jj,86) = xFree                     !! "free" iron at  100 m 
    3156                   if (jk.eq.i0200) trc2d(ji,jj,87) = xFree                     !! "free" iron at  200 m 
    3157                   if (jk.eq.i0500) trc2d(ji,jj,88) = xFree                     !! "free" iron at  500 m 
    3158                   if (jk.eq.i1000) trc2d(ji,jj,89) = xFree                     !! "free" iron at 1000 m 
     3889                  if (jk.eq.1)     trc2d(ji,jj,85) = xFree(ji,jj)              !! surface "free" iron 
     3890                  if (jk.eq.i0200) trc2d(ji,jj,86) = xFree(ji,jj)              !! "free" iron at  100 m 
     3891                  if (jk.eq.i0200) trc2d(ji,jj,87) = xFree(ji,jj)              !! "free" iron at  200 m 
     3892                  if (jk.eq.i0500) trc2d(ji,jj,88) = xFree(ji,jj)              !! "free" iron at  500 m 
     3893                  if (jk.eq.i1000) trc2d(ji,jj,89) = xFree(ji,jj)              !! "free" iron at 1000 m 
    31593894                  !! AXY (27/06/12): extract "euphotic depth" 
    31603895                  if (jk.eq.1)     trc2d(ji,jj,90) = xze(ji,jj) 
    31613896                  !!  
    3162                   ftot_pn(ji,jj)  = ftot_pn(ji,jj)  + (zphn * fthk)            !! vertical integral non-diatom phytoplankton 
    3163                   ftot_pd(ji,jj)  = ftot_pd(ji,jj)  + (zphd * fthk)            !! vertical integral diatom phytoplankton 
    3164                   ftot_zmi(ji,jj) = ftot_zmi(ji,jj) + (zzmi * fthk)            !! vertical integral microzooplankton 
    3165                   ftot_zme(ji,jj) = ftot_zme(ji,jj) + (zzme * fthk)            !! vertical integral mesozooplankton 
    3166                   ftot_det(ji,jj) = ftot_det(ji,jj) + (zdet * fthk)            !! vertical integral slow detritus, nitrogen 
    3167                   ftot_dtc(ji,jj) = ftot_dtc(ji,jj) + (zdtc * fthk)            !! vertical integral slow detritus, carbon 
    31683897# if defined key_roam 
    31693898                  !! ROAM provisionally has access to a further 20 2D diagnostics 
     
    32173946                  trc2d(ji,jj,140) = trc2d(ji,jj,140) + (f_riv_loc_alk * fthk) 
    32183947                  trc2d(ji,jj,141) = trc2d(ji,jj,141) + (fslowc  * fthk)       !! slow sinking detritus C production 
    3219                   if (jk.eq.i0100) trc2d(ji,jj,142) = fslowcflux               !! slow detritus flux at  100 m 
    3220                   if (jk.eq.i0200) trc2d(ji,jj,143) = fslowcflux               !! slow detritus flux at  200 m 
    3221                   if (jk.eq.i0500) trc2d(ji,jj,144) = fslowcflux               !! slow detritus flux at  500 m 
    3222                   if (jk.eq.i1000) trc2d(ji,jj,145) = fslowcflux               !! slow detritus flux at 1000 m 
    3223                   trc2d(ji,jj,146)  = trc2d(ji,jj,146)  + ftot_c               !! carbon     inventory 
    3224                   trc2d(ji,jj,147)  = trc2d(ji,jj,147)  + ftot_a               !! alkalinity inventory 
    3225                   trc2d(ji,jj,148)  = trc2d(ji,jj,148)  + ftot_o2              !! oxygen     inventory 
     3948                  if (jk.eq.i0100) trc2d(ji,jj,142) = fslowcflux(ji,jj)        !! slow detritus flux at  100 m 
     3949                  if (jk.eq.i0200) trc2d(ji,jj,143) = fslowcflux(ji,jj)        !! slow detritus flux at  200 m 
     3950                  if (jk.eq.i0500) trc2d(ji,jj,144) = fslowcflux(ji,jj)        !! slow detritus flux at  500 m 
     3951                  if (jk.eq.i1000) trc2d(ji,jj,145) = fslowcflux(ji,jj)        !! slow detritus flux at 1000 m 
     3952                  trc2d(ji,jj,146)  = trc2d(ji,jj,146)  + ftot_c(ji,jj)        !! carbon     inventory 
     3953                  trc2d(ji,jj,147)  = trc2d(ji,jj,147)  + ftot_a(ji,jj)        !! alkalinity inventory 
     3954                  trc2d(ji,jj,148)  = trc2d(ji,jj,148)  + ftot_o2(ji,jj)       !! oxygen     inventory 
    32263955                  if (jk.eq.(mbathy(ji,jj)-1)) then 
    32273956                     trc2d(ji,jj,149) = f_benout_lyso_ca(ji,jj) 
    32283957                  endif 
    3229                   trc2d(ji,jj,150) = trc2d(ji,jj,150) + (fcomm_resp * fthk)    !! community respiration 
     3958                  trc2d(ji,jj,150) = fcomm_resp(ji,jj) * fthk                  !! community respiration 
    32303959        !! 
    32313960        !! AXY (14/02/14): a Valentines Day gift to BASIN - a shedload of new 
     
    32914020        !! 
    32924021        !! extract fields at surface 
    3293         if (jk .eq. 1) then 
    3294                      trc2d(ji,jj,172) = zchn              !! Pn chlorophyll 
    3295                      trc2d(ji,jj,173) = zphn              !! Pn biomass 
    3296                      trc2d(ji,jj,174) = fjln              !! Pn J-term 
    3297                      trc2d(ji,jj,175) = (fprn * zphn)     !! Pn PP 
    3298                      trc2d(ji,jj,176) = zchd              !! Pd chlorophyll 
    3299                      trc2d(ji,jj,177) = zphd              !! Pd biomass 
    3300                      trc2d(ji,jj,178) = fjld              !! Pd J-term 
    3301                      trc2d(ji,jj,179) = xpar(ji,jj,jk)    !! Pd PP 
    3302                      trc2d(ji,jj,180) = loc_T             !! local temperature 
    3303                   endif 
    3304         !! 
    3305         !! extract fields at 50m (actually 44-50m) 
    3306         if (jk .eq. 18) then 
    3307                      trc2d(ji,jj,181) = zchn              !! Pn chlorophyll 
    3308                      trc2d(ji,jj,182) = zphn              !! Pn biomass 
    3309                      trc2d(ji,jj,183) = fjln              !! Pn J-term 
    3310                      trc2d(ji,jj,184) = (fprn * zphn)     !! Pn PP 
    3311                      trc2d(ji,jj,185) = zchd              !! Pd chlorophyll 
    3312                      trc2d(ji,jj,186) = zphd              !! Pd biomass 
    3313                      trc2d(ji,jj,187) = fjld              !! Pd J-term 
    3314                      trc2d(ji,jj,188) = xpar(ji,jj,jk)    !! Pd PP 
    3315                      trc2d(ji,jj,189) = loc_T             !! local temperature 
    3316                   endif 
    3317         !! 
    3318         !! extract fields at 100m 
    3319         if (jk .eq. i0100) then 
    3320                      trc2d(ji,jj,190) = zchn              !! Pn chlorophyll 
    3321                      trc2d(ji,jj,191) = zphn              !! Pn biomass 
    3322                      trc2d(ji,jj,192) = fjln              !! Pn J-term 
    3323                      trc2d(ji,jj,193) = (fprn * zphn)     !! Pn PP 
    3324                      trc2d(ji,jj,194) = zchd              !! Pd chlorophyll 
    3325                      trc2d(ji,jj,195) = zphd              !! Pd biomass 
    3326                      trc2d(ji,jj,196) = fjld              !! Pd J-term 
    3327                      trc2d(ji,jj,197) = xpar(ji,jj,jk)    !! Pd PP 
    3328                      trc2d(ji,jj,198) = loc_T             !! local temperature 
    3329                   endif 
     4022       !! if (jk .eq. 1) then 
     4023                 !!    trc2d(ji,jj,172) = zchn              !! Pn chlorophyll 
     4024                 !!    trc2d(ji,jj,173) = zphn              !! Pn biomass 
     4025                 !!    trc2d(ji,jj,174) = fjln              !! Pn J-term 
     4026                 !!    trc2d(ji,jj,175) = (fprn * zphn)     !! Pn PP 
     4027                 !!    trc2d(ji,jj,176) = zchd              !! Pd chlorophyll 
     4028                 !!    trc2d(ji,jj,177) = zphd              !! Pd biomass 
     4029                 !!    trc2d(ji,jj,178) = fjld              !! Pd J-term 
     4030                 !!    trc2d(ji,jj,179) = xpar(ji,jj,jk)    !! Pd PP 
     4031                 !!    trc2d(ji,jj,180) = loc_T             !! local temperature 
     4032                 !! endif 
     4033       !! !! 
     4034       !! !! extract fields at 50m (actually 44-50m) 
     4035       !! if (jk .eq. 18) then 
     4036                 !!    trc2d(ji,jj,181) = zchn              !! Pn chlorophyll 
     4037                 !!    trc2d(ji,jj,182) = zphn              !! Pn biomass 
     4038                 !!    trc2d(ji,jj,183) = fjln              !! Pn J-term 
     4039                 !!    trc2d(ji,jj,184) = (fprn * zphn)     !! Pn PP 
     4040                 !!    trc2d(ji,jj,185) = zchd              !! Pd chlorophyll 
     4041                 !!    trc2d(ji,jj,186) = zphd              !! Pd biomass 
     4042                 !!    trc2d(ji,jj,187) = fjld              !! Pd J-term 
     4043                 !!    trc2d(ji,jj,188) = xpar(ji,jj,jk)    !! Pd PP 
     4044                 !!    trc2d(ji,jj,189) = loc_T             !! local temperature 
     4045                 !! endif 
     4046       !! !! 
     4047       !! !! extract fields at 100m 
     4048       !! if (jk .eq. i0100) then 
     4049                 !!    trc2d(ji,jj,190) = zchn              !! Pn chlorophyll 
     4050                 !!    trc2d(ji,jj,191) = zphn              !! Pn biomass 
     4051                 !!    trc2d(ji,jj,192) = fjln              !! Pn J-term 
     4052                 !!    trc2d(ji,jj,193) = (fprn * zphn)     !! Pn PP 
     4053                 !!    trc2d(ji,jj,194) = zchd              !! Pd chlorophyll 
     4054                 !!    trc2d(ji,jj,195) = zphd              !! Pd biomass 
     4055                 !!    trc2d(ji,jj,196) = fjld              !! Pd J-term 
     4056                 !!    trc2d(ji,jj,197) = xpar(ji,jj,jk)    !! Pd PP 
     4057                 !!    trc2d(ji,jj,198) = loc_T             !! local temperature 
     4058                 !! endif 
     4059                 !! 
    33304060                  !! extract relevant BASIN fields at 150m 
    33314061                  if (jk .eq. i0150) then 
    3332                      !! trc2d(ji,jj,172) = trc2d(ji,jj,4)    !! Pn PP 
    3333                      !! trc2d(ji,jj,173) = trc2d(ji,jj,151)  !! Pn linear loss 
    3334                      !! trc2d(ji,jj,174) = trc2d(ji,jj,5)    !! Pn non-linear loss 
    3335                      !! trc2d(ji,jj,175) = trc2d(ji,jj,11)   !! Pn grazing to Zmi 
    3336                      !! trc2d(ji,jj,176) = trc2d(ji,jj,14)   !! Pn grazing to Zme 
    3337                      !! trc2d(ji,jj,177) = trc2d(ji,jj,6)    !! Pd PP 
    3338                      !! trc2d(ji,jj,178) = trc2d(ji,jj,152)  !! Pd linear loss 
    3339                      !! trc2d(ji,jj,179) = trc2d(ji,jj,7)    !! Pd non-linear loss 
    3340                      !! trc2d(ji,jj,180) = trc2d(ji,jj,15)   !! Pd grazing to Zme 
    3341                      !! trc2d(ji,jj,181) = trc2d(ji,jj,12)   !! Zmi grazing on D 
    3342                      !! trc2d(ji,jj,182) = trc2d(ji,jj,170)  !! Zmi grazing on Dc 
    3343                      !! trc2d(ji,jj,183) = trc2d(ji,jj,155)  !! Zmi messy feeding loss to N 
    3344                      !! trc2d(ji,jj,184) = trc2d(ji,jj,156)  !! Zmi messy feeding loss to D 
    3345                      !! trc2d(ji,jj,185) = trc2d(ji,jj,157)  !! Zmi messy feeding loss to DIC 
    3346                      !! trc2d(ji,jj,186) = trc2d(ji,jj,158)  !! Zmi messy feeding loss to Dc 
    3347                      !! trc2d(ji,jj,187) = trc2d(ji,jj,159)  !! Zmi excretion 
    3348                      !! trc2d(ji,jj,188) = trc2d(ji,jj,160)  !! Zmi respiration 
    3349                      !! trc2d(ji,jj,189) = trc2d(ji,jj,161)  !! Zmi growth 
    3350                      !! trc2d(ji,jj,190) = trc2d(ji,jj,153)  !! Zmi linear loss 
    3351                      !! trc2d(ji,jj,191) = trc2d(ji,jj,13)   !! Zmi non-linear loss 
    3352                      !! trc2d(ji,jj,192) = trc2d(ji,jj,16)   !! Zmi grazing to Zme 
    3353                      !! trc2d(ji,jj,193) = trc2d(ji,jj,17)   !! Zme grazing on D 
    3354                      !! trc2d(ji,jj,194) = trc2d(ji,jj,171)  !! Zme grazing on Dc 
    3355                      !! trc2d(ji,jj,195) = trc2d(ji,jj,162)  !! Zme messy feeding loss to N 
    3356                      !! trc2d(ji,jj,196) = trc2d(ji,jj,163)  !! Zme messy feeding loss to D 
    3357                      !! trc2d(ji,jj,197) = trc2d(ji,jj,164)  !! Zme messy feeding loss to DIC 
    3358                      !! trc2d(ji,jj,198) = trc2d(ji,jj,165)  !! Zme messy feeding loss to Dc 
     4062                     trc2d(ji,jj,172) = trc2d(ji,jj,4)    !! Pn PP 
     4063                     trc2d(ji,jj,173) = trc2d(ji,jj,151)  !! Pn linear loss 
     4064                     trc2d(ji,jj,174) = trc2d(ji,jj,5)    !! Pn non-linear loss 
     4065                     trc2d(ji,jj,175) = trc2d(ji,jj,11)   !! Pn grazing to Zmi 
     4066                     trc2d(ji,jj,176) = trc2d(ji,jj,14)   !! Pn grazing to Zme 
     4067                     trc2d(ji,jj,177) = trc2d(ji,jj,6)    !! Pd PP 
     4068                     trc2d(ji,jj,178) = trc2d(ji,jj,152)  !! Pd linear loss 
     4069                     trc2d(ji,jj,179) = trc2d(ji,jj,7)    !! Pd non-linear loss 
     4070                     trc2d(ji,jj,180) = trc2d(ji,jj,15)   !! Pd grazing to Zme 
     4071                     trc2d(ji,jj,181) = trc2d(ji,jj,12)   !! Zmi grazing on D 
     4072                     trc2d(ji,jj,182) = trc2d(ji,jj,170)  !! Zmi grazing on Dc 
     4073                     trc2d(ji,jj,183) = trc2d(ji,jj,155)  !! Zmi messy feeding loss to N 
     4074                     trc2d(ji,jj,184) = trc2d(ji,jj,156)  !! Zmi messy feeding loss to D 
     4075                     trc2d(ji,jj,185) = trc2d(ji,jj,157)  !! Zmi messy feeding loss to DIC 
     4076                     trc2d(ji,jj,186) = trc2d(ji,jj,158)  !! Zmi messy feeding loss to Dc 
     4077                     trc2d(ji,jj,187) = trc2d(ji,jj,159)  !! Zmi excretion 
     4078                     trc2d(ji,jj,188) = trc2d(ji,jj,160)  !! Zmi respiration 
     4079                     trc2d(ji,jj,189) = trc2d(ji,jj,161)  !! Zmi growth 
     4080                     trc2d(ji,jj,190) = trc2d(ji,jj,153)  !! Zmi linear loss 
     4081                     trc2d(ji,jj,191) = trc2d(ji,jj,13)   !! Zmi non-linear loss 
     4082                     trc2d(ji,jj,192) = trc2d(ji,jj,16)   !! Zmi grazing to Zme 
     4083                     trc2d(ji,jj,193) = trc2d(ji,jj,17)   !! Zme grazing on D 
     4084                     trc2d(ji,jj,194) = trc2d(ji,jj,171)  !! Zme grazing on Dc 
     4085                     trc2d(ji,jj,195) = trc2d(ji,jj,162)  !! Zme messy feeding loss to N 
     4086                     trc2d(ji,jj,196) = trc2d(ji,jj,163)  !! Zme messy feeding loss to D 
     4087                     trc2d(ji,jj,197) = trc2d(ji,jj,164)  !! Zme messy feeding loss to DIC 
     4088                     trc2d(ji,jj,198) = trc2d(ji,jj,165)  !! Zme messy feeding loss to Dc 
    33594089                     trc2d(ji,jj,199) = trc2d(ji,jj,166)  !! Zme excretion 
    33604090                     trc2d(ji,jj,200) = trc2d(ji,jj,167)  !! Zme respiration 
     
    33714101                     trc2d(ji,jj,211) = trc2d(ji,jj,67)   !! Fast detritus remineralisation, C 
    33724102                     trc2d(ji,jj,212) = trc2d(ji,jj,150)  !! Community respiration 
    3373                      trc2d(ji,jj,213) = fslownflux        !! Slow detritus N flux at 150 m 
    3374                      trc2d(ji,jj,214) = fslowcflux        !! Slow detritus C flux at 150 m 
     4103                     trc2d(ji,jj,213) = fslownflux(ji,jj) !! Slow detritus N flux at 150 m 
     4104                     trc2d(ji,jj,214) = fslowcflux(ji,jj) !! Slow detritus C flux at 150 m 
    33754105                     trc2d(ji,jj,215) = ffastn(ji,jj)     !! Fast detritus N flux at 150 m 
    33764106                     trc2d(ji,jj,216) = ffastc(ji,jj)     !! Fast detritus C flux at 150 m 
     
    34004130                  !! 
    34014131                  trc3d(ji,jj,jk,1)  = ((fprn + fprd) * zphn)     !! primary production   
    3402                   trc3d(ji,jj,jk,2)  = fslownflux + ffastn(ji,jj) !! detrital flux 
     4132                  trc3d(ji,jj,jk,2)  = fslownflux(ji,jj) + ffastn(ji,jj) !! detrital flux 
    34034133                  trc3d(ji,jj,jk,3)  = fregen + (freminn * fthk)  !! remineralisation 
    34044134# if defined key_roam 
     
    34144144         END DO 
    34154145         END DO 
     4146         !! 
     4147             IF( lk_iomput  .AND.  .NOT.  ln_diatrc  ) THEN 
     4148                 !! first - 2D diag implemented  
     4149                 !!         on every K level 
     4150                 !!----------------------------------------- 
     4151                 !!  -- 
     4152                 !!second - 2d specific k level diags 
     4153                 !! 
     4154                 !!----------------------------------------- 
     4155                 IF (jk.eq.1) THEN 
     4156                     IF( med_diag%MED_QSR%dgsave ) THEN 
     4157                         CALL iom_put( "MED_QSR"  , qsr ) ! 
     4158                     ENDIF 
     4159                     IF( med_diag%MED_XPAR%dgsave ) THEN 
     4160                         CALL iom_put( "MED_XPAR"  , xpar ) ! 
     4161                     ENDIF        
     4162                     IF( med_diag%OCAL_CCD%dgsave ) THEN 
     4163                         CALL iom_put( "OCAL_CCD"  , ocal_ccd ) ! 
     4164                     ENDIF 
     4165                     IF( med_diag%FE_0000%dgsave ) THEN 
     4166                         CALL iom_put( "FE_0000"  , xFree ) ! 
     4167                     ENDIF                      
     4168                     IF( med_diag%MED_XZE%dgsave ) THEN 
     4169                         CALL iom_put( "MED_XZE"  , xze ) ! 
     4170                     ENDIF  
     4171# if defined key_roam                      
     4172                     IF( med_diag%WIND%dgsave ) THEN 
     4173                         CALL iom_put( "WIND"  , wndm ) 
     4174                     ENDIF 
     4175                     IF( med_diag%ATM_PCO2%dgsave ) THEN 
     4176                         CALL iom_put( "ATM_PCO2"  , f_pco2a2d ) 
     4177                         CALL wrk_dealloc( jpi, jpj,    f_pco2a2d  ) 
     4178                     ENDIF 
     4179                     IF( med_diag%OCN_PH%dgsave ) THEN 
     4180                         zw2d(:,:) = f3_pH(:,:,jk) 
     4181                         CALL iom_put( "OCN_PH"  , zw2d ) 
     4182                     ENDIF 
     4183                     IF( med_diag%OCN_PCO2%dgsave ) THEN 
     4184                         CALL iom_put( "OCN_PCO2"  , f_pco2w2d ) 
     4185                          CALL wrk_dealloc( jpi, jpj,   f_pco2w2d   ) 
     4186                     ENDIF 
     4187                     IF( med_diag%OCNH2CO3%dgsave ) THEN 
     4188                         zw2d(:,:) = f3_h2co3(:,:,jk) 
     4189                         CALL iom_put( "OCNH2CO3"  , zw2d ) 
     4190                     ENDIF 
     4191                     IF( med_diag%OCN_HCO3%dgsave ) THEN 
     4192                         zw2d(:,:) = f3_hco3(:,:,jk) 
     4193                         CALL iom_put( "OCN_HCO3"  , zw2d ) 
     4194                     ENDIF 
     4195                     IF( med_diag%OCN_CO3%dgsave ) THEN 
     4196                         zw2d(:,:) = f3_co3(:,:,jk) 
     4197                         CALL iom_put( "OCN_CO3"  , zw2d ) 
     4198                     ENDIF 
     4199                     IF( med_diag%CO2FLUX%dgsave ) THEN 
     4200                         CALL iom_put( "CO2FLUX"  , f_co2flux2d ) 
     4201                          CALL wrk_dealloc( jpi, jpj,   f_co2flux2d   ) 
     4202                     ENDIF 
     4203                     IF( med_diag%OM_CAL%dgsave ) THEN 
     4204                         CALL iom_put( "OM_CAL"  , f_omcal ) 
     4205                     ENDIF 
     4206                     IF( med_diag%OM_ARG%dgsave ) THEN 
     4207                         CALL iom_put( "OM_ARG"  , f_omarg ) 
     4208                     ENDIF 
     4209                     IF( med_diag%TCO2%dgsave ) THEN 
     4210                         CALL iom_put( "TCO2"  , f_TDIC2d ) 
     4211                          CALL wrk_dealloc( jpi, jpj,   f_TDIC2d   ) 
     4212                     ENDIF 
     4213                     IF( med_diag%TALK%dgsave ) THEN 
     4214                         CALL iom_put( "TALK"  , f_TALK2d ) 
     4215                          CALL wrk_dealloc( jpi, jpj,    f_TALK2d  ) 
     4216                     ENDIF 
     4217                     IF( med_diag%KW660%dgsave ) THEN 
     4218                         CALL iom_put( "KW660"  , f_kw6602d ) 
     4219                          CALL wrk_dealloc( jpi, jpj,   f_kw6602d   ) 
     4220                     ENDIF 
     4221                     IF( med_diag%ATM_PP0%dgsave ) THEN 
     4222                         CALL iom_put( "ATM_PP0"  , f_pp02d ) 
     4223                          CALL wrk_dealloc( jpi, jpj,    f_pp02d  ) 
     4224                     ENDIF 
     4225                     IF( med_diag%O2FLUX%dgsave ) THEN 
     4226                         CALL iom_put( "O2FLUX"  , f_o2flux2d ) 
     4227                          CALL wrk_dealloc( jpi, jpj,   f_o2flux2d   ) 
     4228                     ENDIF 
     4229                     IF( med_diag%O2SAT%dgsave ) THEN 
     4230                         CALL iom_put( "O2SAT"  , f_o2sat2d ) 
     4231                          CALL wrk_dealloc( jpi, jpj,  f_o2sat2d    ) 
     4232                     ENDIF 
     4233                     IF( med_diag%CAL_CCD%dgsave ) THEN 
     4234                         CALL iom_put( "CAL_CCD"  , f2_ccd_cal ) 
     4235                     ENDIF 
     4236                     IF( med_diag%ARG_CCD%dgsave ) THEN 
     4237                         CALL iom_put( "ARG_CCD"  , f2_ccd_arg ) 
     4238                     ENDIF 
     4239                     IF (jdms .eq. 1) THEN 
     4240                       IF( med_diag%DMS_SURF%dgsave ) THEN 
     4241                         CALL iom_put( "DMS_SURF"  , dms_surf2d ) 
     4242                          CALL wrk_dealloc( jpi, jpj,   dms_surf2d   ) 
     4243                       ENDIF 
     4244                       IF( med_diag%DMS_ANDR%dgsave ) THEN 
     4245                         CALL iom_put( "DMS_ANDR"  , dms_andr2d ) 
     4246                          CALL wrk_dealloc( jpi, jpj,   dms_andr2d   ) 
     4247                       ENDIF 
     4248                       IF( med_diag%DMS_SIMO%dgsave ) THEN 
     4249                         CALL iom_put( "DMS_SIMO"  , dms_simo2d ) 
     4250                          CALL wrk_dealloc( jpi, jpj,    dms_simo2d  ) 
     4251                       ENDIF 
     4252                       IF( med_diag%DMS_ARAN%dgsave ) THEN 
     4253                         CALL iom_put( "DMS_ARAN"  , dms_aran2d ) 
     4254                          CALL wrk_dealloc( jpi, jpj,   dms_aran2d   ) 
     4255                       ENDIF 
     4256                       IF( med_diag%DMS_HALL%dgsave ) THEN 
     4257                         CALL iom_put( "DMS_HALL"  , dms_hall2d ) 
     4258                          CALL wrk_dealloc( jpi, jpj,   dms_hall2d   ) 
     4259                       ENDIF 
     4260                     ENDIF 
     4261# endif                      
     4262                 ELSE IF (jk.eq.i0100) THEN  
     4263                     IF( med_diag%SDT__100%dgsave ) THEN 
     4264                         CALL iom_put( "SDT__100"  , fslownflux ) 
     4265                     ENDIF 
     4266                     IF( med_diag%REG__100%dgsave ) THEN 
     4267                         CALL iom_put( "REG__100"  , fregen2d ) 
     4268                     ENDIF 
     4269                     IF( med_diag%FDT__100%dgsave ) THEN 
     4270                         CALL iom_put( "FDT__100"  , ffastn ) 
     4271                     ENDIF            
     4272                     IF( med_diag%RG__100F%dgsave ) THEN 
     4273                         CALL iom_put( "RG__100F"  , fregenfast ) 
     4274                     ENDIF 
     4275                     IF( med_diag%FDS__100%dgsave ) THEN 
     4276                         CALL iom_put( "FDS__100"  , ffastsi ) 
     4277                     ENDIF          
     4278                     IF( med_diag%RGS_100F%dgsave ) THEN 
     4279                         CALL iom_put( "RGS_100F"  , fregenfastsi ) 
     4280                     ENDIF 
     4281                     IF( med_diag%FE_0100%dgsave ) THEN 
     4282                         CALL iom_put( "FE_0100"  , xFree ) 
     4283                     ENDIF 
     4284# if defined key_roam                      
     4285                     IF( med_diag%RR_0100%dgsave ) THEN 
     4286                         CALL iom_put( "RR_0100"  , ffastca2d ) 
     4287                     ENDIF                      
     4288                     IF( med_diag%SDC__100%dgsave ) THEN 
     4289                         CALL iom_put( "SDC__100"  , fslowcflux ) 
     4290                     ENDIF                   
     4291                 ELSE IF (jk.eq.i0150) THEN 
     4292                     IF( med_diag%BASSIN_01%dgsave ) THEN 
     4293                         CALL iom_put( "BASSIN_01"  , fprn2d ) 
     4294                     ENDIF 
     4295                     IF( med_diag%BASSIN_02%dgsave ) THEN 
     4296                         CALL iom_put( "BASSIN_02"  , fdpn22d ) 
     4297                     ENDIF 
     4298                     IF( med_diag%BASSIN_03%dgsave ) THEN 
     4299                         CALL iom_put( "BASSIN_03"  , fdpn2d ) 
     4300                     ENDIF 
     4301                     IF( med_diag%BASSIN_04%dgsave ) THEN 
     4302                         CALL iom_put( "BASSIN_04"  , fgmipn2d ) 
     4303                     ENDIF 
     4304                     IF( med_diag%BASSIN_05%dgsave ) THEN 
     4305                         CALL iom_put( "BASSIN_05"  , fgmepn2d ) 
     4306                     ENDIF 
     4307                     IF( med_diag%BASSIN_06%dgsave ) THEN 
     4308                         CALL iom_put( "BASSIN_06"  , fprd2d ) 
     4309                     ENDIF 
     4310                     IF( med_diag%BASSIN_07%dgsave ) THEN 
     4311                         CALL iom_put( "BASSIN_07"  , fdpd22d ) 
     4312                     ENDIF 
     4313                     IF( med_diag%BASSIN_08%dgsave ) THEN 
     4314                         CALL iom_put( "BASSIN_08"  , fdpd2d ) 
     4315                     ENDIF 
     4316                     IF( med_diag%BASSIN_09%dgsave ) THEN 
     4317                         CALL iom_put( "BASSIN_09"  , fgmepd2d ) 
     4318                     ENDIF 
     4319                     IF( med_diag%BASSIN_10%dgsave ) THEN 
     4320                         CALL iom_put( "BASSIN_10"  , fgmid2d ) 
     4321                     ENDIF 
     4322                     IF( med_diag%BASSIN_11%dgsave ) THEN 
     4323                         CALL iom_put( "BASSIN_11"  , gmidc2d ) 
     4324                     ENDIF 
     4325                     IF( med_diag%BASSIN_12%dgsave ) THEN 
     4326                         CALL iom_put( "BASSIN_12"  , zimesn2d ) 
     4327                     ENDIF 
     4328                     IF( med_diag%BASSIN_13%dgsave ) THEN 
     4329                         CALL iom_put( "BASSIN_13"  , zimesd2d ) 
     4330                     ENDIF 
     4331                     IF( med_diag%BASSIN_14%dgsave ) THEN 
     4332                         CALL iom_put( "BASSIN_14"  , zimesc2d ) 
     4333                     ENDIF 
     4334                     IF( med_diag%BASSIN_15%dgsave ) THEN 
     4335                         CALL iom_put( "BASSIN_15"  , zimesdc2d ) 
     4336                     ENDIF 
     4337                     IF( med_diag%BASSIN_16%dgsave ) THEN 
     4338                         CALL iom_put( "BASSIN_16"  , ziexcr2d ) 
     4339                     ENDIF 
     4340                     IF( med_diag%BASSIN_17%dgsave ) THEN 
     4341                         CALL iom_put( "BASSIN_17"  , ziresp2d ) 
     4342                     ENDIF 
     4343                     IF( med_diag%BASSIN_18%dgsave ) THEN 
     4344                         CALL iom_put( "BASSIN_18"  , zigrow2d ) 
     4345                     ENDIF 
     4346                     IF( med_diag%BASSIN_19%dgsave ) THEN 
     4347                         CALL iom_put( "BASSIN_19"  , fdzmi22d ) 
     4348                     ENDIF 
     4349                     IF( med_diag%BASSIN_20%dgsave ) THEN 
     4350                         CALL iom_put( "BASSIN_20"  , fdzmi2d ) 
     4351                     ENDIF 
     4352                     IF( med_diag%BASSIN_21%dgsave ) THEN 
     4353                         CALL iom_put( "BASSIN_21"  , fgmezmi2d ) 
     4354                     ENDIF 
     4355                     IF( med_diag%BASSIN_22%dgsave ) THEN 
     4356                         CALL iom_put( "BASSIN_22"  , fgmed2d ) 
     4357                     ENDIF 
     4358                     IF( med_diag%BASSIN_23%dgsave ) THEN 
     4359                         CALL iom_put( "BASSIN_23"  , gmedc2d ) 
     4360                     ENDIF 
     4361                     IF( med_diag%BASSIN_24%dgsave ) THEN 
     4362                         CALL iom_put( "BASSIN_24"  , zemesn2d ) 
     4363                     ENDIF   
     4364                     IF( med_diag%BASSIN_25%dgsave ) THEN 
     4365                         CALL iom_put( "BASSIN_25"  , zemesd2d ) 
     4366                     ENDIF 
     4367                     IF( med_diag%BASSIN_26%dgsave ) THEN 
     4368                         CALL iom_put( "BASSIN_26"  , zemesc2d ) 
     4369                     ENDIF 
     4370                     IF( med_diag%BASSIN_27%dgsave ) THEN 
     4371                         CALL iom_put( "BASSIN_27"  , zemesdc2d ) 
     4372                     ENDIF 
     4373                     IF( med_diag%BASSIN_28%dgsave ) THEN 
     4374                         CALL iom_put( "BASSIN_28"  , zeexcr2d ) 
     4375                     ENDIF 
     4376                     IF( med_diag%BASSIN_29%dgsave ) THEN 
     4377                         CALL iom_put( "BASSIN_29"  , zeresp2d ) 
     4378                     ENDIF 
     4379                     IF( med_diag%BASSIN_30%dgsave ) THEN 
     4380                         CALL iom_put( "BASSIN_30"  , zegrow2d ) 
     4381                     ENDIF 
     4382                     IF( med_diag%BASSIN_31%dgsave ) THEN 
     4383                         CALL iom_put( "BASSIN_30"  , fdzme22d ) 
     4384                     ENDIF 
     4385                     IF( med_diag%BASSIN_32%dgsave ) THEN 
     4386                         CALL iom_put( "BASSIN_32"  , fdzme2d ) 
     4387                     ENDIF 
     4388                     IF( med_diag%BASSIN_33%dgsave ) THEN 
     4389                         CALL iom_put( "BASSIN_33"  , fslown2d ) 
     4390                     ENDIF 
     4391                     IF( med_diag%BASSIN_34%dgsave ) THEN 
     4392                         CALL iom_put( "BASSIN_34"  , fdd2d ) 
     4393                     ENDIF 
     4394                     IF( med_diag%BASSIN_35%dgsave ) THEN 
     4395                         CALL iom_put( "BASSIN_35"  , fslowc2d ) 
     4396                     ENDIF 
     4397                     IF( med_diag%BASSIN_36%dgsave ) THEN 
     4398                         CALL iom_put( "BASSIN_36"  , mdetc2d ) 
     4399                     ENDIF 
     4400                     IF( med_diag%BASSIN_37%dgsave ) THEN 
     4401                         CALL iom_put( "BASSIN_37"  , ftempn2d ) 
     4402                     ENDIF 
     4403                     IF( med_diag%BASSIN_38%dgsave ) THEN 
     4404                         CALL iom_put( "BASSIN_38"  , freminn2d ) 
     4405                     ENDIF 
     4406                     IF( med_diag%BASSIN_39%dgsave ) THEN 
     4407                         CALL iom_put( "BASSIN_39"  , ftempc2d ) 
     4408                     ENDIF 
     4409                     IF( med_diag%BASSIN_40%dgsave ) THEN 
     4410                         CALL iom_put( "BASSIN_40"  , freminc2d ) 
     4411                     ENDIF 
     4412                     IF( med_diag%BASSIN_41%dgsave ) THEN 
     4413                         CALL iom_put( "BASSIN_41"  , fcomm_resp ) 
     4414                     ENDIF                   
     4415                     IF( med_diag%BASSIN_42%dgsave ) THEN 
     4416                         CALL iom_put( "BASSIN_42"  , fslownflux ) 
     4417                     ENDIF 
     4418                     IF( med_diag%BASSIN_43%dgsave ) THEN 
     4419                         CALL iom_put( "BASSIN_43"  , fslowcflux ) 
     4420                     ENDIF 
     4421                     IF( med_diag%BASSIN_44%dgsave ) THEN 
     4422                         CALL iom_put( "BASSIN_44"  , ffastn ) 
     4423                     ENDIF 
     4424                     IF( med_diag%BASSIN_45%dgsave ) THEN 
     4425                         CALL iom_put( "BASSIN_45"  , ffastc ) 
     4426                     ENDIF 
     4427# endif                      
     4428                 ELSE IF (jk.eq.i0200) THEN 
     4429                     IF( med_diag%SDT__200%dgsave ) THEN 
     4430                         CALL iom_put( "SDT__200"  , fslownflux ) 
     4431                     ENDIF 
     4432                     IF( med_diag%REG__200%dgsave ) THEN 
     4433                         CALL iom_put( "REG__200"  , fregen2d ) 
     4434                     ENDIF 
     4435                     IF( med_diag%FDT__200%dgsave ) THEN 
     4436                         CALL iom_put( "FDT__200"  , ffastn ) 
     4437                     ENDIF 
     4438                     IF( med_diag%RG__200F%dgsave ) THEN 
     4439                         CALL iom_put( "RG__200F"  , fregenfast ) 
     4440                     ENDIF 
     4441                     IF( med_diag%FDS__200%dgsave ) THEN 
     4442                         CALL iom_put( "FDS__200"  , ffastsi ) 
     4443                     ENDIF 
     4444                     IF( med_diag%RGS_200F%dgsave ) THEN 
     4445                         CALL iom_put( "RGS_200F"  , fregenfastsi ) 
     4446                     ENDIF 
     4447                     IF( med_diag%FE_0200%dgsave ) THEN 
     4448                         CALL iom_put( "FE_0200"  , xFree ) 
     4449                     ENDIF 
     4450# if defined key_roam                      
     4451                     IF( med_diag%SDC__200%dgsave ) THEN 
     4452                         CALL iom_put( "SDC__200"  , fslowcflux ) 
     4453                     ENDIF 
     4454# endif                      
     4455                 ELSE IF (jk.eq.i0500) THEN 
     4456                     IF( med_diag%SDT__500%dgsave ) THEN 
     4457                         CALL iom_put( "SDT__500"  , fregen2d ) 
     4458                     ENDIF 
     4459                     IF( med_diag%REG__500%dgsave ) THEN 
     4460                         CALL iom_put( "REG__500"  , fregen2d ) 
     4461                     ENDIF       
     4462                     IF( med_diag%FDT__500%dgsave ) THEN 
     4463                         CALL iom_put( "FDT__500"  , ffastn ) 
     4464                     ENDIF 
     4465                     IF( med_diag%RG__500F%dgsave ) THEN 
     4466                         CALL iom_put( "RG__500F"  , fregenfast ) 
     4467                     ENDIF 
     4468                     IF( med_diag%FDS__500%dgsave ) THEN 
     4469                         CALL iom_put( "FDS__500"  , ffastsi ) 
     4470                     ENDIF 
     4471                     IF( med_diag%RGS_500F%dgsave ) THEN 
     4472                         CALL iom_put( "RGS_500F"  , fregenfastsi ) 
     4473                     ENDIF 
     4474                     IF( med_diag%FE_0500%dgsave ) THEN 
     4475                         CALL iom_put( "FE_0500"  , xFree ) 
     4476                     ENDIF 
     4477# if defined key_roam                      
     4478                     IF( med_diag%RR_0500%dgsave ) THEN 
     4479                         CALL iom_put( "RR_0500"  , ffastca2d ) 
     4480                     ENDIF 
     4481                     IF( med_diag%SDC__500%dgsave ) THEN 
     4482                         CALL iom_put( "SDC__500"  , fslowcflux ) 
     4483                     ENDIF   
     4484# endif                       
     4485                 ELSE IF (jk.eq.i1000) THEN 
     4486                     IF( med_diag%SDT_1000%dgsave ) THEN 
     4487                         CALL iom_put( "SDT_1000"  , fslownflux ) 
     4488                     ENDIF 
     4489                     IF( med_diag%REG__1000%dgsave ) THEN 
     4490                         CALL iom_put( "REG__1000"  , fregen2d ) 
     4491                     ENDIF   
     4492                     IF( med_diag%FDT__1000%dgsave ) THEN 
     4493                         CALL iom_put( "FDT__1000"  , ffastn ) 
     4494                     ENDIF 
     4495                     IF( med_diag%RG__1000F%dgsave ) THEN 
     4496                         CALL iom_put( "RG__1000F"  , fregenfast ) 
     4497                     ENDIF 
     4498                     IF( med_diag%FDS__1000%dgsave ) THEN 
     4499                         CALL iom_put( "FDS__1000"  , ffastsi ) 
     4500                     ENDIF 
     4501                     IF( med_diag%RGS1000F%dgsave ) THEN 
     4502                         CALL iom_put( "RGS1000F"  , fregenfastsi ) 
     4503                     ENDIF 
     4504                     IF( med_diag%FE_1000%dgsave ) THEN 
     4505                         CALL iom_put( "FE_1000"  , xFree ) 
     4506                     ENDIF 
     4507# if defined key_roam                      
     4508                     IF( med_diag%RR_1000%dgsave ) THEN 
     4509                         CALL iom_put( "RR_1000"  , ffastca2d ) 
     4510                          CALL wrk_dealloc( jpi, jpj,  ffastca2d    ) 
     4511                     ENDIF 
     4512                     IF( med_diag%SDC__1000%dgsave ) THEN 
     4513                         CALL iom_put( "SDC__1000"  , fslowcflux ) 
     4514                     ENDIF  
     4515# endif                       
     4516                 ELSE IF (jk.eq.(mbathy(ji,jj)-1)) THEN 
     4517                     IF( med_diag%SEAFLRN%dgsave ) THEN 
     4518                         CALL iom_put( "SEAFLRN"  , fsedn ) 
     4519                     ENDIF 
     4520                     IF( med_diag%SEAFLRSI%dgsave ) THEN 
     4521                         CALL iom_put( "SEAFLRSI"  , fsedsi ) 
     4522                     ENDIF 
     4523                     IF( med_diag%SEAFLRFE%dgsave ) THEN 
     4524                         CALL iom_put( "SEAFLRFE"  , fsedfe ) 
     4525                     ENDIF 
     4526                     IF( med_diag%SEAFLRC%dgsave ) THEN 
     4527                         CALL iom_put( "SEAFLRC"  , fsedc ) 
     4528                     ENDIF 
     4529                     IF( med_diag%SEAFLRCA%dgsave ) THEN 
     4530                         CALL iom_put( "SEAFLRCA"  , fsedca ) 
     4531                     ENDIF 
     4532# if defined key_roam                      
     4533                     IF( med_diag%IBEN_N%dgsave ) THEN 
     4534                         zw2d(:,:) = f_sbenin_n(:,:)  + f_fbenin_n(:,:)  
     4535                         CALL iom_put( "IBEN_N"  , zw2d ) 
     4536                     ENDIF 
     4537                     IF( med_diag%IBEN_FE%dgsave ) THEN 
     4538                         zw2d(:,:) = f_sbenin_fe(:,:) + f_fbenin_fe(:,:) 
     4539                         CALL iom_put( "IBEN_FE"  , zw2d ) 
     4540                     ENDIF 
     4541                     IF( med_diag%IBEN_C%dgsave ) THEN 
     4542                         zw2d(:,:) = f_sbenin_c(:,:)  + f_fbenin_c(:,:) 
     4543                         CALL iom_put( "IBEN_C"  , zw2d ) 
     4544                     ENDIF 
     4545                     IF( med_diag%IBEN_SI%dgsave ) THEN 
     4546                         CALL iom_put( "IBEN_SI"  , f_fbenin_si ) 
     4547                     ENDIF 
     4548                     IF( med_diag%IBEN_CA%dgsave ) THEN 
     4549                         CALL iom_put( "IBEN_CA"  , f_fbenin_ca ) 
     4550                     ENDIF 
     4551                     IF( med_diag%OBEN_N%dgsave ) THEN 
     4552                         CALL iom_put( "OBEN_N"  , f_benout_n ) 
     4553                     ENDIF 
     4554                     IF( med_diag%OBEN_FE%dgsave ) THEN 
     4555                         CALL iom_put( "OBEN_FE"  , f_benout_fe ) 
     4556                     ENDIF 
     4557                     IF( med_diag%OBEN_C%dgsave ) THEN 
     4558                         CALL iom_put( "OBEN_C"  , f_benout_c ) 
     4559                     ENDIF 
     4560                     IF( med_diag%OBEN_SI%dgsave ) THEN 
     4561                         CALL iom_put( "OBEN_SI"  , f_benout_si ) 
     4562                     ENDIF 
     4563                     IF( med_diag%OBEN_CA%dgsave ) THEN 
     4564                         CALL iom_put( "OBEN_CA"  , f_benout_ca ) 
     4565                     ENDIF 
     4566                     IF( med_diag%SFR_OCAL%dgsave ) THEN 
     4567                         zw2d(:,:) = f3_omcal(:,:,jk) 
     4568                         CALL iom_put( "SFR_OCAL"  , zw2d ) 
     4569                     ENDIF 
     4570                     IF( med_diag%SFR_OARG%dgsave ) THEN 
     4571                         zw2d(:,:) =  f3_omarg(:,:,jk) 
     4572                         CALL iom_put( "SFR_OARG"  , zw2d ) 
     4573                     ENDIF   
     4574                     IF( med_diag%LYSO_CA%dgsave ) THEN 
     4575                         CALL iom_put( "LYSO_CA"  , f_benout_lyso_ca ) 
     4576                     ENDIF  
     4577# endif                      
     4578                 ENDIF 
     4579                 !! to do on every k loop : 
     4580                 IF( med_diag%DETFLUX3%dgsave ) THEN 
     4581                      detflux3d(:,:,jk) = fslownflux(:,:) + ffastn(:,:) !! detrital flux 
     4582                      !CALL iom_put( "DETFLUX3"  , ftot_n ) 
     4583                  ENDIF 
     4584             ENDIF 
    34164585      !! CLOSE vertical loop 
    34174586      END DO 
     
    34484617         zn_sed_ca(:,:) = za_sed_ca(:,:) 
    34494618      endif 
    3450       DO jj = 2,jpjm1 
    3451          DO ji = 2,jpim1 
    3452             trc2d(ji,jj,131) = za_sed_n(ji,jj) 
    3453             trc2d(ji,jj,132) = za_sed_fe(ji,jj) 
    3454             trc2d(ji,jj,133) = za_sed_c(ji,jj) 
    3455             trc2d(ji,jj,134) = za_sed_si(ji,jj) 
    3456             trc2d(ji,jj,135) = za_sed_ca(ji,jj) 
     4619      IF( ln_diatrc ) THEN 
     4620         DO jj = 2,jpjm1 
     4621            DO ji = 2,jpim1 
     4622               trc2d(ji,jj,131) = za_sed_n(ji,jj) 
     4623               trc2d(ji,jj,132) = za_sed_fe(ji,jj) 
     4624               trc2d(ji,jj,133) = za_sed_c(ji,jj) 
     4625               trc2d(ji,jj,134) = za_sed_si(ji,jj) 
     4626               trc2d(ji,jj,135) = za_sed_ca(ji,jj) 
     4627            ENDDO 
    34574628         ENDDO 
    3458       ENDDO 
    3459       !! AXY (07/07/15): temporary hijacking 
     4629         !! AXY (07/07/15): temporary hijacking 
    34604630# if defined key_roam 
    3461       trc2d(:,:,126) = zn_dms_chn(:,:) 
    3462       trc2d(:,:,127) = zn_dms_chd(:,:) 
    3463       trc2d(:,:,128) = zn_dms_mld(:,:) 
    3464       trc2d(:,:,129) = zn_dms_qsr(:,:) 
    3465       trc2d(:,:,130) = zn_dms_din(:,:) 
    3466 # endif 
    3467  
     4631  !!       trc2d(:,:,126) = zn_dms_chn(:,:) 
     4632  !!       trc2d(:,:,127) = zn_dms_chd(:,:) 
     4633  !!       trc2d(:,:,128) = zn_dms_mld(:,:) 
     4634  !!       trc2d(:,:,129) = zn_dms_qsr(:,:) 
     4635  !!       trc2d(:,:,130) = zn_dms_din(:,:) 
     4636# endif 
     4637      ENDIF  
     4638      !! 
    34684639      if (ibenthic.eq.2) then 
    34694640         !! The code below (in this if ... then ... endif loop) is 
     
    36154786            END DO 
    36164787         END DO 
    3617  
     4788          
    36184789# if defined key_roam 
    36194790#  if defined key_axy_nancheck 
     
    36814852         END DO  
    36824853 
    3683 # if defined key_axy_nodiag 
    3684          !!---------------------------------------------------------------------- 
    3685          !! Blank diagnostics as a NaN-trap 
    3686          !!---------------------------------------------------------------------- 
    3687          !!  
    3688          !! blank 2D diagnostic array 
    3689          trc2d(:,:,:) = 0.e0 
    3690          !! 
    3691          !! blank 3D diagnostic array 
    3692          trc3d(:,:,:,:) = 0.e0 
    3693 # endif 
    3694  
    3695 # if defined key_iomput 
     4854      ELSE IF( lk_iomput .AND. .NOT. ln_diatrc ) THEN 
     4855         !!!---------------------------------------------------------------------- 
     4856         !! Add very last diag calculations 
     4857         !!!---------------------------------------------------------------------- 
     4858         DO jj = 2,jpjm1 
     4859            DO ji = 2,jpim1 
     4860                !!          
     4861                IF( med_diag%PN_JLIM%dgsave ) THEN 
     4862                    fjln2d(ji,jj) = fjln2d(ji,jj)  / MAX(ftot_pn(ji,jj), rsmall) 
     4863                ENDIF 
     4864                IF( med_diag%PN_NLIM%dgsave ) THEN 
     4865                    fnln2d(ji,jj) = fnln2d(ji,jj)  / MAX(ftot_pn(ji,jj), rsmall) 
     4866                ENDIF 
     4867                IF( med_diag%PN_FELIM%dgsave ) THEN 
     4868                    ffln2d(ji,jj) = ffln2d(ji,jj)  / MAX(ftot_pn(ji,jj), rsmall) 
     4869                ENDIF 
     4870                IF( med_diag%PD_JLIM%dgsave ) THEN 
     4871                    fjld2d(ji,jj) = fjld2d(ji,jj)  / MAX(ftot_pd(ji,jj), rsmall) 
     4872                ENDIF 
     4873                IF( med_diag%PD_NLIM%dgsave ) THEN 
     4874                    fnld2d(ji,jj) = fnld2d(ji,jj)  / MAX(ftot_pd(ji,jj), rsmall) 
     4875                ENDIF 
     4876                IF( med_diag%PD_FELIM%dgsave ) THEN 
     4877                    ffld2d(ji,jj) = ffld2d(ji,jj)  / MAX(ftot_pd(ji,jj), rsmall) 
     4878                ENDIF 
     4879                IF( med_diag%PD_SILIM%dgsave ) THEN 
     4880                    fsld2d2(ji,jj) = fsld2d2(ji,jj)  / MAX(ftot_pd(ji,jj), rsmall) 
     4881                ENDIF 
     4882                IF( med_diag%PDSILIM2%dgsave ) THEN 
     4883                    fsld2d(ji,jj) = fsld2d(ji,jj)  / MAX(ftot_pd(ji,jj), rsmall) 
     4884                ENDIF 
     4885            END DO 
     4886         END DO 
    36964887         !!---------------------------------------------------------------------- 
    36974888         !! Add in XML diagnostics stuff 
     
    36994890         !! 
    37004891         !! ** 2D diagnostics 
    3701          DO jn=1,jp_medusa_2d 
    3702             CALL iom_put(TRIM(ctrc2d(jn)), trc2d(:,:,jn)) 
    3703          END DO 
    3704 !! AXY (17/02/14): don't think I need this if I modify the above for all diagnostics 
    3705 !! #  if defined key_roam 
    3706 !!          DO jn=91,jp_medusa_2d 
    3707 !!             CALL iom_put(TRIM(ctrc2d(jn)), trc2d(:,:,jn)) 
    3708 !!          END DO       
    3709 !! #  endif 
     4892         IF ( med_diag%INVTN%dgsave ) THEN 
     4893             CALL iom_put( "INVTN"  , ftot_n ) 
     4894         ENDIF 
     4895         IF ( med_diag%INVTSI") THEN 
     4896             CALL iom_put( "INVTSI"  , ftot_si ) 
     4897         ENDIF 
     4898         IF ( med_diag%INVTFE%dgsave ) THEN 
     4899             CALL iom_put( "INVTFE"  , ftot_fe ) 
     4900         ENDIF                            
     4901         IF ( med_diag%ML_PRN%dgsave ) THEN 
     4902             CALL iom_put( "ML_PRN"  , fprn_ml ) 
     4903         ENDIF 
     4904         IF ( med_diag%ML_PRD%dgsave ) THEN 
     4905             CALL iom_put( "ML_PRD"  , fprd_ml ) 
     4906         ENDIF 
     4907         IF ( med_diag%OCAL_LVL%dgsave ) THEN 
     4908             CALL iom_put( "OCAL_LVL"  , fccd ) 
     4909         ENDIF 
     4910         IF ( med_diag%PN_JLIM%dgsave ) THEN 
     4911             CALL iom_put( "PN_JLIM"  , fjln2d ) 
     4912             CALL wrk_dealloc( jpi, jpj,   fjln2d   ) 
     4913         ENDIF 
     4914         IF ( med_diag%PN_NLIM%dgsave ) THEN 
     4915             CALL iom_put( "PN_NLIM"  , fnln2d ) 
     4916             CALL wrk_dealloc( jpi, jpj,   fnln2d   ) 
     4917         ENDIF 
     4918         IF ( med_diag%PN_FELIM%dgsave ) THEN 
     4919             CALL iom_put( "PN_FELIM"  , ffln2d ) 
     4920             CALL wrk_dealloc( jpi, jpj,   ffln2d   ) 
     4921         ENDIF 
     4922         IF ( med_diag%PD_JLIM%dgsave ) THEN 
     4923             CALL iom_put( "PD_JLIM"  , fjld2d ) 
     4924             CALL wrk_dealloc( jpi, jpj,  fjld2d    ) 
     4925         ENDIF 
     4926         IF ( med_diag%PD_NLIM%dgsave ) THEN 
     4927             CALL iom_put( "PD_NLIM"  , fnld2d ) 
     4928             CALL wrk_dealloc( jpi, jpj,   fnld2d  ) 
     4929         ENDIF 
     4930         IF ( med_diag%PD_FELIM%dgsave ) THEN 
     4931             CALL iom_put( "PD_FELIM"  , ffld2d ) 
     4932             CALL wrk_dealloc( jpi, jpj,  ffld2d    ) 
     4933         ENDIF 
     4934         IF ( med_diag%PD_SILIM%dgsave ) THEN 
     4935             CALL iom_put( "PD_SILIM"  , fsld2d2 ) 
     4936             CALL wrk_dealloc( jpi, jpj,   fsld2d2   ) 
     4937         ENDIF 
     4938         IF ( med_diag%PDSILIM2%dgsave ) THEN 
     4939             CALL iom_put( "PDSILIM2"  , fsld2d ) 
     4940             CALL wrk_dealloc( jpi, jpj,   fsld2d   ) 
     4941         ENDIF 
     4942         IF ( med_diag%INTFLX_N%dgsave ) THEN 
     4943             CALL iom_put( "INTFLX_N"  , fflx_n ) 
     4944         ENDIF 
     4945         IF ( med_diag%INTFLX_SI%dgsave ) THEN 
     4946             CALL iom_put( "INTFLX_SI"  , fflx_si ) 
     4947         ENDIF 
     4948         IF ( med_diag%INTFLX_FE%dgsave ) THEN 
     4949             CALL iom_put( "INTFLX_FE"  , fflx_fe ) 
     4950         ENDIF         
     4951         IF ( med_diag%INT_PN%dgsave ) THEN 
     4952             CALL iom_put( "INT_PN"  , ftot_pn ) 
     4953         ENDIF 
     4954         IF ( med_diag%INT_PD%dgsave ) THEN 
     4955             CALL iom_put( "INT_PD"  , ftot_pd ) 
     4956         ENDIF          
     4957         IF ( med_diag%INT_ZMI%dgsave ) THEN 
     4958             CALL iom_put( "INT_ZMI"  , ftot_zmi ) 
     4959         ENDIF 
     4960         IF ( med_diag%INT_ZME%dgsave ) THEN 
     4961             CALL iom_put( "INT_ZME"  , ftot_zme ) 
     4962         ENDIF 
     4963         IF ( med_diag%INT_DET%dgsave ) THEN 
     4964             CALL iom_put( "INT_DET"  , ftot_det ) 
     4965         ENDIF 
     4966         IF ( med_diag%INT_DTC%dgsave ) THEN 
     4967             CALL iom_put( "INT_DTC"  , ftot_dtc ) 
     4968         ENDIF 
     4969         IF ( med_diag%BEN_N%dgsave ) THEN 
     4970             CALL iom_put( "BEN_N"  , za_sed_n ) 
     4971         ENDIF 
     4972         IF ( med_diag%BEN_FE%dgsave ) THEN 
     4973             CALL iom_put( "BEN_FE"  , za_sed_fe ) 
     4974         ENDIF 
     4975         IF ( med_diag%BEN_C%dgsave ) THEN 
     4976             CALL iom_put( "BEN_C"  , za_sed_c ) 
     4977         ENDIF 
     4978         IF ( med_diag%BEN_SI%dgsave ) THEN 
     4979             CALL iom_put( "BEN_SI"  , za_sed_si ) 
     4980         ENDIF 
     4981         IF ( med_diag%BEN_CA%dgsave ) THEN 
     4982             CALL iom_put( "BEN_CA"  , za_sed_ca ) 
     4983         ENDIF 
     4984         IF ( med_diag%RUNOFF%dgsave ) THEN 
     4985             CALL iom_put( "RUNOFF"  , f_runoff ) 
     4986         ENDIF  
     4987# if defined key_roam         
     4988         IF ( med_diag%N_PROD%dgsave ) THEN 
     4989             CALL iom_put( "N_PROD"  , fnit_prod ) 
     4990         ENDIF 
     4991         IF ( med_diag%N_CONS%dgsave ) THEN 
     4992             CALL iom_put( "N_CONS"  , fnit_cons ) 
     4993         ENDIF 
     4994         IF ( med_diag%C_PROD%dgsave ) THEN 
     4995             CALL iom_put( "C_PROD"  , fcar_prod ) 
     4996         ENDIF 
     4997         IF ( med_diag%C_CONS%dgsave ) THEN 
     4998             CALL iom_put( "C_CONS"  , fcar_cons ) 
     4999         ENDIF 
     5000         IF ( med_diag%O2_PROD%dgsave ) THEN 
     5001             CALL iom_put( "O2_PROD"  , foxy_prod ) 
     5002         ENDIF 
     5003         IF ( med_diag%O2_CONS%dgsave ) THEN 
     5004             CALL iom_put( "O2_CONS"  , foxy_cons ) 
     5005         ENDIF 
     5006         IF ( med_diag%O2_ANOX%dgsave ) THEN 
     5007             CALL iom_put( "O2_ANOX"  , foxy_anox ) 
     5008         ENDIF 
     5009         IF ( med_diag%INVTC%dgsave ) THEN 
     5010             CALL iom_put( "INVTC"  , ftot_c ) 
     5011         ENDIF 
     5012         IF ( med_diag%INVTALK%dgsave ) THEN 
     5013             CALL iom_put( "INVTALK"  , ftot_a ) 
     5014         ENDIF 
     5015         IF ( med_diag%INVTO2%dgsave ) THEN 
     5016            CALL iom_put( "INVTO2"  , ftot_o2 ) 
     5017         ENDIF 
     5018         IF ( med_diag%COM_RESP%dgsave ) THEN 
     5019             CALL iom_put( "COM_RESP"  , fcomm_resp ) 
     5020         ENDIF          
     5021# endif       
     5022         !! 
     5023         !! diagnostic filled in the i-j-k main loop 
     5024         !!-------------------------------------------- 
     5025        IF ( med_diag%PRN%dgsave ) THEN 
     5026            CALL iom_put( "PRN"  , fprn2d ) 
     5027            CALL wrk_dealloc( jpi, jpj,   fprn2d   ) 
     5028        ENDIF 
     5029        IF ( med_diag%MPN%dgsave ) THEN 
     5030            CALL iom_put( "MPN"  ,fdpn2d  ) 
     5031            CALL wrk_dealloc( jpi, jpj,    fdpn2d  ) 
     5032        ENDIF 
     5033        IF ( med_diag%PRD%dgsave ) THEN 
     5034            CALL iom_put( "PRD"  ,fprd2d  ) 
     5035            CALL wrk_dealloc( jpi, jpj,   fprd2d  ) 
     5036        ENDIF 
     5037        IF( med_diag%MPD%dgsave ) THEN 
     5038            CALL iom_put( "MPD"  , fdpd2d ) 
     5039            CALL wrk_dealloc( jpi, jpj,    fdpd2d ) 
     5040        ENDIF 
     5041        !  IF( med_diag%DSED%dgsave ) THEN 
     5042        !      CALL iom_put( "DSED"  , ftot_n ) 
     5043        !  ENDIF 
     5044        IF( med_diag%OPAL%dgsave ) THEN 
     5045            CALL iom_put( "OPAL"  , fprds2d ) 
     5046            CALL wrk_dealloc( jpi, jpj,   fprds2d  ) 
     5047        ENDIF 
     5048        IF( med_diag%OPALDISS%dgsave ) THEN 
     5049            CALL iom_put( "OPALDISS"  , fsdiss2d ) 
     5050            CALL wrk_dealloc( jpi, jpj,   fsdiss2d  ) 
     5051        ENDIF 
     5052        IF( med_diag%GMIPn%dgsave ) THEN 
     5053            CALL iom_put( "GMIPn"  , fgmipn2d ) 
     5054            CALL wrk_dealloc( jpi, jpj,   fgmipn2d  ) 
     5055        ENDIF 
     5056        IF( med_diag%GMID%dgsave ) THEN 
     5057            CALL iom_put( "GMID"  , fgmid2d ) 
     5058            CALL wrk_dealloc( jpi, jpj,  fgmid2d  ) 
     5059        ENDIF 
     5060        IF( med_diag%MZMI%dgsave ) THEN 
     5061            CALL iom_put( "MZMI"  , fdzmi2d ) 
     5062            CALL wrk_dealloc( jpi, jpj,   fdzmi2d   ) 
     5063        ENDIF 
     5064        IF( med_diag%GMEPN%dgsave ) THEN 
     5065            CALL iom_put( "GMEPN"  , fgmepn2d ) 
     5066            CALL wrk_dealloc( jpi, jpj,   fgmepn2d  ) 
     5067        ENDIF 
     5068        IF( med_diag%GMEPD%dgsave ) THEN 
     5069            CALL iom_put( "GMEPD"  , fgmepd2d ) 
     5070            CALL wrk_dealloc( jpi, jpj,   fgmepd2d   ) 
     5071        ENDIF 
     5072        IF( med_diag%GMEZMI%dgsave ) THEN 
     5073            CALL iom_put( "GMEZMI"  , fgmezmi2d ) 
     5074            CALL wrk_dealloc( jpi, jpj,   fgmezmi2d   ) 
     5075        ENDIF 
     5076        IF( med_diag%GMED%dgsave ) THEN 
     5077            CALL iom_put( "GMED"  , fgmed2d ) 
     5078            CALL wrk_dealloc( jpi, jpj,    fgmed2d  ) 
     5079        ENDIF 
     5080        IF( med_diag%MZME%dgsave ) THEN 
     5081            CALL iom_put( "MZME"  , fdzme2d ) 
     5082            CALL wrk_dealloc( jpi, jpj,  fdzme2d    ) 
     5083        ENDIF 
     5084        !  IF( med_diag%DEXP%dgsave ) THEN 
     5085        !      CALL iom_put( "DEXP"  , ftot_n ) 
     5086        !  ENDIF 
     5087        IF( med_diag%DETN%dgsave ) THEN 
     5088            CALL iom_put( "DETN"  , fslown2d ) 
     5089            CALL wrk_dealloc( jpi, jpj,  fslown2d    ) 
     5090        ENDIF 
     5091        IF( med_diag%MDET%dgsave ) THEN 
     5092            CALL iom_put( "MDET"  , fdd2d ) 
     5093            CALL wrk_dealloc( jpi, jpj,   fdd2d   ) 
     5094        ENDIF 
     5095        IF( med_diag%AEOLIAN%dgsave ) THEN 
     5096            CALL iom_put( "AEOLIAN"  , ffetop2d ) 
     5097            CALL wrk_dealloc( jpi, jpj,   ffetop2d   ) 
     5098        ENDIF 
     5099        IF( med_diag%BENTHIC%dgsave ) THEN 
     5100            CALL iom_put( "BENTHIC"  , ffebot2d ) 
     5101            CALL wrk_dealloc( jpi, jpj,   ffebot2d   ) 
     5102        ENDIF 
     5103        IF( med_diag%SCAVENGE%dgsave ) THEN 
     5104            CALL iom_put( "SCAVENGE"  , ffescav2d ) 
     5105            CALL wrk_dealloc( jpi, jpj,   ffescav2d  ) 
     5106        ENDIF 
     5107        !!  
     5108        IF( med_diag%TOTREG_N%dgsave ) THEN 
     5109            CALL iom_put( "TOTREG_N"  , fregen2d ) 
     5110            CALL wrk_dealloc( jpi, jpj,   fregen2d   ) 
     5111        ENDIF 
     5112        IF( med_diag%TOTRG_SI%dgsave ) THEN 
     5113            CALL iom_put( "TOTRG_SI"  , fregensi2d ) 
     5114            CALL wrk_dealloc( jpi, jpj,    fregensi2d  ) 
     5115        ENDIF 
     5116        !!  
     5117        IF( med_diag%FASTN%dgsave ) THEN 
     5118            CALL iom_put( "FASTN"  , ftempn2d ) 
     5119            CALL wrk_dealloc( jpi, jpj,   ftempn2d   ) 
     5120        ENDIF 
     5121        IF( med_diag%FASTSI%dgsave ) THEN 
     5122            CALL iom_put( "FASTSI"  , ftempsi2d ) 
     5123            CALL wrk_dealloc( jpi, jpj,   ftempsi2d   ) 
     5124        ENDIF 
     5125        IF( med_diag%FASTFE%dgsave ) THEN 
     5126            CALL iom_put( "FASTFE"  , ftempfe2d ) 
     5127            CALL wrk_dealloc( jpi, jpj,    ftempfe2d  ) 
     5128        ENDIF 
     5129        IF( med_diag%FASTC%dgsave ) THEN 
     5130            CALL iom_put( "FASTC"  , ftempc2d ) 
     5131            CALL wrk_dealloc( jpi, jpj,  ftempc2d    ) 
     5132        ENDIF 
     5133        IF( med_diag%FASTCA%dgsave ) THEN 
     5134            CALL iom_put( "FASTCA"  , ftempca2d ) 
     5135           CALL wrk_dealloc( jpi, jpj,  ftempca2d   ) 
     5136        ENDIF 
     5137        !!  
     5138        IF( med_diag%REMINN%dgsave ) THEN 
     5139            CALL iom_put( "REMINN"  , freminn2d ) 
     5140            CALL wrk_dealloc( jpi, jpj,   freminn2d   ) 
     5141        ENDIF 
     5142        IF( med_diag%REMINSI%dgsave ) THEN 
     5143            CALL iom_put( "REMINSI"  , freminsi2d ) 
     5144            CALL wrk_dealloc( jpi, jpj,   freminsi2d   ) 
     5145        ENDIF 
     5146        IF( med_diag%REMINFE%dgsave ) THEN 
     5147            CALL iom_put( "REMINFE"  , freminfe2d ) 
     5148            CALL wrk_dealloc( jpi, jpj,  freminfe2d    ) 
     5149        ENDIF 
     5150        IF( med_diag%REMINC%dgsave ) THEN 
     5151            CALL iom_put( "REMINC"  , freminc2d ) 
     5152            CALL wrk_dealloc( jpi, jpj,    freminc2d  ) 
     5153        ENDIF 
     5154        IF( med_diag%REMINCA%dgsave ) THEN 
     5155            CALL iom_put( "REMINCA"  , freminca2d ) 
     5156             CALL wrk_dealloc( jpi, jpj,   freminca2d  ) 
     5157        ENDIF 
     5158        !! 
     5159        !! 
     5160        !! 
     5161        !!   
     5162        !!  
     5163        !! 
     5164        !!  
     5165        !! 
     5166        !! 
     5167# if defined key_roam             
     5168        !! 
     5169        !! 
     5170        IF( med_diag%RIV_N%dgsave ) THEN 
     5171            CALL iom_put( "RIV_N"  , rivn2d ) 
     5172             CALL wrk_dealloc( jpi, jpj,    rivn2d  ) 
     5173        ENDIF 
     5174        IF( med_diag%RIV_SI%dgsave ) THEN 
     5175            CALL iom_put( "RIV_SI"  , rivsi2d ) 
     5176             CALL wrk_dealloc( jpi, jpj,   rivsi2d   ) 
     5177        ENDIF 
     5178        IF( med_diag%RIV_C%dgsave ) THEN 
     5179            CALL iom_put( "RIV_C"  , rivc2d ) 
     5180             CALL wrk_dealloc( jpi, jpj,    rivc2d  ) 
     5181        ENDIF 
     5182        IF( med_diag%RIV_ALK%dgsave ) THEN 
     5183            CALL iom_put( "RIV_ALK"  , rivalk2d ) 
     5184             CALL wrk_dealloc( jpi, jpj,  rivalk2d    ) 
     5185        ENDIF 
     5186        IF( med_diag%DETC%dgsave ) THEN 
     5187            CALL iom_put( "DETC"  , fslowc2d ) 
     5188             CALL wrk_dealloc( jpi, jpj,   fslowc2d   ) 
     5189        ENDIF 
     5190        !!  
     5191        !!               
     5192        !! 
     5193        IF( med_diag%PN_LLOSS%dgsave ) THEN 
     5194            CALL iom_put( "PN_LLOSS"  , fdpn22d ) 
     5195             CALL wrk_dealloc( jpi, jpj,   fdpn22d   ) 
     5196        ENDIF 
     5197        IF( med_diag%PD_LLOSS%dgsave ) THEN 
     5198            CALL iom_put( "PD_LLOSS"  , fdpd22d ) 
     5199             CALL wrk_dealloc( jpi, jpj,   fdpd22d   ) 
     5200        ENDIF 
     5201        IF( med_diag%ZI_LLOSS%dgsave ) THEN 
     5202            CALL iom_put( "ZI_LLOSS"  , fdzmi22d ) 
     5203             CALL wrk_dealloc( jpi, jpj,    fdzmi22d  ) 
     5204        ENDIF 
     5205        IF( med_diag%ZE_LLOSS%dgsave ) THEN 
     5206            CALL iom_put( "ZE_LLOSS"  , fdzme22d ) 
     5207             CALL wrk_dealloc( jpi, jpj,   fdzme22d   ) 
     5208        ENDIF 
     5209        IF( med_diag%ZI_MES_N%dgsave ) THEN 
     5210            CALL iom_put( "ZI_MES_N"  , zimesn2d ) 
     5211             CALL wrk_dealloc( jpi, jpj,    zimesn2d  ) 
     5212        ENDIF 
     5213        IF( med_diag%ZI_MES_D%dgsave ) THEN 
     5214            CALL iom_put( "ZI_MES_D"  , zimesd2d ) 
     5215             CALL wrk_dealloc( jpi, jpj,    zimesd2d  ) 
     5216        ENDIF 
     5217        IF( med_diag%ZI_MES_C%dgsave ) THEN 
     5218            CALL iom_put( "ZI_MES_C"  , zimesc2d ) 
     5219             CALL wrk_dealloc( jpi, jpj,    zimesc2d  ) 
     5220        ENDIF 
     5221        IF( med_diag%ZI_MESDC%dgsave ) THEN 
     5222            CALL iom_put( "ZI_MESDC"  ,zimesdc2d  ) 
     5223             CALL wrk_dealloc( jpi, jpj,    zimesdc2d  ) 
     5224        ENDIF 
     5225        IF( med_diag%ZI_EXCR%dgsave ) THEN 
     5226            CALL iom_put( "ZI_EXCR"  , ziexcr2d ) 
     5227             CALL wrk_dealloc( jpi, jpj,    ziexcr2d ) 
     5228        ENDIF 
     5229        IF( med_diag%ZI_RESP%dgsave ) THEN 
     5230            CALL iom_put( "ZI_RESP"  , ziresp2d ) 
     5231             CALL wrk_dealloc( jpi, jpj,   ziresp2d   ) 
     5232        ENDIF 
     5233        IF( med_diag%ZI_GROW%dgsave ) THEN 
     5234            CALL iom_put( "ZI_GROW"  , zigrow2d ) 
     5235             CALL wrk_dealloc( jpi, jpj,   zigrow2d   ) 
     5236        ENDIF 
     5237        IF( med_diag%ZE_MES_N%dgsave ) THEN 
     5238            CALL iom_put( "ZE_MES_N"  , zemesn2d ) 
     5239             CALL wrk_dealloc( jpi, jpj,    zemesn2d  ) 
     5240        ENDIF 
     5241        IF( med_diag%ZE_MES_D%dgsave ) THEN 
     5242            CALL iom_put( "ZE_MES_D"  , zemesd2d ) 
     5243             CALL wrk_dealloc( jpi, jpj,    zemesd2d  ) 
     5244        ENDIF 
     5245        IF( med_diag%ZE_MES_C%dgsave ) THEN 
     5246            CALL iom_put( "ZE_MES_C"  , zemesc2d ) 
     5247             CALL wrk_dealloc( jpi, jpj,   zemesc2d   ) 
     5248        ENDIF 
     5249        IF( med_diag%ZE_MESDC%dgsave ) THEN 
     5250            CALL iom_put( "ZE_MESDC"  , zemesdc2d ) 
     5251             CALL wrk_dealloc( jpi, jpj,   zemesdc2d   ) 
     5252        ENDIF 
     5253        IF( med_diag%ZE_EXCR%dgsave ) THEN 
     5254            CALL iom_put( "ZE_EXCR"  , zeexcr2d ) 
     5255             CALL wrk_dealloc( jpi, jpj,   zeexcr2d   ) 
     5256        ENDIF 
     5257        IF( med_diag%ZE_RESP%dgsave ) THEN 
     5258            CALL iom_put( "ZE_RESP"  , zeresp2d ) 
     5259             CALL wrk_dealloc( jpi, jpj,    zeresp2d  ) 
     5260        ENDIF 
     5261        IF( med_diag%ZE_GROW%dgsave ) THEN 
     5262            CALL iom_put( "ZE_GROW"  , zegrow2d ) 
     5263             CALL wrk_dealloc( jpi, jpj,   zegrow2d   ) 
     5264        ENDIF 
     5265        IF( med_diag%MDETC%dgsave ) THEN 
     5266            CALL iom_put( "MDETC"  , mdetc2d ) 
     5267             CALL wrk_dealloc( jpi, jpj,   mdetc2d   ) 
     5268        ENDIF 
     5269        IF( med_diag%GMIDC%dgsave ) THEN 
     5270            CALL iom_put( "GMIDC"  , gmidc2d ) 
     5271             CALL wrk_dealloc( jpi, jpj,    gmidc2d  ) 
     5272        ENDIF 
     5273        IF( med_diag%GMEDC%dgsave ) THEN 
     5274            CALL iom_put( "GMEDC"  , gmedc2d ) 
     5275             CALL wrk_dealloc( jpi, jpj,    gmedc2d  ) 
     5276        ENDIF 
     5277# endif                    
     5278         !!           
    37105279         !! 
    37115280         !! ** 3D diagnostics 
    3712          DO jn=1,jp_medusa_3d 
    3713             CALL iom_put(TRIM(ctrc3d(jn)), trc3d(:,:,:,jn)) 
    3714          END DO 
    3715 !! AXY (17/02/14): don't think I need this if I modify the above for all diagnostics 
    3716 !! #  if defined key_roam 
    3717 !!          CALL iom_put(TRIM(ctrc3d(5)), trc3d(:,:,:,5)) 
    3718 !! #  endif 
    3719 # endif 
    3720       ENDIF ! end of ln_diatrc option 
     5281         IF( med_diag%TPP3%dgsave ) THEN 
     5282             CALL iom_put( "TPP3"  , tpp3d ) 
     5283              CALL wrk_dealloc( jpi, jpj, jpk,   tpp3d  ) 
     5284         ENDIF 
     5285         IF( med_diag%DETFLUX3%dgsave ) THEN 
     5286             CALL iom_put( "DETFLUX3"  , detflux3d ) 
     5287              CALL wrk_dealloc( jpi, jpj, jpk,    detflux3d ) 
     5288         ENDIF 
     5289          IF( med_diag%REMIN3N%dgsave ) THEN 
     5290             CALL iom_put( "REMIN3N"  , remin3dn ) 
     5291             CALL wrk_dealloc( jpi, jpj, jpk,   remin3dn  ) 
     5292          ENDIF 
     5293# if defined key_roam           
     5294          IF( med_diag%PH3%dgsave ) THEN 
     5295              CALL iom_put( "PH3"  , f3_pH ) 
     5296          ENDIF 
     5297          IF( med_diag%OM_CAL3%dgsave ) THEN 
     5298              CALL iom_put( "OM_CAL3"  , f3_omcal ) 
     5299          ENDIF 
     5300# endif          
     5301 
     5302      CALL wrk_dealloc( jpi, jpj,   zw2d   ) 
     5303 
     5304     ENDIF ! end of ln_diatrc option 
    37215305 
    37225306# if defined key_trc_diabio 
Note: See TracChangeset for help on using the changeset viewer.