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

Changeset 7548


Ignore:
Timestamp:
2017-01-11T16:59:46+01:00 (7 years ago)
Author:
frrh
Message:

Apply ALLOCATE/POINTER optimisation to trcbio_medusa.F90 from scratch
since we can't use Maff's version directly without risking damaging
developments which have been added to the base code in recent months.
I've done this for the sake of completeness although MS's tests suggest
no huge advantage.

File:
1 edited

Legend:

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

    r7497 r7548  
    359359      !! Jpalm -- 11-10-2015 -- adapt diag to iom_use 
    360360      !! 2D var for diagnostics. 
    361       REAL(wp), POINTER, DIMENSION(:,:  ) :: fprn2d, fdpn2d, fprd2d, fdpd2d, fprds2d, fsdiss2d, fgmipn2d 
    362       REAL(wp), POINTER, DIMENSION(:,:  ) :: fgmid2d, fdzmi2d, fgmepn2d, fgmepd2d, fgmezmi2d, fgmed2d 
    363       REAL(wp), POINTER, DIMENSION(:,:  ) :: fdzme2d, fslown2d, fdd2d, ffetop2d, ffebot2d, ffescav2d 
    364       REAL(wp), POINTER, DIMENSION(:,:  ) :: fjln2d, fnln2d, ffln2d, fjld2d, fnld2d, ffld2d, fsld2d2 
    365       REAL(wp), POINTER, DIMENSION(:,:  ) :: fsld2d, fregen2d, fregensi2d, ftempn2d, ftempsi2d, ftempfe2d 
    366       REAL(wp), POINTER, DIMENSION(:,:  ) :: ftempc2d, ftempca2d, freminn2d, freminsi2d, freminfe2d 
    367       REAL(wp), POINTER, DIMENSION(:,:  ) :: freminc2d, freminca2d 
    368       REAL(wp), POINTER, DIMENSION(:,:  ) :: zw2d 
     361      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: fprn2d, fdpn2d, fprd2d, fdpd2d, fprds2d, fsdiss2d, fgmipn2d 
     362      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: fgmid2d, fdzmi2d, fgmepn2d, fgmepd2d, fgmezmi2d, fgmed2d 
     363      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: fdzme2d, fslown2d, fdd2d, ffetop2d, ffebot2d, ffescav2d 
     364      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: fjln2d, fnln2d, ffln2d, fjld2d, fnld2d, ffld2d, fsld2d2 
     365      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: fsld2d, fregen2d, fregensi2d, ftempn2d, ftempsi2d, ftempfe2d 
     366      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: ftempc2d, ftempca2d, freminn2d, freminsi2d, freminfe2d 
     367      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: freminc2d, freminca2d 
     368      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: zw2d 
    369369# if defined key_roam 
    370       REAL(wp), POINTER, DIMENSION(:,:  ) :: ffastca2d, rivn2d, rivsi2d, rivc2d, rivalk2d, fslowc2d 
    371       REAL(wp), POINTER, DIMENSION(:,:  ) :: fdpn22d, fdpd22d, fdzmi22d, fdzme22d, zimesn2d, zimesd2d 
    372       REAL(wp), POINTER, DIMENSION(:,:  ) :: zimesc2d, zimesdc2d, ziexcr2d, ziresp2d, zigrow2d, zemesn2d 
    373       REAL(wp), POINTER, DIMENSION(:,:  ) :: zemesd2d, zemesc2d, zemesdc2d, zeexcr2d, zeresp2d, zegrow2d 
    374       REAL(wp), POINTER, DIMENSION(:,:  ) :: mdetc2d, gmidc2d, gmedc2d, f_pco2a2d, f_pco2w2d, f_co2flux2d 
    375       REAL(wp), POINTER, DIMENSION(:,:  ) :: f_TDIC2d, f_TALK2d, f_kw6602d, f_pp02d, f_o2flux2d, f_o2sat2d 
    376       REAL(wp), POINTER, DIMENSION(:,:  ) :: dms_andr2d, dms_simo2d, dms_aran2d, dms_hall2d, dms_surf2d 
    377       REAL(wp), POINTER, DIMENSION(:,:  ) :: iben_n2d, iben_fe2d, iben_c2d, iben_si2d, iben_ca2d, oben_n2d 
    378       REAL(wp), POINTER, DIMENSION(:,:  ) :: oben_fe2d, oben_c2d, oben_si2d, oben_ca2d, sfr_ocal2d 
    379       REAL(wp), POINTER, DIMENSION(:,:  ) :: sfr_oarg2d, lyso_ca2d  
     370      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: ffastca2d, rivn2d, rivsi2d, rivc2d, rivalk2d, fslowc2d 
     371      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: fdpn22d, fdpd22d, fdzmi22d, fdzme22d, zimesn2d, zimesd2d 
     372      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: zimesc2d, zimesdc2d, ziexcr2d, ziresp2d, zigrow2d, zemesn2d 
     373      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: zemesd2d, zemesc2d, zemesdc2d, zeexcr2d, zeresp2d, zegrow2d 
     374      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: mdetc2d, gmidc2d, gmedc2d, f_pco2a2d, f_pco2w2d, f_co2flux2d 
     375      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: f_TDIC2d, f_TALK2d, f_kw6602d, f_pp02d, f_o2flux2d, f_o2sat2d 
     376      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: dms_andr2d, dms_simo2d, dms_aran2d, dms_hall2d, dms_surf2d 
     377      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: iben_n2d, iben_fe2d, iben_c2d, iben_si2d, iben_ca2d, oben_n2d 
     378      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: oben_fe2d, oben_c2d, oben_si2d, oben_ca2d, sfr_ocal2d 
     379      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: sfr_oarg2d, lyso_ca2d  
    380380      !! AXY (23/11/16): extra MOCSY diagnostics 
    381       REAL(wp), POINTER, DIMENSION(:,:  ) :: f_xco2a_2d, f_fco2w_2d, f_fco2a_2d 
    382       REAL(wp), POINTER, DIMENSION(:,:  ) :: f_ocnrhosw_2d, f_ocnschco2_2d, f_ocnkwco2_2d 
    383       REAL(wp), POINTER, DIMENSION(:,:  ) :: f_ocnk0_2d, f_co2starair_2d, f_ocndpco2_2d 
     381      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: f_xco2a_2d, f_fco2w_2d, f_fco2a_2d 
     382      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: f_ocnrhosw_2d, f_ocnschco2_2d, f_ocnkwco2_2d 
     383      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: f_ocnk0_2d, f_co2starair_2d, f_ocndpco2_2d 
    384384# endif 
    385385      !! 
    386386      !! 3D var for diagnostics. 
    387       REAL(wp), POINTER, DIMENSION(:,:,:) :: tpp3d, detflux3d, remin3dn 
     387      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: tpp3d, detflux3d, remin3dn 
    388388      !! 
    389389# if defined key_roam 
    390390      !! AXY (04/11/16) 
    391391      !! 2D var for new CMIP6 diagnostics (behind a key_roam ifdef for simplicity) 
    392       REAL(wp), POINTER, DIMENSION(:,:  ) :: fgco2, intdissic, intdissin, intdissisi, inttalk, o2min, zo2min 
    393       REAL(wp), POINTER, DIMENSION(:,:  ) :: fbddtalk, fbddtdic, fbddtdife, fbddtdin, fbddtdisi 
     392      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: fgco2, intdissic, intdissin, intdissisi, inttalk, o2min, zo2min 
     393      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: fbddtalk, fbddtdic, fbddtdife, fbddtdin, fbddtdisi 
    394394      !! 
    395395      !! 3D var for new CMIP6 diagnostics 
    396       REAL(wp), POINTER, DIMENSION(:,:,:) :: tppd3 
    397       REAL(wp), POINTER, DIMENSION(:,:,:) :: bddtalk3, bddtdic3, bddtdife3, bddtdin3, bddtdisi3 
    398       REAL(wp), POINTER, DIMENSION(:,:,:) :: fd_nit3, fd_sil3, fd_car3, fd_cal3 
    399       REAL(wp), POINTER, DIMENSION(:,:,:) :: co33, co3satarag3, co3satcalc3, dcalc3 
    400       REAL(wp), POINTER, DIMENSION(:,:,:) :: expc3, expn3 
    401       REAL(wp), POINTER, DIMENSION(:,:,:) :: fediss3, fescav3 
    402       REAL(wp), POINTER, DIMENSION(:,:,:) :: migrazp3, migrazd3, megrazp3, megrazd3, megrazz3 
    403       REAL(wp), POINTER, DIMENSION(:,:,:) :: o2sat3, pbsi3, pcal3, remoc3 
    404       REAL(wp), POINTER, DIMENSION(:,:,:) :: pnlimj3, pnlimn3, pnlimfe3, pdlimj3, pdlimn3, pdlimfe3, pdlimsi3 
     396      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: tppd3 
     397      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: bddtalk3, bddtdic3, bddtdife3, bddtdin3, bddtdisi3 
     398      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: fd_nit3, fd_sil3, fd_car3, fd_cal3 
     399      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: co33, co3satarag3, co3satcalc3, dcalc3 
     400      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: expc3, expn3 
     401      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: fediss3, fescav3 
     402      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: migrazp3, migrazd3, megrazp3, megrazd3, megrazz3 
     403      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: o2sat3, pbsi3, pcal3, remoc3 
     404      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: pnlimj3, pnlimn3, pnlimfe3, pdlimj3, pdlimn3, pdlimfe3, pdlimsi3 
    405405# endif 
    406406      !!--------------------------------------------------------------------- 
     
    579579         if ( kt == nittrc000 )   CALL trc_nam_iom_medusa !! initialise iom_use test 
    580580         !! 
    581          CALL wrk_alloc( jpi, jpj,      zw2d ) 
     581         ALLOCATE(       zw2d(jpi, jpj) ) 
    582582         zw2d(:,:)      = 0.0   !! 
    583583         IF ( med_diag%PRN%dgsave ) THEN 
    584             CALL wrk_alloc( jpi, jpj,   fprn2d    ) 
     584            ALLOCATE(    fprn2d(jpi, jpj)) 
    585585            fprn2d(:,:)      = 0.0 !! 
    586586         ENDIF 
    587587         IF ( med_diag%MPN%dgsave ) THEN 
    588             CALL wrk_alloc( jpi, jpj,   fdpn2d    ) 
     588            ALLOCATE(    fdpn2d(jpi, jpj)) 
    589589            fdpn2d(:,:)      = 0.0 !! 
    590590         ENDIF 
    591591         IF ( med_diag%PRD%dgsave ) THEN 
    592             CALL wrk_alloc( jpi, jpj,   fprd2d    ) 
     592            ALLOCATE(    fprd2d(jpi, jpj)) 
    593593            fprd2d(:,:)      = 0.0 !! 
    594594         ENDIF 
    595595         IF( med_diag%MPD%dgsave ) THEN 
    596             CALL wrk_alloc( jpi, jpj,   fdpd2d    ) 
     596            ALLOCATE(    fdpd2d(jpi, jpj)) 
    597597            fdpd2d(:,:)      = 0.0 !! 
    598598         ENDIF 
    599599         IF( med_diag%OPAL%dgsave ) THEN 
    600             CALL wrk_alloc( jpi, jpj,   fprds2d    ) 
     600            ALLOCATE(    fprds2d(jpi, jpj)) 
    601601            fprds2d(:,:)      = 0.0 !! 
    602602         ENDIF 
    603603         IF( med_diag%OPALDISS%dgsave ) THEN 
    604             CALL wrk_alloc( jpi, jpj,   fsdiss2d    ) 
     604            ALLOCATE(    fsdiss2d(jpi, jpj)) 
    605605            fsdiss2d(:,:)      = 0.0 !! 
    606606         ENDIF 
    607607         IF( med_diag%GMIPn%dgsave ) THEN 
    608             CALL wrk_alloc( jpi, jpj,   fgmipn2d    ) 
     608            ALLOCATE(    fgmipn2d(jpi, jpj)) 
    609609            fgmipn2d(:,:)      = 0.0 !! 
    610610         ENDIF 
    611611         IF( med_diag%GMID%dgsave ) THEN 
    612             CALL wrk_alloc( jpi, jpj,   fgmid2d    ) 
     612            ALLOCATE(    fgmid2d(jpi, jpj)) 
    613613            fgmid2d(:,:)      = 0.0 !! 
    614614         ENDIF 
    615615         IF( med_diag%MZMI%dgsave ) THEN 
    616             CALL wrk_alloc( jpi, jpj,   fdzmi2d    ) 
     616            ALLOCATE(    fdzmi2d(jpi, jpj)) 
    617617            fdzmi2d(:,:)      = 0.0 !! 
    618618         ENDIF 
    619619         IF( med_diag%GMEPN%dgsave ) THEN 
    620             CALL wrk_alloc( jpi, jpj,   fgmepn2d    ) 
     620            ALLOCATE(    fgmepn2d(jpi, jpj)) 
    621621            fgmepn2d(:,:)      = 0.0 !! 
    622622         ENDIF 
    623623         IF( med_diag%GMEPD%dgsave ) THEN 
    624             CALL wrk_alloc( jpi, jpj,   fgmepd2d    ) 
     624            ALLOCATE(    fgmepd2d(jpi, jpj)) 
    625625            fgmepd2d(:,:)      = 0.0 !! 
    626626         ENDIF 
    627627         IF( med_diag%GMEZMI%dgsave ) THEN 
    628             CALL wrk_alloc( jpi, jpj,   fgmezmi2d    ) 
     628            ALLOCATE(    fgmezmi2d(jpi, jpj)) 
    629629            fgmezmi2d(:,:)      = 0.0 !! 
    630630         ENDIF 
    631631         IF( med_diag%GMED%dgsave ) THEN 
    632             CALL wrk_alloc( jpi, jpj,   fgmed2d    ) 
     632            ALLOCATE(    fgmed2d(jpi, jpj)) 
    633633            fgmed2d(:,:)      = 0.0 !! 
    634634         ENDIF 
    635635         IF( med_diag%MZME%dgsave ) THEN 
    636             CALL wrk_alloc( jpi, jpj,   fdzme2d    ) 
     636            ALLOCATE(    fdzme2d(jpi, jpj)) 
    637637            fdzme2d(:,:)      = 0.0 !! 
    638638         ENDIF 
    639639         IF( med_diag%DETN%dgsave ) THEN 
    640             CALL wrk_alloc( jpi, jpj,   fslown2d    ) 
     640            ALLOCATE(    fslown2d(jpi, jpj)) 
    641641            fslown2d(:,:)      = 0.0 !! 
    642642         ENDIF 
    643643         IF( med_diag%MDET%dgsave ) THEN 
    644             CALL wrk_alloc( jpi, jpj,   fdd2d    ) 
     644            ALLOCATE(    fdd2d(jpi, jpj)) 
    645645            fdd2d(:,:)      = 0.0 !! 
    646646         ENDIF       
    647647         IF( med_diag%AEOLIAN%dgsave ) THEN 
    648             CALL wrk_alloc( jpi, jpj,   ffetop2d    ) 
     648            ALLOCATE(    ffetop2d(jpi, jpj)) 
    649649            ffetop2d(:,:)      = 0.0 !! 
    650650         ENDIF 
    651651         IF( med_diag%BENTHIC%dgsave ) THEN 
    652             CALL wrk_alloc( jpi, jpj,    ffebot2d   ) 
     652            ALLOCATE(     ffebot2d(jpi, jpj)   ) 
    653653            ffebot2d(:,:)      = 0.0 !! 
    654654         ENDIF 
    655655         IF( med_diag%SCAVENGE%dgsave ) THEN 
    656             CALL wrk_alloc( jpi, jpj,   ffescav2d    ) 
     656            ALLOCATE(    ffescav2d(jpi, jpj)) 
    657657            ffescav2d(:,:)      = 0.0 !! 
    658658         ENDIF 
    659659         IF( med_diag%PN_JLIM%dgsave ) THEN 
    660             CALL wrk_alloc( jpi, jpj,   fjln2d    ) 
     660            ALLOCATE(    fjln2d(jpi, jpj)) 
    661661            fjln2d(:,:)      = 0.0 !! 
    662662         ENDIF 
    663663         IF( med_diag%PN_NLIM%dgsave ) THEN 
    664             CALL wrk_alloc( jpi, jpj,   fnln2d    ) 
     664            ALLOCATE(    fnln2d(jpi, jpj)) 
    665665            fnln2d(:,:)      = 0.0 !! 
    666666         ENDIF 
    667667         IF( med_diag%PN_FELIM%dgsave ) THEN 
    668             CALL wrk_alloc( jpi, jpj,   ffln2d    ) 
     668            ALLOCATE(    ffln2d(jpi, jpj)) 
    669669            ffln2d(:,:)      = 0.0 !! 
    670670         ENDIF 
    671671         IF( med_diag%PD_JLIM%dgsave ) THEN 
    672             CALL wrk_alloc( jpi, jpj,   fjld2d    ) 
     672            ALLOCATE(    fjld2d(jpi, jpj)) 
    673673            fjld2d(:,:)      = 0.0 !! 
    674674         ENDIF 
    675675         IF( med_diag%PD_NLIM%dgsave ) THEN 
    676             CALL wrk_alloc( jpi, jpj,   fnld2d    ) 
     676            ALLOCATE(    fnld2d(jpi, jpj)) 
    677677            fnld2d(:,:)      = 0.0 !! 
    678678         ENDIF 
    679679         IF( med_diag%PD_FELIM%dgsave ) THEN 
    680             CALL wrk_alloc( jpi, jpj,   ffld2d    ) 
     680            ALLOCATE(    ffld2d(jpi, jpj)) 
    681681            ffld2d(:,:)      = 0.0 !! 
    682682         ENDIF 
    683683         IF( med_diag%PD_SILIM%dgsave ) THEN 
    684             CALL wrk_alloc( jpi, jpj,   fsld2d2    ) 
     684            ALLOCATE(    fsld2d2(jpi, jpj)    ) 
    685685            fsld2d2(:,:)      = 0.0 !! 
    686686         ENDIF 
    687687         IF( med_diag%PDSILIM2%dgsave ) THEN 
    688             CALL wrk_alloc( jpi, jpj,   fsld2d    ) 
     688            ALLOCATE(    fsld2d(jpi, jpj)) 
    689689            fsld2d(:,:)      = 0.0 !! 
    690690         ENDIF 
     
    693693!! 
    694694         IF( med_diag%TOTREG_N%dgsave ) THEN 
    695             CALL wrk_alloc( jpi, jpj,   fregen2d    ) 
     695            ALLOCATE(    fregen2d(jpi, jpj)) 
    696696            fregen2d(:,:)      = 0.0 !! 
    697697         ENDIF 
    698698         IF( med_diag%TOTRG_SI%dgsave ) THEN 
    699             CALL wrk_alloc( jpi, jpj,   fregensi2d    ) 
     699            ALLOCATE(    fregensi2d(jpi, jpj)) 
    700700            fregensi2d(:,:)      = 0.0 !! 
    701701         ENDIF 
     
    704704!! 
    705705         IF( med_diag%FASTN%dgsave ) THEN 
    706             CALL wrk_alloc( jpi, jpj,   ftempn2d    ) 
     706            ALLOCATE(    ftempn2d(jpi, jpj)) 
    707707            ftempn2d(:,:)      = 0.0 !! 
    708708         ENDIF 
    709709         IF( med_diag%FASTSI%dgsave ) THEN 
    710             CALL wrk_alloc( jpi, jpj,   ftempsi2d    ) 
     710            ALLOCATE(    ftempsi2d(jpi, jpj)) 
    711711            ftempsi2d(:,:)      = 0.0 !! 
    712712         ENDIF 
    713713         IF( med_diag%FASTFE%dgsave ) THEN 
    714             CALL wrk_alloc( jpi, jpj,  ftempfe2d     ) 
     714            ALLOCATE(   ftempfe2d(jpi, jpj)     ) 
    715715            ftempfe2d(:,:)      = 0.0 !! 
    716716         ENDIF 
    717717         IF( med_diag%FASTC%dgsave ) THEN 
    718             CALL wrk_alloc( jpi, jpj,  ftempc2d     ) 
     718            ALLOCATE(   ftempc2d(jpi, jpj)     ) 
    719719            ftempc2d(:,:)      = 0.0 !! 
    720720         ENDIF 
    721721         IF( med_diag%FASTCA%dgsave ) THEN 
    722             CALL wrk_alloc( jpi, jpj,   ftempca2d    ) 
     722            ALLOCATE(    ftempca2d(jpi, jpj)) 
    723723            ftempca2d(:,:)      = 0.0 !! 
    724724         ENDIF      
     
    727727!! 
    728728         IF( med_diag%REMINN%dgsave ) THEN 
    729             CALL wrk_alloc( jpi, jpj,    freminn2d   ) 
     729            ALLOCATE(     freminn2d(jpi, jpj)  ) 
    730730            freminn2d(:,:)      = 0.0 !! 
    731731         ENDIF 
    732732         IF( med_diag%REMINSI%dgsave ) THEN 
    733             CALL wrk_alloc( jpi, jpj,    freminsi2d   ) 
     733            ALLOCATE(     freminsi2d(jpi, jpj)   ) 
    734734            freminsi2d(:,:)      = 0.0 !! 
    735735         ENDIF 
    736736         IF( med_diag%REMINFE%dgsave ) THEN 
    737             CALL wrk_alloc( jpi, jpj,    freminfe2d   ) 
     737            ALLOCATE(     freminfe2d(jpi, jpj)  ) 
    738738            freminfe2d(:,:)      = 0.0 !! 
    739739         ENDIF 
    740740         IF( med_diag%REMINC%dgsave ) THEN 
    741             CALL wrk_alloc( jpi, jpj,   freminc2d    ) 
     741            ALLOCATE(    freminc2d(jpi, jpj)) 
    742742            freminc2d(:,:)      = 0.0 !!  
    743743         ENDIF 
    744744         IF( med_diag%REMINCA%dgsave ) THEN 
    745             CALL wrk_alloc( jpi, jpj,   freminca2d    ) 
     745            ALLOCATE(    freminca2d(jpi, jpj)) 
    746746            freminca2d(:,:)      = 0.0 !! 
    747747         ENDIF 
     
    751751!! 
    752752         IF( med_diag%RR_0100%dgsave ) THEN 
    753             CALL wrk_alloc( jpi, jpj,    ffastca2d   ) 
     753            ALLOCATE(     ffastca2d(jpi, jpj)   ) 
    754754            ffastca2d(:,:)      = 0.0 !! 
    755755         ENDIF 
    756756 
    757757         IF( med_diag%ATM_PCO2%dgsave ) THEN 
    758             CALL wrk_alloc( jpi, jpj,    f_pco2a2d   ) 
     758            ALLOCATE(     f_pco2a2d(jpi, jpj)   ) 
    759759            f_pco2a2d(:,:)      = 0.0 !! 
    760760         ENDIF 
     
    763763!! 
    764764         IF( med_diag%OCN_PCO2%dgsave ) THEN 
    765             CALL wrk_alloc( jpi, jpj,    f_pco2w2d   ) 
     765            ALLOCATE(     f_pco2w2d(jpi, jpj)   ) 
    766766            f_pco2w2d(:,:)      = 0.0 !! 
    767767         ENDIF 
     
    770770!! 
    771771         IF( med_diag%CO2FLUX%dgsave ) THEN 
    772             CALL wrk_alloc( jpi, jpj,   f_co2flux2d    ) 
     772            ALLOCATE(    f_co2flux2d(jpi, jpj)) 
    773773            f_co2flux2d(:,:)      = 0.0 !! 
    774774         ENDIF 
     
    777777!! 
    778778         IF( med_diag%TCO2%dgsave ) THEN 
    779             CALL wrk_alloc( jpi, jpj,   f_TDIC2d    ) 
     779            ALLOCATE(    f_TDIC2d(jpi, jpj)) 
    780780            f_TDIC2d(:,:)      = 0.0 !! 
    781781         ENDIF 
    782782         IF( med_diag%TALK%dgsave ) THEN 
    783             CALL wrk_alloc( jpi, jpj,    f_TALK2d   ) 
     783            ALLOCATE(     f_TALK2d(jpi, jpj)   ) 
    784784            f_TALK2d(:,:)      = 0.0 !! 
    785785         ENDIF 
    786786         IF( med_diag%KW660%dgsave ) THEN 
    787             CALL wrk_alloc( jpi, jpj,    f_kw6602d   ) 
     787            ALLOCATE(     f_kw6602d(jpi, jpj)   ) 
    788788            f_kw6602d(:,:)      = 0.0 !! 
    789789         ENDIF 
    790790         IF( med_diag%ATM_PP0%dgsave ) THEN 
    791             CALL wrk_alloc( jpi, jpj,    f_pp02d   ) 
     791            ALLOCATE(     f_pp02d(jpi, jpj)   ) 
    792792            f_pp02d(:,:)      = 0.0 !! 
    793793         ENDIF 
    794794         IF( med_diag%O2FLUX%dgsave ) THEN 
    795             CALL wrk_alloc( jpi, jpj,   f_o2flux2d    ) 
     795            ALLOCATE(    f_o2flux2d(jpi, jpj)) 
    796796            f_o2flux2d(:,:)      = 0.0 !! 
    797797         ENDIF 
    798798         IF( med_diag%O2SAT%dgsave ) THEN 
    799             CALL wrk_alloc( jpi, jpj,    f_o2sat2d   ) 
     799            ALLOCATE(     f_o2sat2d(jpi, jpj)   ) 
    800800            f_o2sat2d(:,:)      = 0.0 !! 
    801801         ENDIF  
     
    804804!!  
    805805         IF( med_diag%SFR_OCAL%dgsave ) THEN 
    806             CALL wrk_alloc( jpi, jpj,    sfr_ocal2d  ) 
     806            ALLOCATE(     sfr_ocal2d(jpi, jpj)  ) 
    807807            sfr_ocal2d(:,:)      = 0.0 !! 
    808808         ENDIF 
    809809         IF( med_diag%SFR_OARG%dgsave ) THEN 
    810             CALL wrk_alloc( jpi, jpj,    sfr_oarg2d  ) 
     810            ALLOCATE(     sfr_oarg2d(jpi, jpj)  ) 
    811811            sfr_oarg2d(:,:)      = 0.0 !! 
    812812         ENDIF 
     
    815815!!  
    816816         IF( med_diag%IBEN_N%dgsave ) THEN 
    817             CALL wrk_alloc( jpi, jpj,    iben_n2d  ) 
     817            ALLOCATE(     iben_n2d(jpi, jpj)  ) 
    818818            iben_n2d(:,:)      = 0.0 !! 
    819819         ENDIF 
    820820         IF( med_diag%IBEN_FE%dgsave ) THEN 
    821             CALL wrk_alloc( jpi, jpj,   iben_fe2d   ) 
     821            ALLOCATE(    iben_fe2d(jpi, jpj)   ) 
    822822            iben_fe2d(:,:)      = 0.0 !! 
    823823         ENDIF 
    824824         IF( med_diag%IBEN_C%dgsave ) THEN 
    825             CALL wrk_alloc( jpi, jpj,   iben_c2d   ) 
     825            ALLOCATE(    iben_c2d(jpi, jpj)  ) 
    826826            iben_c2d(:,:)      = 0.0 !! 
    827827         ENDIF 
    828828         IF( med_diag%IBEN_SI%dgsave ) THEN 
    829             CALL wrk_alloc( jpi, jpj,   iben_si2d   ) 
     829            ALLOCATE(    iben_si2d(jpi, jpj)   ) 
    830830            iben_si2d(:,:)      = 0.0 !! 
    831831         ENDIF 
    832832         IF( med_diag%IBEN_CA%dgsave ) THEN 
    833             CALL wrk_alloc( jpi, jpj,   iben_ca2d   ) 
     833            ALLOCATE(    iben_ca2d(jpi, jpj)   ) 
    834834            iben_ca2d(:,:)      = 0.0 !! 
    835835         ENDIF 
    836836         IF( med_diag%OBEN_N%dgsave ) THEN 
    837             CALL wrk_alloc( jpi, jpj,    oben_n2d  ) 
     837            ALLOCATE(     oben_n2d(jpi, jpj)  ) 
    838838            oben_n2d(:,:)      = 0.0 !! 
    839839         ENDIF 
    840840         IF( med_diag%OBEN_FE%dgsave ) THEN 
    841             CALL wrk_alloc( jpi, jpj,    oben_fe2d  ) 
     841            ALLOCATE(     oben_fe2d(jpi, jpj)  ) 
    842842            oben_fe2d(:,:)      = 0.0 !! 
    843843         ENDIF 
    844844         IF( med_diag%OBEN_C%dgsave ) THEN 
    845             CALL wrk_alloc( jpi, jpj,    oben_c2d  ) 
     845            ALLOCATE(     oben_c2d(jpi, jpj)  ) 
    846846            oben_c2d(:,:)      = 0.0 !! 
    847847         ENDIF 
    848848         IF( med_diag%OBEN_SI%dgsave ) THEN 
    849             CALL wrk_alloc( jpi, jpj,    oben_si2d  ) 
     849            ALLOCATE(     oben_si2d(jpi, jpj)  ) 
    850850            oben_si2d(:,:)      = 0.0 !! 
    851851         ENDIF 
    852852         IF( med_diag%OBEN_CA%dgsave ) THEN 
    853             CALL wrk_alloc( jpi, jpj,    oben_ca2d  ) 
     853            ALLOCATE(     oben_ca2d(jpi, jpj)  ) 
    854854            oben_ca2d(:,:)      = 0.0 !! 
    855855         ENDIF 
     
    858858!! 
    859859         IF( med_diag%RIV_N%dgsave ) THEN 
    860             CALL wrk_alloc( jpi, jpj,    rivn2d   ) 
     860            ALLOCATE(     rivn2d(jpi, jpj)   ) 
    861861            rivn2d(:,:)      = 0.0 !! 
    862862         ENDIF 
    863863         IF( med_diag%RIV_SI%dgsave ) THEN 
    864             CALL wrk_alloc( jpi, jpj,    rivsi2d   ) 
     864            ALLOCATE(     rivsi2d(jpi, jpj)  ) 
    865865            rivsi2d(:,:)      = 0.0 !! 
    866866         ENDIF 
    867867         IF( med_diag%RIV_C%dgsave ) THEN 
    868             CALL wrk_alloc( jpi, jpj,   rivc2d    ) 
     868            ALLOCATE(    rivc2d(jpi, jpj)) 
    869869            rivc2d(:,:)      = 0.0 !! 
    870870         ENDIF 
    871871         IF( med_diag%RIV_ALK%dgsave ) THEN 
    872             CALL wrk_alloc( jpi, jpj,    rivalk2d   ) 
     872            ALLOCATE(     rivalk2d(jpi, jpj)   ) 
    873873            rivalk2d(:,:)      = 0.0 !! 
    874874         ENDIF 
    875875         IF( med_diag%DETC%dgsave ) THEN 
    876             CALL wrk_alloc( jpi, jpj,    fslowc2d   ) 
     876            ALLOCATE(     fslowc2d(jpi, jpj)   ) 
    877877            fslowc2d(:,:)      = 0.0 !! 
    878878         ENDIF  
     
    881881!! 
    882882         IF( med_diag%LYSO_CA%dgsave ) THEN 
    883             CALL wrk_alloc( jpi, jpj,    lyso_ca2d  ) 
     883            ALLOCATE(     lyso_ca2d(jpi, jpj)  ) 
    884884            lyso_ca2d(:,:)      = 0.0 !! 
    885885         ENDIF 
     
    888888!! 
    889889         IF( med_diag%PN_LLOSS%dgsave ) THEN 
    890             CALL wrk_alloc( jpi, jpj,    fdpn22d   ) 
     890            ALLOCATE(     fdpn22d(jpi, jpj)   ) 
    891891            fdpn22d(:,:)      = 0.0 !! 
    892892         ENDIF 
    893893         IF( med_diag%PD_LLOSS%dgsave ) THEN 
    894             CALL wrk_alloc( jpi, jpj,    fdpd22d   ) 
     894            ALLOCATE(     fdpd22d(jpi, jpj)   ) 
    895895            fdpd22d(:,:)      = 0.0 !! 
    896896         ENDIF 
    897897         IF( med_diag%ZI_LLOSS%dgsave ) THEN 
    898             CALL wrk_alloc( jpi, jpj,    fdzmi22d   ) 
     898            ALLOCATE(     fdzmi22d(jpi, jpj)   ) 
    899899            fdzmi22d(:,:)      = 0.0 !! 
    900900         ENDIF 
    901901         IF( med_diag%ZE_LLOSS%dgsave ) THEN 
    902             CALL wrk_alloc( jpi, jpj,   fdzme22d    ) 
     902            ALLOCATE(    fdzme22d(jpi, jpj)) 
    903903            fdzme22d(:,:)      = 0.0 !! 
    904904         ENDIF 
    905905         IF( med_diag%ZI_MES_N%dgsave ) THEN    
    906             CALL wrk_alloc( jpi, jpj,   zimesn2d    ) 
     906            ALLOCATE(    zimesn2d(jpi, jpj)) 
    907907            zimesn2d(:,:)      = 0.0 !! 
    908908         ENDIF 
    909909         IF( med_diag%ZI_MES_D%dgsave ) THEN 
    910             CALL wrk_alloc( jpi, jpj,    zimesd2d   ) 
     910            ALLOCATE(     zimesd2d(jpi, jpj)   ) 
    911911            zimesd2d(:,:)      = 0.0 !! 
    912912         ENDIF 
    913913         IF( med_diag%ZI_MES_C%dgsave ) THEN 
    914             CALL wrk_alloc( jpi, jpj,    zimesc2d   ) 
     914            ALLOCATE(     zimesc2d(jpi, jpj)   ) 
    915915            zimesc2d(:,:)      = 0.0 !! 
    916916         ENDIF 
    917917         IF( med_diag%ZI_MESDC%dgsave ) THEN 
    918             CALL wrk_alloc( jpi, jpj,    zimesdc2d   ) 
     918            ALLOCATE(     zimesdc2d(jpi, jpj)   ) 
    919919            zimesdc2d(:,:)      = 0.0 !! 
    920920         ENDIF 
    921921         IF( med_diag%ZI_EXCR%dgsave ) THEN 
    922             CALL wrk_alloc( jpi, jpj,     ziexcr2d  ) 
     922            ALLOCATE(      ziexcr2d(jpi, jpj)  ) 
    923923            ziexcr2d(:,:)      = 0.0 !! 
    924924         ENDIF 
    925925         IF( med_diag%ZI_RESP%dgsave ) THEN 
    926             CALL wrk_alloc( jpi, jpj,    ziresp2d   ) 
     926            ALLOCATE(     ziresp2d(jpi, jpj)   ) 
    927927            ziresp2d(:,:)      = 0.0 !! 
    928928         ENDIF 
    929929         IF( med_diag%ZI_GROW%dgsave ) THEN 
    930             CALL wrk_alloc( jpi, jpj,    zigrow2d   ) 
     930            ALLOCATE(     zigrow2d (jpi, jpj)  ) 
    931931            zigrow2d(:,:)      = 0.0 !! 
    932932         ENDIF 
    933933         IF( med_diag%ZE_MES_N%dgsave ) THEN 
    934             CALL wrk_alloc( jpi, jpj,   zemesn2d    ) 
     934            ALLOCATE(    zemesn2d(jpi, jpj)) 
    935935            zemesn2d(:,:)      = 0.0 !! 
    936936         ENDIF 
    937937         IF( med_diag%ZE_MES_D%dgsave ) THEN 
    938             CALL wrk_alloc( jpi, jpj,    zemesd2d   ) 
     938            ALLOCATE(     zemesd2d(jpi, jpj)   ) 
    939939            zemesd2d(:,:)      = 0.0 !! 
    940940         ENDIF 
    941941         IF( med_diag%ZE_MES_C%dgsave ) THEN 
    942             CALL wrk_alloc( jpi, jpj,    zemesc2d   ) 
     942            ALLOCATE(     zemesc2d(jpi, jpj)   ) 
    943943            zemesc2d(:,:)      = 0.0 !! 
    944944         ENDIF 
    945945         IF( med_diag%ZE_MESDC%dgsave ) THEN 
    946             CALL wrk_alloc( jpi, jpj,    zemesdc2d   ) 
     946            ALLOCATE(     zemesdc2d(jpi, jpj)   ) 
    947947            zemesdc2d(:,:)      = 0.0 !! 
    948948         ENDIF 
    949949         IF( med_diag%ZE_EXCR%dgsave ) THEN 
    950             CALL wrk_alloc( jpi, jpj,    zeexcr2d   ) 
     950            ALLOCATE(     zeexcr2d(jpi, jpj)   ) 
    951951            zeexcr2d(:,:)      = 0.0 !! 
    952952         ENDIF                   
    953953         IF( med_diag%ZE_RESP%dgsave ) THEN 
    954             CALL wrk_alloc( jpi, jpj,    zeresp2d   ) 
     954            ALLOCATE(     zeresp2d(jpi, jpj)   ) 
    955955            zeresp2d(:,:)      = 0.0 !! 
    956956         ENDIF 
    957957         IF( med_diag%ZE_GROW%dgsave ) THEN 
    958             CALL wrk_alloc( jpi, jpj,    zegrow2d   ) 
     958            ALLOCATE(     zegrow2d(jpi, jpj)   ) 
    959959            zegrow2d(:,:)      = 0.0 !! 
    960960         ENDIF 
    961961         IF( med_diag%MDETC%dgsave ) THEN 
    962             CALL wrk_alloc( jpi, jpj,   mdetc2d    ) 
     962            ALLOCATE(    mdetc2d(jpi, jpj)) 
    963963            mdetc2d(:,:)      = 0.0 !! 
    964964         ENDIF 
    965965         IF( med_diag%GMIDC%dgsave ) THEN 
    966             CALL wrk_alloc( jpi, jpj,    gmidc2d   ) 
     966            ALLOCATE(     gmidc2d(jpi, jpj)   ) 
    967967            gmidc2d(:,:)      = 0.0 !! 
    968968         ENDIF 
    969969         IF( med_diag%GMEDC%dgsave ) THEN 
    970             CALL wrk_alloc( jpi, jpj,    gmedc2d   ) 
     970            ALLOCATE(     gmedc2d(jpi, jpj)   ) 
    971971            gmedc2d(:,:)      = 0.0 !! 
    972972         ENDIF 
     
    976976         IF (jdms .eq. 1) THEN 
    977977            IF( med_diag%DMS_SURF%dgsave ) THEN 
    978                CALL wrk_alloc( jpi, jpj,   dms_surf2d    ) 
     978               ALLOCATE(    dms_surf2d(jpi, jpj)) 
    979979               dms_surf2d(:,:)      = 0.0 !! 
    980980            ENDIF 
    981981            IF( med_diag%DMS_ANDR%dgsave ) THEN 
    982                CALL wrk_alloc( jpi, jpj,   dms_andr2d    ) 
     982               ALLOCATE(    dms_andr2d(jpi, jpj)) 
    983983               dms_andr2d(:,:)      = 0.0 !! 
    984984            ENDIF 
    985985            IF( med_diag%DMS_SIMO%dgsave ) THEN 
    986                CALL wrk_alloc( jpi, jpj,  dms_simo2d     ) 
     986               ALLOCATE(   dms_simo2d(jpi, jpj)     ) 
    987987               dms_simo2d(:,:)      = 0.0 !! 
    988988            ENDIF 
    989989            IF( med_diag%DMS_ARAN%dgsave ) THEN 
    990                CALL wrk_alloc( jpi, jpj,   dms_aran2d    ) 
     990               ALLOCATE(    dms_aran2d(jpi, jpj)) 
    991991               dms_aran2d(:,:)      = 0.0 !! 
    992992            ENDIF 
    993993            IF( med_diag%DMS_HALL%dgsave ) THEN 
    994                CALL wrk_alloc( jpi, jpj,   dms_hall2d    ) 
     994               ALLOCATE(    dms_hall2d(jpi, jpj)) 
    995995               dms_hall2d(:,:)      = 0.0 !! 
    996996            ENDIF 
     
    999999         !! AXY (24/11/16): extra MOCSY diagnostics, 2D 
    10001000         IF( med_diag%ATM_XCO2%dgsave ) THEN 
    1001             CALL wrk_alloc( jpi, jpj, f_xco2a_2d      ) 
     1001            ALLOCATE(  f_xco2a_2d(jpi, jpj)      ) 
    10021002            f_xco2a_2d(:,:)      = 0.0 !! 
    10031003         ENDIF 
    10041004         IF( med_diag%OCN_FCO2%dgsave ) THEN 
    1005             CALL wrk_alloc( jpi, jpj, f_fco2w_2d      ) 
     1005            ALLOCATE(  f_fco2w_2d(jpi, jpj)      ) 
    10061006            f_fco2w_2d(:,:)      = 0.0 !! 
    10071007         ENDIF 
    10081008         IF( med_diag%ATM_FCO2%dgsave ) THEN 
    1009             CALL wrk_alloc( jpi, jpj, f_fco2a_2d      ) 
     1009            ALLOCATE(  f_fco2a_2d(jpi, jpj)      ) 
    10101010            f_fco2a_2d(:,:)      = 0.0 !! 
    10111011         ENDIF 
    10121012         IF( med_diag%OCN_RHOSW%dgsave ) THEN 
    1013             CALL wrk_alloc( jpi, jpj, f_ocnrhosw_2d   ) 
     1013            ALLOCATE(  f_ocnrhosw_2d(jpi, jpj)   ) 
    10141014            f_ocnrhosw_2d(:,:)      = 0.0 !! 
    10151015         ENDIF 
    10161016         IF( med_diag%OCN_SCHCO2%dgsave ) THEN 
    1017             CALL wrk_alloc( jpi, jpj, f_ocnschco2_2d  ) 
     1017            ALLOCATE(  f_ocnschco2_2d(jpi, jpj)  ) 
    10181018            f_ocnschco2_2d(:,:)      = 0.0 !! 
    10191019         ENDIF 
    10201020         IF( med_diag%OCN_KWCO2%dgsave ) THEN 
    1021             CALL wrk_alloc( jpi, jpj, f_ocnkwco2_2d   ) 
     1021            ALLOCATE(  f_ocnkwco2_2d(jpi, jpj)   ) 
    10221022            f_ocnkwco2_2d(:,:)      = 0.0 !! 
    10231023         ENDIF 
    10241024         IF( med_diag%OCN_K0%dgsave ) THEN 
    1025             CALL wrk_alloc( jpi, jpj, f_ocnk0_2d      ) 
     1025            ALLOCATE(  f_ocnk0_2d(jpi, jpj)      ) 
    10261026            f_ocnk0_2d(:,:)      = 0.0 !! 
    10271027         ENDIF 
    10281028         IF( med_diag%CO2STARAIR%dgsave ) THEN 
    1029             CALL wrk_alloc( jpi, jpj, f_co2starair_2d ) 
     1029            ALLOCATE( f_co2starair_2d ) 
    10301030            f_co2starair_2d(:,:)      = 0.0 !! 
    10311031         ENDIF 
    10321032         IF( med_diag%OCN_DPCO2%dgsave ) THEN 
    1033             CALL wrk_alloc( jpi, jpj, f_ocndpco2_2d   ) 
     1033            ALLOCATE(  f_ocndpco2_2d(jpi, jpj)   ) 
    10341034            f_ocndpco2_2d(:,:)      = 0.0 !! 
    10351035         ENDIF 
    10361036# endif   
    10371037         IF( med_diag%TPP3%dgsave ) THEN 
    1038             CALL wrk_alloc( jpi, jpj, jpk,       tpp3d ) 
     1038            ALLOCATE(        tpp3d(jpi, jpj, jpk) ) 
    10391039            tpp3d(:,:,:)      = 0.0 !!  
    10401040         ENDIF 
    10411041         IF( med_diag%DETFLUX3%dgsave ) THEN 
    1042             CALL wrk_alloc( jpi, jpj, jpk,        detflux3d ) 
     1042            ALLOCATE(         detflux3d(jpi, jpj, jpk) ) 
    10431043            detflux3d(:,:,:)      = 0.0 !!  
    10441044         ENDIF 
    10451045         IF( med_diag%REMIN3N%dgsave ) THEN 
    1046              CALL wrk_alloc( jpi, jpj, jpk,        remin3dn ) 
     1046             ALLOCATE(         remin3dn(jpi, jpj, jpk) ) 
    10471047             remin3dn(:,:,:)      = 0.0 !!  
    10481048          ENDIF 
     
    10521052          !!                   needed for coupling/passed through restart 
    10531053          !! IF( med_diag%FGCO2%dgsave ) THEN 
    1054              CALL wrk_alloc( jpi, jpj,   fgco2    ) 
     1054             ALLOCATE(    fgco2 (jpi, jpj)   ) 
    10551055             fgco2(:,:)      = 0.0 !! 
    10561056          !! ENDIF 
    10571057          IF( med_diag%INTDISSIC%dgsave ) THEN 
    1058              CALL wrk_alloc( jpi, jpj,   intdissic    ) 
     1058             ALLOCATE(    intdissic(jpi, jpj)    ) 
    10591059             intdissic(:,:)  = 0.0 !! 
    10601060          ENDIF           
    10611061          IF( med_diag%INTDISSIN%dgsave ) THEN 
    1062              CALL wrk_alloc( jpi, jpj,   intdissin    ) 
     1062             ALLOCATE(    intdissin(jpi, jpj)    ) 
    10631063             intdissin(:,:)  = 0.0 !! 
    10641064          ENDIF           
    10651065          IF( med_diag%INTDISSISI%dgsave ) THEN 
    1066              CALL wrk_alloc( jpi, jpj,   intdissisi    ) 
     1066             ALLOCATE(    intdissisi(jpi, jpj)    ) 
    10671067             intdissisi(:,:)  = 0.0 !! 
    10681068          ENDIF           
    10691069          IF( med_diag%INTTALK%dgsave ) THEN 
    1070              CALL wrk_alloc( jpi, jpj,   inttalk    ) 
     1070             ALLOCATE(    inttalk(jpi, jpj)    ) 
    10711071             inttalk(:,:)  = 0.0 !! 
    10721072          ENDIF           
    10731073          IF( med_diag%O2min%dgsave ) THEN 
    1074              CALL wrk_alloc( jpi, jpj,   o2min    ) 
     1074             ALLOCATE(    o2min(jpi, jpj)    ) 
    10751075             o2min(:,:)  = 1.e3 !! set to high value as we're looking for min(o2) 
    10761076          ENDIF           
    10771077          IF( med_diag%ZO2min%dgsave ) THEN 
    1078              CALL wrk_alloc( jpi, jpj,   zo2min    ) 
     1078             ALLOCATE(    zo2min (jpi, jpj)   ) 
    10791079             zo2min(:,:)  = 0.0 !! 
    10801080          ENDIF           
    10811081          IF( med_diag%FBDDTALK%dgsave  ) THEN 
    1082              CALL wrk_alloc( jpi, jpj, fbddtalk  ) 
     1082             ALLOCATE(  fbddtalk(jpi, jpj)  ) 
    10831083             fbddtalk(:,:)  = 0.0 !!  
    10841084          ENDIF 
    10851085          IF( med_diag%FBDDTDIC%dgsave  ) THEN 
    1086              CALL wrk_alloc( jpi, jpj, fbddtdic  ) 
     1086             ALLOCATE(  fbddtdic(jpi, jpj)  ) 
    10871087             fbddtdic(:,:)  = 0.0 !!  
    10881088          ENDIF 
    10891089          IF( med_diag%FBDDTDIFE%dgsave ) THEN 
    1090              CALL wrk_alloc( jpi, jpj, fbddtdife ) 
     1090             ALLOCATE(  fbddtdife(jpi, jpj) ) 
    10911091             fbddtdife(:,:) = 0.0 !!  
    10921092          ENDIF 
    10931093          IF( med_diag%FBDDTDIN%dgsave  ) THEN 
    1094              CALL wrk_alloc( jpi, jpj, fbddtdin  ) 
     1094             ALLOCATE(  fbddtdin(jpi, jpj)  ) 
    10951095             fbddtdin(:,:)  = 0.0 !!  
    10961096          ENDIF 
    10971097          IF( med_diag%FBDDTDISI%dgsave ) THEN 
    1098              CALL wrk_alloc( jpi, jpj, fbddtdisi ) 
     1098             ALLOCATE(  fbddtdisi(jpi, jpj) ) 
    10991099             fbddtdisi(:,:) = 0.0 !!  
    11001100          ENDIF 
     
    11021102          !! AXY (10/11/16): CMIP6 diagnostics, 3D 
    11031103          IF( med_diag%TPPD3%dgsave     ) THEN 
    1104              CALL wrk_alloc( jpi, jpj, jpk, tppd3     ) 
     1104             ALLOCATE(  tppd3(jpi, jpj, jpk)     ) 
    11051105             tppd3(:,:,:)     = 0.0 !!  
    11061106          ENDIF 
    11071107          IF( med_diag%BDDTALK3%dgsave  ) THEN 
    1108              CALL wrk_alloc( jpi, jpj, jpk, bddtalk3  ) 
     1108             ALLOCATE(  bddtalk3(jpi, jpj, jpk)  ) 
    11091109             bddtalk3(:,:,:)  = 0.0 !!  
    11101110          ENDIF 
    11111111          IF( med_diag%BDDTDIC3%dgsave  ) THEN 
    1112              CALL wrk_alloc( jpi, jpj, jpk, bddtdic3  ) 
     1112             ALLOCATE(  bddtdic3(jpi, jpj, jpk)  ) 
    11131113             bddtdic3(:,:,:)  = 0.0 !!  
    11141114          ENDIF 
    11151115          IF( med_diag%BDDTDIFE3%dgsave ) THEN 
    1116              CALL wrk_alloc( jpi, jpj, jpk, bddtdife3 ) 
     1116             ALLOCATE(  bddtdife3(jpi, jpj, jpk) ) 
    11171117             bddtdife3(:,:,:) = 0.0 !!  
    11181118          ENDIF 
    11191119          IF( med_diag%BDDTDIN3%dgsave  ) THEN 
    1120              CALL wrk_alloc( jpi, jpj, jpk, bddtdin3  ) 
     1120             ALLOCATE(  bddtdin3(jpi, jpj, jpk)  ) 
    11211121             bddtdin3(:,:,:)  = 0.0 !!  
    11221122          ENDIF 
    11231123          IF( med_diag%BDDTDISI3%dgsave ) THEN 
    1124              CALL wrk_alloc( jpi, jpj, jpk, bddtdisi3 ) 
     1124             ALLOCATE(  bddtdisi3(jpi, jpj, jpk) ) 
    11251125             bddtdisi3(:,:,:) = 0.0 !!  
    11261126          ENDIF 
    11271127          IF( med_diag%FD_NIT3%dgsave   ) THEN 
    1128              CALL wrk_alloc( jpi, jpj, jpk, fd_nit3   ) 
     1128             ALLOCATE(  fd_nit3(jpi, jpj, jpk)   ) 
    11291129             fd_nit3(:,:,:)   = 0.0 !!  
    11301130          ENDIF 
    11311131          IF( med_diag%FD_SIL3%dgsave   ) THEN 
    1132              CALL wrk_alloc( jpi, jpj, jpk, fd_sil3   ) 
     1132             ALLOCATE(  fd_sil3(jpi, jpj, jpk)   ) 
    11331133             fd_sil3(:,:,:)   = 0.0 !!  
    11341134          ENDIF 
    11351135          IF( med_diag%FD_CAR3%dgsave   ) THEN 
    1136              CALL wrk_alloc( jpi, jpj, jpk, fd_car3   ) 
     1136             ALLOCATE(  fd_car3(jpi, jpj, jpk)   ) 
    11371137             fd_car3(:,:,:)   = 0.0 !!  
    11381138          ENDIF 
    11391139          IF( med_diag%FD_CAL3%dgsave   ) THEN 
    1140              CALL wrk_alloc( jpi, jpj, jpk, fd_cal3   ) 
     1140             ALLOCATE(  fd_cal3(jpi, jpj, jpk)   ) 
    11411141             fd_cal3(:,:,:)   = 0.0 !!  
    11421142          ENDIF 
    11431143          IF( med_diag%DCALC3%dgsave    ) THEN 
    1144              CALL wrk_alloc( jpi, jpj, jpk, dcalc3    ) 
     1144             ALLOCATE(  dcalc3(jpi, jpj, jpk)    ) 
    11451145             dcalc3(:,:,: )   = 0.0 !!  
    11461146          ENDIF 
    11471147          IF( med_diag%EXPC3%dgsave     ) THEN 
    1148              CALL wrk_alloc( jpi, jpj, jpk, expc3   ) 
     1148             ALLOCATE(  expc3(jpi, jpj, jpk)   ) 
    11491149             expc3(:,:,: )    = 0.0 !!  
    11501150          ENDIF 
    11511151          IF( med_diag%EXPN3%dgsave     ) THEN 
    1152              CALL wrk_alloc( jpi, jpj, jpk, expn3   ) 
     1152             ALLOCATE(  expn3(jpi, jpj, jpk)   ) 
    11531153             expn3(:,:,: )    = 0.0 !!  
    11541154          ENDIF 
    11551155          IF( med_diag%FEDISS3%dgsave   ) THEN 
    1156              CALL wrk_alloc( jpi, jpj, jpk, fediss3   ) 
     1156             ALLOCATE(  fediss3(jpi, jpj, jpk)   ) 
    11571157             fediss3(:,:,: )  = 0.0 !!  
    11581158          ENDIF 
    11591159          IF( med_diag%FESCAV3%dgsave   ) THEN 
    1160              CALL wrk_alloc( jpi, jpj, jpk, fescav3   ) 
     1160             ALLOCATE(  fescav3(jpi, jpj, jpk)   ) 
    11611161             fescav3(:,:,: )  = 0.0 !!  
    11621162          ENDIF 
    11631163          IF( med_diag%MIGRAZP3%dgsave   ) THEN 
    1164              CALL wrk_alloc( jpi, jpj, jpk, migrazp3  ) 
     1164             ALLOCATE(  migrazp3(jpi, jpj, jpk)  ) 
    11651165             migrazp3(:,:,: )  = 0.0 !!  
    11661166          ENDIF 
    11671167          IF( med_diag%MIGRAZD3%dgsave   ) THEN 
    1168              CALL wrk_alloc( jpi, jpj, jpk, migrazd3  ) 
     1168             ALLOCATE(  migrazd3(jpi, jpj, jpk)  ) 
    11691169             migrazd3(:,:,: )  = 0.0 !!  
    11701170          ENDIF 
    11711171          IF( med_diag%MEGRAZP3%dgsave   ) THEN 
    1172              CALL wrk_alloc( jpi, jpj, jpk, megrazp3  ) 
     1172             ALLOCATE(  megrazp3(jpi, jpj, jpk)  ) 
    11731173             megrazp3(:,:,: )  = 0.0 !!  
    11741174          ENDIF 
    11751175          IF( med_diag%MEGRAZD3%dgsave   ) THEN 
    1176              CALL wrk_alloc( jpi, jpj, jpk, megrazd3  ) 
     1176             ALLOCATE(  megrazd3(jpi, jpj, jpk)  ) 
    11771177             megrazd3(:,:,: )  = 0.0 !!  
    11781178          ENDIF 
    11791179          IF( med_diag%MEGRAZZ3%dgsave   ) THEN 
    1180              CALL wrk_alloc( jpi, jpj, jpk, megrazz3  ) 
     1180             ALLOCATE(  megrazz3(jpi, jpj, jpk)  ) 
    11811181             megrazz3(:,:,: )  = 0.0 !!  
    11821182          ENDIF 
    11831183          IF( med_diag%O2SAT3%dgsave     ) THEN 
    1184              CALL wrk_alloc( jpi, jpj, jpk, o2sat3    ) 
     1184             ALLOCATE(  o2sat3(jpi, jpj, jpk)    ) 
    11851185             o2sat3(:,:,: )    = 0.0 !!  
    11861186          ENDIF 
    11871187          IF( med_diag%PBSI3%dgsave      ) THEN 
    1188              CALL wrk_alloc( jpi, jpj, jpk, pbsi3     ) 
     1188             ALLOCATE(  pbsi3(jpi, jpj, jpk)     ) 
    11891189             pbsi3(:,:,: )     = 0.0 !!  
    11901190          ENDIF 
    11911191          IF( med_diag%PCAL3%dgsave      ) THEN 
    1192              CALL wrk_alloc( jpi, jpj, jpk, pcal3     ) 
     1192             ALLOCATE(  pcal3(jpi, jpj, jpk)     ) 
    11931193             pcal3(:,:,: )     = 0.0 !!  
    11941194          ENDIF 
    11951195          IF( med_diag%REMOC3%dgsave     ) THEN 
    1196              CALL wrk_alloc( jpi, jpj, jpk, remoc3    ) 
     1196             ALLOCATE(  remoc3(jpi, jpj, jpk)    ) 
    11971197             remoc3(:,:,: )    = 0.0 !!  
    11981198          ENDIF 
    11991199          IF( med_diag%PNLIMJ3%dgsave    ) THEN 
    1200              CALL wrk_alloc( jpi, jpj, jpk, pnlimj3   ) 
     1200             ALLOCATE(  pnlimj3(jpi, jpj, jpk)   ) 
    12011201             pnlimj3(:,:,: )   = 0.0 !!  
    12021202          ENDIF 
    12031203          IF( med_diag%PNLIMN3%dgsave    ) THEN 
    1204              CALL wrk_alloc( jpi, jpj, jpk, pnlimn3   ) 
     1204             ALLOCATE(  pnlimn3(jpi, jpj, jpk)   ) 
    12051205             pnlimn3(:,:,: )   = 0.0 !!  
    12061206          ENDIF 
    12071207          IF( med_diag%PNLIMFE3%dgsave   ) THEN 
    1208              CALL wrk_alloc( jpi, jpj, jpk, pnlimfe3  ) 
     1208             ALLOCATE(  pnlimfe3(jpi, jpj, jpk)  ) 
    12091209             pnlimfe3(:,:,: )  = 0.0 !!  
    12101210          ENDIF 
    12111211          IF( med_diag%PDLIMJ3%dgsave    ) THEN 
    1212              CALL wrk_alloc( jpi, jpj, jpk, pdlimj3   ) 
     1212             ALLOCATE(  pdlimj3(jpi, jpj, jpk)   ) 
    12131213             pdlimj3(:,:,: )   = 0.0 !!  
    12141214          ENDIF 
    12151215          IF( med_diag%PDLIMN3%dgsave    ) THEN 
    1216              CALL wrk_alloc( jpi, jpj, jpk, pdlimn3   ) 
     1216             ALLOCATE(  pdlimn3(jpi, jpj, jpk)   ) 
    12171217             pdlimn3(:,:,: )   = 0.0 !!  
    12181218          ENDIF 
    12191219          IF( med_diag%PDLIMFE3%dgsave   ) THEN 
    1220              CALL wrk_alloc( jpi, jpj, jpk, pdlimfe3  ) 
     1220             ALLOCATE(  pdlimfe3(jpi, jpj, jpk)  ) 
    12211221             pdlimfe3(:,:,: )  = 0.0 !!  
    12221222          ENDIF 
    12231223          IF( med_diag%PDLIMSI3%dgsave   ) THEN 
    1224              CALL wrk_alloc( jpi, jpj, jpk, pdlimsi3  ) 
     1224             ALLOCATE(  pdlimsi3(jpi, jpj, jpk)  ) 
    12251225             pdlimsi3(:,:,: )  = 0.0 !!  
    12261226          ENDIF 
     
    47994799                     IF( med_diag%ATM_PCO2%dgsave ) THEN 
    48004800                         CALL iom_put( "ATM_PCO2"  , f_pco2a2d ) 
    4801                          CALL wrk_dealloc( jpi, jpj,    f_pco2a2d  ) 
     4801                         DEALLOCATE(    f_pco2a2d  ) 
    48024802                     ENDIF 
    48034803                     IF( med_diag%OCN_PH%dgsave ) THEN 
     
    48074807                     IF( med_diag%OCN_PCO2%dgsave ) THEN 
    48084808                        CALL iom_put( "OCN_PCO2"  , f_pco2w2d ) 
    4809                         CALL wrk_dealloc( jpi, jpj,   f_pco2w2d   ) 
     4809                        DEALLOCATE(   f_pco2w2d   ) 
    48104810                     ENDIF 
    48114811                     IF( med_diag%OCNH2CO3%dgsave ) THEN 
     
    48234823                     IF( med_diag%CO2FLUX%dgsave ) THEN 
    48244824                        CALL iom_put( "CO2FLUX"  , f_co2flux2d ) 
    4825                         CALL wrk_dealloc( jpi, jpj,   f_co2flux2d   ) 
     4825                        DEALLOCATE(   f_co2flux2d   ) 
    48264826                     ENDIF 
    48274827                     !!  
     
    48424842                        CO2Flux_out_cpl = zn_co2_flx 
    48434843                     ENDIF 
    4844                      CALL wrk_dealloc( jpi, jpj,   fgco2   ) 
     4844                     DEALLOCATE(   fgco2   ) 
    48454845                     !! --- 
    48464846                     IF( med_diag%OM_CAL%dgsave ) THEN 
     
    48524852                     IF( med_diag%TCO2%dgsave ) THEN 
    48534853                         CALL iom_put( "TCO2"  , f_TDIC2d ) 
    4854                          CALL wrk_dealloc( jpi, jpj,   f_TDIC2d   ) 
     4854                         DEALLOCATE(   f_TDIC2d   ) 
    48554855                     ENDIF 
    48564856                     IF( med_diag%TALK%dgsave ) THEN 
    48574857                         CALL iom_put( "TALK"  , f_TALK2d ) 
    4858                          CALL wrk_dealloc( jpi, jpj,    f_TALK2d  ) 
     4858                         DEALLOCATE(    f_TALK2d  ) 
    48594859                     ENDIF 
    48604860                     IF( med_diag%KW660%dgsave ) THEN 
    48614861                         CALL iom_put( "KW660"  , f_kw6602d ) 
    4862                          CALL wrk_dealloc( jpi, jpj,   f_kw6602d   ) 
     4862                         DEALLOCATE(   f_kw6602d   ) 
    48634863                     ENDIF 
    48644864                     IF( med_diag%ATM_PP0%dgsave ) THEN 
    48654865                         CALL iom_put( "ATM_PP0"  , f_pp02d ) 
    4866                          CALL wrk_dealloc( jpi, jpj,    f_pp02d  ) 
     4866                         DEALLOCATE(    f_pp02d  ) 
    48674867                     ENDIF 
    48684868                     IF( med_diag%O2FLUX%dgsave ) THEN 
    48694869                         CALL iom_put( "O2FLUX"  , f_o2flux2d ) 
    4870                          CALL wrk_dealloc( jpi, jpj,   f_o2flux2d   ) 
     4870                         DEALLOCATE(   f_o2flux2d   ) 
    48714871                     ENDIF 
    48724872                     IF( med_diag%O2SAT%dgsave ) THEN 
    48734873                         CALL iom_put( "O2SAT"  , f_o2sat2d ) 
    4874                          CALL wrk_dealloc( jpi, jpj,  f_o2sat2d    ) 
     4874                         DEALLOCATE(  f_o2sat2d(jpi, jpj)) 
    48754875                     ENDIF 
    48764876                     IF( med_diag%CAL_CCD%dgsave ) THEN 
     
    48894889                            DMS_out_cpl = zn_dms_srf 
    48904890                         ENDIF 
    4891                          CALL wrk_dealloc( jpi, jpj,   dms_surf2d   )  
     4891                         DEALLOCATE(   dms_surf2d   )  
    48924892                       ENDIF 
    48934893                       IF( med_diag%DMS_ANDR%dgsave ) THEN 
    48944894                         CALL iom_put( "DMS_ANDR"  , dms_andr2d ) 
    4895                          CALL wrk_dealloc( jpi, jpj,   dms_andr2d   ) 
     4895                         DEALLOCATE(   dms_andr2d   ) 
    48964896                       ENDIF 
    48974897                       IF( med_diag%DMS_SIMO%dgsave ) THEN 
    48984898                         CALL iom_put( "DMS_SIMO"  , dms_simo2d ) 
    4899                          CALL wrk_dealloc( jpi, jpj,    dms_simo2d  ) 
     4899                         DEALLOCATE(    dms_simo2d  ) 
    49004900                       ENDIF 
    49014901                       IF( med_diag%DMS_ARAN%dgsave ) THEN 
    49024902                         CALL iom_put( "DMS_ARAN"  , dms_aran2d ) 
    4903                          CALL wrk_dealloc( jpi, jpj,   dms_aran2d   ) 
     4903                         DEALLOCATE(   dms_aran2d   ) 
    49044904                       ENDIF 
    49054905                       IF( med_diag%DMS_HALL%dgsave ) THEN 
    49064906                         CALL iom_put( "DMS_HALL"  , dms_hall2d ) 
    4907                          CALL wrk_dealloc( jpi, jpj,   dms_hall2d   ) 
     4907                         DEALLOCATE(   dms_hall2d   ) 
    49084908                       ENDIF 
    49094909                     ENDIF 
     
    49114911                     IF( med_diag%ATM_XCO2%dgsave ) THEN 
    49124912                        CALL iom_put( "ATM_XCO2"  ,   f_xco2a_2d      ) 
    4913                         CALL wrk_dealloc( jpi, jpj,   f_xco2a_2d      ) 
     4913                        DEALLOCATE(   f_xco2a_2d      ) 
    49144914                     ENDIF 
    49154915                     IF( med_diag%OCN_FCO2%dgsave ) THEN 
    49164916                        CALL iom_put( "OCN_FCO2"  ,   f_fco2w_2d      ) 
    4917                         CALL wrk_dealloc( jpi, jpj,   f_fco2w_2d      ) 
     4917                        DEALLOCATE(   f_fco2w_2d      ) 
    49184918                     ENDIF 
    49194919                     IF( med_diag%ATM_FCO2%dgsave ) THEN 
    49204920                        CALL iom_put( "ATM_FCO2"  ,   f_fco2a_2d      ) 
    4921                         CALL wrk_dealloc( jpi, jpj,   f_fco2a_2d      ) 
     4921                        DEALLOCATE(   f_fco2a_2d      ) 
    49224922                     ENDIF 
    49234923                     IF( med_diag%OCN_RHOSW%dgsave ) THEN 
    49244924                        CALL iom_put( "OCN_RHOSW"  ,  f_ocnrhosw_2d   ) 
    4925                         CALL wrk_dealloc( jpi, jpj,   f_ocnrhosw_2d   ) 
     4925                        DEALLOCATE(   f_ocnrhosw_2d   ) 
    49264926                     ENDIF 
    49274927                     IF( med_diag%OCN_SCHCO2%dgsave ) THEN 
    49284928                        CALL iom_put( "OCN_SCHCO2"  , f_ocnschco2_2d  ) 
    4929                         CALL wrk_dealloc( jpi, jpj,   f_ocnschco2_2d  ) 
     4929                        DEALLOCATE(   f_ocnschco2_2d  ) 
    49304930                     ENDIF 
    49314931                     IF( med_diag%OCN_KWCO2%dgsave ) THEN 
    49324932                        CALL iom_put( "OCN_KWCO2"  ,  f_ocnkwco2_2d   ) 
    4933                         CALL wrk_dealloc( jpi, jpj,   f_ocnkwco2_2d   ) 
     4933                        DEALLOCATE(   f_ocnkwco2_2d   ) 
    49344934                     ENDIF 
    49354935                     IF( med_diag%OCN_K0%dgsave ) THEN 
    49364936                        CALL iom_put( "OCN_K0"  ,     f_ocnk0_2d      ) 
    4937                         CALL wrk_dealloc( jpi, jpj,   f_ocnk0_2d      ) 
     4937                        DEALLOCATE(   f_ocnk0_2d      ) 
    49384938                     ENDIF 
    49394939                     IF( med_diag%CO2STARAIR%dgsave ) THEN 
    49404940                        CALL iom_put( "CO2STARAIR"  , f_co2starair_2d ) 
    4941                         CALL wrk_dealloc( jpi, jpj,   f_co2starair_2d ) 
     4941                        DEALLOCATE(   f_co2starair_2d ) 
    49424942                     ENDIF 
    49434943                     IF( med_diag%OCN_DPCO2%dgsave ) THEN 
    49444944                        CALL iom_put( "OCN_DPCO2"  ,  f_ocndpco2_2d   ) 
    4945                         CALL wrk_dealloc( jpi, jpj,   f_ocndpco2_2d   ) 
     4945                        DEALLOCATE(   f_ocndpco2_2d   ) 
    49464946                     ENDIF 
    49474947# endif                      
     
    51005100                     IF( med_diag%RR_1000%dgsave ) THEN 
    51015101                        CALL iom_put( "RR_1000"  , ffastca2d ) 
    5102                         CALL wrk_dealloc( jpi, jpj,  ffastca2d    ) 
     5102                        DEALLOCATE(  ffastca2d(jpi, jpj)) 
    51035103                     ENDIF 
    51045104                     IF( med_diag%SDC_1000%dgsave ) THEN 
     
    54925492         IF ( med_diag%PN_JLIM%dgsave ) THEN 
    54935493            CALL iom_put( "PN_JLIM"  , fjln2d ) 
    5494             CALL wrk_dealloc( jpi, jpj,   fjln2d   ) 
     5494            DEALLOCATE(   fjln2d   ) 
    54955495         ENDIF 
    54965496         IF ( med_diag%PN_NLIM%dgsave ) THEN 
    54975497            CALL iom_put( "PN_NLIM"  , fnln2d ) 
    5498             CALL wrk_dealloc( jpi, jpj,   fnln2d   ) 
     5498            DEALLOCATE(   fnln2d   ) 
    54995499         ENDIF 
    55005500         IF ( med_diag%PN_FELIM%dgsave ) THEN 
    55015501            CALL iom_put( "PN_FELIM"  , ffln2d ) 
    5502             CALL wrk_dealloc( jpi, jpj,   ffln2d   ) 
     5502            DEALLOCATE(   ffln2d   ) 
    55035503         ENDIF 
    55045504         IF ( med_diag%PD_JLIM%dgsave ) THEN 
    55055505            CALL iom_put( "PD_JLIM"  , fjld2d ) 
    5506             CALL wrk_dealloc( jpi, jpj,  fjld2d    ) 
     5506            DEALLOCATE(  fjld2d(jpi, jpj)) 
    55075507         ENDIF 
    55085508         IF ( med_diag%PD_NLIM%dgsave ) THEN 
    55095509            CALL iom_put( "PD_NLIM"  , fnld2d ) 
    5510             CALL wrk_dealloc( jpi, jpj,   fnld2d  ) 
     5510            DEALLOCATE(   fnld2d  ) 
    55115511         ENDIF 
    55125512         IF ( med_diag%PD_FELIM%dgsave ) THEN 
    55135513            CALL iom_put( "PD_FELIM"  , ffld2d ) 
    5514             CALL wrk_dealloc( jpi, jpj,  ffld2d    ) 
     5514            DEALLOCATE(  ffld2d(jpi, jpj)) 
    55155515         ENDIF 
    55165516         IF ( med_diag%PD_SILIM%dgsave ) THEN 
    55175517            CALL iom_put( "PD_SILIM"  , fsld2d2 ) 
    5518             CALL wrk_dealloc( jpi, jpj,   fsld2d2   ) 
     5518            DEALLOCATE(   fsld2d2   ) 
    55195519         ENDIF 
    55205520         IF ( med_diag%PDSILIM2%dgsave ) THEN 
    55215521            CALL iom_put( "PDSILIM2"  , fsld2d ) 
    5522             CALL wrk_dealloc( jpi, jpj,   fsld2d   ) 
     5522            DEALLOCATE(   fsld2d   ) 
    55235523         ENDIF 
    55245524         IF ( med_diag%INTFLX_N%dgsave ) THEN 
     
    56075607         IF ( med_diag%PRN%dgsave ) THEN 
    56085608            CALL iom_put( "PRN"  , fprn2d ) 
    5609             CALL wrk_dealloc( jpi, jpj,   fprn2d   ) 
     5609            DEALLOCATE(   fprn2d   ) 
    56105610         ENDIF 
    56115611         IF ( med_diag%MPN%dgsave ) THEN 
    56125612            CALL iom_put( "MPN"  ,fdpn2d  ) 
    5613             CALL wrk_dealloc( jpi, jpj,    fdpn2d  ) 
     5613            DEALLOCATE(    fdpn2d  ) 
    56145614         ENDIF 
    56155615         IF ( med_diag%PRD%dgsave ) THEN 
    56165616            CALL iom_put( "PRD"  ,fprd2d  ) 
    5617             CALL wrk_dealloc( jpi, jpj,   fprd2d  ) 
     5617            DEALLOCATE(   fprd2d  ) 
    56185618         ENDIF 
    56195619         IF( med_diag%MPD%dgsave ) THEN 
    56205620            CALL iom_put( "MPD"  , fdpd2d ) 
    5621             CALL wrk_dealloc( jpi, jpj,    fdpd2d ) 
     5621            DEALLOCATE(    fdpd2d ) 
    56225622         ENDIF 
    56235623         !  IF( med_diag%DSED%dgsave ) THEN 
     
    56265626         IF( med_diag%OPAL%dgsave ) THEN 
    56275627            CALL iom_put( "OPAL"  , fprds2d ) 
    5628             CALL wrk_dealloc( jpi, jpj,   fprds2d  ) 
     5628            DEALLOCATE(   fprds2d  ) 
    56295629         ENDIF 
    56305630         IF( med_diag%OPALDISS%dgsave ) THEN 
    56315631            CALL iom_put( "OPALDISS"  , fsdiss2d ) 
    5632             CALL wrk_dealloc( jpi, jpj,   fsdiss2d  ) 
     5632            DEALLOCATE(   fsdiss2d  ) 
    56335633         ENDIF 
    56345634         IF( med_diag%GMIPn%dgsave ) THEN 
    56355635            CALL iom_put( "GMIPn"  , fgmipn2d ) 
    5636             CALL wrk_dealloc( jpi, jpj,   fgmipn2d  ) 
     5636            DEALLOCATE(   fgmipn2d  ) 
    56375637         ENDIF 
    56385638         IF( med_diag%GMID%dgsave ) THEN 
    56395639            CALL iom_put( "GMID"  , fgmid2d ) 
    5640             CALL wrk_dealloc( jpi, jpj,  fgmid2d  ) 
     5640            DEALLOCATE(  fgmid2d  ) 
    56415641         ENDIF 
    56425642         IF( med_diag%MZMI%dgsave ) THEN 
    56435643            CALL iom_put( "MZMI"  , fdzmi2d ) 
    5644             CALL wrk_dealloc( jpi, jpj,   fdzmi2d   ) 
     5644            DEALLOCATE(   fdzmi2d   ) 
    56455645         ENDIF 
    56465646         IF( med_diag%GMEPN%dgsave ) THEN 
    56475647            CALL iom_put( "GMEPN"  , fgmepn2d ) 
    5648             CALL wrk_dealloc( jpi, jpj,   fgmepn2d  ) 
     5648            DEALLOCATE(   fgmepn2d  ) 
    56495649         ENDIF 
    56505650         IF( med_diag%GMEPD%dgsave ) THEN 
    56515651            CALL iom_put( "GMEPD"  , fgmepd2d ) 
    5652             CALL wrk_dealloc( jpi, jpj,   fgmepd2d   ) 
     5652            DEALLOCATE(   fgmepd2d   ) 
    56535653         ENDIF 
    56545654         IF( med_diag%GMEZMI%dgsave ) THEN 
    56555655            CALL iom_put( "GMEZMI"  , fgmezmi2d ) 
    5656             CALL wrk_dealloc( jpi, jpj,   fgmezmi2d   ) 
     5656            DEALLOCATE(   fgmezmi2d   ) 
    56575657         ENDIF 
    56585658         IF( med_diag%GMED%dgsave ) THEN 
    56595659            CALL iom_put( "GMED"  , fgmed2d ) 
    5660             CALL wrk_dealloc( jpi, jpj,    fgmed2d  ) 
     5660            DEALLOCATE(    fgmed2d  ) 
    56615661         ENDIF 
    56625662         IF( med_diag%MZME%dgsave ) THEN 
    56635663            CALL iom_put( "MZME"  , fdzme2d ) 
    5664             CALL wrk_dealloc( jpi, jpj,  fdzme2d    ) 
     5664            DEALLOCATE(  fdzme2d(jpi, jpj)) 
    56655665         ENDIF 
    56665666         !  IF( med_diag%DEXP%dgsave ) THEN 
     
    56695669         IF( med_diag%DETN%dgsave ) THEN 
    56705670            CALL iom_put( "DETN"  , fslown2d ) 
    5671             CALL wrk_dealloc( jpi, jpj,  fslown2d    ) 
     5671            DEALLOCATE(  fslown2d(jpi, jpj)) 
    56725672         ENDIF 
    56735673         IF( med_diag%MDET%dgsave ) THEN 
    56745674            CALL iom_put( "MDET"  , fdd2d ) 
    5675             CALL wrk_dealloc( jpi, jpj,   fdd2d   ) 
     5675            DEALLOCATE(   fdd2d   ) 
    56765676         ENDIF 
    56775677         IF( med_diag%AEOLIAN%dgsave ) THEN 
    56785678            CALL iom_put( "AEOLIAN"  , ffetop2d ) 
    5679             CALL wrk_dealloc( jpi, jpj,   ffetop2d   ) 
     5679            DEALLOCATE(   ffetop2d   ) 
    56805680         ENDIF 
    56815681         IF( med_diag%BENTHIC%dgsave ) THEN 
    56825682            CALL iom_put( "BENTHIC"  , ffebot2d ) 
    5683             CALL wrk_dealloc( jpi, jpj,   ffebot2d   ) 
     5683            DEALLOCATE(   ffebot2d   ) 
    56845684         ENDIF 
    56855685         IF( med_diag%SCAVENGE%dgsave ) THEN 
    56865686            CALL iom_put( "SCAVENGE"  , ffescav2d ) 
    5687             CALL wrk_dealloc( jpi, jpj,   ffescav2d  ) 
     5687            DEALLOCATE(   ffescav2d  ) 
    56885688         ENDIF 
    56895689         !!  
    56905690         IF( med_diag%TOTREG_N%dgsave ) THEN 
    56915691            CALL iom_put( "TOTREG_N"  , fregen2d ) 
    5692             CALL wrk_dealloc( jpi, jpj,   fregen2d   ) 
     5692            DEALLOCATE(   fregen2d   ) 
    56935693         ENDIF 
    56945694         IF( med_diag%TOTRG_SI%dgsave ) THEN 
    56955695            CALL iom_put( "TOTRG_SI"  , fregensi2d ) 
    5696             CALL wrk_dealloc( jpi, jpj,    fregensi2d  ) 
     5696            DEALLOCATE(    fregensi2d  ) 
    56975697         ENDIF 
    56985698         !!  
    56995699         IF( med_diag%FASTN%dgsave ) THEN 
    57005700            CALL iom_put( "FASTN"  , ftempn2d ) 
    5701             CALL wrk_dealloc( jpi, jpj,   ftempn2d   ) 
     5701            DEALLOCATE(   ftempn2d   ) 
    57025702         ENDIF 
    57035703         IF( med_diag%FASTSI%dgsave ) THEN 
    57045704            CALL iom_put( "FASTSI"  , ftempsi2d ) 
    5705             CALL wrk_dealloc( jpi, jpj,   ftempsi2d   ) 
     5705            DEALLOCATE(   ftempsi2d   ) 
    57065706         ENDIF 
    57075707         IF( med_diag%FASTFE%dgsave ) THEN 
    57085708            CALL iom_put( "FASTFE"  , ftempfe2d ) 
    5709             CALL wrk_dealloc( jpi, jpj,    ftempfe2d  ) 
     5709            DEALLOCATE(    ftempfe2d  ) 
    57105710         ENDIF 
    57115711         IF( med_diag%FASTC%dgsave ) THEN 
    57125712            CALL iom_put( "FASTC"  , ftempc2d ) 
    5713             CALL wrk_dealloc( jpi, jpj,  ftempc2d    ) 
     5713            DEALLOCATE(  ftempc2d(jpi, jpj)) 
    57145714         ENDIF 
    57155715         IF( med_diag%FASTCA%dgsave ) THEN 
    57165716            CALL iom_put( "FASTCA"  , ftempca2d ) 
    5717             CALL wrk_dealloc( jpi, jpj,  ftempca2d   ) 
     5717            DEALLOCATE(  ftempca2d   ) 
    57185718         ENDIF 
    57195719         !!  
    57205720         IF( med_diag%REMINN%dgsave ) THEN 
    57215721            CALL iom_put( "REMINN"  , freminn2d ) 
    5722             CALL wrk_dealloc( jpi, jpj,   freminn2d   ) 
     5722            DEALLOCATE(   freminn2d   ) 
    57235723         ENDIF 
    57245724         IF( med_diag%REMINSI%dgsave ) THEN 
    57255725            CALL iom_put( "REMINSI"  , freminsi2d ) 
    5726             CALL wrk_dealloc( jpi, jpj,   freminsi2d   ) 
     5726            DEALLOCATE(   freminsi2d   ) 
    57275727         ENDIF 
    57285728         IF( med_diag%REMINFE%dgsave ) THEN 
    57295729            CALL iom_put( "REMINFE"  , freminfe2d ) 
    5730             CALL wrk_dealloc( jpi, jpj,  freminfe2d    ) 
     5730            DEALLOCATE(  freminfe2d(jpi, jpj)) 
    57315731         ENDIF 
    57325732         IF( med_diag%REMINC%dgsave ) THEN 
    57335733            CALL iom_put( "REMINC"  , freminc2d ) 
    5734             CALL wrk_dealloc( jpi, jpj,    freminc2d  ) 
     5734            DEALLOCATE(    freminc2d  ) 
    57355735         ENDIF 
    57365736         IF( med_diag%REMINCA%dgsave ) THEN 
    57375737            CALL iom_put( "REMINCA"  , freminca2d ) 
    5738             CALL wrk_dealloc( jpi, jpj,   freminca2d  ) 
     5738            DEALLOCATE(   freminca2d  ) 
    57395739         ENDIF 
    57405740         IF( med_diag%SEAFLRN%dgsave ) THEN 
     
    57585758         IF( med_diag%RIV_N%dgsave ) THEN 
    57595759            CALL iom_put( "RIV_N"  , rivn2d ) 
    5760             CALL wrk_dealloc( jpi, jpj,    rivn2d  ) 
     5760            DEALLOCATE(    rivn2d  ) 
    57615761         ENDIF 
    57625762         IF( med_diag%RIV_SI%dgsave ) THEN 
    57635763            CALL iom_put( "RIV_SI"  , rivsi2d ) 
    5764             CALL wrk_dealloc( jpi, jpj,   rivsi2d   ) 
     5764            DEALLOCATE(   rivsi2d   ) 
    57655765         ENDIF 
    57665766         IF( med_diag%RIV_C%dgsave ) THEN 
    57675767            CALL iom_put( "RIV_C"  , rivc2d ) 
    5768             CALL wrk_dealloc( jpi, jpj,    rivc2d  ) 
     5768            DEALLOCATE(    rivc2d  ) 
    57695769         ENDIF 
    57705770         IF( med_diag%RIV_ALK%dgsave ) THEN 
    57715771            CALL iom_put( "RIV_ALK"  , rivalk2d ) 
    5772             CALL wrk_dealloc( jpi, jpj,  rivalk2d    ) 
     5772            DEALLOCATE(  rivalk2d(jpi, jpj)) 
    57735773         ENDIF 
    57745774         IF( med_diag%DETC%dgsave ) THEN 
    57755775            CALL iom_put( "DETC"  , fslowc2d ) 
    5776             CALL wrk_dealloc( jpi, jpj,   fslowc2d   ) 
     5776            DEALLOCATE(   fslowc2d   ) 
    57775777         ENDIF 
    57785778         !! 
    57795779         IF( med_diag%PN_LLOSS%dgsave ) THEN 
    57805780            CALL iom_put( "PN_LLOSS"  , fdpn22d ) 
    5781             CALL wrk_dealloc( jpi, jpj,   fdpn22d   ) 
     5781            DEALLOCATE(   fdpn22d   ) 
    57825782         ENDIF 
    57835783         IF( med_diag%PD_LLOSS%dgsave ) THEN 
    57845784            CALL iom_put( "PD_LLOSS"  , fdpd22d ) 
    5785             CALL wrk_dealloc( jpi, jpj,   fdpd22d   ) 
     5785            DEALLOCATE(   fdpd22d   ) 
    57865786         ENDIF 
    57875787         IF( med_diag%ZI_LLOSS%dgsave ) THEN 
    57885788            CALL iom_put( "ZI_LLOSS"  , fdzmi22d ) 
    5789              CALL wrk_dealloc( jpi, jpj,    fdzmi22d  ) 
     5789             DEALLOCATE(    fdzmi22d  ) 
    57905790          ENDIF 
    57915791          IF( med_diag%ZE_LLOSS%dgsave ) THEN 
    57925792             CALL iom_put( "ZE_LLOSS"  , fdzme22d ) 
    5793              CALL wrk_dealloc( jpi, jpj,   fdzme22d   ) 
     5793             DEALLOCATE(   fdzme22d   ) 
    57945794          ENDIF 
    57955795          IF( med_diag%ZI_MES_N%dgsave ) THEN 
    57965796             CALL iom_put( "ZI_MES_N"  , zimesn2d ) 
    5797              CALL wrk_dealloc( jpi, jpj,    zimesn2d  ) 
     5797             DEALLOCATE(    zimesn2d  ) 
    57985798          ENDIF 
    57995799          IF( med_diag%ZI_MES_D%dgsave ) THEN 
    58005800             CALL iom_put( "ZI_MES_D"  , zimesd2d ) 
    5801              CALL wrk_dealloc( jpi, jpj,    zimesd2d  ) 
     5801             DEALLOCATE(    zimesd2d  ) 
    58025802          ENDIF 
    58035803          IF( med_diag%ZI_MES_C%dgsave ) THEN 
    58045804             CALL iom_put( "ZI_MES_C"  , zimesc2d ) 
    5805              CALL wrk_dealloc( jpi, jpj,    zimesc2d  ) 
     5805             DEALLOCATE(    zimesc2d  ) 
    58065806          ENDIF 
    58075807          IF( med_diag%ZI_MESDC%dgsave ) THEN 
    58085808             CALL iom_put( "ZI_MESDC"  ,zimesdc2d  ) 
    5809              CALL wrk_dealloc( jpi, jpj,    zimesdc2d  ) 
     5809             DEALLOCATE(    zimesdc2d  ) 
    58105810          ENDIF 
    58115811          IF( med_diag%ZI_EXCR%dgsave ) THEN 
    58125812             CALL iom_put( "ZI_EXCR"  , ziexcr2d ) 
    5813              CALL wrk_dealloc( jpi, jpj,    ziexcr2d ) 
     5813             DEALLOCATE(    ziexcr2d ) 
    58145814          ENDIF 
    58155815          IF( med_diag%ZI_RESP%dgsave ) THEN 
    58165816             CALL iom_put( "ZI_RESP"  , ziresp2d ) 
    5817              CALL wrk_dealloc( jpi, jpj,   ziresp2d   ) 
     5817             DEALLOCATE(   ziresp2d   ) 
    58185818          ENDIF 
    58195819          IF( med_diag%ZI_GROW%dgsave ) THEN 
    58205820             CALL iom_put( "ZI_GROW"  , zigrow2d ) 
    5821              CALL wrk_dealloc( jpi, jpj,   zigrow2d   ) 
     5821             DEALLOCATE(   zigrow2d   ) 
    58225822          ENDIF 
    58235823          IF( med_diag%ZE_MES_N%dgsave ) THEN 
    58245824             CALL iom_put( "ZE_MES_N"  , zemesn2d ) 
    5825              CALL wrk_dealloc( jpi, jpj,    zemesn2d  ) 
     5825             DEALLOCATE(    zemesn2d  ) 
    58265826          ENDIF 
    58275827          IF( med_diag%ZE_MES_D%dgsave ) THEN 
    58285828             CALL iom_put( "ZE_MES_D"  , zemesd2d ) 
    5829              CALL wrk_dealloc( jpi, jpj,    zemesd2d  ) 
     5829             DEALLOCATE(    zemesd2d  ) 
    58305830          ENDIF 
    58315831          IF( med_diag%ZE_MES_C%dgsave ) THEN 
    58325832             CALL iom_put( "ZE_MES_C"  , zemesc2d ) 
    5833              CALL wrk_dealloc( jpi, jpj,   zemesc2d   ) 
     5833             DEALLOCATE(   zemesc2d   ) 
    58345834          ENDIF 
    58355835          IF( med_diag%ZE_MESDC%dgsave ) THEN 
    58365836             CALL iom_put( "ZE_MESDC"  , zemesdc2d ) 
    5837              CALL wrk_dealloc( jpi, jpj,   zemesdc2d   ) 
     5837             DEALLOCATE(   zemesdc2d   ) 
    58385838          ENDIF 
    58395839          IF( med_diag%ZE_EXCR%dgsave ) THEN 
    58405840             CALL iom_put( "ZE_EXCR"  , zeexcr2d ) 
    5841              CALL wrk_dealloc( jpi, jpj,   zeexcr2d   ) 
     5841             DEALLOCATE(   zeexcr2d   ) 
    58425842          ENDIF 
    58435843          IF( med_diag%ZE_RESP%dgsave ) THEN 
    58445844             CALL iom_put( "ZE_RESP"  , zeresp2d ) 
    5845              CALL wrk_dealloc( jpi, jpj,    zeresp2d  ) 
     5845             DEALLOCATE(    zeresp2d  ) 
    58465846          ENDIF 
    58475847          IF( med_diag%ZE_GROW%dgsave ) THEN 
    58485848             CALL iom_put( "ZE_GROW"  , zegrow2d ) 
    5849              CALL wrk_dealloc( jpi, jpj,   zegrow2d   ) 
     5849             DEALLOCATE(   zegrow2d   ) 
    58505850          ENDIF 
    58515851          IF( med_diag%MDETC%dgsave ) THEN 
    58525852             CALL iom_put( "MDETC"  , mdetc2d ) 
    5853              CALL wrk_dealloc( jpi, jpj,   mdetc2d   ) 
     5853             DEALLOCATE(   mdetc2d   ) 
    58545854          ENDIF 
    58555855          IF( med_diag%GMIDC%dgsave ) THEN 
    58565856             CALL iom_put( "GMIDC"  , gmidc2d ) 
    5857              CALL wrk_dealloc( jpi, jpj,    gmidc2d  ) 
     5857             DEALLOCATE(    gmidc2d  ) 
    58585858          ENDIF 
    58595859          IF( med_diag%GMEDC%dgsave ) THEN 
    58605860             CALL iom_put( "GMEDC"  , gmedc2d ) 
    5861              CALL wrk_dealloc( jpi, jpj,    gmedc2d  ) 
     5861             DEALLOCATE(    gmedc2d  ) 
    58625862          ENDIF 
    58635863          IF( med_diag%IBEN_N%dgsave ) THEN 
    58645864             CALL iom_put( "IBEN_N"  , iben_n2d ) 
    5865              CALL wrk_dealloc( jpi, jpj,    iben_n2d  ) 
     5865             DEALLOCATE(    iben_n2d  ) 
    58665866          ENDIF 
    58675867          IF( med_diag%IBEN_FE%dgsave ) THEN 
    58685868             CALL iom_put( "IBEN_FE"  , iben_fe2d ) 
    5869              CALL wrk_dealloc( jpi, jpj,   iben_fe2d   ) 
     5869             DEALLOCATE(   iben_fe2d   ) 
    58705870          ENDIF 
    58715871          IF( med_diag%IBEN_C%dgsave ) THEN 
    58725872             CALL iom_put( "IBEN_C"  , iben_c2d ) 
    5873              CALL wrk_dealloc( jpi, jpj,   iben_c2d   ) 
     5873             DEALLOCATE(   iben_c2d   ) 
    58745874          ENDIF 
    58755875          IF( med_diag%IBEN_SI%dgsave ) THEN 
    58765876             CALL iom_put( "IBEN_SI"  , iben_si2d ) 
    5877              CALL wrk_dealloc( jpi, jpj,   iben_si2d   ) 
     5877             DEALLOCATE(   iben_si2d   ) 
    58785878          ENDIF 
    58795879          IF( med_diag%IBEN_CA%dgsave ) THEN 
    58805880             CALL iom_put( "IBEN_CA"  , iben_ca2d ) 
    5881              CALL wrk_dealloc( jpi, jpj,   iben_ca2d   ) 
     5881             DEALLOCATE(   iben_ca2d   ) 
    58825882          ENDIF 
    58835883          IF( med_diag%OBEN_N%dgsave ) THEN 
    58845884             CALL iom_put( "OBEN_N"  , oben_n2d ) 
    5885              CALL wrk_dealloc( jpi, jpj,    oben_n2d  ) 
     5885             DEALLOCATE(    oben_n2d  ) 
    58865886          ENDIF 
    58875887          IF( med_diag%OBEN_FE%dgsave ) THEN 
    58885888             CALL iom_put( "OBEN_FE"  , oben_fe2d ) 
    5889              CALL wrk_dealloc( jpi, jpj,    oben_fe2d  ) 
     5889             DEALLOCATE(    oben_fe2d  ) 
    58905890          ENDIF 
    58915891          IF( med_diag%OBEN_C%dgsave ) THEN 
    58925892             CALL iom_put( "OBEN_C"  , oben_c2d ) 
    5893              CALL wrk_dealloc( jpi, jpj,    oben_c2d  ) 
     5893             DEALLOCATE(    oben_c2d  ) 
    58945894          ENDIF 
    58955895          IF( med_diag%OBEN_SI%dgsave ) THEN 
    58965896             CALL iom_put( "OBEN_SI"  , oben_si2d ) 
    5897              CALL wrk_dealloc( jpi, jpj,    oben_si2d  ) 
     5897             DEALLOCATE(    oben_si2d  ) 
    58985898          ENDIF 
    58995899          IF( med_diag%OBEN_CA%dgsave ) THEN 
    59005900             CALL iom_put( "OBEN_CA"  , oben_ca2d ) 
    5901              CALL wrk_dealloc( jpi, jpj, oben_ca2d     ) 
     5901             DEALLOCATE( oben_ca2d     ) 
    59025902          ENDIF 
    59035903          IF( med_diag%SFR_OCAL%dgsave ) THEN 
    59045904             CALL iom_put( "SFR_OCAL"  , sfr_ocal2d ) 
    5905              CALL wrk_dealloc( jpi, jpj,    sfr_ocal2d  ) 
     5905             DEALLOCATE(    sfr_ocal2d  ) 
    59065906          ENDIF 
    59075907          IF( med_diag%SFR_OARG%dgsave ) THEN 
    59085908             CALL iom_put( "SFR_OARG"  , sfr_oarg2d ) 
    5909              CALL wrk_dealloc( jpi, jpj,    sfr_oarg2d  ) 
     5909             DEALLOCATE(    sfr_oarg2d  ) 
    59105910          ENDIF 
    59115911          IF( med_diag%LYSO_CA%dgsave ) THEN 
    59125912             CALL iom_put( "LYSO_CA"  , lyso_ca2d ) 
    5913              CALL wrk_dealloc( jpi, jpj,    lyso_ca2d  ) 
     5913             DEALLOCATE(    lyso_ca2d  ) 
    59145914          ENDIF 
    59155915# endif                    
     
    59185918          IF( med_diag%TPP3%dgsave ) THEN 
    59195919             CALL iom_put( "TPP3"  , tpp3d ) 
    5920              CALL wrk_dealloc( jpi, jpj, jpk,   tpp3d  ) 
     5920             DEALLOCATE(   tpp3d  ) 
    59215921          ENDIF 
    59225922          IF( med_diag%DETFLUX3%dgsave ) THEN 
    59235923             CALL iom_put( "DETFLUX3"  , detflux3d ) 
    5924              CALL wrk_dealloc( jpi, jpj, jpk,    detflux3d ) 
     5924             DEALLOCATE(    detflux3d ) 
    59255925          ENDIF 
    59265926          IF( med_diag%REMIN3N%dgsave ) THEN 
    59275927             CALL iom_put( "REMIN3N"  , remin3dn ) 
    5928              CALL wrk_dealloc( jpi, jpj, jpk,   remin3dn  ) 
     5928             DEALLOCATE(   remin3dn  ) 
    59295929          ENDIF 
    59305930# if defined key_roam           
     
    59395939          IF( med_diag%INTDISSIC%dgsave ) THEN 
    59405940             CALL iom_put( "INTDISSIC"  , intdissic ) 
    5941              CALL wrk_dealloc( jpi, jpj, intdissic   ) 
     5941             DEALLOCATE( intdissic   ) 
    59425942          ENDIF           
    59435943          IF( med_diag%INTDISSIN%dgsave ) THEN 
    59445944             CALL iom_put( "INTDISSIN"  , intdissin ) 
    5945              CALL wrk_dealloc( jpi, jpj, intdissin   ) 
     5945             DEALLOCATE( intdissin   ) 
    59465946          ENDIF           
    59475947          IF( med_diag%INTDISSISI%dgsave ) THEN 
    59485948             CALL iom_put( "INTDISSISI"  , intdissisi ) 
    5949              CALL wrk_dealloc( jpi, jpj, intdissisi  ) 
     5949             DEALLOCATE( intdissisi  ) 
    59505950          ENDIF           
    59515951          IF( med_diag%INTTALK%dgsave ) THEN 
    59525952             CALL iom_put( "INTTALK"  , inttalk ) 
    5953              CALL wrk_dealloc( jpi, jpj, inttalk     ) 
     5953             DEALLOCATE( inttalk     ) 
    59545954          ENDIF           
    59555955          IF( med_diag%O2min%dgsave ) THEN 
    59565956             CALL iom_put( "O2min"  , o2min ) 
    5957              CALL wrk_dealloc( jpi, jpj, o2min       ) 
     5957             DEALLOCATE( o2min       ) 
    59585958          ENDIF           
    59595959          IF( med_diag%ZO2min%dgsave ) THEN 
    59605960             CALL iom_put( "ZO2min"  , zo2min ) 
    5961              CALL wrk_dealloc( jpi, jpj, zo2min      ) 
     5961             DEALLOCATE( zo2min      ) 
    59625962          ENDIF           
    59635963          IF( med_diag%FBDDTALK%dgsave ) THEN 
    59645964             CALL iom_put( "FBDDTALK"  , fbddtalk   ) 
    5965              CALL wrk_dealloc( jpi, jpj, fbddtalk   ) 
     5965             DEALLOCATE( fbddtalk   ) 
    59665966          ENDIF           
    59675967          IF( med_diag%FBDDTDIC%dgsave ) THEN 
    59685968             CALL iom_put( "FBDDTDIC"  , fbddtdic   ) 
    5969              CALL wrk_dealloc( jpi, jpj, fbddtdic   ) 
     5969             DEALLOCATE( fbddtdic   ) 
    59705970          ENDIF           
    59715971          IF( med_diag%FBDDTDIFE%dgsave ) THEN 
    59725972             CALL iom_put( "FBDDTDIFE" , fbddtdife  ) 
    5973              CALL wrk_dealloc( jpi, jpj, fbddtdife  ) 
     5973             DEALLOCATE( fbddtdife  ) 
    59745974          ENDIF           
    59755975          IF( med_diag%FBDDTDIN%dgsave ) THEN 
    59765976             CALL iom_put( "FBDDTDIN"  , fbddtdin   ) 
    5977              CALL wrk_dealloc( jpi, jpj, fbddtdin   ) 
     5977             DEALLOCATE( fbddtdin   ) 
    59785978          ENDIF           
    59795979          IF( med_diag%FBDDTDISI%dgsave ) THEN 
    59805980             CALL iom_put( "FBDDTDISI" , fbddtdisi  ) 
    5981              CALL wrk_dealloc( jpi, jpj, fbddtdisi  ) 
     5981             DEALLOCATE( fbddtdisi  ) 
    59825982          ENDIF     
    59835983          !! 
     
    59855985          IF( med_diag%TPPD3%dgsave ) THEN 
    59865986             CALL iom_put( "TPPD3"     , tppd3 ) 
    5987              CALL wrk_dealloc( jpi, jpj, jpk, tppd3      ) 
     5987             DEALLOCATE( tppd3      ) 
    59885988          ENDIF           
    59895989          IF( med_diag%BDDTALK3%dgsave ) THEN 
    59905990             CALL iom_put( "BDDTALK3"  , bddtalk3 ) 
    5991              CALL wrk_dealloc( jpi, jpj, jpk, bddtalk3   ) 
     5991             DEALLOCATE( bddtalk3   ) 
    59925992          ENDIF           
    59935993          IF( med_diag%BDDTDIC3%dgsave ) THEN 
    59945994             CALL iom_put( "BDDTDIC3"  , bddtdic3 ) 
    5995              CALL wrk_dealloc( jpi, jpj, jpk, bddtdic3   ) 
     5995             DEALLOCATE( bddtdic3   ) 
    59965996          ENDIF           
    59975997          IF( med_diag%BDDTDIFE3%dgsave ) THEN 
    59985998             CALL iom_put( "BDDTDIFE3" , bddtdife3 ) 
    5999              CALL wrk_dealloc( jpi, jpj, jpk, bddtdife3  ) 
     5999             DEALLOCATE( bddtdife3  ) 
    60006000          ENDIF           
    60016001          IF( med_diag%BDDTDIN3%dgsave ) THEN 
    60026002             CALL iom_put( "BDDTDIN3"  , bddtdin3 ) 
    6003              CALL wrk_dealloc( jpi, jpj, jpk, bddtdin3   ) 
     6003             DEALLOCATE( bddtdin3   ) 
    60046004          ENDIF           
    60056005          IF( med_diag%BDDTDISI3%dgsave ) THEN 
    60066006             CALL iom_put( "BDDTDISI3" , bddtdisi3 ) 
    6007              CALL wrk_dealloc( jpi, jpj, jpk, bddtdisi3  ) 
     6007             DEALLOCATE( bddtdisi3  ) 
    60086008          ENDIF     
    60096009          IF( med_diag%FD_NIT3%dgsave ) THEN 
    60106010             CALL iom_put( "FD_NIT3"  , fd_nit3 ) 
    6011              CALL wrk_dealloc( jpi, jpj, jpk,   fd_nit3  ) 
     6011             DEALLOCATE(   fd_nit3  ) 
    60126012          ENDIF 
    60136013          IF( med_diag%FD_SIL3%dgsave ) THEN 
    60146014             CALL iom_put( "FD_SIL3"  , fd_sil3 ) 
    6015              CALL wrk_dealloc( jpi, jpj, jpk,   fd_sil3  ) 
     6015             DEALLOCATE(   fd_sil3  ) 
    60166016          ENDIF 
    60176017          IF( med_diag%FD_CAL3%dgsave ) THEN 
    60186018             CALL iom_put( "FD_CAL3"  , fd_cal3 ) 
    6019              CALL wrk_dealloc( jpi, jpj, jpk,   fd_cal3  ) 
     6019             DEALLOCATE(   fd_cal3  ) 
    60206020          ENDIF 
    60216021          IF( med_diag%FD_CAR3%dgsave ) THEN 
    60226022             CALL iom_put( "FD_CAR3"  , fd_car3 ) 
    6023              CALL wrk_dealloc( jpi, jpj, jpk,   fd_car3  ) 
     6023             DEALLOCATE(   fd_car3  ) 
    60246024          ENDIF 
    60256025          IF( med_diag%CO33%dgsave ) THEN 
     
    60346034          IF( med_diag%EXPC3%dgsave ) THEN 
    60356035             CALL iom_put( "EXPC3"  , expc3 ) 
    6036              CALL wrk_dealloc( jpi, jpj, jpk, expc3  ) 
     6036             DEALLOCATE( expc3  ) 
    60376037          ENDIF                     
    60386038          IF( med_diag%EXPN3%dgsave ) THEN 
    60396039             CALL iom_put( "EXPN3"  , expn3 ) 
    6040              CALL wrk_dealloc( jpi, jpj, jpk, expn3  ) 
     6040             DEALLOCATE( expn3  ) 
    60416041          ENDIF                     
    60426042          IF( med_diag%DCALC3%dgsave ) THEN 
    60436043             CALL iom_put( "DCALC3"  , dcalc3 ) 
    6044              CALL wrk_dealloc( jpi, jpj, jpk, dcalc3  ) 
     6044             DEALLOCATE( dcalc3  ) 
    60456045          ENDIF                     
    60466046          IF( med_diag%FEDISS3%dgsave ) THEN 
    60476047             CALL iom_put( "FEDISS3"  , fediss3 ) 
    6048              CALL wrk_dealloc( jpi, jpj, jpk, fediss3  ) 
     6048             DEALLOCATE( fediss3  ) 
    60496049          ENDIF                     
    60506050          IF( med_diag%FESCAV3%dgsave ) THEN 
    60516051             CALL iom_put( "FESCAV3"  , fescav3 ) 
    6052              CALL wrk_dealloc( jpi, jpj, jpk, fescav3  ) 
     6052             DEALLOCATE( fescav3  ) 
    60536053          ENDIF                     
    60546054          IF( med_diag%MIGRAZP3%dgsave ) THEN 
    60556055             CALL iom_put( "MIGRAZP3"  , migrazp3 ) 
    6056              CALL wrk_dealloc( jpi, jpj, jpk, migrazp3  ) 
     6056             DEALLOCATE( migrazp3  ) 
    60576057          ENDIF                     
    60586058          IF( med_diag%MIGRAZD3%dgsave ) THEN 
    60596059             CALL iom_put( "MIGRAZD3"  , migrazd3 ) 
    6060              CALL wrk_dealloc( jpi, jpj, jpk, migrazd3  ) 
     6060             DEALLOCATE( migrazd3  ) 
    60616061          ENDIF                     
    60626062          IF( med_diag%MEGRAZP3%dgsave ) THEN 
    60636063             CALL iom_put( "MEGRAZP3"  , megrazp3 ) 
    6064              CALL wrk_dealloc( jpi, jpj, jpk, megrazp3  ) 
     6064             DEALLOCATE( megrazp3  ) 
    60656065          ENDIF                     
    60666066          IF( med_diag%MEGRAZD3%dgsave ) THEN 
    60676067             CALL iom_put( "MEGRAZD3"  , megrazd3 ) 
    6068              CALL wrk_dealloc( jpi, jpj, jpk, megrazd3  ) 
     6068             DEALLOCATE( megrazd3  ) 
    60696069          ENDIF                     
    60706070          IF( med_diag%MEGRAZZ3%dgsave ) THEN 
    60716071             CALL iom_put( "MEGRAZZ3"  , megrazz3 ) 
    6072              CALL wrk_dealloc( jpi, jpj, jpk, megrazz3  ) 
     6072             DEALLOCATE( megrazz3  ) 
    60736073          ENDIF                     
    60746074          IF( med_diag%O2SAT3%dgsave ) THEN 
    60756075             CALL iom_put( "O2SAT3"  , o2sat3 ) 
    6076              CALL wrk_dealloc( jpi, jpj, jpk, o2sat3 ) 
     6076             DEALLOCATE( o2sat3 ) 
    60776077          ENDIF                     
    60786078          IF( med_diag%PBSI3%dgsave ) THEN 
    60796079             CALL iom_put( "PBSI3"  , pbsi3 ) 
    6080              CALL wrk_dealloc( jpi, jpj, jpk, pbsi3  ) 
     6080             DEALLOCATE( pbsi3  ) 
    60816081          ENDIF                     
    60826082          IF( med_diag%PCAL3%dgsave ) THEN 
    60836083             CALL iom_put( "PCAL3"  , pcal3 ) 
    6084              CALL wrk_dealloc( jpi, jpj, jpk, pcal3  ) 
     6084             DEALLOCATE( pcal3  ) 
    60856085          ENDIF                     
    60866086          IF( med_diag%REMOC3%dgsave ) THEN 
    60876087             CALL iom_put( "REMOC3"  , remoc3 ) 
    6088              CALL wrk_dealloc( jpi, jpj, jpk, remoc3 ) 
     6088             DEALLOCATE( remoc3 ) 
    60896089          ENDIF                     
    60906090          IF( med_diag%PNLIMJ3%dgsave ) THEN 
    60916091             CALL iom_put( "PNLIMJ3" , pnlimj3 ) 
    6092              CALL wrk_dealloc( jpi, jpj, jpk, pnlimj3  ) 
     6092             DEALLOCATE( pnlimj3  ) 
    60936093          ENDIF                     
    60946094          IF( med_diag%PNLIMN3%dgsave ) THEN 
    60956095             CALL iom_put( "PNLIMN3" , pnlimn3 ) 
    6096              CALL wrk_dealloc( jpi, jpj, jpk, pnlimn3  ) 
     6096             DEALLOCATE( pnlimn3  ) 
    60976097          ENDIF                     
    60986098          IF( med_diag%PNLIMFE3%dgsave ) THEN 
    60996099             CALL iom_put( "PNLIMFE3" , pnlimfe3 ) 
    6100              CALL wrk_dealloc( jpi, jpj, jpk, pnlimfe3 ) 
     6100             DEALLOCATE( pnlimfe3 ) 
    61016101          ENDIF                     
    61026102          IF( med_diag%PDLIMJ3%dgsave ) THEN 
    61036103             CALL iom_put( "PDLIMJ3" , pdlimj3 ) 
    6104              CALL wrk_dealloc( jpi, jpj, jpk, pdlimj3  ) 
     6104             DEALLOCATE( pdlimj3  ) 
    61056105          ENDIF                     
    61066106          IF( med_diag%PDLIMN3%dgsave ) THEN 
    61076107             CALL iom_put( "PDLIMN3" , pdlimn3 ) 
    6108              CALL wrk_dealloc( jpi, jpj, jpk, pdlimn3  ) 
     6108             DEALLOCATE( pdlimn3  ) 
    61096109          ENDIF                     
    61106110          IF( med_diag%PDLIMFE3%dgsave ) THEN 
    61116111             CALL iom_put( "PDLIMFE3" , pdlimfe3 ) 
    6112              CALL wrk_dealloc( jpi, jpj, jpk, pdlimfe3 ) 
     6112             DEALLOCATE( pdlimfe3 ) 
    61136113          ENDIF                     
    61146114          IF( med_diag%PDLIMSI3%dgsave ) THEN 
    61156115             CALL iom_put( "PDLIMSI3" , pdlimsi3 ) 
    6116              CALL wrk_dealloc( jpi, jpj, jpk, pdlimsi3 ) 
     6116             DEALLOCATE( pdlimsi3 ) 
    61176117          ENDIF                     
    61186118           
    61196119# endif          
    61206120 
    6121           CALL wrk_dealloc( jpi, jpj,   zw2d   ) 
     6121          DEALLOCATE(   zw2d   ) 
    61226122 
    61236123       ENDIF                    ! end of ln_diatrc option 
Note: See TracChangeset for help on using the changeset viewer.