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

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

Tidying up of headers for several files

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