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_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_mod.F90 @ 7975

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

Removed plankton processes from trcbio_medusa.F90 into extra routines

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