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/UKMO/dev_r5518_GO6_under_ice_relax_dr_hook/NEMOGCM/NEMO/TOP_SRC/MEDUSA – NEMO

source: branches/UKMO/dev_r5518_GO6_under_ice_relax_dr_hook/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_init.F90

Last change on this file was 11738, checked in by marc, 5 years ago

The Dr Hook changes from my perl code.

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