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

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

Broken up iron_chem_scav.F90 into sections

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