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

Changeset 7571


Ignore:
Timestamp:
2017-01-17T11:33:49+01:00 (7 years ago)
Author:
frrh
Message:

Commit first phase of changes - these work OK in a UKESM vn0.5
suite employing the GO6 package branch at:

branches/UKMO/dev_r5518_GO6_package@7206

Location:
branches/UKMO/dev_r5518_MEDUSA_optim_MG_MS_RH/NEMOGCM/NEMO
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_MEDUSA_optim_MG_MS_RH/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90

    r7570 r7571  
    9393      !                                                         ! =-1 not cyclic 
    9494      LOGICAL                                 ::   cyclic       ! east-west cyclic or not 
    95       INTEGER,  DIMENSION(:,:,:), POINTER    ::   data_jpi     ! array of source integers 
    96       INTEGER,  DIMENSION(:,:,:), POINTER    ::   data_jpj     ! array of source integers 
    97       REAL(wp), DIMENSION(:,:,:), POINTER    ::   data_wgt     ! array of weights on model grid 
    98       REAL(wp), DIMENSION(:,:,:), POINTER    ::   fly_dta      ! array of values on input grid 
    99       REAL(wp), DIMENSION(:,:,:), POINTER    ::   col          ! temporary array for reading in columns 
     95      INTEGER,  DIMENSION(:,:,:), ALLOCATABLE ::   data_jpi     ! array of source integers 
     96      INTEGER,  DIMENSION(:,:,:), ALLOCATABLE ::   data_jpj     ! array of source integers 
     97      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   data_wgt     ! array of weights on model grid 
     98      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   fly_dta      ! array of values on input grid 
     99      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   col          ! temporary array for reading in columns 
    100100   END TYPE WGT 
    101101 
     
    688688      REAL(wp), POINTER, DIMENSION(:,:,:)     ::   dta_read  ! work space for global data 
    689689      !!--------------------------------------------------------------------- 
    690              
     690 
    691691      ipi = SIZE( dta, 1 ) 
    692692      ipj = 1 
     
    745745      INTEGER                           ::   ill          ! character length 
    746746      INTEGER                           ::   iv           ! indice of V component 
    747       REAL(wp), POINTER, DIMENSION(:,:) ::   utmp, vtmp   ! temporary arrays for vector rotation 
     747      REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::   utmp, vtmp   ! temporary arrays for vector rotation 
    748748      CHARACTER (LEN=100)               ::   clcomp       ! dummy weight name 
    749749      !!--------------------------------------------------------------------- 
    750750 
    751       CALL wrk_alloc( jpi,jpj, utmp, vtmp ) 
     751      ALLOCATE( utmp (1:jpi, 1:jpj) ) 
     752      ALLOCATE( vtmp (1:jpi, 1:jpj) ) 
    752753 
    753754      !! (sga: following code should be modified so that pairs arent searched for each time 
     
    786787       END DO 
    787788      ! 
    788       CALL wrk_dealloc( jpi,jpj, utmp, vtmp ) 
     789      DEALLOCATE (utmp, vtmp) 
    789790      ! 
    790791   END SUBROUTINE fld_rot 
     
    935936         END DO 
    936937      ENDIF 
    937        
     938 
    938939   END SUBROUTINE fld_fill 
    939940 
     
    10051006            WRITE(numout,*) '       not cyclical' 
    10061007         ENDIF 
    1007          IF( ASSOCIATED(ref_wgts(kw)%data_wgt) )  WRITE(numout,*) '       allocated' 
     1008         IF( ALLOCATED(ref_wgts(kw)%data_wgt) )  WRITE(numout,*) '       allocated' 
    10081009      END DO 
    10091010      ! 
     
    10261027      CHARACTER (len=5)                 ::   aname 
    10271028      INTEGER , DIMENSION(:), ALLOCATABLE ::   ddims 
    1028       INTEGER , POINTER, DIMENSION(:,:) ::   data_src 
    1029       REAL(wp), POINTER, DIMENSION(:,:) ::   data_tmp 
     1029      INTEGER , ALLOCATABLE, DIMENSION(:,:) ::   data_src 
     1030      REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::   data_tmp 
    10301031      LOGICAL                           ::   cyclical 
    10311032      INTEGER                           ::   zwrap      ! local integer 
    10321033      !!---------------------------------------------------------------------- 
    10331034      ! 
    1034       CALL wrk_alloc( jpi,jpj, data_src )   ! integer 
    1035       CALL wrk_alloc( jpi,jpj, data_tmp ) 
     1035      ALLOCATE(data_src(1:jpi, 1:jpj)) 
     1036      ALLOCATE(data_tmp(1:jpi, 1:jpj)) 
     1037 
    10361038      ! 
    10371039      IF( nxt_wgt > tot_wgts ) THEN 
     
    11521154      DEALLOCATE (ddims ) 
    11531155 
    1154       CALL wrk_dealloc( jpi,jpj, data_src )   ! integer 
    1155       CALL wrk_dealloc( jpi,jpj, data_tmp ) 
     1156      DEALLOCATE( data_src )   ! integer 
     1157      DEALLOCATE( data_tmp ) 
    11561158      ! 
    11571159   END SUBROUTINE fld_weight 
     
    12941296      INTEGER                                   ::   jpi1_lsm,jpi2_lsm,jpj1_lsm,jpj2_lsm   ! temporary indices 
    12951297      INTEGER                                   ::   itmpi,itmpj,itmpz                     ! lengths 
    1296        
     1298 
    12971299      !!---------------------------------------------------------------------- 
    12981300      ! 
  • branches/UKMO/dev_r5518_MEDUSA_optim_MG_MS_RH/NEMOGCM/NEMO/OPA_SRC/SOL/solpcg.F90

    r7570 r7571  
    9393      REAL(wp) ::   zgcad        ! temporary scalars 
    9494      REAL(wp), DIMENSION(2) ::   zsum 
    95       REAL(wp), POINTER, DIMENSION(:,:) ::   zgcr 
     95      REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::   zgcr 
    9696      !!---------------------------------------------------------------------- 
    9797      ! 
    9898      IF( nn_timing == 1 )  CALL timing_start('sol_pcg') 
    9999      ! 
    100       CALL wrk_alloc( jpi, jpj, zgcr ) 
     100      ALLOCATE( zgcr(jpi,jpj) ) 
    101101      ! 
    102102      ! Initialization of the algorithm with standard PCG 
     
    210210      CALL lbc_lnk( gcx, c_solver_pt, 1. )      ! Output in gcx with lateral b.c. applied 
    211211      !  
    212       CALL wrk_dealloc( jpi, jpj, zgcr ) 
     212      DEALLOCATE ( zgcr ) 
    213213      ! 
    214214      IF( nn_timing == 1 )  CALL timing_stop('sol_pcg') 
  • branches/UKMO/dev_r5518_MEDUSA_optim_MG_MS_RH/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl.F90

    r7570 r7571  
    8282      REAL(wp) ::   zv, z0v, zzwy, z0w        !   -      - 
    8383      REAL(wp) ::   ztra, zbtr, zdt, zalpha   !   -      - 
    84       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zslpx, zslpy   ! 3D workspace 
    85       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zwx  , zwy     ! -      -  
     84      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   zslpx, zslpy   ! 3D workspace 
     85      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   zwx  , zwy     ! -      -  
     86 
    8687      !!---------------------------------------------------------------------- 
    8788      ! 
    8889      IF( nn_timing == 1 )  CALL timing_start('tra_adv_muscl') 
    8990      ! 
    90       CALL wrk_alloc( jpi, jpj, jpk, zslpx, zslpy, zwx, zwy ) 
     91      ALLOCATE( zslpx(1:jpi, 1:jpj, 1:jpk) ) 
     92      ALLOCATE( zslpy(1:jpi, 1:jpj, 1:jpk) ) 
     93      ALLOCATE( zwx  (1:jpi, 1:jpj, 1:jpk) ) 
     94      ALLOCATE( zwy  (1:jpi, 1:jpj, 1:jpk) ) 
    9195      ! 
    9296      IF( kt == kit000 )  THEN 
     
    291295      END DO 
    292296      ! 
    293       CALL wrk_dealloc( jpi, jpj, jpk, zslpx, zslpy, zwx, zwy ) 
     297      DEALLOCATE( zslpx ) 
     298      DEALLOCATE( zslpy ) 
     299      DEALLOCATE( zwx   ) 
     300      DEALLOCATE( zwy   ) 
    294301      ! 
    295302      IF( nn_timing == 1 )  CALL timing_stop('tra_adv_muscl') 
  • branches/UKMO/dev_r5518_MEDUSA_optim_MG_MS_RH/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90

    r7570 r7571  
    107107      INTEGER, INTENT( in ) ::   kt   ! ocean time-step 
    108108      ! 
    109       REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdt, ztrds 
     109      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::  ztrdt, ztrds 
    110110      !!---------------------------------------------------------------------- 
    111111      ! 
     
    113113      ! 
    114114      IF( l_trdtra )   THEN                         !* Save ta and sa trends 
    115          CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 
     115         ALLOCATE( ztrdt (1:jpi, 1:jpj, 1:jpk)) 
     116         ALLOCATE( ztrds (1:jpi, 1:jpj, 1:jpk)) 
    116117         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    117118         ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
     
    151152         CALL trd_tra( kt, 'TRA', jp_tem, jptra_bbl, ztrdt ) 
    152153         CALL trd_tra( kt, 'TRA', jp_sal, jptra_bbl, ztrds ) 
    153          CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds ) 
     154         DEALLOCATE( ztrdt, ztrds ) 
    154155      ENDIF 
    155156      ! 
     
    187188      INTEGER  ::   ik           ! local integers 
    188189      REAL(wp) ::   zbtr         ! local scalars 
    189       REAL(wp), POINTER, DIMENSION(:,:) :: zptb 
     190      REAL(wp), ALLOCATABLE , DIMENSION(:,:) :: zptb 
    190191      !!---------------------------------------------------------------------- 
    191192      ! 
    192193      IF( nn_timing == 1 )  CALL timing_start('tra_bbl_dif') 
    193194      ! 
    194       CALL wrk_alloc( jpi, jpj, zptb ) 
     195      ALLOCATE(zptb(1:jpi, 1:jpj)) 
    195196      ! 
    196197      DO jn = 1, kjpt                                     ! tracer loop 
     
    217218      END DO                                                ! end tracer 
    218219      !                                                     ! =========== 
    219       CALL wrk_dealloc( jpi, jpj, zptb ) 
     220      DEALLOCATE( zptb ) 
    220221      ! 
    221222      IF( nn_timing == 1 )  CALL timing_stop('tra_bbl_dif') 
  • branches/UKMO/dev_r5518_MEDUSA_optim_MG_MS_RH/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90

    r7497 r7571  
    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(jpi, jpj) ) 
    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) 
    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) 
    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) 
    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) 
    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) 
    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) 
    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) 
    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) 
    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) 
    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 
  • branches/UKMO/dev_r5518_MEDUSA_optim_MG_MS_RH/NEMOGCM/NEMO/TOP_SRC/TRP/trcbbl.F90

    r7570 r7571  
    5353      INTEGER, INTENT( in ) ::   kt   ! ocean time-step  
    5454      CHARACTER (len=22) :: charout 
    55       REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   ztrtrd 
     55      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::   ztrtrd 
    5656      !!---------------------------------------------------------------------- 
    5757      ! 
     
    6464 
    6565      IF( l_trdtrc )  THEN 
    66          CALL wrk_alloc( jpi, jpj, jpk, jptra, ztrtrd ) ! temporary save of trends 
     66         ALLOCATE( ztrtrd (1:jpi, 1:jpj, 1:jpk, 1:jptra) ) 
    6767         ztrtrd(:,:,:,:)  = tra(:,:,:,:) 
    6868      ENDIF 
     
    9595           CALL trd_tra( kt, 'TRC', jn, jptra_bbl, ztrtrd(:,:,:,jn) ) 
    9696        END DO 
    97         CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrtrd ) ! temporary save of trends 
     97        DEALLOCATE( ztrtrd ) ! temporary save of trends 
    9898      ENDIF 
    9999      ! 
  • branches/UKMO/dev_r5518_MEDUSA_optim_MG_MS_RH/NEMOGCM/NEMO/TOP_SRC/TRP/trcldf.F90

    r7570 r7571  
    5858      INTEGER            :: jn 
    5959      CHARACTER (len=22) :: charout 
    60       REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   ztrtrd 
     60      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::   ztrtrd 
    6161      !!---------------------------------------------------------------------- 
    6262      ! 
     
    6868 
    6969      IF( l_trdtrc )  THEN 
    70          CALL wrk_alloc( jpi, jpj, jpk, jptra, ztrtrd ) 
     70         ALLOCATE( ztrtrd(1:jpi, 1:jpj, 1:jpk, 1:jptra)) 
    7171         ztrtrd(:,:,:,:)  = tra(:,:,:,:) 
    7272      ENDIF 
     
    107107           CALL trd_tra( kt, 'TRC', jn, jptra_ldf, ztrtrd(:,:,:,jn) ) 
    108108        END DO 
    109         CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrtrd ) 
     109        DEALLOCATE( ztrtrd ) 
    110110      ENDIF 
    111111      !                                          ! print mean trends (used for debugging) 
Note: See TracChangeset for help on using the changeset viewer.