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_mod.F90 in branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA – NEMO

source: branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_mod.F90 @ 8442

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

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

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

File size: 20.3 KB
RevLine 
[8395]1MODULE bio_medusa_mod
2   !!======================================================================
3   !!                      ***  MODULE  bio_medusa_mod  ***
4   !! MEDUSA variables   :  module for MEDUSA variables which are shared
5   !!                       across subroutines
6   !!======================================================================
7   !! History :
8   !!   -   ! 2017-04 (M. Stringer)        Code taken from trcbio_medusa.F90
9   !!----------------------------------------------------------------------
10#if defined key_medusa
11   !!----------------------------------------------------------------------
12   !!   'key_medusa'                                           MEDUSA
13   !!----------------------------------------------------------------------
14   !! Variable conventions
15   !!----------------------------------------------------------------------
16   !!
17   !! names: z*** - state variable
18   !!        f*** - function (or temporary variable used in part of a function)
19   !!        b*** - right-hand part (sources and sinks)
20   !!        i*** - integer variable (usually used in yes/no flags)
21   !!----------------------------------------------------------------------
22   USE par_kind,          ONLY: wp
23   
24   IMPLICIT NONE
25   PUBLIC
26
27   PUBLIC   bio_medusa_alloc     ! called by trcini.F90
28
29   !! model state variables
30   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zchn,zchd,zphn,zphd,zpds,zzmi
31   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zzme,zdet,zdtc,zdin,zsil,zfer
32# if defined key_roam
33   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zdic, zalk, zoxy
34   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ztmp, zsal
35# endif
36# if defined key_mocsy
37   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zpho
38# endif
39
40   !! integrated source and sink terms
41   REAL(wp) ::    b0
42
43   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fthetan,fprn,frn
44   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fthetad,fprd,frd
45
46   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fjlim_pn,fjlim_pd
47   !! AXY (16/07/09): add in Eppley curve functionality
48   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fun_T,xvpnT,xvpdT
49
50   !! AXY (16/05/11): per Katya's prompting, add in new T-dependence
51   !!                 for phytoplankton growth only (i.e. no change
52   !!                 for remineralisation)
53   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fun_Q10
54   !! AXY (01/03/10): add in mixed layer PP diagnostics
55   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fprn_ml,fprd_ml
56   !!
57   !! nutrient limiting factors
58   !! N and Fe (renaming ffln to ffln2 to avoid conflict with
59   !! ffln in module sms_medusa - marc 25/4/17)
60   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fnln,ffln2
61   !! N, Fe and Si
62   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fnld,ffld,fsld,fsld2
63   !!
64   !! silicon cycle
65   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fsin,fprds,fsdiss
66
67   !! iron cycle; includes parameters for Parekh et al. (2005) iron scheme
68   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ffetop,ffebot,ffescav
69   !! Variable for iron-ligand system
70   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: xFree
71
72   !! Microzooplankton grazing
73   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fgmipn,fgmid,fgmidc
74   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: finmi,ficmi
75   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fmigrow,fmiexcr,fmiresp
76   !!
77   !! Mesozooplankton grazing
78   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fgmepn,fgmepd
79   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fgmepds,fgmezmi,fgmed,fgmedc
80   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: finme,ficme
81   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fmegrow,fmeexcr,fmeresp
82   !!
83   !! mortality/Remineralisation
84   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fdpn,fdpd,fdpds,fdzmi,fdzme,fdd
85# if defined key_roam
86   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fddc
87# endif
88   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fdpn2,fdpd2,fdpds2,fdzmi2,fdzme2
89   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fslown, fslowc
90   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fslownflux, fslowcflux
91   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fregen,fregensi
92   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fregenfast,fregenfastsi
93# if defined key_roam
94   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fregenfastc
95# endif
96
97   !! Particle flux
98   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fdep1
99   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ftempn,ftempsi,ftempfe
100   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ftempc,ftempca
101   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: freminn,freminsi,freminfe
102   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: freminc,freminca
103   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ffastn,ffastsi,ffastfe
104   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ffastc,ffastca
105   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fsedn,fsedsi,fsedfe,fsedc,fsedca
106   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fccd
107
108   !! AXY (08/07/11): fate of fast detritus reaching the seafloor
109   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ffast2slown,ffast2slowc
110
111   !! water column nutrient and flux integrals
112   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ftot_n,ftot_si,ftot_fe
113   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fflx_n,fflx_si,fflx_fe
114   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fifd_n,fifd_si,fifd_fe
115   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fofd_n,fofd_si,fofd_fe
116# if defined key_roam
117   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ftot_c,ftot_a,ftot_o2
118   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fflx_c,fflx_a,fflx_o2
119! I don't think fifd_a, fifd_o2, fofd_a or fofd_o2 are used - marc 11/5/17
120!   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fifd_c,fifd_a,fifd_o2
121!   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fofd_c,fofd_a,fofd_o2
122   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fifd_c
123   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fofd_c
124# endif
125
126   !! Zooplankton grazing integrals
127   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fzmi_i,fzmi_o,fzme_i,fzme_o
128
129   !! Limitation term temporary variables
130   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ftot_pn,ftot_pd
131   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ftot_zmi,ftot_zme,ftot_det,ftot_dtc
132
133   !! use biological fluxes (1) or not (0)
134   INTEGER  ::    ibio_switch
135   !!
136   !! diagnose fluxes (should only be used in 1D runs)
137   INTEGER                               :: idf, idfval
138
139   !! Nitrogen and silicon production and consumption
140   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fnit_prod,fnit_cons
141   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fsil_prod,fsil_cons
142
143# if defined key_roam
144   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_xco2a
145   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_ph,f_pco2w,f_h2co3
146   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_hco3,f_co3,f_co2flux
147   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_TDIC,f_TALK,f_dcf,f_henry
148   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_pp0
149   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_kw660,f_o2flux,f_o2sat
150   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_omcal,f_omarg
151
152   !! AXY (23/06/15): additional diagnostics for MOCSY and oxygen
153   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_pco2atm
154
155   !! Carbon, alkalinity production and consumption
156   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fcomm_resp
157   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fcar_prod,fcar_cons
158
159   !! Oxygen production and consumption (and non-consumption)
160   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: foxy_prod,foxy_cons,foxy_anox
161
162   !! Add DMS in MEDUSA for UKESM1 model
[8442]163   REAL(wp)                              :: dms_surf,dms_andm
[8395]164   !! AXY (13/03/15): add in other DMS calculations
[8442]165   REAL(wp)                              :: dms_andr,dms_simo,dms_aran,dms_hall
166   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: dms_nlim, dms_wtkn
[8395]167# endif
168
169   !! Benthic fluxes
170   INTEGER  ::    ibenthic
171   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_sbenin_n,f_sbenin_fe,f_sbenin_c
172   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_fbenin_n,f_fbenin_fe,f_fbenin_si
173   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_fbenin_c,f_fbenin_ca
174   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_benout_n,f_benout_fe,f_benout_si 
175   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_benout_c,f_benout_ca
176
177   !! Benthic fluxes of CaCO3 that shouldn't happen because of lysocline
178   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_benout_lyso_ca
179
180   !! riverine fluxes
181   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_runoff,f_riv_n,f_riv_si
182   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_riv_c,f_riv_alk
183   !! AXY (19/07/12): variables for local riverine fluxes to handle
184   !! inputs below surface
185   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_riv_loc_n,f_riv_loc_si
186   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_riv_loc_c, f_riv_loc_alk
187
188   !! Jpalm -- 11-10-2015 -- adapt diag to iom_use
189   !! 2D var for diagnostics.
190   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fprn2d, fdpn2d, fprd2d, fdpd2d
191   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fprds2d, fsdiss2d, fgmipn2d
192   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fgmid2d, fdzmi2d, fgmepn2d
193   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fgmepd2d, fgmezmi2d, fgmed2d
194   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fdzme2d, fslown2d, fdd2d
195   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ffetop2d, ffebot2d, ffescav2d
196   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fjln2d, fnln2d, ffln2d, fjld2d
197   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fnld2d, ffld2d, fsld2d2
198   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fsld2d, fregen2d, fregensi2d
199   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ftempn2d, ftempsi2d, ftempfe2d
200   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ftempc2d, ftempca2d, freminn2d
201   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: freminsi2d, freminfe2d
202   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: freminc2d, freminca2d
203   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zw2d
204# if defined key_roam
205   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ffastca2d, rivn2d, rivsi2d
206   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: rivc2d, rivalk2d, fslowc2d
207   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fdpn22d, fdpd22d, fdzmi22d
208   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fdzme22d, zimesn2d, zimesd2d
209   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zimesc2d, zimesdc2d, ziexcr2d
210   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ziresp2d, zigrow2d, zemesn2d
211   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zemesd2d, zemesc2d, zemesdc2d
212   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zeexcr2d, zeresp2d, zegrow2d
213   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: mdetc2d, gmidc2d, gmedc2d
214   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_pco2a2d, f_pco2w2d, f_co2flux2d
215   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_TDIC2d, f_TALK2d, f_kw6602d
216   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_pp02d, f_o2flux2d, f_o2sat2d
217   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: dms_andr2d, dms_simo2d, dms_aran2d
218   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: dms_hall2d, dms_andm2d, dms_surf2d
219   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: iben_n2d, iben_fe2d, iben_c2d
220   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: iben_si2d, iben_ca2d, oben_n2d
221   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: oben_fe2d, oben_c2d, oben_si2d
222   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: oben_ca2d, sfr_ocal2d
223   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: sfr_oarg2d, lyso_ca2d 
224   !! AXY (23/11/16): extra MOCSY diagnostics
225   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_xco2a_2d, f_fco2w_2d, f_fco2a_2d
226   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_ocnrhosw_2d, f_ocnschco2_2d
227   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_ocnkwco2_2d
228   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_ocnk0_2d, f_co2starair_2d
229   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: f_ocndpco2_2d
230# endif
231   !!
232   !! 3D var for diagnostics.
233   REAL(wp), POINTER, DIMENSION(:,:,:) :: tpp3d, detflux3d, remin3dn
234   !!
235# if defined key_roam
236   !! AXY (04/11/16)
237   !! 2D var for new CMIP6 diagnostics (behind a key_roam ifdef
238   !! for simplicity)
239   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fgco2,intdissic,intdissin
240   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: intdissisi,inttalk,o2min,zo2min
241   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fbddtalk,fbddtdic,fbddtdife
242   REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fbddtdin,fbddtdisi
243   !!
244   !! 3D var for new CMIP6 diagnostics
245   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: tppd3
246   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: bddtalk3,bddtdic3,bddtdife3
247   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: bddtdin3, bddtdisi3
248   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: fd_nit3,fd_sil3,fd_car3,fd_cal3
249   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: co33,co3satarag3
250   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: co3satcalc3,dcalc3
251   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: expc3,expn3
252   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: fediss3,fescav3
253   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: migrazp3,migrazd3,megrazp3
254   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: megrazd3, megrazz3
255   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: o2sat3,pbsi3,pcal3,remoc3
256   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: pnlimj3,pnlimn3,pnlimfe3
257   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: pdlimj3,pdlimn3,pdlimfe3,pdlimsi3
258# endif
259   !!----------------------------------------------------------------------
260   !! NEMO/TOP 3.3.1 , NEMO Consortium (2010)
261   !! $Id$
262   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
263   !!----------------------------------------------------------------------
264CONTAINS
265
266   INTEGER FUNCTION bio_medusa_alloc()
267      !!-------------------------------------------------------------------
268      !!                    *** ROUTINE bio_medusa_alloc ***
269      !!-------------------------------------------------------------------
270      USE lib_mpp,           ONLY: ctl_warn
271      USE par_oce,           ONLY: jpi, jpj
272      !!-------------------------------------------------------------------
273      !
274      ALLOCATE(zchn(jpi,jpj),zchd(jpi,jpj),zphn(jpi,jpj),             &
275               zphd(jpi,jpj),zpds(jpi,jpj),zzmi(jpi,jpj),             &
276               zzme(jpi,jpj),zdet(jpi,jpj),zdtc(jpi,jpj),             &
277               zdin(jpi,jpj),zsil(jpi,jpj),zfer(jpi,jpj),             &
278# if defined key_roam
279               zdic(jpi,jpj),zalk(jpi,jpj),zoxy(jpi,jpj),             &
280               ztmp(jpi,jpj),zsal(jpi,jpj),                           &
281# endif
282# if defined key_mocsy
283               zpho(jpi,jpj),                                         &
284# endif
285               fthetan(jpi,jpj),fprn(jpi,jpj),frn(jpi,jpj),           &
286               fthetad(jpi,jpj),fprd(jpi,jpj),frd(jpi,jpj),           &
287               fjlim_pn(jpi,jpj),fjlim_pd(jpi,jpj),                   &
288               fun_T(jpi,jpj),fun_Q10(jpi,jpj),                       &
289               fprn_ml(jpi,jpj),fprd_ml(jpi,jpj),                     &
290               fnln(jpi,jpj),ffln2(jpi,jpj),                          &
291               fnld(jpi,jpj),ffld(jpi,jpj),fsld(jpi,jpj),             &
292               fsld2(jpi,jpj),                                        &
293               fsin(jpi,jpj),fprds(jpi,jpj),fsdiss(jpi,jpj),          &
294               ffetop(jpi,jpj),ffebot(jpi,jpj),ffescav(jpi,jpj),      &
295               xFree(jpi,jpj),                                        &
296               fgmipn(jpi,jpj),fgmid(jpi,jpj),fgmidc(jpi,jpj),        &
297               finmi(jpi,jpj),ficmi(jpi,jpj),                         &
298               fmigrow(jpi,jpj),fmiexcr(jpi,jpj),fmiresp(jpi,jpj),    &
299               fgmepn(jpi,jpj),fgmepd(jpi,jpj),                       &
300               fgmepds(jpi,jpj),fgmezmi(jpi,jpj),fgmed(jpi,jpj),      &
301               fgmedc(jpi,jpj),                                       &
302               finme(jpi,jpj),ficme(jpi,jpj),                         &
303               fmegrow(jpi,jpj),fmeexcr(jpi,jpj),fmeresp(jpi,jpj),    &
304               fdpn(jpi,jpj),fdpd(jpi,jpj),fdpds(jpi,jpj),            &
305               fdzmi(jpi,jpj),fdzme(jpi,jpj),fdd(jpi,jpj),            &
306# if defined key_roam
307               fddc(jpi,jpj),                                         &
308# endif
309               fdpn2(jpi,jpj),fdpd2(jpi,jpj),fdpds2(jpi,jpj),         &
310               fdzmi2(jpi,jpj),fdzme2(jpi,jpj),                       &
311               fslown(jpi,jpj),fslowc(jpi,jpj),                       &
312               fslownflux(jpi,jpj),fslowcflux(jpi,jpj),               &
313               fregen(jpi,jpj),fregensi(jpi,jpj),                     &
314               fregenfast(jpi,jpj),fregenfastsi(jpi,jpj),             &
315# if defined key_roam
316               fregenfastc(jpi,jpj),                                  &
317# endif
318               fdep1(jpi,jpj),                                        &
319               ftempn(jpi,jpj),ftempsi(jpi,jpj),ftempfe(jpi,jpj),     &
320               ftempc(jpi,jpj),ftempca(jpi,jpj),                      &
321               freminn(jpi,jpj),freminsi(jpi,jpj),freminfe(jpi,jpj),  &
322               freminc(jpi,jpj),freminca(jpi,jpj),                    &
323               ffastn(jpi,jpj),ffastsi(jpi,jpj),ffastfe(jpi,jpj),     &
324               ffastc(jpi,jpj),ffastca(jpi,jpj),                      &
325               fsedn(jpi,jpj),fsedsi(jpi,jpj),fsedfe(jpi,jpj),        &
326               fsedc(jpi,jpj),fsedca(jpi,jpj),                        &
327               fccd(jpi,jpj),                                         &
328               ffast2slown(jpi,jpj),ffast2slowc(jpi,jpj),             &
329               ftot_n(jpi,jpj),ftot_si(jpi,jpj),ftot_fe(jpi,jpj),     &
330               fflx_n(jpi,jpj),fflx_si(jpi,jpj),fflx_fe(jpi,jpj),     &
331               fifd_n(jpi,jpj),fifd_si(jpi,jpj),fifd_fe(jpi,jpj),     &
332               fofd_n(jpi,jpj),fofd_si(jpi,jpj),fofd_fe(jpi,jpj),     &
333# if defined key_roam
334               ftot_c(jpi,jpj),ftot_a(jpi,jpj),ftot_o2(jpi,jpj),      &
335               fflx_c(jpi,jpj),fflx_a(jpi,jpj),fflx_o2(jpi,jpj),      &
336! I don't think fifd_a, fifd_o2, fofd_a or fofd_o2 are used - marc 11/5/17
337!               fifd_c(jpi,jpj),fifd_a(jpi,jpj),fifd_o2(jpi,jpj),      &
338!               fofd_c(jpi,jpj),fofd_a(jpi,jpj),fofd_o2(jpi,jpj),      &
339               fifd_c(jpi,jpj), fofd_c(jpi,jpj),                      &
340# endif
341               fzmi_i(jpi,jpj),fzmi_o(jpi,jpj),fzme_i(jpi,jpj),       &
342               fzme_o(jpi,jpj),                                       &
343               ftot_pn(jpi,jpj),ftot_pd(jpi,jpj),                     &
344               ftot_zmi(jpi,jpj),ftot_zme(jpi,jpj),ftot_det(jpi,jpj), &
345               ftot_dtc(jpi,jpj),                                     &
346               fnit_prod(jpi,jpj),fnit_cons(jpi,jpj),                 &
347               fsil_prod(jpi,jpj),fsil_cons(jpi,jpj),                 &
348# if defined key_roam
349               f_xco2a(jpi,jpj),                                      &
350               f_ph(jpi,jpj),f_pco2w(jpi,jpj),f_h2co3(jpi,jpj),       &
351               f_hco3(jpi,jpj),f_co3(jpi,jpj),f_co2flux(jpi,jpj),     &
352               f_TDIC(jpi,jpj),f_TALK(jpi,jpj),f_dcf(jpi,jpj),        &
353               f_henry(jpi,jpj),                                      &
354               f_pp0(jpi,jpj),                                        &
355               f_kw660(jpi,jpj),f_o2flux(jpi,jpj),f_o2sat(jpi,jpj),   &
356               f_omcal(jpi,jpj),f_omarg(jpi,jpj),                     &
357               f_pco2atm(jpi,jpj),                 &
358               fcomm_resp(jpi,jpj),                                   &
359               fcar_prod(jpi,jpj),fcar_cons(jpi,jpj),                 &
360               foxy_prod(jpi,jpj), foxy_cons(jpi,jpj),                &
361               foxy_anox(jpi,jpj),                                    &
362               dms_nlim(jpi,jpj),dms_wtkn(jpi,jpj),                   &
363# endif
364               f_sbenin_n(jpi,jpj),f_sbenin_fe(jpi,jpj),              &
365               f_sbenin_c(jpi,jpj),                                   &
366               f_fbenin_n(jpi,jpj),f_fbenin_fe(jpi,jpj),              &
367               f_fbenin_si(jpi,jpj),                                  &
368               f_fbenin_c(jpi,jpj),f_fbenin_ca(jpi,jpj),              &
369               f_benout_n(jpi,jpj),f_benout_fe(jpi,jpj),              &
370               f_benout_si(jpi,jpj),                                  &
371               f_benout_c(jpi,jpj),f_benout_ca(jpi,jpj),              &
372               f_benout_lyso_ca(jpi,jpj),                             &
373               f_runoff(jpi,jpj),f_riv_n(jpi,jpj),f_riv_si(jpi,jpj),  &
374               f_riv_c(jpi,jpj),f_riv_alk(jpi,jpj),                   &
375               f_riv_loc_n(jpi,jpj),f_riv_loc_si(jpi,jpj),            &
376               f_riv_loc_c(jpi,jpj),f_riv_loc_alk(jpi,jpj),           &
377               STAT = bio_medusa_alloc)
378
379      !! Check that allocation was successful
380      IF ( bio_medusa_alloc /= 0 ) THEN 
381         CALL ctl_warn('bio_medusa_alloc: failed to allocate arrays')
382      END IF
383   
384   END FUNCTION bio_medusa_alloc
385
386#else
387   !!----------------------------------------------------------------------
388   !!  Empty module :                                          No MEDUSA
389   !!----------------------------------------------------------------------
390#endif 
391
392   !!======================================================================
393END MODULE bio_medusa_mod
Note: See TracBrowser for help on using the repository browser.