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.
bio_medusa_init.F90 in branches/NERC/dev_r5518_GO6_under_ice_relax/NEMOGCM/NEMO/TOP_SRC/MEDUSA – NEMO

source: branches/NERC/dev_r5518_GO6_under_ice_relax/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_init.F90 @ 10045

Last change on this file since 10045 was 10045, checked in by jpalmier, 6 years ago

Andrew's changes to add the OMIP double_DIC (activated with key_omip_dic)

File size: 34.6 KB
Line 
1MODULE bio_medusa_init_mod
2   !!======================================================================
3   !!                         ***  MODULE bio_medusa_init  ***
4   !! Initialisation for TRC_BIO_MEDUSA
5   !!======================================================================
6   !! History :
7   !!   -   ! 2017-04 (M. Stringer)        Code taken from trcbio_medusa.F90
8   !!   -   ! 2017-08 (A. Yool)            Add slow-sinking detrius variables
9   !!   -   ! 2018-08 (A. Yool)            add OMIP preindustrial DIC
10   !!----------------------------------------------------------------------
11#if defined key_medusa
12   !!----------------------------------------------------------------------
13   !!                                                   MEDUSA bio-model
14   !!----------------------------------------------------------------------
15
16   IMPLICIT NONE
17   PRIVATE
18     
19   PUBLIC   bio_medusa_init    ! Called in trcbio_medusa.F90
20
21   !!----------------------------------------------------------------------
22   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)
23   !! $Id$
24   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
25   !!----------------------------------------------------------------------
26
27CONTAINS
28
29   SUBROUTINE bio_medusa_init( kt )
30      !!---------------------------------------------------------------------
31      !!                     ***  ROUTINE bio_medusa_init  ***
32      !! This called from TRC_BIO_MEDUSA and
33      !!  - zeroes arrays used in TRC_BIO_MEDUSA
34      !!  - sets up the arrays needed for the diagnostics
35      !!----------------------------------------------------------------------
36      USE bio_medusa_mod
37      USE par_oce,           ONLY: jpi, jpj, jpk
38      USE sms_medusa,        ONLY: jdms
39      USE trc,               ONLY: ln_diatrc, med_diag, nittrc000 
40      USE in_out_manager,    ONLY: lwp
41
42# if defined key_iomput
43      USE iom,               ONLY: lk_iomput, numout
44      USE trcnam_medusa,     ONLY: trc_nam_iom_medusa
45# endif
46
47      !! time (integer timestep)
48      INTEGER, INTENT( in ) ::    kt
49
50      IF( ln_diatrc ) THEN
51         IF (lwp) write (numout,*) 'Diagnostics are now ALL through XIOS (key_xios)'
52         IF (lwp) write (numout,*) 'No more key_diatrc anymore.'
53      ENDIF
54
55      !!----------------------------------------------------------------------
56      !! Zero fast-sinking detritus 2D fields
57      !!----------------------------------------------------------------------
58      !!
59      ffastn(:,:)  = 0.0        !! organic nitrogen
60      ffastsi(:,:) = 0.0        !! biogenic silicon
61      ffastfe(:,:) = 0.0        !! organic iron
62      ffastc(:,:)  = 0.0        !! organic carbon
63      ffastca(:,:) = 0.0        !! biogenic calcium carbonate
64      !!
65      fsedn(:,:)   = 0.0        !! Seafloor flux of N
66      fsedsi(:,:)  = 0.0        !! Seafloor flux of Si
67      fsedfe(:,:)  = 0.0        !! Seafloor flux of Fe
68      fsedc(:,:)   = 0.0        !! Seafloor flux of C
69      fsedca(:,:)  = 0.0        !! Seafloor flux of CaCO3
70      !!
71      fregenfast(:,:)   = 0.0   !! integrated  N regeneration (fast detritus)
72      fregenfastsi(:,:) = 0.0   !! integrated Si regeneration (fast detritus)
73# if defined key_roam
74      fregenfastc(:,:)  = 0.0   !! integrated  C regeneration (fast detritus)
75# endif
76      !!
77      fccd(:,:)    = 0.0        !! last depth level before CCD
78
79      !!----------------------------------------------------------------------
80      !! blank nutrient/flux inventories
81      !!----------------------------------------------------------------------
82      !!
83      fflx_n(:,:)  = 0.0        !! nitrogen flux total
84      fflx_si(:,:) = 0.0        !! silicon  flux total
85      fflx_fe(:,:) = 0.0        !! iron     flux total
86      fifd_n(:,:)  = 0.0        !! nitrogen fast detritus production
87      fifd_si(:,:) = 0.0        !! silicon  fast detritus production
88      fifd_fe(:,:) = 0.0        !! iron     fast detritus production
89      fofd_n(:,:)  = 0.0        !! nitrogen fast detritus remineralisation
90      fofd_si(:,:) = 0.0        !! silicon  fast detritus remineralisation
91      fofd_fe(:,:) = 0.0        !! iron     fast detritus remineralisation
92# if defined key_roam
93      fflx_c(:,:)  = 0.0        !! carbon     flux total
94      fflx_a(:,:)  = 0.0        !! alkalinity flux total
95      fflx_o2(:,:) = 0.0        !! oxygen     flux total
96      ftot_c(:,:)  = 0.0        !! carbon     inventory
97      ftot_a(:,:)  = 0.0        !! alkalinity inventory
98      ftot_o2(:,:) = 0.0        !! oxygen     inventory
99      fifd_c(:,:)  = 0.0        !! carbon     fast detritus production
100! I don't think fifd_a or fifd_o2 are used - marc 11/5/17
101!      fifd_a(:,:)  = 0.0        !! alkalinity fast detritus production
102!      fifd_o2(:,:) = 0.0        !! oxygen     fast detritus production
103      fofd_c(:,:)  = 0.0        !! carbon     fast detritus remineralisation
104! I don't think fofd_a or fofd_o2 are used - marc 11/5/17
105!      fofd_a(:,:)  = 0.0        !! alkalinity fast detritus remineralisation
106!      fofd_o2(:,:) = 0.0        !! oxygen     fast detritus remineralisation
107      !!
108      fnit_prod(:,:) = 0.0      !! (organic)   nitrogen production
109      fnit_cons(:,:) = 0.0      !! (organic)   nitrogen consumption
110      fsil_prod(:,:) = 0.0      !! (inorganic) silicon production
111      fsil_cons(:,:) = 0.0      !! (inorganic) silicon consumption
112      fcar_prod(:,:) = 0.0      !! (organic)   carbon production
113      fcar_cons(:,:) = 0.0      !! (organic)   carbon consumption
114      !!
115      foxy_prod(:,:) = 0.0      !! oxygen production
116      foxy_cons(:,:) = 0.0      !! oxygen consumption
117      foxy_anox(:,:) = 0.0      !! unrealised oxygen consumption
118      !!
119# endif
120      ftot_n(:,:)   = 0.0       !! N inventory
121      ftot_si(:,:)  = 0.0       !! Si inventory
122      ftot_fe(:,:)  = 0.0       !! Fe inventory
123      ftot_pn(:,:)  = 0.0       !! integrated non-diatom phytoplankton
124      ftot_pd(:,:)  = 0.0       !! integrated diatom     phytoplankton
125      ftot_zmi(:,:) = 0.0       !! integrated microzooplankton
126      ftot_zme(:,:) = 0.0       !! integrated mesozooplankton
127      ftot_det(:,:) = 0.0       !! integrated slow detritus, nitrogen
128      ftot_dtc(:,:) = 0.0       !! integrated slow detritus, carbon
129      !!
130      fzmi_i(:,:)  = 0.0        !! material grazed by microzooplankton
131      fzmi_o(:,:)  = 0.0        !! ... sum of fate of this material
132      fzme_i(:,:)  = 0.0        !! material grazed by  mesozooplankton
133      fzme_o(:,:)  = 0.0        !! ... sum of fate of this material
134      !!
135      f_sbenin_n(:,:)  = 0.0    !! slow detritus N  -> benthic pool
136      f_sbenin_fe(:,:) = 0.0    !! slow detritus Fe -> benthic pool
137      f_sbenin_c(:,:)  = 0.0    !! slow detritus C  -> benthic pool
138      f_fbenin_n(:,:)  = 0.0    !! fast detritus N  -> benthic pool
139      f_fbenin_fe(:,:) = 0.0    !! fast detritus Fe -> benthic pool
140      f_fbenin_si(:,:) = 0.0    !! fast detritus Si -> benthic pool
141      f_fbenin_c(:,:)  = 0.0    !! fast detritus C  -> benthic pool
142      f_fbenin_ca(:,:) = 0.0    !! fast detritus Ca -> benthic pool
143      !!
144      f_benout_n(:,:)  = 0.0    !! benthic N  pool  -> dissolved
145      f_benout_fe(:,:) = 0.0    !! benthic Fe pool  -> dissolved
146      f_benout_si(:,:) = 0.0    !! benthic Si pool  -> dissolved
147      f_benout_c(:,:)  = 0.0    !! benthic C  pool  -> dissolved
148      f_benout_ca(:,:) = 0.0    !! benthic Ca pool  -> dissolved
149      !!
150      f_benout_lyso_ca(:,:) = 0.0 !! benthic Ca pool  -> dissolved (when it shouldn't!)
151      !!
152      f_runoff(:,:)  = 0.0      !! riverine runoff
153      f_riv_n(:,:)   = 0.0      !! riverine N   input
154      f_riv_si(:,:)  = 0.0      !! riverine Si  input
155      f_riv_c(:,:)   = 0.0      !! riverine C   input
156      f_riv_alk(:,:) = 0.0      !! riverine alk input
157      !!
158      !! Jpalm -- 06-03-2017 -- Forgotten var to init
159      f_omarg(:,:) = 0.0        !!
160      f_omcal(:,:) = 0.0 
161      xFree(:,:) = 0.0          !! state variables for iron-ligand system
162      fcomm_resp(:,:) = 0.0 
163      fprn_ml(:,:) = 0.0        !! mixed layer PP diagnostics
164      fprd_ml(:,:) = 0.0        !! mixed layer PP diagnostics
165      !! AXY (16/08/17)
166      fchl_ml(:,:) = 0.0   !! mixed layer chlorophyll diagnostics
167      !!
168      fslownflux(:,:) = 0.0 
169      fslowcflux(:,:) = 0.0 
170      !!
171      !! JPALM -- 21-09-2017 -- needed to debug air-sea carb
172      f_xco2a(:,:)  = 0.0
173      f_pco2w(:,:)  = 0.0
174      f_ph(:,:)     = 0.0
175      f_kw660(:,:)  = 0.0
176      ztmp(:,:)  = 0.0
177      zsal(:,:)  = 0.0
178      zalk(:,:)  = 0.0
179      zdic(:,:)  = 0.0
180      zsil(:,:)  = 0.0
181      zpho(:,:)  = 0.0
182      f_co2flux(:,:)  = 0.0 
183      f_pco2atm(:,:)  = 0.0
184      f_h2co3(:,:)    = 0.0
185      f_hco3(:,:)     = 0.0
186      f_co3(:,:)      = 0.0
187      f_omarg(:,:)    = 0.0
188      f_omcal(:,:)    = 0.0
189# if defined key_omip_dic
190      zomd(:,:)          = 0.0
191      f_pi_xco2a(:,:)    = 0.0
192      f_pi_pco2w(:,:)    = 0.0
193      f_pi_ph(:,:)       = 0.0
194      f_pi_co2flux(:,:)  = 0.0 
195      f_pi_pco2atm(:,:)  = 0.0
196      f_pi_h2co3(:,:)    = 0.0
197      f_pi_hco3(:,:)     = 0.0
198      f_pi_co3(:,:)      = 0.0
199      f_pi_omarg(:,:)    = 0.0
200      f_pi_omcal(:,:)    = 0.0
201# endif     
202      !!
203      !! AXY (08/08/17): zero slow detritus fluxes
204      fslowsink(:,:)  = 0.0
205# if defined key_roam
206      fslowsinkc(:,:) = 0.0
207# endif     
208      !!
209      !! allocate and initiate 2D diag
210      !! -----------------------------
211      !! Juju :: add kt condition !!
212      IF ( lk_iomput ) THEN 
213
214         !! initialise iom_use test
215         IF ( kt == nittrc000 )   CALL trc_nam_iom_medusa 
216
217         ALLOCATE( zw2d(1:jpi, 1:jpj) )
218         zw2d(:,:)      = 0.0   !!
219         IF ( med_diag%PRN%dgsave ) THEN
220            ALLOCATE( fprn2d(1:jpi, 1:jpj) )
221            fprn2d(:,:)      = 0.0 !!
222         ENDIF
223         IF ( med_diag%MPN%dgsave ) THEN
224            ALLOCATE( fdpn2d(1:jpi, 1:jpj) )
225            fdpn2d(:,:)      = 0.0 !!
226         ENDIF
227         IF ( med_diag%PRD%dgsave ) THEN
228            ALLOCATE( fprd2d(1:jpi, 1:jpj) )
229            fprd2d(:,:)      = 0.0 !!
230         ENDIF
231         IF( med_diag%MPD%dgsave ) THEN
232            ALLOCATE( fdpd2d(1:jpi, 1:jpj) )
233            fdpd2d(:,:)      = 0.0 !!
234         ENDIF
235         IF( med_diag%OPAL%dgsave ) THEN
236            ALLOCATE( fprds2d(1:jpi, 1:jpj) )
237            fprds2d(:,:)      = 0.0 !!
238         ENDIF
239         IF( med_diag%OPALDISS%dgsave ) THEN
240            ALLOCATE( fsdiss2d(1:jpi, 1:jpj) )
241            fsdiss2d(:,:)      = 0.0 !!
242         ENDIF
243         IF( med_diag%GMIPn%dgsave ) THEN
244            ALLOCATE( fgmipn2d(1:jpi, 1:jpj) )
245            fgmipn2d(:,:)      = 0.0 !!
246         ENDIF
247         IF( med_diag%GMID%dgsave ) THEN
248            ALLOCATE( fgmid2d(1:jpi, 1:jpj) )
249            fgmid2d(:,:)      = 0.0 !!
250         ENDIF
251         IF( med_diag%MZMI%dgsave ) THEN
252            ALLOCATE( fdzmi2d(1:jpi, 1:jpj) )
253            fdzmi2d(:,:)      = 0.0 !!
254         ENDIF
255         IF( med_diag%GMEPN%dgsave ) THEN
256            ALLOCATE( fgmepn2d(1:jpi, 1:jpj) )
257            fgmepn2d(:,:)      = 0.0 !!
258         ENDIF
259         IF( med_diag%GMEPD%dgsave ) THEN
260            ALLOCATE( fgmepd2d(1:jpi, 1:jpj) )
261            fgmepd2d(:,:)      = 0.0 !!
262         ENDIF
263         IF( med_diag%GMEZMI%dgsave ) THEN
264            ALLOCATE( fgmezmi2d(1:jpi, 1:jpj) )
265            fgmezmi2d(:,:)      = 0.0 !!
266         ENDIF
267         IF( med_diag%GMED%dgsave ) THEN
268            ALLOCATE( fgmed2d(1:jpi, 1:jpj) )
269            fgmed2d(:,:)      = 0.0 !!
270         ENDIF
271         IF( med_diag%MZME%dgsave ) THEN
272            ALLOCATE( fdzme2d(1:jpi, 1:jpj) )
273            fdzme2d(:,:)      = 0.0 !!
274         ENDIF
275         IF( med_diag%DETN%dgsave ) THEN
276            ALLOCATE( fslown2d(1:jpi, 1:jpj) )
277            fslown2d(:,:)      = 0.0 !!
278         ENDIF
279         IF( med_diag%MDET%dgsave ) THEN
280            ALLOCATE( fdd2d(1:jpi, 1:jpj) )
281            fdd2d(:,:)      = 0.0 !!
282         ENDIF     
283         IF( med_diag%AEOLIAN%dgsave ) THEN
284            ALLOCATE( ffetop2d(1:jpi, 1:jpj) )
285            ffetop2d(:,:)      = 0.0 !!
286         ENDIF
287         IF( med_diag%BENTHIC%dgsave ) THEN
288            ALLOCATE( ffebot2d(1:jpi, 1:jpj) )
289            ffebot2d(:,:)      = 0.0 !!
290         ENDIF
291         IF( med_diag%SCAVENGE%dgsave ) THEN
292            ALLOCATE( ffescav2d(1:jpi, 1:jpj) )
293            ffescav2d(:,:)      = 0.0 !!
294         ENDIF
295         IF( med_diag%PN_JLIM%dgsave ) THEN
296            ALLOCATE( fjln2d(1:jpi, 1:jpj) )
297            fjln2d(:,:)      = 0.0 !!
298         ENDIF
299         IF( med_diag%PN_NLIM%dgsave ) THEN
300            ALLOCATE( fnln2d(1:jpi, 1:jpj) )
301            fnln2d(:,:)      = 0.0 !!
302         ENDIF
303         IF( med_diag%PN_FELIM%dgsave ) THEN
304            ALLOCATE( ffln2d(1:jpi, 1:jpj) )
305            ffln2d(:,:)      = 0.0 !!
306         ENDIF
307         IF( med_diag%PD_JLIM%dgsave ) THEN
308            ALLOCATE( fjld2d(1:jpi, 1:jpj) )
309            fjld2d(:,:)      = 0.0 !!
310         ENDIF
311         IF( med_diag%PD_NLIM%dgsave ) THEN
312            ALLOCATE( fnld2d(1:jpi, 1:jpj) )
313            fnld2d(:,:)      = 0.0 !!
314         ENDIF
315         IF( med_diag%PD_FELIM%dgsave ) THEN
316            ALLOCATE( ffld2d(1:jpi, 1:jpj) )
317            ffld2d(:,:)      = 0.0 !!
318         ENDIF
319         IF( med_diag%PD_SILIM%dgsave ) THEN
320            ALLOCATE( fsld2d2(1:jpi, 1:jpj) )
321            fsld2d2(:,:)      = 0.0 !!
322         ENDIF
323         IF( med_diag%PDSILIM2%dgsave ) THEN
324            ALLOCATE( fsld2d(1:jpi, 1:jpj) )
325            fsld2d(:,:)      = 0.0 !!
326         ENDIF
327!!
328!! skip SDT_XXXX diagnostics here
329!!
330         IF( med_diag%TOTREG_N%dgsave ) THEN
331            ALLOCATE( fregen2d(1:jpi, 1:jpj) )
332            fregen2d(:,:)      = 0.0 !!
333         ENDIF
334         IF( med_diag%TOTRG_SI%dgsave ) THEN
335            ALLOCATE( fregensi2d(1:jpi, 1:jpj) )
336            fregensi2d(:,:)      = 0.0 !!
337         ENDIF
338!!
339!! skip REG_XXXX diagnostics here
340!!
341         IF( med_diag%FASTN%dgsave ) THEN
342            ALLOCATE( ftempn2d(1:jpi, 1:jpj) )
343            ftempn2d(:,:)      = 0.0 !!
344         ENDIF
345         IF( med_diag%FASTSI%dgsave ) THEN
346            ALLOCATE( ftempsi2d(1:jpi, 1:jpj) )
347            ftempsi2d(:,:)      = 0.0 !!
348         ENDIF
349         IF( med_diag%FASTFE%dgsave ) THEN
350            ALLOCATE( ftempfe2d(1:jpi, 1:jpj) )
351            ftempfe2d(:,:)      = 0.0 !!
352         ENDIF
353         IF( med_diag%FASTC%dgsave ) THEN
354            ALLOCATE( ftempc2d(1:jpi, 1:jpj) )
355            ftempc2d(:,:)      = 0.0 !!
356         ENDIF
357         IF( med_diag%FASTCA%dgsave ) THEN
358            ALLOCATE( ftempca2d(1:jpi, 1:jpj) )
359            ftempca2d(:,:)      = 0.0 !!
360         ENDIF     
361!!
362!! skip FDT_XXXX, RG_XXXXF, FDS_XXXX, RGS_XXXXF diagnostics here
363!!
364         IF( med_diag%REMINN%dgsave ) THEN
365            ALLOCATE( freminn2d(1:jpi, 1:jpj) )
366            freminn2d(:,:)      = 0.0 !!
367         ENDIF
368         IF( med_diag%REMINSI%dgsave ) THEN
369            ALLOCATE( freminsi2d(1:jpi, 1:jpj) )
370            freminsi2d(:,:)      = 0.0 !!
371         ENDIF
372         IF( med_diag%REMINFE%dgsave ) THEN
373            ALLOCATE( freminfe2d(1:jpi, 1:jpj) )
374            freminfe2d(:,:)      = 0.0 !!
375         ENDIF
376         IF( med_diag%REMINC%dgsave ) THEN
377            ALLOCATE( freminc2d(1:jpi, 1:jpj) )
378            freminc2d(:,:)      = 0.0 !!
379         ENDIF
380         IF( med_diag%REMINCA%dgsave ) THEN
381            ALLOCATE( freminca2d(1:jpi, 1:jpj) )
382            freminca2d(:,:)      = 0.0 !!
383         ENDIF
384
385# if defined key_roam
386!!
387!! skip SEAFLRXX, MED_XXXX, INTFLX_XX, INT_XX, ML_XXX, OCAL_XXX, FE_XXXX, MED_XZE, WIND diagnostics here
388!!
389         IF( med_diag%RR_0100%dgsave ) THEN
390            ALLOCATE( ffastca2d(1:jpi, 1:jpj) )
391            ffastca2d(:,:)      = 0.0 !!
392         ENDIF
393
394         IF( med_diag%ATM_PCO2%dgsave ) THEN
395            ALLOCATE( f_pco2a2d(1:jpi, 1:jpj) )
396            f_pco2a2d(:,:)      = 0.0 !!
397         ENDIF
398#  if defined key_omip_dic         
399         IF( med_diag%PI_ATM_PCO2%dgsave ) THEN
400            ALLOCATE( f_pi_pco2a2d(1:jpi, 1:jpj) )
401            f_pi_pco2a2d(:,:)      = 0.0 !!
402         ENDIF
403#  endif
404!!
405!! skip OCN_PH diagnostic here
406!!
407         IF( med_diag%OCN_PCO2%dgsave ) THEN
408            ALLOCATE( f_pco2w2d(1:jpi, 1:jpj) )
409            f_pco2w2d(:,:)      = 0.0 !!
410         ENDIF
411#  if defined key_omip_dic         
412         IF( med_diag%PI_OCN_PCO2%dgsave ) THEN
413            ALLOCATE( f_pi_pco2w2d(1:jpi, 1:jpj) )
414            f_pi_pco2w2d(:,:)   = 0.0 !!
415         ENDIF
416#  endif
417!!
418!! skip OCNH2CO3, OCN_HCO3, OCN_CO3 diagnostics here
419!!
420         IF( med_diag%CO2FLUX%dgsave ) THEN
421            ALLOCATE( f_co2flux2d(1:jpi, 1:jpj) )
422            f_co2flux2d(:,:)      = 0.0 !!
423         ENDIF
424#  if defined key_omip_dic         
425         IF( med_diag%PI_CO2FLUX%dgsave ) THEN
426            ALLOCATE( f_pi_co2flux2d(1:jpi, 1:jpj) )
427            f_pi_co2flux2d(:,:)   = 0.0 !!
428         ENDIF
429#  endif
430!!
431!! skip OM_XXX diagnostics here
432!!
433         IF( med_diag%TCO2%dgsave ) THEN
434            ALLOCATE( f_TDIC2d(1:jpi, 1:jpj) )
435            f_TDIC2d(:,:)      = 0.0 !!
436         ENDIF
437#  if defined key_omip_dic         
438         IF( med_diag%PI_TCO2%dgsave ) THEN
439            ALLOCATE( f_pi_TDIC2d(1:jpi, 1:jpj) )
440            f_pi_TDIC2d(:,:)      = 0.0 !!
441         ENDIF
442#  endif
443         IF( med_diag%TALK%dgsave ) THEN
444            ALLOCATE( f_TALK2d(1:jpi, 1:jpj) )
445            f_TALK2d(:,:)      = 0.0 !!
446         ENDIF
447         IF( med_diag%KW660%dgsave ) THEN
448            ALLOCATE( f_kw6602d(1:jpi, 1:jpj) )
449            f_kw6602d(:,:)      = 0.0 !!
450         ENDIF
451         IF( med_diag%ATM_PP0%dgsave ) THEN
452            ALLOCATE( f_pp02d(1:jpi, 1:jpj) )
453            f_pp02d(:,:)      = 0.0 !!
454         ENDIF
455         IF( med_diag%O2FLUX%dgsave ) THEN
456            ALLOCATE( f_o2flux2d(1:jpi, 1:jpj) )
457            f_o2flux2d(:,:)      = 0.0 !!
458         ENDIF
459         IF( med_diag%O2SAT%dgsave ) THEN
460            ALLOCATE( f_o2sat2d(1:jpi, 1:jpj) )
461            f_o2sat2d(:,:)      = 0.0 !!
462         ENDIF 
463!!
464!! skip XXX_CCD diagnostics here
465!!
466         IF( med_diag%SFR_OCAL%dgsave ) THEN
467            ALLOCATE( sfr_ocal2d(1:jpi, 1:jpj) )
468            sfr_ocal2d(:,:)      = 0.0 !!
469         ENDIF
470         IF( med_diag%SFR_OARG%dgsave ) THEN
471            ALLOCATE( sfr_oarg2d(1:jpi, 1:jpj) )
472            sfr_oarg2d(:,:)      = 0.0 !!
473         ENDIF
474!!
475!! skip XX_PROD, XX_CONS, O2_ANOX, RR_XXXX diagnostics here
476!!
477         IF( med_diag%IBEN_N%dgsave ) THEN
478            ALLOCATE( iben_n2d(1:jpi, 1:jpj) )
479            iben_n2d(:,:)      = 0.0 !!
480         ENDIF
481         IF( med_diag%IBEN_FE%dgsave ) THEN
482            ALLOCATE( iben_fe2d(1:jpi, 1:jpj) )
483            iben_fe2d(:,:)      = 0.0 !!
484         ENDIF
485         IF( med_diag%IBEN_C%dgsave ) THEN
486            ALLOCATE( iben_c2d(1:jpi, 1:jpj) )
487            iben_c2d(:,:)      = 0.0 !!
488         ENDIF
489         IF( med_diag%IBEN_SI%dgsave ) THEN
490            ALLOCATE( iben_si2d(1:jpi, 1:jpj) )
491            iben_si2d(:,:)      = 0.0 !!
492         ENDIF
493         IF( med_diag%IBEN_CA%dgsave ) THEN
494            ALLOCATE( iben_ca2d(1:jpi, 1:jpj) )
495            iben_ca2d(:,:)      = 0.0 !!
496         ENDIF
497         IF( med_diag%OBEN_N%dgsave ) THEN
498            ALLOCATE( oben_n2d(1:jpi, 1:jpj) )
499            oben_n2d(:,:)      = 0.0 !!
500         ENDIF
501         IF( med_diag%OBEN_FE%dgsave ) THEN
502            ALLOCATE( oben_fe2d(1:jpi, 1:jpj) )
503            oben_fe2d(:,:)      = 0.0 !!
504         ENDIF
505         IF( med_diag%OBEN_C%dgsave ) THEN
506            ALLOCATE( oben_c2d(1:jpi, 1:jpj) )
507            oben_c2d(:,:)      = 0.0 !!
508         ENDIF
509         IF( med_diag%OBEN_SI%dgsave ) THEN
510            ALLOCATE( oben_si2d(1:jpi, 1:jpj) )
511            oben_si2d(:,:)      = 0.0 !!
512         ENDIF
513         IF( med_diag%OBEN_CA%dgsave ) THEN
514            ALLOCATE( oben_ca2d(1:jpi, 1:jpj) )
515            oben_ca2d(:,:)      = 0.0 !!
516         ENDIF
517!!
518!! skip BEN_XX diagnostics here
519!!
520
521         IF( med_diag%RIV_N%dgsave ) THEN
522            ALLOCATE( rivn2d(1:jpi, 1:jpj) )
523            rivn2d(:,:)      = 0.0 !!
524         ENDIF
525         IF( med_diag%RIV_SI%dgsave ) THEN
526            ALLOCATE( rivsi2d(1:jpi, 1:jpj) )
527            rivsi2d(:,:)      = 0.0 !!
528         ENDIF
529         IF( med_diag%RIV_C%dgsave ) THEN
530            ALLOCATE( rivc2d(1:jpi, 1:jpj) )
531            rivc2d(:,:)      = 0.0 !!
532         ENDIF
533         IF( med_diag%RIV_ALK%dgsave ) THEN
534            ALLOCATE( rivalk2d(1:jpi, 1:jpj) )
535            rivalk2d(:,:)      = 0.0 !!
536         ENDIF
537         IF( med_diag%DETC%dgsave ) THEN
538            ALLOCATE( fslowc2d(1:jpi, 1:jpj) )
539            fslowc2d(:,:)      = 0.0 !!
540         ENDIF 
541!!
542!! skip SDC_XXXX, INVTXXX diagnostics here
543!!
544         IF( med_diag%LYSO_CA%dgsave ) THEN
545            ALLOCATE( lyso_ca2d(1:jpi, 1:jpj) )
546            lyso_ca2d(:,:)      = 0.0 !!
547         ENDIF
548!!
549!! skip COM_RESP diagnostic here
550!!
551         IF( med_diag%PN_LLOSS%dgsave ) THEN
552            ALLOCATE( fdpn22d(1:jpi, 1:jpj) )
553            fdpn22d(:,:)      = 0.0 !!
554         ENDIF
555         IF( med_diag%PD_LLOSS%dgsave ) THEN
556            ALLOCATE( fdpd22d(1:jpi, 1:jpj) )
557            fdpd22d(:,:)      = 0.0 !!
558         ENDIF
559         IF( med_diag%ZI_LLOSS%dgsave ) THEN
560            ALLOCATE( fdzmi22d(1:jpi, 1:jpj) )
561            fdzmi22d(:,:)      = 0.0 !!
562         ENDIF
563         IF( med_diag%ZE_LLOSS%dgsave ) THEN
564            ALLOCATE( fdzme22d(1:jpi, 1:jpj) )
565            fdzme22d(:,:)      = 0.0 !!
566         ENDIF
567         IF( med_diag%ZI_MES_N%dgsave ) THEN   
568            ALLOCATE( zimesn2d(1:jpi, 1:jpj) )
569            zimesn2d(:,:)      = 0.0 !!
570         ENDIF
571         IF( med_diag%ZI_MES_D%dgsave ) THEN
572            ALLOCATE( zimesd2d(1:jpi, 1:jpj) )
573            zimesd2d(:,:)      = 0.0 !!
574         ENDIF
575         IF( med_diag%ZI_MES_C%dgsave ) THEN
576            ALLOCATE( zimesc2d(1:jpi, 1:jpj) )
577            zimesc2d(:,:)      = 0.0 !!
578         ENDIF
579         IF( med_diag%ZI_MESDC%dgsave ) THEN
580            ALLOCATE( zimesdc2d(1:jpi, 1:jpj) )
581            zimesdc2d(:,:)      = 0.0 !!
582         ENDIF
583         IF( med_diag%ZI_EXCR%dgsave ) THEN
584            ALLOCATE( ziexcr2d(1:jpi, 1:jpj) )
585            ziexcr2d(:,:)      = 0.0 !!
586         ENDIF
587         IF( med_diag%ZI_RESP%dgsave ) THEN
588            ALLOCATE( ziresp2d(1:jpi, 1:jpj) )
589            ziresp2d(:,:)      = 0.0 !!
590         ENDIF
591         IF( med_diag%ZI_GROW%dgsave ) THEN
592            ALLOCATE( zigrow2d(1:jpi, 1:jpj) )
593            zigrow2d(:,:)      = 0.0 !!
594         ENDIF
595         IF( med_diag%ZE_MES_N%dgsave ) THEN
596            ALLOCATE( zemesn2d(1:jpi, 1:jpj) )
597            zemesn2d(:,:)      = 0.0 !!
598         ENDIF
599         IF( med_diag%ZE_MES_D%dgsave ) THEN
600            ALLOCATE( zemesd2d(1:jpi, 1:jpj) )
601            zemesd2d(:,:)      = 0.0 !!
602         ENDIF
603         IF( med_diag%ZE_MES_C%dgsave ) THEN
604            ALLOCATE( zemesc2d(1:jpi, 1:jpj) )
605            zemesc2d(:,:)      = 0.0 !!
606         ENDIF
607         IF( med_diag%ZE_MESDC%dgsave ) THEN
608            ALLOCATE( zemesdc2d(1:jpi, 1:jpj) )
609            zemesdc2d(:,:)      = 0.0 !!
610         ENDIF
611         IF( med_diag%ZE_EXCR%dgsave ) THEN
612            ALLOCATE( zeexcr2d(1:jpi, 1:jpj) )
613            zeexcr2d(:,:)      = 0.0 !!
614         ENDIF                 
615         IF( med_diag%ZE_RESP%dgsave ) THEN
616            ALLOCATE( zeresp2d(1:jpi, 1:jpj) )
617            zeresp2d(:,:)      = 0.0 !!
618         ENDIF
619         IF( med_diag%ZE_GROW%dgsave ) THEN
620            ALLOCATE( zegrow2d(1:jpi, 1:jpj) )
621            zegrow2d(:,:)      = 0.0 !!
622         ENDIF
623         IF( med_diag%MDETC%dgsave ) THEN
624            ALLOCATE( mdetc2d(1:jpi, 1:jpj) )
625            mdetc2d(:,:)      = 0.0 !!
626         ENDIF
627         IF( med_diag%GMIDC%dgsave ) THEN
628            ALLOCATE( gmidc2d(1:jpi, 1:jpj) )
629            gmidc2d(:,:)      = 0.0 !!
630         ENDIF
631         IF( med_diag%GMEDC%dgsave ) THEN
632            ALLOCATE( gmedc2d(1:jpi, 1:jpj) )
633            gmedc2d(:,:)      = 0.0 !!
634         ENDIF
635!!
636!! skip INT_XXX diagnostics here
637!!
638         IF (jdms .eq. 1) THEN
639            IF( med_diag%DMS_SURF%dgsave ) THEN
640               ALLOCATE( dms_surf2d(1:jpi, 1:jpj) )
641               dms_surf2d(:,:)      = 0.0 !!
642            ENDIF
643            IF( med_diag%DMS_ANDR%dgsave ) THEN
644               ALLOCATE( dms_andr2d(1:jpi, 1:jpj) )
645               dms_andr2d(:,:)      = 0.0 !!
646            ENDIF
647            IF( med_diag%DMS_SIMO%dgsave ) THEN
648               ALLOCATE( dms_simo2d(1:jpi, 1:jpj) )
649               dms_simo2d(:,:)      = 0.0 !!
650            ENDIF
651            IF( med_diag%DMS_ARAN%dgsave ) THEN
652               ALLOCATE( dms_aran2d(1:jpi, 1:jpj) )
653               dms_aran2d(:,:)      = 0.0 !!
654            ENDIF
655            IF( med_diag%DMS_HALL%dgsave ) THEN
656               ALLOCATE( dms_hall2d(1:jpi, 1:jpj) )
657               dms_hall2d(:,:)      = 0.0 !!
658            ENDIF
659            IF( med_diag%DMS_ANDM%dgsave ) THEN
660               ALLOCATE( dms_andm2d(1:jpi, 1:jpj) )
661               dms_andm2d(:,:)      = 0.0 !!
662            ENDIF
663         ENDIF   
664         !!
665         !! AXY (24/11/16): extra MOCSY diagnostics, 2D
666         IF( med_diag%ATM_XCO2%dgsave ) THEN
667            ALLOCATE( f_xco2a_2d(1:jpi, 1:jpj) )
668            f_xco2a_2d(:,:)      = 0.0 !!
669         ENDIF
670         IF( med_diag%OCN_FCO2%dgsave ) THEN
671            ALLOCATE( f_fco2w_2d(1:jpi, 1:jpj) )
672            f_fco2w_2d(:,:)      = 0.0 !!
673         ENDIF
674         IF( med_diag%ATM_FCO2%dgsave ) THEN
675            ALLOCATE( f_fco2a_2d(1:jpi, 1:jpj) )
676            f_fco2a_2d(:,:)      = 0.0 !!
677         ENDIF
678         IF( med_diag%OCN_RHOSW%dgsave ) THEN
679            ALLOCATE( f_ocnrhosw_2d(1:jpi, 1:jpj) )
680            f_ocnrhosw_2d(:,:)      = 0.0 !!
681         ENDIF
682         IF( med_diag%OCN_SCHCO2%dgsave ) THEN
683            ALLOCATE( f_ocnschco2_2d(1:jpi, 1:jpj) )
684            f_ocnschco2_2d(:,:)      = 0.0 !!
685         ENDIF
686         IF( med_diag%OCN_KWCO2%dgsave ) THEN
687            ALLOCATE( f_ocnkwco2_2d(1:jpi, 1:jpj) )
688            f_ocnkwco2_2d(:,:)      = 0.0 !!
689         ENDIF
690         IF( med_diag%OCN_K0%dgsave ) THEN
691            ALLOCATE( f_ocnk0_2d(1:jpi, 1:jpj) )
692            f_ocnk0_2d(:,:)      = 0.0 !!
693         ENDIF
694         IF( med_diag%CO2STARAIR%dgsave ) THEN
695            ALLOCATE( f_co2starair_2d(1:jpi, 1:jpj) )
696            f_co2starair_2d(:,:)      = 0.0 !!
697         ENDIF
698         IF( med_diag%OCN_DPCO2%dgsave ) THEN
699            ALLOCATE( f_ocndpco2_2d(1:jpi, 1:jpj) )
700            f_ocndpco2_2d(:,:)      = 0.0 !!
701         ENDIF
702#  if defined key_omip_dic         
703         IF( med_diag%PI_ATM_XCO2%dgsave ) THEN
704            ALLOCATE( f_pi_xco2a_2d(1:jpi, 1:jpj) )
705            f_pi_xco2a_2d(:,:)      = 0.0 !!
706         ENDIF
707         IF( med_diag%PI_OCN_FCO2%dgsave ) THEN
708            ALLOCATE( f_pi_fco2w_2d(1:jpi, 1:jpj) )
709            f_pi_fco2w_2d(:,:)      = 0.0 !!
710         ENDIF
711         IF( med_diag%PI_ATM_FCO2%dgsave ) THEN
712            ALLOCATE( f_pi_fco2a_2d(1:jpi, 1:jpj) )
713            f_pi_fco2a_2d(:,:)      = 0.0 !!
714         ENDIF
715         IF( med_diag%PI_CO2STARAIR%dgsave ) THEN
716            ALLOCATE( f_pi_co2starair_2d(1:jpi, 1:jpj) )
717            f_pi_co2starair_2d(:,:)      = 0.0 !!
718         ENDIF
719         IF( med_diag%OCN_PI_DPCO2%dgsave ) THEN
720            ALLOCATE( f_pi_ocndpco2_2d(1:jpi, 1:jpj) )
721            f_pi_ocndpco2_2d(:,:)      = 0.0 !!
722         ENDIF
723         IF( med_diag%PI_FGCO2%dgsave ) THEN
724            ALLOCATE( pi_fgco2(1:jpi, 1:jpj) )
725            pi_fgco2(:,:)      = 0.0 !!
726         ENDIF
727#  endif
728# endif 
729         IF( med_diag%TPP3%dgsave ) THEN
730            ALLOCATE( tpp3d(1:jpi, 1:jpj, 1:jpk) )
731            tpp3d(:,:,:)      = 0.0 !!
732         ENDIF
733         IF( med_diag%DETFLUX3%dgsave ) THEN
734            ALLOCATE( detflux3d(1:jpi, 1:jpj, 1:jpk) )
735            detflux3d(:,:,:)      = 0.0 !!
736         ENDIF
737         IF( med_diag%REMIN3N%dgsave ) THEN
738             ALLOCATE( remin3dn(1:jpi, 1:jpj, 1:jpk) )
739             remin3dn(:,:,:)      = 0.0 !!
740         ENDIF
741         !!
742         !! AXY (10/11/16): CMIP6 diagnostics, 2D
743         !! JPALM -- 17-11-16 -- put fgco2 alloc out of diag request
744         !!                   needed for coupling/passed through restart
745         !! IF( med_diag%FGCO2%dgsave ) THEN
746            ALLOCATE( fgco2(1:jpi, 1:jpj) )
747            fgco2(:,:)      = 0.0 !!
748         !! ENDIF
749         IF( med_diag%INTDISSIC%dgsave ) THEN
750            ALLOCATE( intdissic(1:jpi, 1:jpj) )
751            intdissic(:,:)  = 0.0 !!
752         ENDIF         
753         IF( med_diag%INTDISSIN%dgsave ) THEN
754            ALLOCATE( intdissin(1:jpi, 1:jpj) )
755            intdissin(:,:)  = 0.0 !!
756         ENDIF         
757         IF( med_diag%INTDISSISI%dgsave ) THEN
758            ALLOCATE( intdissisi(1:jpi, 1:jpj) )
759            intdissisi(:,:)  = 0.0 !!
760         ENDIF         
761         IF( med_diag%INTTALK%dgsave ) THEN
762            ALLOCATE( inttalk(1:jpi, 1:jpj) )
763            inttalk(:,:)  = 0.0 !!
764         ENDIF         
765         IF( med_diag%O2min%dgsave ) THEN
766            ALLOCATE( o2min(1:jpi, 1:jpj) )
767            o2min(:,:)  = 1.e3 !! set to high value as we're looking for min(o2)
768         ENDIF         
769         IF( med_diag%ZO2min%dgsave ) THEN
770            ALLOCATE( zo2min(1:jpi, 1:jpj) )
771            zo2min(:,:)  = 0.0 !!
772         ENDIF         
773         IF( med_diag%FBDDTALK%dgsave  ) THEN
774            ALLOCATE( fbddtalk(1:jpi, 1:jpj) )
775            fbddtalk(:,:)  = 0.0 !!
776         ENDIF
777         IF( med_diag%FBDDTDIC%dgsave  ) THEN
778            ALLOCATE( fbddtdic(1:jpi, 1:jpj) )
779            fbddtdic(:,:)  = 0.0 !!
780         ENDIF
781         IF( med_diag%FBDDTDIFE%dgsave ) THEN
782            ALLOCATE( fbddtdife(1:jpi, 1:jpj) )
783            fbddtdife(:,:) = 0.0 !!
784         ENDIF
785         IF( med_diag%FBDDTDIN%dgsave  ) THEN
786            ALLOCATE( fbddtdin(1:jpi, 1:jpj) )
787            fbddtdin(:,:)  = 0.0 !!
788         ENDIF
789         IF( med_diag%FBDDTDISI%dgsave ) THEN
790            ALLOCATE( fbddtdisi(1:jpi, 1:jpj) )
791            fbddtdisi(:,:) = 0.0 !!
792         ENDIF
793         !!
794         !! AXY (10/11/16): CMIP6 diagnostics, 3D
795         IF( med_diag%TPPD3%dgsave     ) THEN
796            ALLOCATE( tppd3(1:jpi, 1:jpj, 1:jpk) )
797            tppd3(:,:,:)     = 0.0 !!
798         ENDIF
799         IF( med_diag%BDDTALK3%dgsave  ) THEN
800            ALLOCATE( bddtalk3(1:jpi, 1:jpj, 1:jpk) )
801            bddtalk3(:,:,:)  = 0.0 !!
802         ENDIF
803         IF( med_diag%BDDTDIC3%dgsave  ) THEN
804            ALLOCATE( bddtdic3(1:jpi, 1:jpj, 1:jpk) )
805            bddtdic3(:,:,:)  = 0.0 !!
806         ENDIF
807         IF( med_diag%BDDTDIFE3%dgsave ) THEN
808            ALLOCATE( bddtdife3(1:jpi, 1:jpj, 1:jpk) )
809            bddtdife3(:,:,:) = 0.0 !!
810         ENDIF
811         IF( med_diag%BDDTDIN3%dgsave  ) THEN
812            ALLOCATE( bddtdin3(1:jpi, 1:jpj, 1:jpk) )
813            bddtdin3(:,:,:)  = 0.0 !!
814         ENDIF
815         IF( med_diag%BDDTDISI3%dgsave ) THEN
816            ALLOCATE( bddtdisi3(1:jpi, 1:jpj, 1:jpk) )
817            bddtdisi3(:,:,:) = 0.0 !!
818         ENDIF
819         IF( med_diag%FD_NIT3%dgsave   ) THEN
820            ALLOCATE( fd_nit3(1:jpi, 1:jpj, 1:jpk) )
821            fd_nit3(:,:,:)   = 0.0 !!
822         ENDIF
823         IF( med_diag%FD_SIL3%dgsave   ) THEN
824            ALLOCATE( fd_sil3(1:jpi, 1:jpj, 1:jpk) )
825            fd_sil3(:,:,:)   = 0.0 !!
826         ENDIF
827         IF( med_diag%FD_CAR3%dgsave   ) THEN
828            ALLOCATE( fd_car3(1:jpi, 1:jpj, 1:jpk) )
829            fd_car3(:,:,:)   = 0.0 !!
830         ENDIF
831         IF( med_diag%FD_CAL3%dgsave   ) THEN
832            ALLOCATE( fd_cal3(1:jpi, 1:jpj, 1:jpk) )
833            fd_cal3(:,:,:)   = 0.0 !!
834         ENDIF
835         IF( med_diag%DCALC3%dgsave    ) THEN
836            ALLOCATE( dcalc3(1:jpi, 1:jpj, 1:jpk) )
837            dcalc3(:,:,: )   = 0.0 !!
838         ENDIF
839         IF( med_diag%EXPC3%dgsave     ) THEN
840            ALLOCATE( expc3(1:jpi, 1:jpj, 1:jpk) )
841            expc3(:,:,: )    = 0.0 !!
842         ENDIF
843         IF( med_diag%EXPN3%dgsave     ) THEN
844            ALLOCATE( expn3(1:jpi, 1:jpj, 1:jpk) )
845            expn3(:,:,: )    = 0.0 !!
846         ENDIF
847         IF( med_diag%FEDISS3%dgsave   ) THEN
848            ALLOCATE( fediss3(1:jpi, 1:jpj, 1:jpk) )
849            fediss3(:,:,: )  = 0.0 !!
850         ENDIF
851         IF( med_diag%FESCAV3%dgsave   ) THEN
852            ALLOCATE( fescav3(1:jpi, 1:jpj, 1:jpk) )
853            fescav3(:,:,: )  = 0.0 !!
854         ENDIF
855         IF( med_diag%MIGRAZP3%dgsave   ) THEN
856            ALLOCATE( migrazp3(1:jpi, 1:jpj, 1:jpk) )
857            migrazp3(:,:,: )  = 0.0 !!
858         ENDIF
859         IF( med_diag%MIGRAZD3%dgsave   ) THEN
860            ALLOCATE( migrazd3(1:jpi, 1:jpj, 1:jpk) )
861            migrazd3(:,:,: )  = 0.0 !!
862         ENDIF
863         IF( med_diag%MEGRAZP3%dgsave   ) THEN
864            ALLOCATE( megrazp3(1:jpi, 1:jpj, 1:jpk) )
865            megrazp3(:,:,: )  = 0.0 !!
866         ENDIF
867         IF( med_diag%MEGRAZD3%dgsave   ) THEN
868            ALLOCATE( megrazd3(1:jpi, 1:jpj, 1:jpk) )
869            megrazd3(:,:,: )  = 0.0 !!
870         ENDIF
871         IF( med_diag%MEGRAZZ3%dgsave   ) THEN
872            ALLOCATE( megrazz3(1:jpi, 1:jpj, 1:jpk) )
873            megrazz3(:,:,: )  = 0.0 !!
874         ENDIF
875         IF( med_diag%O2SAT3%dgsave     ) THEN
876            ALLOCATE( o2sat3(1:jpi, 1:jpj, 1:jpk) )
877            o2sat3(:,:,: )    = 0.0 !!
878         ENDIF
879         IF( med_diag%PBSI3%dgsave      ) THEN
880            ALLOCATE( pbsi3(1:jpi, 1:jpj, 1:jpk) )
881            pbsi3(:,:,: )     = 0.0 !!
882         ENDIF
883         IF( med_diag%PCAL3%dgsave      ) THEN
884            ALLOCATE( pcal3(1:jpi, 1:jpj, 1:jpk) )
885            pcal3(:,:,: )     = 0.0 !!
886         ENDIF
887         IF( med_diag%REMOC3%dgsave     ) THEN
888            ALLOCATE( remoc3(1:jpi, 1:jpj, 1:jpk) )
889            remoc3(:,:,: )    = 0.0 !!
890         ENDIF
891         IF( med_diag%PNLIMJ3%dgsave    ) THEN
892            ALLOCATE( pnlimj3(1:jpi, 1:jpj, 1:jpk) )
893            pnlimj3(:,:,: )   = 0.0 !!
894         ENDIF
895         IF( med_diag%PNLIMN3%dgsave    ) THEN
896            ALLOCATE( pnlimn3(1:jpi, 1:jpj, 1:jpk) )
897            pnlimn3(:,:,: )   = 0.0 !!
898         ENDIF
899         IF( med_diag%PNLIMFE3%dgsave   ) THEN
900            ALLOCATE( pnlimfe3(1:jpi, 1:jpj, 1:jpk) )
901            pnlimfe3(:,:,: )  = 0.0 !!
902         ENDIF
903         IF( med_diag%PDLIMJ3%dgsave    ) THEN
904            ALLOCATE( pdlimj3(1:jpi, 1:jpj, 1:jpk) )
905            pdlimj3(:,:,: )   = 0.0 !!
906         ENDIF
907         IF( med_diag%PDLIMN3%dgsave    ) THEN
908            ALLOCATE( pdlimn3(1:jpi, 1:jpj, 1:jpk) )
909            pdlimn3(:,:,: )   = 0.0 !!
910         ENDIF
911         IF( med_diag%PDLIMFE3%dgsave   ) THEN
912            ALLOCATE( pdlimfe3(1:jpi, 1:jpj, 1:jpk) )
913            pdlimfe3(:,:,: )  = 0.0 !!
914         ENDIF
915         IF( med_diag%PDLIMSI3%dgsave   ) THEN
916            ALLOCATE( pdlimsi3(1:jpi, 1:jpj, 1:jpk) )
917            pdlimsi3(:,:,: )  = 0.0 !!
918         ENDIF
919      ENDIF
920      !! lk_iomput
921
922   END SUBROUTINE bio_medusa_init
923
924#else
925   !!======================================================================
926   !!  Dummy module :                                   No MEDUSA bio-model
927   !!======================================================================
928CONTAINS
929   SUBROUTINE bio_medusa_init( )                   ! Empty routine
930      WRITE(*,*) 'bio_medusa_init: You should not have seen this print! error?'
931   END SUBROUTINE bio_medusa_init
932#endif 
933
934   !!======================================================================
935END MODULE bio_medusa_init_mod
Note: See TracBrowser for help on using the repository browser.