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

source: branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_init.F90 @ 8076

Last change on this file since 8076 was 8076, checked in by marc, 7 years ago

Removed wrk_alloc and wrk_dealloc from bio_medusa_* routines

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