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

Last change on this file since 7912 was 7912, checked in by marc, 3 years ago

Moved initialisation from trcbio_medusa.F90 into bio_medusa_init.F90

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