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

source: branches/NERC/dev_r5518_GO6_MEDUSA_conserv/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_init.F90 @ 8487

Last change on this file since 8487 was 8442, checked in by frrh, 7 years ago

Commit changes relating to Met Office GMED ticket 340 for the
tidying of MEDUSA related code and debugging statements in the TOP code.

Only code introduced at revision 8434 of branch
http://fcm3/projects/NEMO.xm/log/branches/NERC/dev_r5518_GO6_split_trcbiomedusa
is included here, all previous revisions of that branch having been dealt with
under GMED ticket 339.

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