Changeset 8076


Ignore:
Timestamp:
2017-05-26T10:17:21+02:00 (3 years ago)
Author:
marc
Message:

Removed wrk_alloc and wrk_dealloc from bio_medusa_* routines

Location:
branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA
Files:
6 edited

Legend:

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

    r8023 r8076  
    4848                                   zn_co2_flx, zn_dms_srf 
    4949      USE trc,               ONLY: med_diag 
    50       USE wrk_nemo,          ONLY: wrk_dealloc 
    5150 
    5251      !! The vertical level 
     
    8584         IF( med_diag%ATM_PCO2%dgsave ) THEN 
    8685            CALL iom_put( "ATM_PCO2"  , f_pco2a2d ) 
    87             CALL wrk_dealloc( jpi, jpj,    f_pco2a2d ) 
     86            DEALLOCATE( f_pco2a2d ) 
    8887         ENDIF 
    8988         IF( med_diag%OCN_PH%dgsave ) THEN 
     
    9392         IF( med_diag%OCN_PCO2%dgsave ) THEN 
    9493            CALL iom_put( "OCN_PCO2"  , f_pco2w2d ) 
    95             CALL wrk_dealloc( jpi, jpj,   f_pco2w2d  ) 
     94            DEALLOCATE( f_pco2w2d ) 
    9695         ENDIF 
    9796         IF( med_diag%OCNH2CO3%dgsave ) THEN 
     
    109108         IF( med_diag%CO2FLUX%dgsave ) THEN 
    110109            CALL iom_put( "CO2FLUX"  , f_co2flux2d ) 
    111             CALL wrk_dealloc( jpi, jpj,   f_co2flux2d  ) 
     110            DEALLOCATE( f_co2flux2d ) 
    112111         ENDIF 
    113112         !!  
     
    128127            CO2Flux_out_cpl = zn_co2_flx 
    129128         ENDIF 
    130          CALL wrk_dealloc( jpi, jpj,   fgco2  ) 
     129         DEALLOCATE( fgco2 ) 
    131130         !! --- 
    132131         IF( med_diag%OM_CAL%dgsave ) THEN 
     
    138137         IF( med_diag%TCO2%dgsave ) THEN 
    139138            CALL iom_put( "TCO2"  , f_TDIC2d ) 
    140             CALL wrk_dealloc( jpi, jpj,   f_TDIC2d  ) 
     139            DEALLOCATE( f_TDIC2d ) 
    141140         ENDIF 
    142141         IF( med_diag%TALK%dgsave ) THEN 
    143142            CALL iom_put( "TALK"  , f_TALK2d ) 
    144             CALL wrk_dealloc( jpi, jpj,    f_TALK2d ) 
     143            DEALLOCATE( f_TALK2d ) 
    145144         ENDIF 
    146145         IF( med_diag%KW660%dgsave ) THEN 
    147146            CALL iom_put( "KW660"  , f_kw6602d ) 
    148             CALL wrk_dealloc( jpi, jpj,   f_kw6602d  ) 
     147            DEALLOCATE( f_kw6602d ) 
    149148         ENDIF 
    150149         IF( med_diag%ATM_PP0%dgsave ) THEN 
    151150            CALL iom_put( "ATM_PP0"  , f_pp02d ) 
    152             CALL wrk_dealloc( jpi, jpj,    f_pp02d ) 
     151            DEALLOCATE( f_pp02d ) 
    153152         ENDIF 
    154153         IF( med_diag%O2FLUX%dgsave ) THEN 
    155154            CALL iom_put( "O2FLUX"  , f_o2flux2d ) 
    156             CALL wrk_dealloc( jpi, jpj,   f_o2flux2d  ) 
     155            DEALLOCATE( f_o2flux2d ) 
    157156         ENDIF 
    158157         IF( med_diag%O2SAT%dgsave ) THEN 
    159158            CALL iom_put( "O2SAT"  , f_o2sat2d ) 
    160             CALL wrk_dealloc( jpi, jpj,  f_o2sat2d    ) 
     159            DEALLOCATE( f_o2sat2d ) 
    161160         ENDIF 
    162161         IF( med_diag%CAL_CCD%dgsave ) THEN 
     
    175174                  DMS_out_cpl = zn_dms_srf 
    176175               ENDIF 
    177                CALL wrk_dealloc( jpi, jpj,   dms_surf2d  )  
     176               DEALLOCATE( dms_surf2d )  
    178177            ENDIF 
    179178            IF( med_diag%DMS_ANDR%dgsave ) THEN 
    180179               CALL iom_put( "DMS_ANDR"  , dms_andr2d ) 
    181                CALL wrk_dealloc( jpi, jpj,   dms_andr2d  ) 
     180               DEALLOCATE( dms_andr2d ) 
    182181            ENDIF 
    183182            IF( med_diag%DMS_SIMO%dgsave ) THEN 
    184183               CALL iom_put( "DMS_SIMO"  , dms_simo2d ) 
    185                CALL wrk_dealloc( jpi, jpj,    dms_simo2d ) 
     184               DEALLOCATE( dms_simo2d ) 
    186185            ENDIF 
    187186            IF( med_diag%DMS_ARAN%dgsave ) THEN 
    188187               CALL iom_put( "DMS_ARAN"  , dms_aran2d ) 
    189                CALL wrk_dealloc( jpi, jpj,   dms_aran2d  ) 
     188               DEALLOCATE( dms_aran2d ) 
    190189            ENDIF 
    191190            IF( med_diag%DMS_HALL%dgsave ) THEN 
    192191               CALL iom_put( "DMS_HALL"  , dms_hall2d ) 
    193                CALL wrk_dealloc( jpi, jpj,   dms_hall2d  ) 
     192               DEALLOCATE( dms_hall2d ) 
    194193            ENDIF 
    195194         ENDIF 
     
    197196         IF( med_diag%ATM_XCO2%dgsave ) THEN 
    198197            CALL iom_put( "ATM_XCO2"  ,   f_xco2a_2d      ) 
    199             CALL wrk_dealloc( jpi, jpj,   f_xco2a_2d      ) 
     198            DEALLOCATE( f_xco2a_2d ) 
    200199         ENDIF 
    201200         IF( med_diag%OCN_FCO2%dgsave ) THEN 
    202201            CALL iom_put( "OCN_FCO2"  ,   f_fco2w_2d      ) 
    203             CALL wrk_dealloc( jpi, jpj,   f_fco2w_2d      ) 
     202            DEALLOCATE( f_fco2w_2d ) 
    204203         ENDIF 
    205204         IF( med_diag%ATM_FCO2%dgsave ) THEN 
    206205            CALL iom_put( "ATM_FCO2"  ,   f_fco2a_2d      ) 
    207             CALL wrk_dealloc( jpi, jpj,   f_fco2a_2d      ) 
     206            DEALLOCATE( f_fco2a_2d ) 
    208207         ENDIF 
    209208         IF( med_diag%OCN_RHOSW%dgsave ) THEN 
    210209            CALL iom_put( "OCN_RHOSW"  ,  f_ocnrhosw_2d   ) 
    211             CALL wrk_dealloc( jpi, jpj,   f_ocnrhosw_2d  ) 
     210            DEALLOCATE( f_ocnrhosw_2d ) 
    212211         ENDIF 
    213212         IF( med_diag%OCN_SCHCO2%dgsave ) THEN 
    214213            CALL iom_put( "OCN_SCHCO2"  , f_ocnschco2_2d  ) 
    215             CALL wrk_dealloc( jpi, jpj,   f_ocnschco2_2d ) 
     214            DEALLOCATE( f_ocnschco2_2d ) 
    216215         ENDIF 
    217216         IF( med_diag%OCN_KWCO2%dgsave ) THEN 
    218217            CALL iom_put( "OCN_KWCO2"  ,  f_ocnkwco2_2d   ) 
    219             CALL wrk_dealloc( jpi, jpj,   f_ocnkwco2_2d  ) 
     218            DEALLOCATE( f_ocnkwco2_2d ) 
    220219         ENDIF 
    221220         IF( med_diag%OCN_K0%dgsave ) THEN 
    222221            CALL iom_put( "OCN_K0"  ,     f_ocnk0_2d      ) 
    223             CALL wrk_dealloc( jpi, jpj,   f_ocnk0_2d      ) 
     222            DEALLOCATE( f_ocnk0_2d ) 
    224223         ENDIF 
    225224         IF( med_diag%CO2STARAIR%dgsave ) THEN 
    226225            CALL iom_put( "CO2STARAIR"  , f_co2starair_2d ) 
    227             CALL wrk_dealloc( jpi, jpj,  f_co2starair_2d ) 
     226            DEALLOCATE( f_co2starair_2d ) 
    228227         ENDIF 
    229228         IF( med_diag%OCN_DPCO2%dgsave ) THEN 
    230229            CALL iom_put( "OCN_DPCO2"  ,  f_ocndpco2_2d   ) 
    231             CALL wrk_dealloc( jpi, jpj,   f_ocndpco2_2d  ) 
     230            DEALLOCATE( f_ocndpco2_2d ) 
    232231         ENDIF 
    233232# endif                      
     
    386385         IF( med_diag%RR_1000%dgsave ) THEN 
    387386            CALL iom_put( "RR_1000"  , ffastca2d ) 
    388             CALL wrk_dealloc( jpi, jpj,  ffastca2d    ) 
     387            DEALLOCATE( ffastca2d ) 
    389388         ENDIF 
    390389         IF( med_diag%SDC_1000%dgsave ) THEN 
  • branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_fin.F90

    r8023 r8076  
    5555                                   trbio, trc2d, trc3d 
    5656      USE trcnam_trp,        ONLY: ln_trcadv_cen2, ln_trcadv_tvd 
    57       USE wrk_nemo,          ONLY: wrk_dealloc 
    5857  
    5958      !! time (integer timestep) 
     
    467466         IF ( med_diag%PN_JLIM%dgsave ) THEN 
    468467            CALL iom_put( "PN_JLIM"  , fjln2d ) 
    469             CALL wrk_dealloc( jpi, jpj,   fjln2d  ) 
     468            DEALLOCATE( fjln2d ) 
    470469         ENDIF 
    471470         IF ( med_diag%PN_NLIM%dgsave ) THEN 
    472471            CALL iom_put( "PN_NLIM"  , fnln2d ) 
    473             CALL wrk_dealloc( jpi, jpj,   fnln2d  ) 
     472            DEALLOCATE( fnln2d ) 
    474473         ENDIF 
    475474         IF ( med_diag%PN_FELIM%dgsave ) THEN 
    476475            CALL iom_put( "PN_FELIM"  , ffln2d ) 
    477             CALL wrk_dealloc( jpi, jpj,   ffln2d  ) 
     476            DEALLOCATE( ffln2d ) 
    478477         ENDIF 
    479478         IF ( med_diag%PD_JLIM%dgsave ) THEN 
    480479            CALL iom_put( "PD_JLIM"  , fjld2d ) 
    481             CALL wrk_dealloc( jpi, jpj,  fjld2d    ) 
     480            DEALLOCATE( fjld2d ) 
    482481         ENDIF 
    483482         IF ( med_diag%PD_NLIM%dgsave ) THEN 
    484483            CALL iom_put( "PD_NLIM"  , fnld2d ) 
    485             CALL wrk_dealloc( jpi, jpj,   fnld2d ) 
     484            DEALLOCATE( fnld2d ) 
    486485         ENDIF 
    487486         IF ( med_diag%PD_FELIM%dgsave ) THEN 
    488487            CALL iom_put( "PD_FELIM"  , ffld2d ) 
    489             CALL wrk_dealloc( jpi, jpj,  ffld2d    ) 
     488            DEALLOCATE( ffld2d ) 
    490489         ENDIF 
    491490         IF ( med_diag%PD_SILIM%dgsave ) THEN 
    492491            CALL iom_put( "PD_SILIM"  , fsld2d2 ) 
    493             CALL wrk_dealloc( jpi, jpj,   fsld2d2  ) 
     492            DEALLOCATE( fsld2d2 ) 
    494493         ENDIF 
    495494         IF ( med_diag%PDSILIM2%dgsave ) THEN 
    496495            CALL iom_put( "PDSILIM2"  , fsld2d ) 
    497             CALL wrk_dealloc( jpi, jpj,   fsld2d  ) 
     496            DEALLOCATE( fsld2d ) 
    498497         ENDIF 
    499498         IF ( med_diag%INTFLX_N%dgsave ) THEN 
     
    582581         IF ( med_diag%PRN%dgsave ) THEN 
    583582            CALL iom_put( "PRN"  , fprn2d ) 
    584             CALL wrk_dealloc( jpi, jpj,   fprn2d  ) 
     583            DEALLOCATE( fprn2d ) 
    585584         ENDIF 
    586585         IF ( med_diag%MPN%dgsave ) THEN 
    587             CALL iom_put( "MPN"  ,fdpn2d  ) 
    588             CALL wrk_dealloc( jpi, jpj,    fdpn2d ) 
     586            CALL iom_put( "MPN"  ,fdpn2d ) 
     587            DEALLOCATE( fdpn2d ) 
    589588         ENDIF 
    590589         IF ( med_diag%PRD%dgsave ) THEN 
    591             CALL iom_put( "PRD"  ,fprd2d  ) 
    592             CALL wrk_dealloc( jpi, jpj,   fprd2d ) 
     590            CALL iom_put( "PRD"  ,fprd2d ) 
     591            DEALLOCATE( fprd2d ) 
    593592         ENDIF 
    594593         IF( med_diag%MPD%dgsave ) THEN 
    595594            CALL iom_put( "MPD"  , fdpd2d ) 
    596             CALL wrk_dealloc( jpi, jpj,    fdpd2d ) 
     595            DEALLOCATE( fdpd2d ) 
    597596         ENDIF 
    598597         !  IF( med_diag%DSED%dgsave ) THEN 
     
    601600         IF( med_diag%OPAL%dgsave ) THEN 
    602601            CALL iom_put( "OPAL"  , fprds2d ) 
    603             CALL wrk_dealloc( jpi, jpj,   fprds2d ) 
     602            DEALLOCATE( fprds2d ) 
    604603         ENDIF 
    605604         IF( med_diag%OPALDISS%dgsave ) THEN 
    606605            CALL iom_put( "OPALDISS"  , fsdiss2d ) 
    607             CALL wrk_dealloc( jpi, jpj,   fsdiss2d ) 
     606            DEALLOCATE( fsdiss2d ) 
    608607         ENDIF 
    609608         IF( med_diag%GMIPn%dgsave ) THEN 
    610609            CALL iom_put( "GMIPn"  , fgmipn2d ) 
    611             CALL wrk_dealloc( jpi, jpj,   fgmipn2d ) 
     610            DEALLOCATE( fgmipn2d ) 
    612611         ENDIF 
    613612         IF( med_diag%GMID%dgsave ) THEN 
    614613            CALL iom_put( "GMID"  , fgmid2d ) 
    615             CALL wrk_dealloc( jpi, jpj,  fgmid2d ) 
     614            DEALLOCATE( fgmid2d ) 
    616615         ENDIF 
    617616         IF( med_diag%MZMI%dgsave ) THEN 
    618617            CALL iom_put( "MZMI"  , fdzmi2d ) 
    619             CALL wrk_dealloc( jpi, jpj,   fdzmi2d  ) 
     618            DEALLOCATE( fdzmi2d ) 
    620619         ENDIF 
    621620         IF( med_diag%GMEPN%dgsave ) THEN 
    622621            CALL iom_put( "GMEPN"  , fgmepn2d ) 
    623             CALL wrk_dealloc( jpi, jpj,   fgmepn2d ) 
     622            DEALLOCATE( fgmepn2d ) 
    624623         ENDIF 
    625624         IF( med_diag%GMEPD%dgsave ) THEN 
    626625            CALL iom_put( "GMEPD"  , fgmepd2d ) 
    627             CALL wrk_dealloc( jpi, jpj,   fgmepd2d  ) 
     626            DEALLOCATE( fgmepd2d ) 
    628627         ENDIF 
    629628         IF( med_diag%GMEZMI%dgsave ) THEN 
    630629            CALL iom_put( "GMEZMI"  , fgmezmi2d ) 
    631             CALL wrk_dealloc( jpi, jpj,   fgmezmi2d  ) 
     630            DEALLOCATE( fgmezmi2d ) 
    632631         ENDIF 
    633632         IF( med_diag%GMED%dgsave ) THEN 
    634633            CALL iom_put( "GMED"  , fgmed2d ) 
    635             CALL wrk_dealloc( jpi, jpj,    fgmed2d ) 
     634            DEALLOCATE( fgmed2d ) 
    636635         ENDIF 
    637636         IF( med_diag%MZME%dgsave ) THEN 
    638637            CALL iom_put( "MZME"  , fdzme2d ) 
    639             CALL wrk_dealloc( jpi, jpj,  fdzme2d    ) 
     638            DEALLOCATE( fdzme2d ) 
    640639         ENDIF 
    641640         !  IF( med_diag%DEXP%dgsave ) THEN 
     
    644643         IF( med_diag%DETN%dgsave ) THEN 
    645644            CALL iom_put( "DETN"  , fslown2d ) 
    646             CALL wrk_dealloc( jpi, jpj,  fslown2d    ) 
     645            DEALLOCATE( fslown2d ) 
    647646         ENDIF 
    648647         IF( med_diag%MDET%dgsave ) THEN 
    649648            CALL iom_put( "MDET"  , fdd2d ) 
    650             CALL wrk_dealloc( jpi, jpj,   fdd2d  ) 
     649            DEALLOCATE( fdd2d ) 
    651650         ENDIF 
    652651         IF( med_diag%AEOLIAN%dgsave ) THEN 
    653652            CALL iom_put( "AEOLIAN"  , ffetop2d ) 
    654             CALL wrk_dealloc( jpi, jpj,   ffetop2d  ) 
     653            DEALLOCATE( ffetop2d ) 
    655654         ENDIF 
    656655         IF( med_diag%BENTHIC%dgsave ) THEN 
    657656            CALL iom_put( "BENTHIC"  , ffebot2d ) 
    658             CALL wrk_dealloc( jpi, jpj,   ffebot2d  ) 
     657            DEALLOCATE( ffebot2d ) 
    659658         ENDIF 
    660659         IF( med_diag%SCAVENGE%dgsave ) THEN 
    661660            CALL iom_put( "SCAVENGE"  , ffescav2d ) 
    662             CALL wrk_dealloc( jpi, jpj,   ffescav2d ) 
     661            DEALLOCATE( ffescav2d ) 
    663662         ENDIF 
    664663         !!  
    665664         IF( med_diag%TOTREG_N%dgsave ) THEN 
    666665            CALL iom_put( "TOTREG_N"  , fregen2d ) 
    667             CALL wrk_dealloc( jpi, jpj,   fregen2d  ) 
     666            DEALLOCATE( fregen2d ) 
    668667         ENDIF 
    669668         IF( med_diag%TOTRG_SI%dgsave ) THEN 
    670669            CALL iom_put( "TOTRG_SI"  , fregensi2d ) 
    671             CALL wrk_dealloc( jpi, jpj,    fregensi2d ) 
     670            DEALLOCATE( fregensi2d ) 
    672671         ENDIF 
    673672         !!  
    674673         IF( med_diag%FASTN%dgsave ) THEN 
    675674            CALL iom_put( "FASTN"  , ftempn2d ) 
    676             CALL wrk_dealloc( jpi, jpj,   ftempn2d  ) 
     675            DEALLOCATE( ftempn2d ) 
    677676         ENDIF 
    678677         IF( med_diag%FASTSI%dgsave ) THEN 
    679678            CALL iom_put( "FASTSI"  , ftempsi2d ) 
    680             CALL wrk_dealloc( jpi, jpj,   ftempsi2d  ) 
     679            DEALLOCATE( ftempsi2d ) 
    681680         ENDIF 
    682681         IF( med_diag%FASTFE%dgsave ) THEN 
    683682            CALL iom_put( "FASTFE"  , ftempfe2d ) 
    684             CALL wrk_dealloc( jpi, jpj,    ftempfe2d ) 
     683            DEALLOCATE( ftempfe2d ) 
    685684         ENDIF 
    686685         IF( med_diag%FASTC%dgsave ) THEN 
    687686            CALL iom_put( "FASTC"  , ftempc2d ) 
    688             CALL wrk_dealloc( jpi, jpj,  ftempc2d    ) 
     687            DEALLOCATE( ftempc2d ) 
    689688         ENDIF 
    690689         IF( med_diag%FASTCA%dgsave ) THEN 
    691690            CALL iom_put( "FASTCA"  , ftempca2d ) 
    692             CALL wrk_dealloc( jpi, jpj,  ftempca2d  ) 
     691            DEALLOCATE( ftempca2d ) 
    693692         ENDIF 
    694693         !!  
    695694         IF( med_diag%REMINN%dgsave ) THEN 
    696695            CALL iom_put( "REMINN"  , freminn2d ) 
    697             CALL wrk_dealloc( jpi, jpj,   freminn2d  ) 
     696            DEALLOCATE( freminn2d ) 
    698697         ENDIF 
    699698         IF( med_diag%REMINSI%dgsave ) THEN 
    700699            CALL iom_put( "REMINSI"  , freminsi2d ) 
    701             CALL wrk_dealloc( jpi, jpj,   freminsi2d  ) 
     700            DEALLOCATE( freminsi2d ) 
    702701         ENDIF 
    703702         IF( med_diag%REMINFE%dgsave ) THEN 
    704703            CALL iom_put( "REMINFE"  , freminfe2d ) 
    705             CALL wrk_dealloc( jpi, jpj,  freminfe2d    ) 
     704            DEALLOCATE( freminfe2d ) 
    706705         ENDIF 
    707706         IF( med_diag%REMINC%dgsave ) THEN 
    708707            CALL iom_put( "REMINC"  , freminc2d ) 
    709             CALL wrk_dealloc( jpi, jpj,    freminc2d ) 
     708            DEALLOCATE( freminc2d ) 
    710709         ENDIF 
    711710         IF( med_diag%REMINCA%dgsave ) THEN 
    712711            CALL iom_put( "REMINCA"  , freminca2d ) 
    713             CALL wrk_dealloc( jpi, jpj,   freminca2d ) 
     712            DEALLOCATE( freminca2d ) 
    714713         ENDIF 
    715714         IF( med_diag%SEAFLRN%dgsave ) THEN 
     
    733732         IF( med_diag%RIV_N%dgsave ) THEN 
    734733            CALL iom_put( "RIV_N"  , rivn2d ) 
    735             CALL wrk_dealloc( jpi, jpj,    rivn2d ) 
     734            DEALLOCATE( rivn2d ) 
    736735         ENDIF 
    737736         IF( med_diag%RIV_SI%dgsave ) THEN 
    738737            CALL iom_put( "RIV_SI"  , rivsi2d ) 
    739             CALL wrk_dealloc( jpi, jpj,   rivsi2d  ) 
     738            DEALLOCATE( rivsi2d ) 
    740739         ENDIF 
    741740         IF( med_diag%RIV_C%dgsave ) THEN 
    742741            CALL iom_put( "RIV_C"  , rivc2d ) 
    743             CALL wrk_dealloc( jpi, jpj,    rivc2d ) 
     742            DEALLOCATE( rivc2d ) 
    744743         ENDIF 
    745744         IF( med_diag%RIV_ALK%dgsave ) THEN 
    746745            CALL iom_put( "RIV_ALK"  , rivalk2d ) 
    747             CALL wrk_dealloc( jpi, jpj,  rivalk2d    ) 
     746            DEALLOCATE( rivalk2d ) 
    748747         ENDIF 
    749748         IF( med_diag%DETC%dgsave ) THEN 
    750749            CALL iom_put( "DETC"  , fslowc2d ) 
    751             CALL wrk_dealloc( jpi, jpj,   fslowc2d  ) 
     750            DEALLOCATE( fslowc2d ) 
    752751         ENDIF 
    753752         !! 
    754753         IF( med_diag%PN_LLOSS%dgsave ) THEN 
    755754            CALL iom_put( "PN_LLOSS"  , fdpn22d ) 
    756             CALL wrk_dealloc( jpi, jpj,   fdpn22d  ) 
     755            DEALLOCATE( fdpn22d ) 
    757756         ENDIF 
    758757         IF( med_diag%PD_LLOSS%dgsave ) THEN 
    759758            CALL iom_put( "PD_LLOSS"  , fdpd22d ) 
    760             CALL wrk_dealloc( jpi, jpj,   fdpd22d  ) 
     759            DEALLOCATE( fdpd22d ) 
    761760         ENDIF 
    762761         IF( med_diag%ZI_LLOSS%dgsave ) THEN 
    763762            CALL iom_put( "ZI_LLOSS"  , fdzmi22d ) 
    764              CALL wrk_dealloc( jpi, jpj,    fdzmi22d ) 
     763             DEALLOCATE( fdzmi22d ) 
    765764          ENDIF 
    766765          IF( med_diag%ZE_LLOSS%dgsave ) THEN 
    767766             CALL iom_put( "ZE_LLOSS"  , fdzme22d ) 
    768              CALL wrk_dealloc( jpi, jpj,   fdzme22d  ) 
     767             DEALLOCATE( fdzme22d ) 
    769768          ENDIF 
    770769          IF( med_diag%ZI_MES_N%dgsave ) THEN 
    771770             CALL iom_put( "ZI_MES_N"  , zimesn2d ) 
    772              CALL wrk_dealloc( jpi, jpj,    zimesn2d ) 
     771             DEALLOCATE( zimesn2d ) 
    773772          ENDIF 
    774773          IF( med_diag%ZI_MES_D%dgsave ) THEN 
    775774             CALL iom_put( "ZI_MES_D"  , zimesd2d ) 
    776              CALL wrk_dealloc( jpi, jpj,    zimesd2d ) 
     775             DEALLOCATE( zimesd2d ) 
    777776          ENDIF 
    778777          IF( med_diag%ZI_MES_C%dgsave ) THEN 
    779778             CALL iom_put( "ZI_MES_C"  , zimesc2d ) 
    780              CALL wrk_dealloc( jpi, jpj,    zimesc2d ) 
     779             DEALLOCATE( zimesc2d ) 
    781780          ENDIF 
    782781          IF( med_diag%ZI_MESDC%dgsave ) THEN 
    783              CALL iom_put( "ZI_MESDC"  ,zimesdc2d  ) 
    784              CALL wrk_dealloc( jpi, jpj,    zimesdc2d ) 
     782             CALL iom_put( "ZI_MESDC"  ,zimesdc2d ) 
     783             DEALLOCATE( zimesdc2d ) 
    785784          ENDIF 
    786785          IF( med_diag%ZI_EXCR%dgsave ) THEN 
    787786             CALL iom_put( "ZI_EXCR"  , ziexcr2d ) 
    788              CALL wrk_dealloc( jpi, jpj,    ziexcr2d ) 
     787             DEALLOCATE( ziexcr2d ) 
    789788          ENDIF 
    790789          IF( med_diag%ZI_RESP%dgsave ) THEN 
    791790             CALL iom_put( "ZI_RESP"  , ziresp2d ) 
    792              CALL wrk_dealloc( jpi, jpj,   ziresp2d  ) 
     791             DEALLOCATE( ziresp2d ) 
    793792          ENDIF 
    794793          IF( med_diag%ZI_GROW%dgsave ) THEN 
    795794             CALL iom_put( "ZI_GROW"  , zigrow2d ) 
    796              CALL wrk_dealloc( jpi, jpj,   zigrow2d  ) 
     795             DEALLOCATE( zigrow2d ) 
    797796          ENDIF 
    798797          IF( med_diag%ZE_MES_N%dgsave ) THEN 
    799798             CALL iom_put( "ZE_MES_N"  , zemesn2d ) 
    800              CALL wrk_dealloc( jpi, jpj,    zemesn2d ) 
     799             DEALLOCATE( zemesn2d ) 
    801800          ENDIF 
    802801          IF( med_diag%ZE_MES_D%dgsave ) THEN 
    803802             CALL iom_put( "ZE_MES_D"  , zemesd2d ) 
    804              CALL wrk_dealloc( jpi, jpj,    zemesd2d ) 
     803             DEALLOCATE( zemesd2d ) 
    805804          ENDIF 
    806805          IF( med_diag%ZE_MES_C%dgsave ) THEN 
    807806             CALL iom_put( "ZE_MES_C"  , zemesc2d ) 
    808              CALL wrk_dealloc( jpi, jpj,   zemesc2d  ) 
     807             DEALLOCATE( zemesc2d ) 
    809808          ENDIF 
    810809          IF( med_diag%ZE_MESDC%dgsave ) THEN 
    811810             CALL iom_put( "ZE_MESDC"  , zemesdc2d ) 
    812              CALL wrk_dealloc( jpi, jpj,   zemesdc2d  ) 
     811             DEALLOCATE( zemesdc2d ) 
    813812          ENDIF 
    814813          IF( med_diag%ZE_EXCR%dgsave ) THEN 
    815814             CALL iom_put( "ZE_EXCR"  , zeexcr2d ) 
    816              CALL wrk_dealloc( jpi, jpj,   zeexcr2d  ) 
     815             DEALLOCATE( zeexcr2d ) 
    817816          ENDIF 
    818817          IF( med_diag%ZE_RESP%dgsave ) THEN 
    819818             CALL iom_put( "ZE_RESP"  , zeresp2d ) 
    820              CALL wrk_dealloc( jpi, jpj,    zeresp2d ) 
     819             DEALLOCATE( zeresp2d ) 
    821820          ENDIF 
    822821          IF( med_diag%ZE_GROW%dgsave ) THEN 
    823822             CALL iom_put( "ZE_GROW"  , zegrow2d ) 
    824              CALL wrk_dealloc( jpi, jpj,   zegrow2d  ) 
     823             DEALLOCATE( zegrow2d ) 
    825824          ENDIF 
    826825          IF( med_diag%MDETC%dgsave ) THEN 
    827826             CALL iom_put( "MDETC"  , mdetc2d ) 
    828              CALL wrk_dealloc( jpi, jpj,   mdetc2d  ) 
     827             DEALLOCATE( mdetc2d ) 
    829828          ENDIF 
    830829          IF( med_diag%GMIDC%dgsave ) THEN 
    831830             CALL iom_put( "GMIDC"  , gmidc2d ) 
    832              CALL wrk_dealloc( jpi, jpj,    gmidc2d ) 
     831             DEALLOCATE( gmidc2d ) 
    833832          ENDIF 
    834833          IF( med_diag%GMEDC%dgsave ) THEN 
    835834             CALL iom_put( "GMEDC"  , gmedc2d ) 
    836              CALL wrk_dealloc( jpi, jpj,    gmedc2d ) 
     835             DEALLOCATE( gmedc2d ) 
    837836          ENDIF 
    838837          IF( med_diag%IBEN_N%dgsave ) THEN 
    839838             CALL iom_put( "IBEN_N"  , iben_n2d ) 
    840              CALL wrk_dealloc( jpi, jpj,    iben_n2d ) 
     839             DEALLOCATE( iben_n2d ) 
    841840          ENDIF 
    842841          IF( med_diag%IBEN_FE%dgsave ) THEN 
    843842             CALL iom_put( "IBEN_FE"  , iben_fe2d ) 
    844              CALL wrk_dealloc( jpi, jpj,   iben_fe2d  ) 
     843             DEALLOCATE( iben_fe2d ) 
    845844          ENDIF 
    846845          IF( med_diag%IBEN_C%dgsave ) THEN 
    847846             CALL iom_put( "IBEN_C"  , iben_c2d ) 
    848              CALL wrk_dealloc( jpi, jpj,   iben_c2d  ) 
     847             DEALLOCATE( iben_c2d ) 
    849848          ENDIF 
    850849          IF( med_diag%IBEN_SI%dgsave ) THEN 
    851850             CALL iom_put( "IBEN_SI"  , iben_si2d ) 
    852              CALL wrk_dealloc( jpi, jpj,   iben_si2d  ) 
     851             DEALLOCATE( iben_si2d ) 
    853852          ENDIF 
    854853          IF( med_diag%IBEN_CA%dgsave ) THEN 
    855854             CALL iom_put( "IBEN_CA"  , iben_ca2d ) 
    856              CALL wrk_dealloc( jpi, jpj,   iben_ca2d  ) 
     855             DEALLOCATE( iben_ca2d ) 
    857856          ENDIF 
    858857          IF( med_diag%OBEN_N%dgsave ) THEN 
    859858             CALL iom_put( "OBEN_N"  , oben_n2d ) 
    860              CALL wrk_dealloc( jpi, jpj,    oben_n2d ) 
     859             DEALLOCATE( oben_n2d ) 
    861860          ENDIF 
    862861          IF( med_diag%OBEN_FE%dgsave ) THEN 
    863862             CALL iom_put( "OBEN_FE"  , oben_fe2d ) 
    864              CALL wrk_dealloc( jpi, jpj,    oben_fe2d ) 
     863             DEALLOCATE( oben_fe2d ) 
    865864          ENDIF 
    866865          IF( med_diag%OBEN_C%dgsave ) THEN 
    867866             CALL iom_put( "OBEN_C"  , oben_c2d ) 
    868              CALL wrk_dealloc( jpi, jpj,    oben_c2d ) 
     867             DEALLOCATE( oben_c2d ) 
    869868          ENDIF 
    870869          IF( med_diag%OBEN_SI%dgsave ) THEN 
    871870             CALL iom_put( "OBEN_SI"  , oben_si2d ) 
    872              CALL wrk_dealloc( jpi, jpj,    oben_si2d ) 
     871             DEALLOCATE( oben_si2d ) 
    873872          ENDIF 
    874873          IF( med_diag%OBEN_CA%dgsave ) THEN 
    875874             CALL iom_put( "OBEN_CA"  , oben_ca2d ) 
    876              CALL wrk_dealloc( jpi, jpj, oben_ca2d    ) 
     875             DEALLOCATE( oben_ca2d ) 
    877876          ENDIF 
    878877          IF( med_diag%SFR_OCAL%dgsave ) THEN 
    879878             CALL iom_put( "SFR_OCAL"  , sfr_ocal2d ) 
    880              CALL wrk_dealloc( jpi, jpj,    sfr_ocal2d ) 
     879             DEALLOCATE( sfr_ocal2d ) 
    881880          ENDIF 
    882881          IF( med_diag%SFR_OARG%dgsave ) THEN 
    883882             CALL iom_put( "SFR_OARG"  , sfr_oarg2d ) 
    884              CALL wrk_dealloc( jpi, jpj,    sfr_oarg2d ) 
     883             DEALLOCATE( sfr_oarg2d ) 
    885884          ENDIF 
    886885          IF( med_diag%LYSO_CA%dgsave ) THEN 
    887886             CALL iom_put( "LYSO_CA"  , lyso_ca2d ) 
    888              CALL wrk_dealloc( jpi, jpj,    lyso_ca2d ) 
     887             DEALLOCATE( lyso_ca2d ) 
    889888          ENDIF 
    890889# endif                    
     
    893892          IF( med_diag%TPP3%dgsave ) THEN 
    894893             CALL iom_put( "TPP3"  , tpp3d ) 
    895              CALL wrk_dealloc( jpi, jpj, jpk,   tpp3d ) 
     894             DEALLOCATE( tpp3d ) 
    896895          ENDIF 
    897896          IF( med_diag%DETFLUX3%dgsave ) THEN 
    898897             CALL iom_put( "DETFLUX3"  , detflux3d ) 
    899              CALL wrk_dealloc( jpi, jpj, jpk,    detflux3d ) 
     898             DEALLOCATE( detflux3d ) 
    900899          ENDIF 
    901900          IF( med_diag%REMIN3N%dgsave ) THEN 
    902901             CALL iom_put( "REMIN3N"  , remin3dn ) 
    903              CALL wrk_dealloc( jpi, jpj, jpk,   remin3dn ) 
     902             DEALLOCATE( remin3dn ) 
    904903          ENDIF 
    905904# if defined key_roam           
     
    914913          IF( med_diag%INTDISSIC%dgsave ) THEN 
    915914             CALL iom_put( "INTDISSIC"  , intdissic ) 
    916              CALL wrk_dealloc( jpi, jpj, intdissic  ) 
     915             DEALLOCATE( intdissic ) 
    917916          ENDIF           
    918917          IF( med_diag%INTDISSIN%dgsave ) THEN 
    919918             CALL iom_put( "INTDISSIN"  , intdissin ) 
    920              CALL wrk_dealloc( jpi, jpj, intdissin  ) 
     919             DEALLOCATE( intdissin ) 
    921920          ENDIF           
    922921          IF( med_diag%INTDISSISI%dgsave ) THEN 
    923922             CALL iom_put( "INTDISSISI"  , intdissisi ) 
    924              CALL wrk_dealloc( jpi, jpj, intdissisi ) 
     923             DEALLOCATE( intdissisi ) 
    925924          ENDIF           
    926925          IF( med_diag%INTTALK%dgsave ) THEN 
    927926             CALL iom_put( "INTTALK"  , inttalk ) 
    928              CALL wrk_dealloc( jpi, jpj, inttalk    ) 
     927             DEALLOCATE( inttalk ) 
    929928          ENDIF           
    930929          IF( med_diag%O2min%dgsave ) THEN 
    931930             CALL iom_put( "O2min"  , o2min ) 
    932              CALL wrk_dealloc( jpi, jpj, o2min      ) 
     931             DEALLOCATE( o2min ) 
    933932          ENDIF           
    934933          IF( med_diag%ZO2min%dgsave ) THEN 
    935934             CALL iom_put( "ZO2min"  , zo2min ) 
    936              CALL wrk_dealloc( jpi, jpj, zo2min      ) 
     935             DEALLOCATE( zo2min ) 
    937936          ENDIF           
    938937          IF( med_diag%FBDDTALK%dgsave ) THEN 
    939              CALL iom_put( "FBDDTALK"  , fbddtalk   ) 
    940              CALL wrk_dealloc( jpi, jpj, fbddtalk  ) 
     938             CALL iom_put( "FBDDTALK"  , fbddtalk ) 
     939             DEALLOCATE( fbddtalk ) 
    941940          ENDIF           
    942941          IF( med_diag%FBDDTDIC%dgsave ) THEN 
    943              CALL iom_put( "FBDDTDIC"  , fbddtdic   ) 
    944              CALL wrk_dealloc( jpi, jpj, fbddtdic  ) 
     942             CALL iom_put( "FBDDTDIC"  , fbddtdic ) 
     943             DEALLOCATE( fbddtdic ) 
    945944          ENDIF           
    946945          IF( med_diag%FBDDTDIFE%dgsave ) THEN 
    947              CALL iom_put( "FBDDTDIFE" , fbddtdife  ) 
    948              CALL wrk_dealloc( jpi, jpj, fbddtdife ) 
     946             CALL iom_put( "FBDDTDIFE" , fbddtdife ) 
     947             DEALLOCATE( fbddtdife ) 
    949948          ENDIF           
    950949          IF( med_diag%FBDDTDIN%dgsave ) THEN 
    951              CALL iom_put( "FBDDTDIN"  , fbddtdin   ) 
    952              CALL wrk_dealloc( jpi, jpj, fbddtdin  ) 
     950             CALL iom_put( "FBDDTDIN"  , fbddtdin ) 
     951             DEALLOCATE( fbddtdin ) 
    953952          ENDIF           
    954953          IF( med_diag%FBDDTDISI%dgsave ) THEN 
    955              CALL iom_put( "FBDDTDISI" , fbddtdisi  ) 
    956              CALL wrk_dealloc( jpi, jpj, fbddtdisi ) 
     954             CALL iom_put( "FBDDTDISI" , fbddtdisi ) 
     955             DEALLOCATE( fbddtdisi ) 
    957956          ENDIF     
    958957          !! 
     
    960959          IF( med_diag%TPPD3%dgsave ) THEN 
    961960             CALL iom_put( "TPPD3"     , tppd3 ) 
    962              CALL wrk_dealloc( jpi, jpj, jpk, tppd3      ) 
     961             DEALLOCATE( tppd3 ) 
    963962          ENDIF           
    964963          IF( med_diag%BDDTALK3%dgsave ) THEN 
    965964             CALL iom_put( "BDDTALK3"  , bddtalk3 ) 
    966              CALL wrk_dealloc( jpi, jpj, jpk, bddtalk3  ) 
     965             DEALLOCATE( bddtalk3 ) 
    967966          ENDIF           
    968967          IF( med_diag%BDDTDIC3%dgsave ) THEN 
    969968             CALL iom_put( "BDDTDIC3"  , bddtdic3 ) 
    970              CALL wrk_dealloc( jpi, jpj, jpk, bddtdic3  ) 
     969             DEALLOCATE( bddtdic3 ) 
    971970          ENDIF           
    972971          IF( med_diag%BDDTDIFE3%dgsave ) THEN 
    973972             CALL iom_put( "BDDTDIFE3" , bddtdife3 ) 
    974              CALL wrk_dealloc( jpi, jpj, jpk, bddtdife3 ) 
     973             DEALLOCATE( bddtdife3 ) 
    975974          ENDIF           
    976975          IF( med_diag%BDDTDIN3%dgsave ) THEN 
    977976             CALL iom_put( "BDDTDIN3"  , bddtdin3 ) 
    978              CALL wrk_dealloc( jpi, jpj, jpk, bddtdin3  ) 
     977             DEALLOCATE( bddtdin3 ) 
    979978          ENDIF           
    980979          IF( med_diag%BDDTDISI3%dgsave ) THEN 
    981980             CALL iom_put( "BDDTDISI3" , bddtdisi3 ) 
    982              CALL wrk_dealloc( jpi, jpj, jpk, bddtdisi3 ) 
     981             DEALLOCATE( bddtdisi3 ) 
    983982          ENDIF     
    984983          IF( med_diag%FD_NIT3%dgsave ) THEN 
    985984             CALL iom_put( "FD_NIT3"  , fd_nit3 ) 
    986              CALL wrk_dealloc( jpi, jpj, jpk,   fd_nit3 ) 
     985             DEALLOCATE( fd_nit3 ) 
    987986          ENDIF 
    988987          IF( med_diag%FD_SIL3%dgsave ) THEN 
    989988             CALL iom_put( "FD_SIL3"  , fd_sil3 ) 
    990              CALL wrk_dealloc( jpi, jpj, jpk,   fd_sil3 ) 
     989             DEALLOCATE( fd_sil3 ) 
    991990          ENDIF 
    992991          IF( med_diag%FD_CAL3%dgsave ) THEN 
    993992             CALL iom_put( "FD_CAL3"  , fd_cal3 ) 
    994              CALL wrk_dealloc( jpi, jpj, jpk,   fd_cal3 ) 
     993             DEALLOCATE( fd_cal3 ) 
    995994          ENDIF 
    996995          IF( med_diag%FD_CAR3%dgsave ) THEN 
    997996             CALL iom_put( "FD_CAR3"  , fd_car3 ) 
    998              CALL wrk_dealloc( jpi, jpj, jpk,   fd_car3 ) 
     997             DEALLOCATE( fd_car3 ) 
    999998          ENDIF 
    1000999          IF( med_diag%CO33%dgsave ) THEN 
     
    10091008          IF( med_diag%EXPC3%dgsave ) THEN 
    10101009             CALL iom_put( "EXPC3"  , expc3 ) 
    1011              CALL wrk_dealloc( jpi, jpj, jpk, expc3 ) 
     1010             DEALLOCATE( expc3 ) 
    10121011          ENDIF                     
    10131012          IF( med_diag%EXPN3%dgsave ) THEN 
    10141013             CALL iom_put( "EXPN3"  , expn3 ) 
    1015              CALL wrk_dealloc( jpi, jpj, jpk, expn3 ) 
     1014             DEALLOCATE( expn3 ) 
    10161015          ENDIF                     
    10171016          IF( med_diag%DCALC3%dgsave ) THEN 
    10181017             CALL iom_put( "DCALC3"  , dcalc3 ) 
    1019              CALL wrk_dealloc( jpi, jpj, jpk, dcalc3 ) 
     1018             DEALLOCATE( dcalc3 ) 
    10201019          ENDIF                     
    10211020          IF( med_diag%FEDISS3%dgsave ) THEN 
    10221021             CALL iom_put( "FEDISS3"  , fediss3 ) 
    1023              CALL wrk_dealloc( jpi, jpj, jpk, fediss3 ) 
     1022             DEALLOCATE( fediss3 ) 
    10241023          ENDIF                     
    10251024          IF( med_diag%FESCAV3%dgsave ) THEN 
    10261025             CALL iom_put( "FESCAV3"  , fescav3 ) 
    1027              CALL wrk_dealloc( jpi, jpj, jpk, fescav3 ) 
     1026             DEALLOCATE( fescav3 ) 
    10281027          ENDIF                     
    10291028          IF( med_diag%MIGRAZP3%dgsave ) THEN 
    10301029             CALL iom_put( "MIGRAZP3"  , migrazp3 ) 
    1031              CALL wrk_dealloc( jpi, jpj, jpk, migrazp3 ) 
     1030             DEALLOCATE( migrazp3 ) 
    10321031          ENDIF                     
    10331032          IF( med_diag%MIGRAZD3%dgsave ) THEN 
    10341033             CALL iom_put( "MIGRAZD3"  , migrazd3 ) 
    1035              CALL wrk_dealloc( jpi, jpj, jpk, migrazd3 ) 
     1034             DEALLOCATE( migrazd3 ) 
    10361035          ENDIF                     
    10371036          IF( med_diag%MEGRAZP3%dgsave ) THEN 
    10381037             CALL iom_put( "MEGRAZP3"  , megrazp3 ) 
    1039              CALL wrk_dealloc( jpi, jpj, jpk, megrazp3 ) 
     1038             DEALLOCATE( megrazp3 ) 
    10401039          ENDIF                     
    10411040          IF( med_diag%MEGRAZD3%dgsave ) THEN 
    10421041             CALL iom_put( "MEGRAZD3"  , megrazd3 ) 
    1043              CALL wrk_dealloc( jpi, jpj, jpk, megrazd3 ) 
     1042             DEALLOCATE( megrazd3 ) 
    10441043          ENDIF                     
    10451044          IF( med_diag%MEGRAZZ3%dgsave ) THEN 
    10461045             CALL iom_put( "MEGRAZZ3"  , megrazz3 ) 
    1047              CALL wrk_dealloc( jpi, jpj, jpk, megrazz3 ) 
     1046             DEALLOCATE( megrazz3 ) 
    10481047          ENDIF                     
    10491048          IF( med_diag%O2SAT3%dgsave ) THEN 
    10501049             CALL iom_put( "O2SAT3"  , o2sat3 ) 
    1051              CALL wrk_dealloc( jpi, jpj, jpk, o2sat3 ) 
     1050             DEALLOCATE( o2sat3 ) 
    10521051          ENDIF                     
    10531052          IF( med_diag%PBSI3%dgsave ) THEN 
    10541053             CALL iom_put( "PBSI3"  , pbsi3 ) 
    1055              CALL wrk_dealloc( jpi, jpj, jpk, pbsi3 ) 
     1054             DEALLOCATE( pbsi3 ) 
    10561055          ENDIF                     
    10571056          IF( med_diag%PCAL3%dgsave ) THEN 
    10581057             CALL iom_put( "PCAL3"  , pcal3 ) 
    1059              CALL wrk_dealloc( jpi, jpj, jpk, pcal3 ) 
     1058             DEALLOCATE( pcal3 ) 
    10601059          ENDIF                     
    10611060          IF( med_diag%REMOC3%dgsave ) THEN 
    10621061             CALL iom_put( "REMOC3"  , remoc3 ) 
    1063              CALL wrk_dealloc( jpi, jpj, jpk, remoc3 ) 
     1062             DEALLOCATE( remoc3 ) 
    10641063          ENDIF                     
    10651064          IF( med_diag%PNLIMJ3%dgsave ) THEN 
    10661065             CALL iom_put( "PNLIMJ3" , pnlimj3 ) 
    1067              CALL wrk_dealloc( jpi, jpj, jpk, pnlimj3 ) 
     1066             DEALLOCATE( pnlimj3 ) 
    10681067          ENDIF                     
    10691068          IF( med_diag%PNLIMN3%dgsave ) THEN 
    10701069             CALL iom_put( "PNLIMN3" , pnlimn3 ) 
    1071              CALL wrk_dealloc( jpi, jpj, jpk, pnlimn3 ) 
     1070             DEALLOCATE( pnlimn3 ) 
    10721071          ENDIF                     
    10731072          IF( med_diag%PNLIMFE3%dgsave ) THEN 
    10741073             CALL iom_put( "PNLIMFE3" , pnlimfe3 ) 
    1075              CALL wrk_dealloc( jpi, jpj, jpk, pnlimfe3 ) 
     1074             DEALLOCATE( pnlimfe3 ) 
    10761075          ENDIF                     
    10771076          IF( med_diag%PDLIMJ3%dgsave ) THEN 
    10781077             CALL iom_put( "PDLIMJ3" , pdlimj3 ) 
    1079              CALL wrk_dealloc( jpi, jpj, jpk, pdlimj3 ) 
     1078             DEALLOCATE( pdlimj3 ) 
    10801079          ENDIF                     
    10811080          IF( med_diag%PDLIMN3%dgsave ) THEN 
    10821081             CALL iom_put( "PDLIMN3" , pdlimn3 ) 
    1083              CALL wrk_dealloc( jpi, jpj, jpk, pdlimn3 ) 
     1082             DEALLOCATE( pdlimn3 ) 
    10841083          ENDIF                     
    10851084          IF( med_diag%PDLIMFE3%dgsave ) THEN 
    10861085             CALL iom_put( "PDLIMFE3" , pdlimfe3 ) 
    1087              CALL wrk_dealloc( jpi, jpj, jpk, pdlimfe3 ) 
     1086             DEALLOCATE( pdlimfe3 ) 
    10881087          ENDIF                     
    10891088          IF( med_diag%PDLIMSI3%dgsave ) THEN 
    10901089             CALL iom_put( "PDLIMSI3" , pdlimsi3 ) 
    1091              CALL wrk_dealloc( jpi, jpj, jpk, pdlimsi3 ) 
     1090             DEALLOCATE( pdlimsi3 ) 
    10921091          ENDIF                     
    10931092           
    10941093# endif          
    10951094 
    1096           CALL wrk_dealloc( jpi, jpj,   zw2d  ) 
     1095          DEALLOCATE( zw2d ) 
    10971096 
    10981097       ENDIF                    ! end of ln_diatrc option 
  • branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_init.F90

    r8045 r8076  
    3737      USE trc,               ONLY: ln_diatrc, med_diag, nittrc000,     & 
    3838                                   trc2d, trc3d 
    39       USE wrk_nemo,          ONLY: wrk_alloc 
    4039 
    4140# if defined key_iomput 
     
    175174         IF ( kt == nittrc000 )   CALL trc_nam_iom_medusa  
    176175 
    177          CALL wrk_alloc( jpi, jpj,      zw2d ) 
     176         ALLOCATE( zw2d(1:jpi, 1:jpj) ) 
    178177         zw2d(:,:)      = 0.0   !! 
    179178         IF ( med_diag%PRN%dgsave ) THEN 
    180             CALL wrk_alloc( jpi, jpj,   fprn2d    ) 
     179            ALLOCATE( fprn2d(1:jpi, 1:jpj) ) 
    181180            fprn2d(:,:)      = 0.0 !! 
    182181         ENDIF 
    183182         IF ( med_diag%MPN%dgsave ) THEN 
    184             CALL wrk_alloc( jpi, jpj,   fdpn2d    ) 
     183            ALLOCATE( fdpn2d(1:jpi, 1:jpj) ) 
    185184            fdpn2d(:,:)      = 0.0 !! 
    186185         ENDIF 
    187186         IF ( med_diag%PRD%dgsave ) THEN 
    188             CALL wrk_alloc( jpi, jpj,   fprd2d    ) 
     187            ALLOCATE( fprd2d(1:jpi, 1:jpj) ) 
    189188            fprd2d(:,:)      = 0.0 !! 
    190189         ENDIF 
    191190         IF( med_diag%MPD%dgsave ) THEN 
    192             CALL wrk_alloc( jpi, jpj,   fdpd2d    ) 
     191            ALLOCATE( fdpd2d(1:jpi, 1:jpj) ) 
    193192            fdpd2d(:,:)      = 0.0 !! 
    194193         ENDIF 
    195194         IF( med_diag%OPAL%dgsave ) THEN 
    196             CALL wrk_alloc( jpi, jpj,   fprds2d    ) 
     195            ALLOCATE( fprds2d(1:jpi, 1:jpj) ) 
    197196            fprds2d(:,:)      = 0.0 !! 
    198197         ENDIF 
    199198         IF( med_diag%OPALDISS%dgsave ) THEN 
    200             CALL wrk_alloc( jpi, jpj,   fsdiss2d    ) 
     199            ALLOCATE( fsdiss2d(1:jpi, 1:jpj) ) 
    201200            fsdiss2d(:,:)      = 0.0 !! 
    202201         ENDIF 
    203202         IF( med_diag%GMIPn%dgsave ) THEN 
    204             CALL wrk_alloc( jpi, jpj,   fgmipn2d    ) 
     203            ALLOCATE( fgmipn2d(1:jpi, 1:jpj) ) 
    205204            fgmipn2d(:,:)      = 0.0 !! 
    206205         ENDIF 
    207206         IF( med_diag%GMID%dgsave ) THEN 
    208             CALL wrk_alloc( jpi, jpj,   fgmid2d    ) 
     207            ALLOCATE( fgmid2d(1:jpi, 1:jpj) ) 
    209208            fgmid2d(:,:)      = 0.0 !! 
    210209         ENDIF 
    211210         IF( med_diag%MZMI%dgsave ) THEN 
    212             CALL wrk_alloc( jpi, jpj,   fdzmi2d    ) 
     211            ALLOCATE( fdzmi2d(1:jpi, 1:jpj) ) 
    213212            fdzmi2d(:,:)      = 0.0 !! 
    214213         ENDIF 
    215214         IF( med_diag%GMEPN%dgsave ) THEN 
    216             CALL wrk_alloc( jpi, jpj,   fgmepn2d    ) 
     215            ALLOCATE( fgmepn2d(1:jpi, 1:jpj) ) 
    217216            fgmepn2d(:,:)      = 0.0 !! 
    218217         ENDIF 
    219218         IF( med_diag%GMEPD%dgsave ) THEN 
    220             CALL wrk_alloc( jpi, jpj,   fgmepd2d    ) 
     219            ALLOCATE( fgmepd2d(1:jpi, 1:jpj) ) 
    221220            fgmepd2d(:,:)      = 0.0 !! 
    222221         ENDIF 
    223222         IF( med_diag%GMEZMI%dgsave ) THEN 
    224             CALL wrk_alloc( jpi, jpj,   fgmezmi2d    ) 
     223            ALLOCATE( fgmezmi2d(1:jpi, 1:jpj) ) 
    225224            fgmezmi2d(:,:)      = 0.0 !! 
    226225         ENDIF 
    227226         IF( med_diag%GMED%dgsave ) THEN 
    228             CALL wrk_alloc( jpi, jpj,   fgmed2d    ) 
     227            ALLOCATE( fgmed2d(1:jpi, 1:jpj) ) 
    229228            fgmed2d(:,:)      = 0.0 !! 
    230229         ENDIF 
    231230         IF( med_diag%MZME%dgsave ) THEN 
    232             CALL wrk_alloc( jpi, jpj,   fdzme2d    ) 
     231            ALLOCATE( fdzme2d(1:jpi, 1:jpj) ) 
    233232            fdzme2d(:,:)      = 0.0 !! 
    234233         ENDIF 
    235234         IF( med_diag%DETN%dgsave ) THEN 
    236             CALL wrk_alloc( jpi, jpj,   fslown2d    ) 
     235            ALLOCATE( fslown2d(1:jpi, 1:jpj) ) 
    237236            fslown2d(:,:)      = 0.0 !! 
    238237         ENDIF 
    239238         IF( med_diag%MDET%dgsave ) THEN 
    240             CALL wrk_alloc( jpi, jpj,   fdd2d    ) 
     239            ALLOCATE( fdd2d(1:jpi, 1:jpj) ) 
    241240            fdd2d(:,:)      = 0.0 !! 
    242241         ENDIF       
    243242         IF( med_diag%AEOLIAN%dgsave ) THEN 
    244             CALL wrk_alloc( jpi, jpj,   ffetop2d    ) 
     243            ALLOCATE( ffetop2d(1:jpi, 1:jpj) ) 
    245244            ffetop2d(:,:)      = 0.0 !! 
    246245         ENDIF 
    247246         IF( med_diag%BENTHIC%dgsave ) THEN 
    248             CALL wrk_alloc( jpi, jpj,    ffebot2d  ) 
     247            ALLOCATE( ffebot2d(1:jpi, 1:jpj) ) 
    249248            ffebot2d(:,:)      = 0.0 !! 
    250249         ENDIF 
    251250         IF( med_diag%SCAVENGE%dgsave ) THEN 
    252             CALL wrk_alloc( jpi, jpj,   ffescav2d    ) 
     251            ALLOCATE( ffescav2d(1:jpi, 1:jpj) ) 
    253252            ffescav2d(:,:)      = 0.0 !! 
    254253         ENDIF 
    255254         IF( med_diag%PN_JLIM%dgsave ) THEN 
    256             CALL wrk_alloc( jpi, jpj,   fjln2d    ) 
     255            ALLOCATE( fjln2d(1:jpi, 1:jpj) ) 
    257256            fjln2d(:,:)      = 0.0 !! 
    258257         ENDIF 
    259258         IF( med_diag%PN_NLIM%dgsave ) THEN 
    260             CALL wrk_alloc( jpi, jpj,   fnln2d    ) 
     259            ALLOCATE( fnln2d(1:jpi, 1:jpj) ) 
    261260            fnln2d(:,:)      = 0.0 !! 
    262261         ENDIF 
    263262         IF( med_diag%PN_FELIM%dgsave ) THEN 
    264             CALL wrk_alloc( jpi, jpj,   ffln2d    ) 
     263            ALLOCATE( ffln2d(1:jpi, 1:jpj) ) 
    265264            ffln2d(:,:)      = 0.0 !! 
    266265         ENDIF 
    267266         IF( med_diag%PD_JLIM%dgsave ) THEN 
    268             CALL wrk_alloc( jpi, jpj,   fjld2d    ) 
     267            ALLOCATE( fjld2d(1:jpi, 1:jpj) ) 
    269268            fjld2d(:,:)      = 0.0 !! 
    270269         ENDIF 
    271270         IF( med_diag%PD_NLIM%dgsave ) THEN 
    272             CALL wrk_alloc( jpi, jpj,   fnld2d    ) 
     271            ALLOCATE( fnld2d(1:jpi, 1:jpj) ) 
    273272            fnld2d(:,:)      = 0.0 !! 
    274273         ENDIF 
    275274         IF( med_diag%PD_FELIM%dgsave ) THEN 
    276             CALL wrk_alloc( jpi, jpj,   ffld2d    ) 
     275            ALLOCATE( ffld2d(1:jpi, 1:jpj) ) 
    277276            ffld2d(:,:)      = 0.0 !! 
    278277         ENDIF 
    279278         IF( med_diag%PD_SILIM%dgsave ) THEN 
    280             CALL wrk_alloc( jpi, jpj,   fsld2d2    ) 
     279            ALLOCATE( fsld2d2(1:jpi, 1:jpj) ) 
    281280            fsld2d2(:,:)      = 0.0 !! 
    282281         ENDIF 
    283282         IF( med_diag%PDSILIM2%dgsave ) THEN 
    284             CALL wrk_alloc( jpi, jpj,   fsld2d    ) 
     283            ALLOCATE( fsld2d(1:jpi, 1:jpj) ) 
    285284            fsld2d(:,:)      = 0.0 !! 
    286285         ENDIF 
     
    289288!! 
    290289         IF( med_diag%TOTREG_N%dgsave ) THEN 
    291             CALL wrk_alloc( jpi, jpj,   fregen2d    ) 
     290            ALLOCATE( fregen2d(1:jpi, 1:jpj) ) 
    292291            fregen2d(:,:)      = 0.0 !! 
    293292         ENDIF 
    294293         IF( med_diag%TOTRG_SI%dgsave ) THEN 
    295             CALL wrk_alloc( jpi, jpj,   fregensi2d    ) 
     294            ALLOCATE( fregensi2d(1:jpi, 1:jpj) ) 
    296295            fregensi2d(:,:)      = 0.0 !! 
    297296         ENDIF 
     
    300299!! 
    301300         IF( med_diag%FASTN%dgsave ) THEN 
    302             CALL wrk_alloc( jpi, jpj,   ftempn2d    ) 
     301            ALLOCATE( ftempn2d(1:jpi, 1:jpj) ) 
    303302            ftempn2d(:,:)      = 0.0 !! 
    304303         ENDIF 
    305304         IF( med_diag%FASTSI%dgsave ) THEN 
    306             CALL wrk_alloc( jpi, jpj,   ftempsi2d    ) 
     305            ALLOCATE( ftempsi2d(1:jpi, 1:jpj) ) 
    307306            ftempsi2d(:,:)      = 0.0 !! 
    308307         ENDIF 
    309308         IF( med_diag%FASTFE%dgsave ) THEN 
    310             CALL wrk_alloc( jpi, jpj,  ftempfe2d    ) 
     309            ALLOCATE( ftempfe2d(1:jpi, 1:jpj) ) 
    311310            ftempfe2d(:,:)      = 0.0 !! 
    312311         ENDIF 
    313312         IF( med_diag%FASTC%dgsave ) THEN 
    314             CALL wrk_alloc( jpi, jpj,  ftempc2d    ) 
     313            ALLOCATE( ftempc2d(1:jpi, 1:jpj) ) 
    315314            ftempc2d(:,:)      = 0.0 !! 
    316315         ENDIF 
    317316         IF( med_diag%FASTCA%dgsave ) THEN 
    318             CALL wrk_alloc( jpi, jpj,   ftempca2d    ) 
     317            ALLOCATE( ftempca2d(1:jpi, 1:jpj) ) 
    319318            ftempca2d(:,:)      = 0.0 !! 
    320319         ENDIF      
     
    323322!! 
    324323         IF( med_diag%REMINN%dgsave ) THEN 
    325             CALL wrk_alloc( jpi, jpj,    freminn2d  ) 
     324            ALLOCATE( freminn2d(1:jpi, 1:jpj) ) 
    326325            freminn2d(:,:)      = 0.0 !! 
    327326         ENDIF 
    328327         IF( med_diag%REMINSI%dgsave ) THEN 
    329             CALL wrk_alloc( jpi, jpj,    freminsi2d  ) 
     328            ALLOCATE( freminsi2d(1:jpi, 1:jpj) ) 
    330329            freminsi2d(:,:)      = 0.0 !! 
    331330         ENDIF 
    332331         IF( med_diag%REMINFE%dgsave ) THEN 
    333             CALL wrk_alloc( jpi, jpj,    freminfe2d  ) 
     332            ALLOCATE( freminfe2d(1:jpi, 1:jpj) ) 
    334333            freminfe2d(:,:)      = 0.0 !! 
    335334         ENDIF 
    336335         IF( med_diag%REMINC%dgsave ) THEN 
    337             CALL wrk_alloc( jpi, jpj,   freminc2d    ) 
     336            ALLOCATE( freminc2d(1:jpi, 1:jpj) ) 
    338337            freminc2d(:,:)      = 0.0 !!  
    339338         ENDIF 
    340339         IF( med_diag%REMINCA%dgsave ) THEN 
    341             CALL wrk_alloc( jpi, jpj,   freminca2d    ) 
     340            ALLOCATE( freminca2d(1:jpi, 1:jpj) ) 
    342341            freminca2d(:,:)      = 0.0 !! 
    343342         ENDIF 
     
    348347!! 
    349348         IF( med_diag%RR_0100%dgsave ) THEN 
    350             CALL wrk_alloc( jpi, jpj,    ffastca2d  ) 
     349            ALLOCATE( ffastca2d(1:jpi, 1:jpj) ) 
    351350            ffastca2d(:,:)      = 0.0 !! 
    352351         ENDIF 
    353352 
    354353         IF( med_diag%ATM_PCO2%dgsave ) THEN 
    355             CALL wrk_alloc( jpi, jpj,    f_pco2a2d  ) 
     354            ALLOCATE( f_pco2a2d(1:jpi, 1:jpj) ) 
    356355            f_pco2a2d(:,:)      = 0.0 !! 
    357356         ENDIF 
     
    360359!! 
    361360         IF( med_diag%OCN_PCO2%dgsave ) THEN 
    362             CALL wrk_alloc( jpi, jpj,    f_pco2w2d  ) 
     361            ALLOCATE( f_pco2w2d(1:jpi, 1:jpj) ) 
    363362            f_pco2w2d(:,:)      = 0.0 !! 
    364363         ENDIF 
     
    367366!! 
    368367         IF( med_diag%CO2FLUX%dgsave ) THEN 
    369             CALL wrk_alloc( jpi, jpj,   f_co2flux2d    ) 
     368            ALLOCATE( f_co2flux2d(1:jpi, 1:jpj) ) 
    370369            f_co2flux2d(:,:)      = 0.0 !! 
    371370         ENDIF 
     
    374373!! 
    375374         IF( med_diag%TCO2%dgsave ) THEN 
    376             CALL wrk_alloc( jpi, jpj,   f_TDIC2d    ) 
     375            ALLOCATE( f_TDIC2d(1:jpi, 1:jpj) ) 
    377376            f_TDIC2d(:,:)      = 0.0 !! 
    378377         ENDIF 
    379378         IF( med_diag%TALK%dgsave ) THEN 
    380             CALL wrk_alloc( jpi, jpj,    f_TALK2d  ) 
     379            ALLOCATE( f_TALK2d(1:jpi, 1:jpj) ) 
    381380            f_TALK2d(:,:)      = 0.0 !! 
    382381         ENDIF 
    383382         IF( med_diag%KW660%dgsave ) THEN 
    384             CALL wrk_alloc( jpi, jpj,    f_kw6602d  ) 
     383            ALLOCATE( f_kw6602d(1:jpi, 1:jpj) ) 
    385384            f_kw6602d(:,:)      = 0.0 !! 
    386385         ENDIF 
    387386         IF( med_diag%ATM_PP0%dgsave ) THEN 
    388             CALL wrk_alloc( jpi, jpj,    f_pp02d  ) 
     387            ALLOCATE( f_pp02d(1:jpi, 1:jpj) ) 
    389388            f_pp02d(:,:)      = 0.0 !! 
    390389         ENDIF 
    391390         IF( med_diag%O2FLUX%dgsave ) THEN 
    392             CALL wrk_alloc( jpi, jpj,   f_o2flux2d    ) 
     391            ALLOCATE( f_o2flux2d(1:jpi, 1:jpj) ) 
    393392            f_o2flux2d(:,:)      = 0.0 !! 
    394393         ENDIF 
    395394         IF( med_diag%O2SAT%dgsave ) THEN 
    396             CALL wrk_alloc( jpi, jpj,    f_o2sat2d  ) 
     395            ALLOCATE( f_o2sat2d(1:jpi, 1:jpj) ) 
    397396            f_o2sat2d(:,:)      = 0.0 !! 
    398397         ENDIF  
     
    401400!!  
    402401         IF( med_diag%SFR_OCAL%dgsave ) THEN 
    403             CALL wrk_alloc( jpi, jpj,    sfr_ocal2d ) 
     402            ALLOCATE( sfr_ocal2d(1:jpi, 1:jpj) ) 
    404403            sfr_ocal2d(:,:)      = 0.0 !! 
    405404         ENDIF 
    406405         IF( med_diag%SFR_OARG%dgsave ) THEN 
    407             CALL wrk_alloc( jpi, jpj,    sfr_oarg2d ) 
     406            ALLOCATE( sfr_oarg2d(1:jpi, 1:jpj) ) 
    408407            sfr_oarg2d(:,:)      = 0.0 !! 
    409408         ENDIF 
     
    412411!!  
    413412         IF( med_diag%IBEN_N%dgsave ) THEN 
    414             CALL wrk_alloc( jpi, jpj,    iben_n2d ) 
     413            ALLOCATE( iben_n2d(1:jpi, 1:jpj) ) 
    415414            iben_n2d(:,:)      = 0.0 !! 
    416415         ENDIF 
    417416         IF( med_diag%IBEN_FE%dgsave ) THEN 
    418             CALL wrk_alloc( jpi, jpj,   iben_fe2d  ) 
     417            ALLOCATE( iben_fe2d(1:jpi, 1:jpj) ) 
    419418            iben_fe2d(:,:)      = 0.0 !! 
    420419         ENDIF 
    421420         IF( med_diag%IBEN_C%dgsave ) THEN 
    422             CALL wrk_alloc( jpi, jpj,   iben_c2d  ) 
     421            ALLOCATE( iben_c2d(1:jpi, 1:jpj) ) 
    423422            iben_c2d(:,:)      = 0.0 !! 
    424423         ENDIF 
    425424         IF( med_diag%IBEN_SI%dgsave ) THEN 
    426             CALL wrk_alloc( jpi, jpj,   iben_si2d  ) 
     425            ALLOCATE( iben_si2d(1:jpi, 1:jpj) ) 
    427426            iben_si2d(:,:)      = 0.0 !! 
    428427         ENDIF 
    429428         IF( med_diag%IBEN_CA%dgsave ) THEN 
    430             CALL wrk_alloc( jpi, jpj,   iben_ca2d  ) 
     429            ALLOCATE( iben_ca2d(1:jpi, 1:jpj) ) 
    431430            iben_ca2d(:,:)      = 0.0 !! 
    432431         ENDIF 
    433432         IF( med_diag%OBEN_N%dgsave ) THEN 
    434             CALL wrk_alloc( jpi, jpj,    oben_n2d ) 
     433            ALLOCATE( oben_n2d(1:jpi, 1:jpj) ) 
    435434            oben_n2d(:,:)      = 0.0 !! 
    436435         ENDIF 
    437436         IF( med_diag%OBEN_FE%dgsave ) THEN 
    438             CALL wrk_alloc( jpi, jpj,    oben_fe2d ) 
     437            ALLOCATE( oben_fe2d(1:jpi, 1:jpj) ) 
    439438            oben_fe2d(:,:)      = 0.0 !! 
    440439         ENDIF 
    441440         IF( med_diag%OBEN_C%dgsave ) THEN 
    442             CALL wrk_alloc( jpi, jpj,    oben_c2d ) 
     441            ALLOCATE( oben_c2d(1:jpi, 1:jpj) ) 
    443442            oben_c2d(:,:)      = 0.0 !! 
    444443         ENDIF 
    445444         IF( med_diag%OBEN_SI%dgsave ) THEN 
    446             CALL wrk_alloc( jpi, jpj,    oben_si2d ) 
     445            ALLOCATE( oben_si2d(1:jpi, 1:jpj) ) 
    447446            oben_si2d(:,:)      = 0.0 !! 
    448447         ENDIF 
    449448         IF( med_diag%OBEN_CA%dgsave ) THEN 
    450             CALL wrk_alloc( jpi, jpj,    oben_ca2d ) 
     449            ALLOCATE( oben_ca2d(1:jpi, 1:jpj) ) 
    451450            oben_ca2d(:,:)      = 0.0 !! 
    452451         ENDIF 
     
    456455 
    457456         IF( med_diag%RIV_N%dgsave ) THEN 
    458             CALL wrk_alloc( jpi, jpj,    rivn2d  ) 
     457            ALLOCATE( rivn2d(1:jpi, 1:jpj) ) 
    459458            rivn2d(:,:)      = 0.0 !! 
    460459         ENDIF 
    461460         IF( med_diag%RIV_SI%dgsave ) THEN 
    462             CALL wrk_alloc( jpi, jpj,    rivsi2d  ) 
     461            ALLOCATE( rivsi2d(1:jpi, 1:jpj) ) 
    463462            rivsi2d(:,:)      = 0.0 !! 
    464463         ENDIF 
    465464         IF( med_diag%RIV_C%dgsave ) THEN 
    466             CALL wrk_alloc( jpi, jpj,   rivc2d    ) 
     465            ALLOCATE( rivc2d(1:jpi, 1:jpj) ) 
    467466            rivc2d(:,:)      = 0.0 !! 
    468467         ENDIF 
    469468         IF( med_diag%RIV_ALK%dgsave ) THEN 
    470             CALL wrk_alloc( jpi, jpj,    rivalk2d  ) 
     469            ALLOCATE( rivalk2d(1:jpi, 1:jpj) ) 
    471470            rivalk2d(:,:)      = 0.0 !! 
    472471         ENDIF 
    473472         IF( med_diag%DETC%dgsave ) THEN 
    474             CALL wrk_alloc( jpi, jpj,    fslowc2d  ) 
     473            ALLOCATE( fslowc2d(1:jpi, 1:jpj) ) 
    475474            fslowc2d(:,:)      = 0.0 !! 
    476475         ENDIF  
     
    479478!! 
    480479         IF( med_diag%LYSO_CA%dgsave ) THEN 
    481             CALL wrk_alloc( jpi, jpj,    lyso_ca2d ) 
     480            ALLOCATE( lyso_ca2d(1:jpi, 1:jpj) ) 
    482481            lyso_ca2d(:,:)      = 0.0 !! 
    483482         ENDIF 
     
    486485!! 
    487486         IF( med_diag%PN_LLOSS%dgsave ) THEN 
    488             CALL wrk_alloc( jpi, jpj,    fdpn22d  ) 
     487            ALLOCATE( fdpn22d(1:jpi, 1:jpj) ) 
    489488            fdpn22d(:,:)      = 0.0 !! 
    490489         ENDIF 
    491490         IF( med_diag%PD_LLOSS%dgsave ) THEN 
    492             CALL wrk_alloc( jpi, jpj,    fdpd22d  ) 
     491            ALLOCATE( fdpd22d(1:jpi, 1:jpj) ) 
    493492            fdpd22d(:,:)      = 0.0 !! 
    494493         ENDIF 
    495494         IF( med_diag%ZI_LLOSS%dgsave ) THEN 
    496             CALL wrk_alloc( jpi, jpj,    fdzmi22d  ) 
     495            ALLOCATE( fdzmi22d(1:jpi, 1:jpj) ) 
    497496            fdzmi22d(:,:)      = 0.0 !! 
    498497         ENDIF 
    499498         IF( med_diag%ZE_LLOSS%dgsave ) THEN 
    500             CALL wrk_alloc( jpi, jpj,   fdzme22d    ) 
     499            ALLOCATE( fdzme22d(1:jpi, 1:jpj) ) 
    501500            fdzme22d(:,:)      = 0.0 !! 
    502501         ENDIF 
    503502         IF( med_diag%ZI_MES_N%dgsave ) THEN    
    504             CALL wrk_alloc( jpi, jpj,   zimesn2d    ) 
     503            ALLOCATE( zimesn2d(1:jpi, 1:jpj) ) 
    505504            zimesn2d(:,:)      = 0.0 !! 
    506505         ENDIF 
    507506         IF( med_diag%ZI_MES_D%dgsave ) THEN 
    508             CALL wrk_alloc( jpi, jpj,    zimesd2d  ) 
     507            ALLOCATE( zimesd2d(1:jpi, 1:jpj) ) 
    509508            zimesd2d(:,:)      = 0.0 !! 
    510509         ENDIF 
    511510         IF( med_diag%ZI_MES_C%dgsave ) THEN 
    512             CALL wrk_alloc( jpi, jpj,    zimesc2d  ) 
     511            ALLOCATE( zimesc2d(1:jpi, 1:jpj) ) 
    513512            zimesc2d(:,:)      = 0.0 !! 
    514513         ENDIF 
    515514         IF( med_diag%ZI_MESDC%dgsave ) THEN 
    516             CALL wrk_alloc( jpi, jpj,    zimesdc2d  ) 
     515            ALLOCATE( zimesdc2d(1:jpi, 1:jpj) ) 
    517516            zimesdc2d(:,:)      = 0.0 !! 
    518517         ENDIF 
    519518         IF( med_diag%ZI_EXCR%dgsave ) THEN 
    520             CALL wrk_alloc( jpi, jpj,     ziexcr2d ) 
     519            ALLOCATE( ziexcr2d(1:jpi, 1:jpj) ) 
    521520            ziexcr2d(:,:)      = 0.0 !! 
    522521         ENDIF 
    523522         IF( med_diag%ZI_RESP%dgsave ) THEN 
    524             CALL wrk_alloc( jpi, jpj,    ziresp2d  ) 
     523            ALLOCATE( ziresp2d(1:jpi, 1:jpj) ) 
    525524            ziresp2d(:,:)      = 0.0 !! 
    526525         ENDIF 
    527526         IF( med_diag%ZI_GROW%dgsave ) THEN 
    528             CALL wrk_alloc( jpi, jpj,    zigrow2d  ) 
     527            ALLOCATE( zigrow2d(1:jpi, 1:jpj) ) 
    529528            zigrow2d(:,:)      = 0.0 !! 
    530529         ENDIF 
    531530         IF( med_diag%ZE_MES_N%dgsave ) THEN 
    532             CALL wrk_alloc( jpi, jpj,   zemesn2d    ) 
     531            ALLOCATE( zemesn2d(1:jpi, 1:jpj) ) 
    533532            zemesn2d(:,:)      = 0.0 !! 
    534533         ENDIF 
    535534         IF( med_diag%ZE_MES_D%dgsave ) THEN 
    536             CALL wrk_alloc( jpi, jpj,    zemesd2d  ) 
     535            ALLOCATE( zemesd2d(1:jpi, 1:jpj) ) 
    537536            zemesd2d(:,:)      = 0.0 !! 
    538537         ENDIF 
    539538         IF( med_diag%ZE_MES_C%dgsave ) THEN 
    540             CALL wrk_alloc( jpi, jpj,    zemesc2d  ) 
     539            ALLOCATE( zemesc2d(1:jpi, 1:jpj) ) 
    541540            zemesc2d(:,:)      = 0.0 !! 
    542541         ENDIF 
    543542         IF( med_diag%ZE_MESDC%dgsave ) THEN 
    544             CALL wrk_alloc( jpi, jpj,    zemesdc2d  ) 
     543            ALLOCATE( zemesdc2d(1:jpi, 1:jpj) ) 
    545544            zemesdc2d(:,:)      = 0.0 !! 
    546545         ENDIF 
    547546         IF( med_diag%ZE_EXCR%dgsave ) THEN 
    548             CALL wrk_alloc( jpi, jpj,    zeexcr2d  ) 
     547            ALLOCATE( zeexcr2d(1:jpi, 1:jpj) ) 
    549548            zeexcr2d(:,:)      = 0.0 !! 
    550549         ENDIF                   
    551550         IF( med_diag%ZE_RESP%dgsave ) THEN 
    552             CALL wrk_alloc( jpi, jpj,    zeresp2d  ) 
     551            ALLOCATE( zeresp2d(1:jpi, 1:jpj) ) 
    553552            zeresp2d(:,:)      = 0.0 !! 
    554553         ENDIF 
    555554         IF( med_diag%ZE_GROW%dgsave ) THEN 
    556             CALL wrk_alloc( jpi, jpj,    zegrow2d  ) 
     555            ALLOCATE( zegrow2d(1:jpi, 1:jpj) ) 
    557556            zegrow2d(:,:)      = 0.0 !! 
    558557         ENDIF 
    559558         IF( med_diag%MDETC%dgsave ) THEN 
    560             CALL wrk_alloc( jpi, jpj,   mdetc2d    ) 
     559            ALLOCATE( mdetc2d(1:jpi, 1:jpj) ) 
    561560            mdetc2d(:,:)      = 0.0 !! 
    562561         ENDIF 
    563562         IF( med_diag%GMIDC%dgsave ) THEN 
    564             CALL wrk_alloc( jpi, jpj,    gmidc2d  ) 
     563            ALLOCATE( gmidc2d(1:jpi, 1:jpj) ) 
    565564            gmidc2d(:,:)      = 0.0 !! 
    566565         ENDIF 
    567566         IF( med_diag%GMEDC%dgsave ) THEN 
    568             CALL wrk_alloc( jpi, jpj,    gmedc2d  ) 
     567            ALLOCATE( gmedc2d(1:jpi, 1:jpj) ) 
    569568            gmedc2d(:,:)      = 0.0 !! 
    570569         ENDIF 
     
    574573         IF (jdms .eq. 1) THEN 
    575574            IF( med_diag%DMS_SURF%dgsave ) THEN 
    576                CALL wrk_alloc( jpi, jpj,   dms_surf2d    ) 
     575               ALLOCATE( dms_surf2d(1:jpi, 1:jpj) ) 
    577576               dms_surf2d(:,:)      = 0.0 !! 
    578577            ENDIF 
    579578            IF( med_diag%DMS_ANDR%dgsave ) THEN 
    580                CALL wrk_alloc( jpi, jpj,   dms_andr2d    ) 
     579               ALLOCATE( dms_andr2d(1:jpi, 1:jpj) ) 
    581580               dms_andr2d(:,:)      = 0.0 !! 
    582581            ENDIF 
    583582            IF( med_diag%DMS_SIMO%dgsave ) THEN 
    584                CALL wrk_alloc( jpi, jpj,  dms_simo2d    ) 
     583               ALLOCATE( dms_simo2d(1:jpi, 1:jpj) ) 
    585584               dms_simo2d(:,:)      = 0.0 !! 
    586585            ENDIF 
    587586            IF( med_diag%DMS_ARAN%dgsave ) THEN 
    588                CALL wrk_alloc( jpi, jpj,   dms_aran2d    ) 
     587               ALLOCATE( dms_aran2d(1:jpi, 1:jpj) ) 
    589588               dms_aran2d(:,:)      = 0.0 !! 
    590589            ENDIF 
    591590            IF( med_diag%DMS_HALL%dgsave ) THEN 
    592                CALL wrk_alloc( jpi, jpj,   dms_hall2d    ) 
     591               ALLOCATE( dms_hall2d(1:jpi, 1:jpj) ) 
    593592               dms_hall2d(:,:)      = 0.0 !! 
    594593            ENDIF 
     
    597596         !! AXY (24/11/16): extra MOCSY diagnostics, 2D 
    598597         IF( med_diag%ATM_XCO2%dgsave ) THEN 
    599             CALL wrk_alloc( jpi, jpj, f_xco2a_2d      ) 
     598            ALLOCATE( f_xco2a_2d(1:jpi, 1:jpj) ) 
    600599            f_xco2a_2d(:,:)      = 0.0 !! 
    601600         ENDIF 
    602601         IF( med_diag%OCN_FCO2%dgsave ) THEN 
    603             CALL wrk_alloc( jpi, jpj, f_fco2w_2d      ) 
     602            ALLOCATE( f_fco2w_2d(1:jpi, 1:jpj) ) 
    604603            f_fco2w_2d(:,:)      = 0.0 !! 
    605604         ENDIF 
    606605         IF( med_diag%ATM_FCO2%dgsave ) THEN 
    607             CALL wrk_alloc( jpi, jpj, f_fco2a_2d      ) 
     606            ALLOCATE( f_fco2a_2d(1:jpi, 1:jpj) ) 
    608607            f_fco2a_2d(:,:)      = 0.0 !! 
    609608         ENDIF 
    610609         IF( med_diag%OCN_RHOSW%dgsave ) THEN 
    611             CALL wrk_alloc( jpi, jpj, f_ocnrhosw_2d  ) 
     610            ALLOCATE( f_ocnrhosw_2d(1:jpi, 1:jpj) ) 
    612611            f_ocnrhosw_2d(:,:)      = 0.0 !! 
    613612         ENDIF 
    614613         IF( med_diag%OCN_SCHCO2%dgsave ) THEN 
    615             CALL wrk_alloc( jpi, jpj, f_ocnschco2_2d ) 
     614            ALLOCATE( f_ocnschco2_2d(1:jpi, 1:jpj) ) 
    616615            f_ocnschco2_2d(:,:)      = 0.0 !! 
    617616         ENDIF 
    618617         IF( med_diag%OCN_KWCO2%dgsave ) THEN 
    619             CALL wrk_alloc( jpi, jpj, f_ocnkwco2_2d  ) 
     618            ALLOCATE( f_ocnkwco2_2d(1:jpi, 1:jpj) ) 
    620619            f_ocnkwco2_2d(:,:)      = 0.0 !! 
    621620         ENDIF 
    622621         IF( med_diag%OCN_K0%dgsave ) THEN 
    623             CALL wrk_alloc( jpi, jpj, f_ocnk0_2d      ) 
     622            ALLOCATE( f_ocnk0_2d(1:jpi, 1:jpj) ) 
    624623            f_ocnk0_2d(:,:)      = 0.0 !! 
    625624         ENDIF 
    626625         IF( med_diag%CO2STARAIR%dgsave ) THEN 
    627             CALL wrk_alloc( jpi, jpj, f_co2starair_2d ) 
     626            ALLOCATE( f_co2starair_2d(1:jpi, 1:jpj) ) 
    628627            f_co2starair_2d(:,:)      = 0.0 !! 
    629628         ENDIF 
    630629         IF( med_diag%OCN_DPCO2%dgsave ) THEN 
    631             CALL wrk_alloc( jpi, jpj, f_ocndpco2_2d  ) 
     630            ALLOCATE( f_ocndpco2_2d(1:jpi, 1:jpj) ) 
    632631            f_ocndpco2_2d(:,:)      = 0.0 !! 
    633632         ENDIF 
    634633# endif   
    635634         IF( med_diag%TPP3%dgsave ) THEN 
    636             CALL wrk_alloc( jpi, jpj, jpk,       tpp3d ) 
     635            ALLOCATE( tpp3d(1:jpi, 1:jpj, 1:jpk) ) 
    637636            tpp3d(:,:,:)      = 0.0 !!  
    638637         ENDIF 
    639638         IF( med_diag%DETFLUX3%dgsave ) THEN 
    640             CALL wrk_alloc( jpi, jpj, jpk,        detflux3d ) 
     639            ALLOCATE( detflux3d(1:jpi, 1:jpj, 1:jpk) ) 
    641640            detflux3d(:,:,:)      = 0.0 !!  
    642641         ENDIF 
    643642         IF( med_diag%REMIN3N%dgsave ) THEN 
    644              CALL wrk_alloc( jpi, jpj, jpk,        remin3dn ) 
     643             ALLOCATE( remin3dn(1:jpi, 1:jpj, 1:jpk) ) 
    645644             remin3dn(:,:,:)      = 0.0 !!  
    646645         ENDIF 
     
    650649         !!                   needed for coupling/passed through restart 
    651650         !! IF( med_diag%FGCO2%dgsave ) THEN 
    652             CALL wrk_alloc( jpi, jpj,   fgco2    ) 
     651            ALLOCATE( fgco2(1:jpi, 1:jpj) ) 
    653652            fgco2(:,:)      = 0.0 !! 
    654653         !! ENDIF 
    655654         IF( med_diag%INTDISSIC%dgsave ) THEN 
    656             CALL wrk_alloc( jpi, jpj,   intdissic    ) 
     655            ALLOCATE( intdissic(1:jpi, 1:jpj) ) 
    657656            intdissic(:,:)  = 0.0 !! 
    658657         ENDIF           
    659658         IF( med_diag%INTDISSIN%dgsave ) THEN 
    660             CALL wrk_alloc( jpi, jpj,   intdissin    ) 
     659            ALLOCATE( intdissin(1:jpi, 1:jpj) ) 
    661660            intdissin(:,:)  = 0.0 !! 
    662661         ENDIF           
    663662         IF( med_diag%INTDISSISI%dgsave ) THEN 
    664             CALL wrk_alloc( jpi, jpj,   intdissisi    ) 
     663            ALLOCATE( intdissisi(1:jpi, 1:jpj) ) 
    665664            intdissisi(:,:)  = 0.0 !! 
    666665         ENDIF           
    667666         IF( med_diag%INTTALK%dgsave ) THEN 
    668             CALL wrk_alloc( jpi, jpj,   inttalk    ) 
     667            ALLOCATE( inttalk(1:jpi, 1:jpj) ) 
    669668            inttalk(:,:)  = 0.0 !! 
    670669         ENDIF           
    671670         IF( med_diag%O2min%dgsave ) THEN 
    672             CALL wrk_alloc( jpi, jpj,   o2min    ) 
     671            ALLOCATE( o2min(1:jpi, 1:jpj) ) 
    673672            o2min(:,:)  = 1.e3 !! set to high value as we're looking for min(o2) 
    674673         ENDIF           
    675674         IF( med_diag%ZO2min%dgsave ) THEN 
    676             CALL wrk_alloc( jpi, jpj,   zo2min    ) 
     675            ALLOCATE( zo2min(1:jpi, 1:jpj) ) 
    677676            zo2min(:,:)  = 0.0 !! 
    678677         ENDIF           
    679678         IF( med_diag%FBDDTALK%dgsave  ) THEN 
    680             CALL wrk_alloc( jpi, jpj, fbddtalk ) 
     679            ALLOCATE( fbddtalk(1:jpi, 1:jpj) ) 
    681680            fbddtalk(:,:)  = 0.0 !!  
    682681         ENDIF 
    683682         IF( med_diag%FBDDTDIC%dgsave  ) THEN 
    684             CALL wrk_alloc( jpi, jpj, fbddtdic ) 
     683            ALLOCATE( fbddtdic(1:jpi, 1:jpj) ) 
    685684            fbddtdic(:,:)  = 0.0 !!  
    686685         ENDIF 
    687686         IF( med_diag%FBDDTDIFE%dgsave ) THEN 
    688             CALL wrk_alloc( jpi, jpj, fbddtdife ) 
     687            ALLOCATE( fbddtdife(1:jpi, 1:jpj) ) 
    689688            fbddtdife(:,:) = 0.0 !!  
    690689         ENDIF 
    691690         IF( med_diag%FBDDTDIN%dgsave  ) THEN 
    692             CALL wrk_alloc( jpi, jpj, fbddtdin ) 
     691            ALLOCATE( fbddtdin(1:jpi, 1:jpj) ) 
    693692            fbddtdin(:,:)  = 0.0 !!  
    694693         ENDIF 
    695694         IF( med_diag%FBDDTDISI%dgsave ) THEN 
    696             CALL wrk_alloc( jpi, jpj, fbddtdisi ) 
     695            ALLOCATE( fbddtdisi(1:jpi, 1:jpj) ) 
    697696            fbddtdisi(:,:) = 0.0 !!  
    698697         ENDIF 
     
    700699         !! AXY (10/11/16): CMIP6 diagnostics, 3D 
    701700         IF( med_diag%TPPD3%dgsave     ) THEN 
    702             CALL wrk_alloc( jpi, jpj, jpk, tppd3    ) 
     701            ALLOCATE( tppd3(1:jpi, 1:jpj, 1:jpk) ) 
    703702            tppd3(:,:,:)     = 0.0 !!  
    704703         ENDIF 
    705704         IF( med_diag%BDDTALK3%dgsave  ) THEN 
    706             CALL wrk_alloc( jpi, jpj, jpk, bddtalk3 ) 
     705            ALLOCATE( bddtalk3(1:jpi, 1:jpj, 1:jpk) ) 
    707706            bddtalk3(:,:,:)  = 0.0 !!  
    708707         ENDIF 
    709708         IF( med_diag%BDDTDIC3%dgsave  ) THEN 
    710             CALL wrk_alloc( jpi, jpj, jpk, bddtdic3 ) 
     709            ALLOCATE( bddtdic3(1:jpi, 1:jpj, 1:jpk) ) 
    711710            bddtdic3(:,:,:)  = 0.0 !!  
    712711         ENDIF 
    713712         IF( med_diag%BDDTDIFE3%dgsave ) THEN 
    714             CALL wrk_alloc( jpi, jpj, jpk, bddtdife3 ) 
     713            ALLOCATE( bddtdife3(1:jpi, 1:jpj, 1:jpk) ) 
    715714            bddtdife3(:,:,:) = 0.0 !!  
    716715         ENDIF 
    717716         IF( med_diag%BDDTDIN3%dgsave  ) THEN 
    718             CALL wrk_alloc( jpi, jpj, jpk, bddtdin3 ) 
     717            ALLOCATE( bddtdin3(1:jpi, 1:jpj, 1:jpk) ) 
    719718            bddtdin3(:,:,:)  = 0.0 !!  
    720719         ENDIF 
    721720         IF( med_diag%BDDTDISI3%dgsave ) THEN 
    722             CALL wrk_alloc( jpi, jpj, jpk, bddtdisi3 ) 
     721            ALLOCATE( bddtdisi3(1:jpi, 1:jpj, 1:jpk) ) 
    723722            bddtdisi3(:,:,:) = 0.0 !!  
    724723         ENDIF 
    725724         IF( med_diag%FD_NIT3%dgsave   ) THEN 
    726             CALL wrk_alloc( jpi, jpj, jpk, fd_nit3  ) 
     725            ALLOCATE( fd_nit3(1:jpi, 1:jpj, 1:jpk) ) 
    727726            fd_nit3(:,:,:)   = 0.0 !!  
    728727         ENDIF 
    729728         IF( med_diag%FD_SIL3%dgsave   ) THEN 
    730             CALL wrk_alloc( jpi, jpj, jpk, fd_sil3  ) 
     729            ALLOCATE( fd_sil3(1:jpi, 1:jpj, 1:jpk) ) 
    731730            fd_sil3(:,:,:)   = 0.0 !!  
    732731         ENDIF 
    733732         IF( med_diag%FD_CAR3%dgsave   ) THEN 
    734             CALL wrk_alloc( jpi, jpj, jpk, fd_car3  ) 
     733            ALLOCATE( fd_car3(1:jpi, 1:jpj, 1:jpk) ) 
    735734            fd_car3(:,:,:)   = 0.0 !!  
    736735         ENDIF 
    737736         IF( med_diag%FD_CAL3%dgsave   ) THEN 
    738             CALL wrk_alloc( jpi, jpj, jpk, fd_cal3  ) 
     737            ALLOCATE( fd_cal3(1:jpi, 1:jpj, 1:jpk) ) 
    739738            fd_cal3(:,:,:)   = 0.0 !!  
    740739         ENDIF 
    741740         IF( med_diag%DCALC3%dgsave    ) THEN 
    742             CALL wrk_alloc( jpi, jpj, jpk, dcalc3    ) 
     741            ALLOCATE( dcalc3(1:jpi, 1:jpj, 1:jpk) ) 
    743742            dcalc3(:,:,: )   = 0.0 !!  
    744743         ENDIF 
    745744         IF( med_diag%EXPC3%dgsave     ) THEN 
    746             CALL wrk_alloc( jpi, jpj, jpk, expc3  ) 
     745            ALLOCATE( expc3(1:jpi, 1:jpj, 1:jpk) ) 
    747746            expc3(:,:,: )    = 0.0 !!  
    748747         ENDIF 
    749748         IF( med_diag%EXPN3%dgsave     ) THEN 
    750             CALL wrk_alloc( jpi, jpj, jpk, expn3  ) 
     749            ALLOCATE( expn3(1:jpi, 1:jpj, 1:jpk) ) 
    751750            expn3(:,:,: )    = 0.0 !!  
    752751         ENDIF 
    753752         IF( med_diag%FEDISS3%dgsave   ) THEN 
    754             CALL wrk_alloc( jpi, jpj, jpk, fediss3  ) 
     753            ALLOCATE( fediss3(1:jpi, 1:jpj, 1:jpk) ) 
    755754            fediss3(:,:,: )  = 0.0 !!  
    756755         ENDIF 
    757756         IF( med_diag%FESCAV3%dgsave   ) THEN 
    758             CALL wrk_alloc( jpi, jpj, jpk, fescav3  ) 
     757            ALLOCATE( fescav3(1:jpi, 1:jpj, 1:jpk) ) 
    759758            fescav3(:,:,: )  = 0.0 !!  
    760759         ENDIF 
    761760         IF( med_diag%MIGRAZP3%dgsave   ) THEN 
    762             CALL wrk_alloc( jpi, jpj, jpk, migrazp3 ) 
     761            ALLOCATE( migrazp3(1:jpi, 1:jpj, 1:jpk) ) 
    763762            migrazp3(:,:,: )  = 0.0 !!  
    764763         ENDIF 
    765764         IF( med_diag%MIGRAZD3%dgsave   ) THEN 
    766             CALL wrk_alloc( jpi, jpj, jpk, migrazd3 ) 
     765            ALLOCATE( migrazd3(1:jpi, 1:jpj, 1:jpk) ) 
    767766            migrazd3(:,:,: )  = 0.0 !!  
    768767         ENDIF 
    769768         IF( med_diag%MEGRAZP3%dgsave   ) THEN 
    770             CALL wrk_alloc( jpi, jpj, jpk, megrazp3 ) 
     769            ALLOCATE( megrazp3(1:jpi, 1:jpj, 1:jpk) ) 
    771770            megrazp3(:,:,: )  = 0.0 !!  
    772771         ENDIF 
    773772         IF( med_diag%MEGRAZD3%dgsave   ) THEN 
    774             CALL wrk_alloc( jpi, jpj, jpk, megrazd3 ) 
     773            ALLOCATE( megrazd3(1:jpi, 1:jpj, 1:jpk) ) 
    775774            megrazd3(:,:,: )  = 0.0 !!  
    776775         ENDIF 
    777776         IF( med_diag%MEGRAZZ3%dgsave   ) THEN 
    778             CALL wrk_alloc( jpi, jpj, jpk, megrazz3 ) 
     777            ALLOCATE( megrazz3(1:jpi, 1:jpj, 1:jpk) ) 
    779778            megrazz3(:,:,: )  = 0.0 !!  
    780779         ENDIF 
    781780         IF( med_diag%O2SAT3%dgsave     ) THEN 
    782             CALL wrk_alloc( jpi, jpj, jpk, o2sat3    ) 
     781            ALLOCATE( o2sat3(1:jpi, 1:jpj, 1:jpk) ) 
    783782            o2sat3(:,:,: )    = 0.0 !!  
    784783         ENDIF 
    785784         IF( med_diag%PBSI3%dgsave      ) THEN 
    786             CALL wrk_alloc( jpi, jpj, jpk, pbsi3    ) 
     785            ALLOCATE( pbsi3(1:jpi, 1:jpj, 1:jpk) ) 
    787786            pbsi3(:,:,: )     = 0.0 !!  
    788787         ENDIF 
    789788         IF( med_diag%PCAL3%dgsave      ) THEN 
    790             CALL wrk_alloc( jpi, jpj, jpk, pcal3    ) 
     789            ALLOCATE( pcal3(1:jpi, 1:jpj, 1:jpk) ) 
    791790            pcal3(:,:,: )     = 0.0 !!  
    792791         ENDIF 
    793792         IF( med_diag%REMOC3%dgsave     ) THEN 
    794             CALL wrk_alloc( jpi, jpj, jpk, remoc3    ) 
     793            ALLOCATE( remoc3(1:jpi, 1:jpj, 1:jpk) ) 
    795794            remoc3(:,:,: )    = 0.0 !!  
    796795         ENDIF 
    797796         IF( med_diag%PNLIMJ3%dgsave    ) THEN 
    798             CALL wrk_alloc( jpi, jpj, jpk, pnlimj3  ) 
     797            ALLOCATE( pnlimj3(1:jpi, 1:jpj, 1:jpk) ) 
    799798            pnlimj3(:,:,: )   = 0.0 !!  
    800799         ENDIF 
    801800         IF( med_diag%PNLIMN3%dgsave    ) THEN 
    802             CALL wrk_alloc( jpi, jpj, jpk, pnlimn3  ) 
     801            ALLOCATE( pnlimn3(1:jpi, 1:jpj, 1:jpk) ) 
    803802            pnlimn3(:,:,: )   = 0.0 !!  
    804803         ENDIF 
    805804         IF( med_diag%PNLIMFE3%dgsave   ) THEN 
    806             CALL wrk_alloc( jpi, jpj, jpk, pnlimfe3 ) 
     805            ALLOCATE( pnlimfe3(1:jpi, 1:jpj, 1:jpk) ) 
    807806            pnlimfe3(:,:,: )  = 0.0 !!  
    808807         ENDIF 
    809808         IF( med_diag%PDLIMJ3%dgsave    ) THEN 
    810             CALL wrk_alloc( jpi, jpj, jpk, pdlimj3  ) 
     809            ALLOCATE( pdlimj3(1:jpi, 1:jpj, 1:jpk) ) 
    811810            pdlimj3(:,:,: )   = 0.0 !!  
    812811         ENDIF 
    813812         IF( med_diag%PDLIMN3%dgsave    ) THEN 
    814             CALL wrk_alloc( jpi, jpj, jpk, pdlimn3  ) 
     813            ALLOCATE( pdlimn3(1:jpi, 1:jpj, 1:jpk) ) 
    815814            pdlimn3(:,:,: )   = 0.0 !!  
    816815         ENDIF 
    817816         IF( med_diag%PDLIMFE3%dgsave   ) THEN 
    818             CALL wrk_alloc( jpi, jpj, jpk, pdlimfe3 ) 
     817            ALLOCATE( pdlimfe3(1:jpi, 1:jpj, 1:jpk) ) 
    819818            pdlimfe3(:,:,: )  = 0.0 !!  
    820819         ENDIF 
    821820         IF( med_diag%PDLIMSI3%dgsave   ) THEN 
    822             CALL wrk_alloc( jpi, jpj, jpk, pdlimsi3 ) 
     821            ALLOCATE( pdlimsi3(1:jpi, 1:jpj, 1:jpk) ) 
    823822            pdlimsi3(:,:,: )  = 0.0 !!  
    824823         ENDIF 
  • branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_mod.F90

    r8051 r8076  
    187187   !! Jpalm -- 11-10-2015 -- adapt diag to iom_use 
    188188   !! 2D var for diagnostics. 
    189    REAL(wp), POINTER, DIMENSION(:,:) :: fprn2d, fdpn2d, fprd2d, fdpd2d 
    190    REAL(wp), POINTER, DIMENSION(:,:) :: fprds2d, fsdiss2d, fgmipn2d 
    191    REAL(wp), POINTER, DIMENSION(:,:) :: fgmid2d, fdzmi2d, fgmepn2d 
    192    REAL(wp), POINTER, DIMENSION(:,:) :: fgmepd2d, fgmezmi2d, fgmed2d 
    193    REAL(wp), POINTER, DIMENSION(:,:) :: fdzme2d, fslown2d, fdd2d 
    194    REAL(wp), POINTER, DIMENSION(:,:) :: ffetop2d, ffebot2d, ffescav2d 
    195    REAL(wp), POINTER, DIMENSION(:,:) :: fjln2d, fnln2d, ffln2d, fjld2d 
    196    REAL(wp), POINTER, DIMENSION(:,:) :: fnld2d, ffld2d, fsld2d2 
    197    REAL(wp), POINTER, DIMENSION(:,:) :: fsld2d, fregen2d, fregensi2d 
    198    REAL(wp), POINTER, DIMENSION(:,:) :: ftempn2d, ftempsi2d, ftempfe2d 
    199    REAL(wp), POINTER, DIMENSION(:,:) :: ftempc2d, ftempca2d, freminn2d 
    200    REAL(wp), POINTER, DIMENSION(:,:) :: freminsi2d, freminfe2d 
    201    REAL(wp), POINTER, DIMENSION(:,:) :: freminc2d, freminca2d 
    202    REAL(wp), POINTER, DIMENSION(:,:) :: zw2d 
    203 # if defined key_roam 
    204    REAL(wp), POINTER, DIMENSION(:,:) :: ffastca2d, rivn2d, rivsi2d 
    205    REAL(wp), POINTER, DIMENSION(:,:) :: rivc2d, rivalk2d, fslowc2d 
    206    REAL(wp), POINTER, DIMENSION(:,:) :: fdpn22d, fdpd22d, fdzmi22d 
    207    REAL(wp), POINTER, DIMENSION(:,:) :: fdzme22d, zimesn2d, zimesd2d 
    208    REAL(wp), POINTER, DIMENSION(:,:) :: zimesc2d, zimesdc2d, ziexcr2d 
    209    REAL(wp), POINTER, DIMENSION(:,:) :: ziresp2d, zigrow2d, zemesn2d 
    210    REAL(wp), POINTER, DIMENSION(:,:) :: zemesd2d, zemesc2d, zemesdc2d 
    211    REAL(wp), POINTER, DIMENSION(:,:) :: zeexcr2d, zeresp2d, zegrow2d 
    212    REAL(wp), POINTER, DIMENSION(:,:) :: mdetc2d, gmidc2d, gmedc2d 
    213    REAL(wp), POINTER, DIMENSION(:,:) :: f_pco2a2d, f_pco2w2d, f_co2flux2d 
    214    REAL(wp), POINTER, DIMENSION(:,:) :: f_TDIC2d, f_TALK2d, f_kw6602d 
    215    REAL(wp), POINTER, DIMENSION(:,:) :: f_pp02d, f_o2flux2d, f_o2sat2d 
    216    REAL(wp), POINTER, DIMENSION(:,:) :: dms_andr2d, dms_simo2d, dms_aran2d 
    217    REAL(wp), POINTER, DIMENSION(:,:) :: dms_hall2d, dms_surf2d 
    218    REAL(wp), POINTER, DIMENSION(:,:) :: iben_n2d, iben_fe2d, iben_c2d 
    219    REAL(wp), POINTER, DIMENSION(:,:) :: iben_si2d, iben_ca2d, oben_n2d 
    220    REAL(wp), POINTER, DIMENSION(:,:) :: oben_fe2d, oben_c2d, oben_si2d 
    221    REAL(wp), POINTER, DIMENSION(:,:) :: oben_ca2d, sfr_ocal2d 
    222    REAL(wp), POINTER, DIMENSION(:,:) :: sfr_oarg2d, lyso_ca2d  
     189   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fprn2d, fdpn2d, fprd2d, fdpd2d 
     190   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fprds2d, fsdiss2d, fgmipn2d 
     191   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fgmid2d, fdzmi2d, fgmepn2d 
     192   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fgmepd2d, fgmezmi2d, fgmed2d 
     193   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fdzme2d, fslown2d, fdd2d 
     194   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ffetop2d, ffebot2d, ffescav2d 
     195   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fjln2d, fnln2d, ffln2d, fjld2d 
     196   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fnld2d, ffld2d, fsld2d2 
     197   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fsld2d, fregen2d, fregensi2d 
     198   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ftempn2d, ftempsi2d, ftempfe2d 
     199   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ftempc2d, ftempca2d, freminn2d 
     200   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: freminsi2d, freminfe2d 
     201   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: freminc2d, freminca2d 
     202   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zw2d 
     203# if defined key_roam 
     204   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ffastca2d, rivn2d, rivsi2d 
     205   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: rivc2d, rivalk2d, fslowc2d 
     206   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fdpn22d, fdpd22d, fdzmi22d 
     207   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fdzme22d, zimesn2d, zimesd2d 
     208   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zimesc2d, zimesdc2d, ziexcr2d 
     209   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ziresp2d, zigrow2d, zemesn2d 
     210   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zemesd2d, zemesc2d, zemesdc2d 
     211   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zeexcr2d, zeresp2d, zegrow2d 
     212   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: mdetc2d, gmidc2d, gmedc2d 
     213   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_pco2a2d, f_pco2w2d, f_co2flux2d 
     214   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_TDIC2d, f_TALK2d, f_kw6602d 
     215   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_pp02d, f_o2flux2d, f_o2sat2d 
     216   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: dms_andr2d, dms_simo2d, dms_aran2d 
     217   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: dms_hall2d, dms_surf2d 
     218   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: iben_n2d, iben_fe2d, iben_c2d 
     219   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: iben_si2d, iben_ca2d, oben_n2d 
     220   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: oben_fe2d, oben_c2d, oben_si2d 
     221   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: oben_ca2d, sfr_ocal2d 
     222   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: sfr_oarg2d, lyso_ca2d  
    223223   !! AXY (23/11/16): extra MOCSY diagnostics 
    224    REAL(wp), POINTER, DIMENSION(:,:) :: f_xco2a_2d, f_fco2w_2d, f_fco2a_2d 
    225    REAL(wp), POINTER, DIMENSION(:,:) :: f_ocnrhosw_2d, f_ocnschco2_2d 
    226    REAL(wp), POINTER, DIMENSION(:,:) :: f_ocnkwco2_2d 
    227    REAL(wp), POINTER, DIMENSION(:,:) :: f_ocnk0_2d, f_co2starair_2d 
    228    REAL(wp), POINTER, DIMENSION(:,:) :: f_ocndpco2_2d 
     224   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_xco2a_2d, f_fco2w_2d, f_fco2a_2d 
     225   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_ocnrhosw_2d, f_ocnschco2_2d 
     226   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_ocnkwco2_2d 
     227   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_ocnk0_2d, f_co2starair_2d 
     228   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_ocndpco2_2d 
    229229# endif 
    230230   !! 
     
    236236   !! 2D var for new CMIP6 diagnostics (behind a key_roam ifdef  
    237237   !! for simplicity) 
    238    REAL(wp), POINTER, DIMENSION(:,:) :: fgco2,intdissic,intdissin 
    239    REAL(wp), POINTER, DIMENSION(:,:) :: intdissisi,inttalk,o2min,zo2min 
    240    REAL(wp), POINTER, DIMENSION(:,:) :: fbddtalk,fbddtdic,fbddtdife 
    241    REAL(wp), POINTER, DIMENSION(:,:) :: fbddtdin,fbddtdisi 
     238   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fgco2,intdissic,intdissin 
     239   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: intdissisi,inttalk,o2min,zo2min 
     240   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fbddtalk,fbddtdic,fbddtdife 
     241   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fbddtdin,fbddtdisi 
    242242   !! 
    243243   !! 3D var for new CMIP6 diagnostics 
    244    REAL(wp), POINTER, DIMENSION(:,:,:) :: tppd3 
    245    REAL(wp), POINTER, DIMENSION(:,:,:) :: bddtalk3,bddtdic3,bddtdife3 
    246    REAL(wp), POINTER, DIMENSION(:,:,:) :: bddtdin3, bddtdisi3 
    247    REAL(wp), POINTER, DIMENSION(:,:,:) :: fd_nit3,fd_sil3,fd_car3,fd_cal3 
    248    REAL(wp), POINTER, DIMENSION(:,:,:) :: co33,co3satarag3,co3satcalc3,dcalc3 
    249    REAL(wp), POINTER, DIMENSION(:,:,:) :: expc3,expn3 
    250    REAL(wp), POINTER, DIMENSION(:,:,:) :: fediss3,fescav3 
    251    REAL(wp), POINTER, DIMENSION(:,:,:) :: migrazp3,migrazd3,megrazp3 
    252    REAL(wp), POINTER, DIMENSION(:,:,:) :: megrazd3, megrazz3 
    253    REAL(wp), POINTER, DIMENSION(:,:,:) :: o2sat3,pbsi3,pcal3,remoc3 
    254    REAL(wp), POINTER, DIMENSION(:,:,:) :: pnlimj3,pnlimn3,pnlimfe3 
    255    REAL(wp), POINTER, DIMENSION(:,:,:) :: pdlimj3,pdlimn3,pdlimfe3,pdlimsi3 
     244   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: tppd3 
     245   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: bddtalk3,bddtdic3,bddtdife3 
     246   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: bddtdin3, bddtdisi3 
     247   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: fd_nit3,fd_sil3,fd_car3,fd_cal3 
     248   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: co33,co3satarag3 
     249   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: co3satcalc3,dcalc3 
     250   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: expc3,expn3 
     251   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: fediss3,fescav3 
     252   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: migrazp3,migrazd3,megrazp3 
     253   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: megrazd3, megrazz3 
     254   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: o2sat3,pbsi3,pcal3,remoc3 
     255   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: pnlimj3,pnlimn3,pnlimfe3 
     256   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: pdlimj3,pdlimn3,pdlimfe3,pdlimsi3 
    256257# endif 
    257258   !!---------------------------------------------------------------------- 
  • branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA/detritus.F90

    r8023 r8076  
    6060            !! OPEN wet point IF..THEN loop 
    6161            if (tmask(ji,jj,jk) == 1) then 
    62  
    6362               !! 
    6463               if (jmd.eq.1) then 
  • branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA/zooplankton.F90

    r8062 r8076  
    298298                                  fmeexcr(ji,jj) + ((1.0 - xbetan) *        & 
    299299                                                    finme(ji,jj)) ) 
    300  
    301300            ENDIF 
    302301         ENDDO 
Note: See TracChangeset for help on using the changeset viewer.