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 @ 10196

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

add DMS flux --

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