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

source: branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/TOP_SRC/MEDUSA/sms_medusa.F90 @ 7711

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

Various minor corrections resulting from array bounds checking.

Note: with array bounds check enables, the printing of namelists
natbio and natroam fail because they contain unallocated arrays.
(This does not cause a problem when not using array bounds checking).

E.g. arrays such as FRIVER_DEP cause this. It's not immediately
clear how we can correct this without wholesale changes to the
way these namelists are printed and since it only seems to be
an issue with array bounds checking switched on it may not
be worth pursuing (since we can get round it simply by commenting out
the offending lines.)

File size: 29.7 KB
Line 
1MODULE sms_medusa 
2   !!----------------------------------------------------------------------
3   !!                     ***  sms_medusa.F90  *** 
4   !! TOP :   MEDUSA  Source Minus Sink variables
5   !!----------------------------------------------------------------------
6   !! History :    -   !  1999-09 (M. Levy)  original code
7   !!              -   !  2000-12 (O. Aumont, E. Kestenare)  add sediment
8   !!             1.0  !  2005-10 (C. Ethe) F90
9   !!             1.0  !  2005-03  (A-S Kremeur) add fphylab, fzoolab, fdetlab, fdbod
10   !!              -   !  2005-06  (A-S Kremeur) add sedpocb, sedpocn, sedpoca
11   !!             2.0  !  2007-04  (C. Deltel, G. Madec)  Free form and modules
12   !!              -   !  2008-08  (K. Popova) adaptation for MEDUSA
13   !!              -   !  2008-11  (A. Yool) continuing adaptation for MEDUSA
14   !!              -   !  2010-03  (A. Yool) updated for branch inclusion
15   !!              -   !  2011-04  (A. Yool) updated for ROAM project
16   !!----------------------------------------------------------------------
17
18#if defined key_medusa
19   !!----------------------------------------------------------------------
20   !!   'key_medusa'                                         MEDUSA model
21   !!----------------------------------------------------------------------
22   USE par_oce
23   USE par_trc
24
25   IMPLICIT NONE
26   PUBLIC
27
28   !!----------------------------------------------------------------------
29   !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005)
30   !! $Id$
31   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
32   !!----------------------------------------------------------------------
33
34   INTEGER ::   numnatp_ref = -1           !! Logical units for namelist medusa
35   INTEGER ::   numnatp_cfg = -1           !! Logical units for namelist medusa
36   INTEGER ::   numonp      = -1           !! Logical unit for namelist medusa output
37
38!!----------------------------------------------------------------------
39!! Biological parameters
40!!----------------------------------------------------------------------
41!!
42!! Primary production and chl related quantities
43   REAL(wp) ::  xxi       !:  conversion factor from gC to mmolN
44   REAL(wp) ::  xaln      !:  Chl-a specific initial slope of P-I curve for non-diatoms
45   REAL(wp) ::  xald      !:  Chl-a specific initial slope of P-I curve for diatoms
46   INTEGER  ::  jphy      !:  phytoplankton T-dependent growth switch
47   REAL(wp) ::  xvpn      !:  maximum growth rate for non-diatoms
48   REAL(wp) ::  xvpd      !:  maximum growth rate for diatoms
49   REAL(wp) ::  xthetam   !:  maximum Chl to C ratio for non-diatoms     
50   REAL(wp) ::  xthetamd  !:  maximum Chl to C ratio for diatoms   
51   REAL(wp) ::  jq10      !:  specific Q10 value (jphy==2)   
52!!
53!! Diatom silicon parameters
54   REAL(wp) ::  xsin0     !:  minimum diatom Si:N ratio
55   REAL(wp) ::  xnsi0     !:  minimum diatom N:Si ratio
56   REAL(wp) ::  xuif      !:  hypothetical growth ratio at infinite Si:N ratio
57!!
58!! Nutrient limitation
59   INTEGER  ::  jliebig   !:  Liebig nutrient uptake switch
60   REAL(wp) ::  xnln      !:  half-sat constant for DIN uptake by non-diatoms
61   REAL(wp) ::  xnld      !:  half-sat constant for DIN uptake by diatoms
62   REAL(wp) ::  xsld      !:  half-sat constant for Si uptake by diatoms
63   REAL(wp) ::  xfln      !:  half-sat constant for Fe uptake by non-diatoms
64   REAL(wp) ::  xfld      !:  half-sat constant for Fe uptake by diatoms 
65!!
66!! Grazing
67   REAL(wp) ::  xgmi      !:  microzoo maximum growth rate
68   REAL(wp) ::  xgme      !:  mesozoo maximum growth rate
69   REAL(wp) ::  xkmi      !:  microzoo grazing half-sat parameter
70   REAL(wp) ::  xkme      !:  mesozoo grazing half-sat parameter
71   REAL(wp) ::  xphi      !:  micro/mesozoo grazing inefficiency
72   REAL(wp) ::  xbetan    !:  micro/mesozoo N assimilation efficiency
73   REAL(wp) ::  xbetac    !:  micro/mesozoo C assimilation efficiency
74   REAL(wp) ::  xkc       !:  micro/mesozoo net C growth efficiency
75   REAL(wp) ::  xpmipn    !:  grazing preference of microzoo for non-diatoms
76   REAL(wp) ::  xpmid     !:  grazing preference of microzoo for diatoms
77   REAL(wp) ::  xpmepn    !:  grazing preference of mesozoo for non-diatoms
78   REAL(wp) ::  xpmepd    !:  grazing preference of mesozoo for diatoms
79   REAL(wp) ::  xpmezmi   !:  grazing preference of mesozoo for microzoo
80   REAL(wp) ::  xpmed     !:  grazing preference of mesozoo for detritus
81!!
82!! Metabolic losses
83   REAL(wp) ::  xmetapn   !:  non-diatom metabolic loss rate
84   REAL(wp) ::  xmetapd   !:  diatom     metabolic loss rate
85   REAL(wp) ::  xmetazmi  !:  microzoo   metabolic loss rate
86   REAL(wp) ::  xmetazme  !:  mesozoo    metabolic loss rate
87!!
88!! Mortality losses
89   INTEGER  ::  jmpn      !:  non-diatom mortality functional form
90   REAL(wp) ::  xmpn      !:  non-diatom mortality rate
91   REAL(wp) ::  xkphn     !:  non-diatom mortality half-sat constant
92   INTEGER  ::  jmpd      !:  diatom     mortality functional form
93   REAL(wp) ::  xmpd      !:  diatom     mortality rate
94   REAL(wp) ::  xkphd     !:  diatom     mortality half-sat constant
95   INTEGER  ::  jmzmi     !:  microzoo   mortality functional form
96   REAL(wp) ::  xmzmi     !:  microzoo   mortality rate
97   REAL(wp) ::  xkzmi     !:  microzoo   mortality half-sat constant
98   INTEGER  ::  jmzme     !:  mesozoo    mortality functional form
99   REAL(wp) ::  xmzme     !:  mesozoo    mortality rate
100   REAL(wp) ::  xkzme     !:  mesozoo    mortality half-sat constant
101!!
102!! Remineralisation
103   INTEGER  ::  jmd       !:  detritus T-dependent remineralisation switch
104   INTEGER  ::  jsfd      !:  accelerate seafloor detritus remin. switch
105   REAL(wp) ::  xmd       !:  detrital nitrogen remineralisation rate
106   REAL(wp) ::  xmdc      !:  detrital carbon remineralisation rate
107!!
108!! Stochiometric ratios
109   REAL(wp) ::  xthetapn  !:  non-diatom C:N ratio
110   REAL(wp) ::  xthetapd  !:  diatom C:N ratio
111   REAL(wp) ::  xthetazmi !:  microzoo C:N ratio
112   REAL(wp) ::  xthetazme !:  mesozoo C:N ratio
113   REAL(wp) ::  xthetad   !:  detritus C:N ratio
114   REAL(wp) ::  xrfn      !:  phytoplankton Fe:N ratio
115   REAL(wp) ::  xrsn      !:  diatom Si:N ratio (NOT USED HERE; RETAINED FOR LOBSTER)
116!!
117!! Iron parameters
118   INTEGER  ::  jiron     !:  iron scavenging submodel switch
119   REAL(wp) ::  xfe_mass  !:  iron atomic mass
120   REAL(wp) ::  xfe_sol   !:  aeolian iron solubility
121   REAL(wp) ::  xfe_sed   !:  sediment iron input
122   REAL(wp) ::  xLgT      !:  total ligand concentration (umol/m3)
123   REAL(wp) ::  xk_FeL    !:  dissociation constant for (Fe + L)
124   REAL(wp) ::  xk_sc_Fe  !:  scavenging rate of "free" iron
125!!
126!! Gravitational sinking     
127   REAL(wp) ::  vsed      !:  detritus gravitational sinking rate
128   REAL(wp) ::  xhr       !:  coefficient for Martin et al. (1987) remineralisation
129!!
130!! Fast-sinking detritus parameters
131   INTEGER  ::  jexport   !:  fast detritus remineralisation switch
132   INTEGER  ::  jfdfate   !:  fate of fast detritus at seafloor switch
133   INTEGER  ::  jrratio   !:  rain ratio switch
134   INTEGER  ::  jocalccd  !:  CCD switch
135   REAL(wp) ::  xridg_r0  !:  Ridgwell rain ratio coefficient
136   REAL(wp) ::  xfdfrac1  !:  fast-sinking fraction of diatom nat. mort. losses
137   REAL(wp) ::  xfdfrac2  !:  fast-sinking fraction of mesozooplankton mort. losses
138   REAL(wp) ::  xfdfrac3  !:  fast-sinking fraction of diatom silicon grazing losses
139   REAL(wp) ::  xcaco3a   !:  polar (high latitude) CaCO3 fraction
140   REAL(wp) ::  xcaco3b   !:  equatorial (low latitude) CaCO3 fraction
141   REAL(wp) ::  xmassc    !:  organic C mass:mole ratio, C106 H175 O40 N16 P1
142   REAL(wp) ::  xmassca   !:  calcium carbonate mass:mole ratio, CaCO3
143   REAL(wp) ::  xmasssi   !:  biogenic silicon mass:mole ratio, (H2SiO3)n
144   REAL(wp) ::  xprotca   !:  calcium carbonate protection ratio
145   REAL(wp) ::  xprotsi   !:  biogenic silicon protection ratio
146   REAL(wp) ::  xfastc    !:  organic C remineralisation length scale
147   REAL(wp) ::  xfastca   !:  calcium carbonate dissolution length scale
148   REAL(wp) ::  xfastsi   !:  biogenic silicon dissolution length scale
149!!
150!! Benthos parameters
151   INTEGER  ::  jorgben   !:  does   organic detritus go to the benthos?
152   INTEGER  ::  jinorgben !:  does inorganic detritus go to the benthos?
153!!
154   REAL(wp) ::  xsedn     !:  organic   nitrogen sediment remineralisation rate
155   REAL(wp) ::  xsedfe    !:  organic   iron     sediment remineralisation rate
156   REAL(wp) ::  xsedsi    !:  inorganic silicon  sediment dissolution      rate
157   REAL(wp) ::  xsedc     !:  organic   carbon   sediment remineralisation rate
158   REAL(wp) ::  xsedca    !:  inorganic carbon   sediment dissolution      rate
159   REAL(wp) ::  xburial   !:  burial rate of seafloor detritus
160!!
161!! River parameters
162   INTEGER  ::  jriver_n  !:  riverine nitrogen?   0 = no, 1 = conc, 2 = flux
163   INTEGER  ::  jriver_si !:  riverine silicon?    0 = no, 1 = conc, 2 = flux
164   INTEGER  ::  jriver_c  !:  riverine carbon?     0 = no, 1 = conc, 2 = flux
165   INTEGER  ::  jriver_alk!:  riverine alkalinity? 0 = no, 1 = conc, 2 = flux
166   INTEGER  ::  jriver_dep!:  depth river input added to?  1 = surface, >1 possible
167!!
168!! Miscellaneous
169   REAL(wp) ::  xsdiss    !:  diatom frustule dissolution rate
170!!
171!! Additional parameters
172   INTEGER  ::  jpkb      !:  vertical layer for diagnostic of the vertical flux
173!!
174!! UKESM diagnostics
175   INTEGER  ::  jdms         !: include DMS diagnostics ? Jpalm (27-08-2014)
176   INTEGER  ::  jdms_input   !: use instant (0) or diel-average (1) inputs (AXY, 08/07/2015)
177   INTEGER  ::  jdms_model   !: choice of DMS model passed to atmosphere
178!!                              1 = ANDR, 2 = SIMO, 3 = ARAN, 4 = HALL
179!!
180!!
181   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   remdmp   !: depth dependent damping coefficient of passive tracers
182!!
183!! AXY (27/07/10): add in indices for depth horizons (for sinking flux
184!!                 and seafloor iron inputs)
185   INTEGER  ::    i0100, i0150, i0200, i0500, i1000, i1100
186#if defined key_roam
187!!
188!! ROAM carbon, alkalinity and oxygen cycle parameters
189   REAL(wp) ::  xthetaphy    !:  oxygen evolution/consumption by phytoplankton
190   REAL(wp) ::  xthetazoo    !:  oxygen consumption by zooplankton
191   REAL(wp) ::  xthetanit    !:  oxygen consumption by nitrogen remineralisation
192   REAL(wp) ::  xthetarem    !:  oxygen consumption by carbon remineralisation
193   REAL(wp) ::  xo2min       !:  oxygen minimum concentration
194!!
195!! 3D fields of carbonate system parameters
196   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: f3_pH       !: 3D pH
197   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: f3_h2co3    !: 3D carbonic acid
198   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: f3_hco3     !: 3D bicarbonate
199   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: f3_co3      !: 3D carbonate
200   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: f3_omcal    !: 3D omega calcite
201   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: f3_omarg    !: 3D omega aragonite
202!!
203!! 2D fields of calcium carbonate compensation depth
204   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: f2_ccd_cal  !: 2D calcite CCD depth
205   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: f2_ccd_arg  !: 2D aragonite CCD depth
206!!
207!! 2D fields of organic and inorganic material sedimented on the seafloor
208   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zb_sed_n    !: 2D organic nitrogen   (before)
209   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zn_sed_n    !: 2D organic nitrogen   (now)
210   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: za_sed_n    !: 2D organic nitrogen   (after)
211   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zb_sed_fe   !: 2D organic iron       (before)
212   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zn_sed_fe   !: 2D organic iron       (now)
213   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: za_sed_fe   !: 2D organic iron       (after)
214   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zb_sed_si   !: 2D inorganic silicon  (before)
215   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zn_sed_si   !: 2D inorganic silicon  (now)
216   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: za_sed_si   !: 2D inorganic silicon  (after)
217   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zb_sed_c    !: 2D organic carbon     (before)
218   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zn_sed_c    !: 2D organic carbon     (now)
219   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: za_sed_c    !: 2D organic carbon     (after)
220   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zb_sed_ca   !: 2D inorganic carbon   (before)
221   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zn_sed_ca   !: 2D inorganic carbon   (now)
222   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: za_sed_ca   !: 2D inorganic carbon   (after)
223!!
224!! 2D fields of temporally averaged properties for DMS calculations (AXY, 07/07/15)
225   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zb_dms_chn  !: 2D avg CHN   (before)
226   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zn_dms_chn  !: 2D avg CHN   (now)
227   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: za_dms_chn  !: 2D avg CHN   (after)
228   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zb_dms_chd  !: 2D avg CHD   (before)
229   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zn_dms_chd  !: 2D avg CHD   (now)
230   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: za_dms_chd  !: 2D avg CHD   (after)
231   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zb_dms_mld  !: 2D avg MLD   (before)
232   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zn_dms_mld  !: 2D avg MLD   (now)
233   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: za_dms_mld  !: 2D avg MLD   (after)
234   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zb_dms_qsr  !: 2D avg QSR   (before)
235   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zn_dms_qsr  !: 2D avg QSR   (now)
236   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: za_dms_qsr  !: 2D avg QSR   (after)
237   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zb_dms_din  !: 2D avg DIN   (before)
238   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zn_dms_din  !: 2D avg DIN   (now)
239   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: za_dms_din  !: 2D avg DIN   (after)
240!!
241!! 2D fields needing to be knows at first tstp for coupling with atm - UKEMS(Jpalm,14-06-2016)
242   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zb_co2_flx  !: 2D avg fx co2 (before)
243   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zn_co2_flx  !: 2D avg fx co2 (now)
244   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: za_co2_flx  !: 2D avg fx co2 (after)
245   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zb_dms_srf  !: 2D avg fx co2 (before)
246   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zn_dms_srf  !: 2D avg fx co2 (now)
247   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: za_dms_srf  !: 2D avg fx co2 (after)
248
249#endif
250
251!!----------------------------------------------------------------------
252!! CCD parameter
253!!----------------------------------------------------------------------
254!!
255   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   ocal_ccd  !: CCD depth
256
257!!----------------------------------------------------------------------
258!! Dust parameters
259!!----------------------------------------------------------------------
260!!
261   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   dust      !: dust parameter 1
262   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   zirondep  !! Fe deposition
263
264!!----------------------------------------------------------------------
265!! River parameters
266!!----------------------------------------------------------------------
267!!
268   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   riv_n      !: riverine N
269   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   riv_si     !: riverine Si
270   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   riv_c      !: riverine C
271   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   riv_alk    !: riverine alkalinity
272   !! AXY (19/07/12): add this to permit river fluxes to be added below top box
273   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   friver_dep !: where river fluxes added
274
275#if defined key_roam
276!!----------------------------------------------------------------------
277!! Atmospheric pCO2 data (1859 to 2100 inclusive)
278!!----------------------------------------------------------------------
279!!
280   REAL(wp), DIMENSION(242)         ::   hist_pco2 !: pCO2
281
282# if defined key_rcp26
283      !! UKMO, run AJKKH + KAAEC, RCP 2.6, pCO2 time evolution
284      DATA hist_pco2 / 286.0230, 286.1730, 286.3230, 286.4480, 286.5730, &
285      & 286.7230, 286.8480, 286.9480, 287.0480, 287.1730, &
286      & 287.3230, 287.4730, 287.6480, 287.8480, 288.0730, &
287      & 288.3480, 288.6480, 288.9730, 289.3470, 289.7470, &
288      & 290.1730, 290.6470, 291.1470, 291.6220, 292.0720, &
289      & 292.5220, 292.9220, 293.2470, 293.5220, 293.7470, &
290      & 293.9470, 294.1220, 294.2720, 294.4220, 294.5470, &
291      & 294.6470, 294.7470, 294.8470, 294.9710, 295.1710, &
292      & 295.4460, 295.7470, 296.0720, 296.4210, 296.7710, &
293      & 297.1460, 297.5710, 298.0210, 298.4460, 298.8460, &
294      & 299.2460, 299.6450, 300.0210, 300.3710, 300.7200, &
295      & 301.0450, 301.3460, 301.6710, 302.0200, 302.3450, &
296      & 302.6450, 302.9700, 303.3450, 303.7200, 304.0700, &
297      & 304.4700, 304.9200, 305.3440, 305.7700, 306.2450, &
298      & 306.7190, 307.1700, 307.6440, 308.1190, 308.5440, &
299      & 308.9440, 309.3440, 309.6940, 309.9440, 310.1190, &
300      & 310.2440, 310.3190, 310.3190, 310.2440, 310.1440, &
301      & 310.0690, 310.0440, 310.0690, 310.1440, 310.2690, &
302      & 310.4440, 310.6940, 311.0430, 311.4440, 311.8690, &
303      & 312.3680, 312.9430, 313.5430, 314.1680, 314.7900, &
304      & 315.4430, 316.2150, 317.0170, 317.7370, 318.3400, &
305      & 318.8680, 319.5900, 320.5890, 321.5470, 322.5770, &
306      & 323.8440, 324.9260, 325.7960, 327.0810, 328.6180, &
307      & 329.6830, 330.5250, 331.6880, 333.2120, 334.7870, &
308      & 336.4640, 338.2990, 339.6660, 340.7310, 342.1360, &
309      & 343.7200, 345.2200, 346.7350, 348.5820, 350.6740, &
310      & 352.4230, 353.7910, 354.9530, 355.8210, 356.7130, &
311      & 358.0630, 359.7720, 361.3970, 363.0900, 365.2560, &
312      & 367.2810, 368.7980, 370.4000, 372.4550, 374.6920, &
313      & 376.7440, 378.7440, 380.7580, 382.7080, 384.7300, &
314      & 386.9310, 389.2150, 391.4910, 393.7710, 396.0460, &
315      & 398.3240, 400.6080, 402.8950, 405.1780, 407.4550, &
316      & 409.7260, 411.9930, 414.2500, 416.4410, 418.5280, &
317      & 420.5250, 422.4390, 424.2720, 426.0200, 427.6750, &
318      & 429.2360, 430.7050, 432.0850, 433.3580, 434.5140, &
319      & 435.5740, 436.5490, 437.4420, 438.2550, 438.9810, &
320      & 439.6110, 440.1430, 440.5770, 440.9450, 441.2660, &
321      & 441.5410, 441.7840, 442.0050, 442.2040, 442.3780, &
322      & 442.5210, 442.6200, 442.6720, 442.6810, 442.6540, &
323      & 442.5830, 442.4670, 442.3270, 442.1680, 441.9960, &
324      & 441.8060, 441.5930, 441.3440, 441.0540, 440.7230, &
325      & 440.3510, 439.9300, 439.4650, 438.9730, 438.4630, &
326      & 437.9400, 437.4020, 436.8400, 436.2640, 435.6850, &
327      & 435.1030, 434.5160, 433.9170, 433.3060, 432.7010, &
328      & 432.1110, 431.5380, 430.9810, 430.4320, 429.8860, &
329      & 429.3370, 428.7810, 428.2220, 427.6490, 427.0660, &
330      & 426.4890, 425.9270, 425.3840, 424.8610, 424.3540, &
331      & 423.8540, 423.3540, 422.8530, 422.3510, 421.8410, &
332      & 421.3250, 420.8190 /
333# else
334      !! UKMO, run AJKKH + KAAEF, RCP 8.5, pCO2 time evolution
335      DATA hist_pco2 / 286.0230, 286.1730, 286.3230, 286.4480, 286.5730, &
336      & 286.7230, 286.8480, 286.9480, 287.0480, 287.1730, &
337      & 287.3230, 287.4730, 287.6480, 287.8480, 288.0730, &
338      & 288.3480, 288.6480, 288.9730, 289.3470, 289.7470, &
339      & 290.1730, 290.6470, 291.1470, 291.6220, 292.0720, &
340      & 292.5220, 292.9220, 293.2470, 293.5220, 293.7470, &
341      & 293.9470, 294.1220, 294.2720, 294.4220, 294.5470, &
342      & 294.6470, 294.7470, 294.8470, 294.9710, 295.1710, &
343      & 295.4460, 295.7470, 296.0720, 296.4210, 296.7710, &
344      & 297.1460, 297.5710, 298.0210, 298.4460, 298.8460, &
345      & 299.2460, 299.6450, 300.0210, 300.3710, 300.7200, &
346      & 301.0450, 301.3460, 301.6710, 302.0200, 302.3450, &
347      & 302.6450, 302.9700, 303.3450, 303.7200, 304.0700, &
348      & 304.4700, 304.9200, 305.3440, 305.7700, 306.2450, &
349      & 306.7190, 307.1700, 307.6440, 308.1190, 308.5440, &
350      & 308.9440, 309.3440, 309.6940, 309.9440, 310.1190, &
351      & 310.2440, 310.3190, 310.3190, 310.2440, 310.1440, &
352      & 310.0690, 310.0440, 310.0690, 310.1440, 310.2690, &
353      & 310.4440, 310.6940, 311.0430, 311.4440, 311.8690, &
354      & 312.3680, 312.9430, 313.5430, 314.1680, 314.7900, &
355      & 315.4430, 316.2150, 317.0170, 317.7370, 318.3400, &
356      & 318.8680, 319.5900, 320.5890, 321.5470, 322.5770, &
357      & 323.8440, 324.9260, 325.7960, 327.0810, 328.6180, &
358      & 329.6830, 330.5250, 331.6880, 333.2120, 334.7870, &
359      & 336.4640, 338.2990, 339.6660, 340.7310, 342.1360, &
360      & 343.7200, 345.2200, 346.7350, 348.5820, 350.6740, &
361      & 352.4230, 353.7910, 354.9530, 355.8210, 356.7130, &
362      & 358.0630, 359.7720, 361.3970, 363.0900, 365.2560, &
363      & 367.2810, 368.7980, 370.4000, 372.4550, 374.6920, &
364      & 376.7440, 378.7440, 380.7580, 382.7080, 384.7300, &
365      & 386.9420, 389.2540, 391.5670, 393.9370, 396.3920, &
366      & 398.9320, 401.5550, 404.2550, 407.0220, 409.8530, &
367      & 412.7470, 415.7050, 418.7210, 421.7880, 424.9180, &
368      & 428.1200, 431.3970, 434.7470, 438.1650, 441.6410, &
369      & 445.1700, 448.7530, 452.3920, 456.0950, 459.8810, &
370      & 463.7680, 467.7660, 471.8750, 476.0960, 480.4210, &
371      & 484.8390, 489.3470, 493.9430, 498.6400, 503.4380, &
372      & 508.3410, 513.3630, 518.5160, 523.8050, 529.2290, &
373      & 534.7780, 540.4450, 546.2230, 552.1120, 558.1110, &
374      & 564.2110, 570.4130, 576.7390, 583.1990, 589.7980, &
375      & 596.5390, 603.4110, 610.4060, 617.4940, 624.6500, &
376      & 631.8800, 639.1750, 646.5360, 653.9800, 661.5230, &
377      & 669.1840, 676.9570, 684.8290, 692.7790, 700.7690, &
378      & 708.8050, 716.8870, 725.0020, 733.1770, 741.3900, &
379      & 749.6700, 758.0480, 766.5050, 775.0350, 783.6110, &
380      & 792.2200, 800.8740, 809.5680, 818.2760, 827.0090, &
381      & 835.8020, 844.6550, 853.5730, 862.5690, 871.6190, &
382      & 880.7020, 889.8240, 898.9590, 908.1270, 917.3080, &
383      & 926.4960, 935.7040 /
384# endif
385#endif
386
387!!----------------------------------------------------------------------
388!! Optical parameters
389!!----------------------------------------------------------------------
390!!
391   REAL(wp) ::   xkr0       !: water coefficient absorption in red      (NAMELIST)
392   REAL(wp) ::   xkg0       !: water coefficient absorption in green    (NAMELIST)
393   REAL(wp) ::   xkrp       !: pigment coefficient absorption in red    (NAMELIST)
394   REAL(wp) ::   xkgp       !: pigment coefficient absorption in green  (NAMELIST)
395   REAL(wp) ::   xlr        !: exposant for pigment absorption in red   (NAMELIST)
396   REAL(wp) ::   xlg        !: exposant for pigment absorption in green (NAMELIST)
397   REAL(wp) ::   rpig       !: chla/chla+phea ratio                     (NAMELIST)
398                                                       
399   INTEGER , ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   neln    !: number of levels in the euphotic layer
400   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   xze     !: euphotic layer depth
401   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xpar    !: par (photosynthetic available radiation)
402
403!!----------------------------------------------------------------------
404!! Sediment parameters                               
405!!
406!! AXY (16/01/12): these parameters were originally part of the pre-
407!!                 cursor model on which MEDUSA's code was grounded;
408!!                 they do not relate to the sediment/benthos submodel
409!!                 added as part of the ROAM project; they have only
410!!                 been retained because they are distributed through
411!!                 MEDUSA and require a proper clean-up to purge
412!!----------------------------------------------------------------------
413!!
414   REAL(wp) ::   sedlam       !: time coefficient of POC remineralization in sediments
415   REAL(wp) ::   sedlostpoc   !: ???
416   REAL(wp) ::   areacot      !: ???
417                                                       
418   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: dminl       !: fraction of sinking POC released in sediments
419   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dmin3       !: fraction of sinking POC released at each level
420                                                       
421   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: sedpocb     !: mass of POC in sediments
422   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: sedpocn     !: mass of POC in sediments
423   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: sedpoca     !: mass of POC in sediments
424                                                       
425   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: fbodf       !: rapid sinking particles
426   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: fbods       !: rapid sinking particles
427   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: fbodn       !: rapid sinking particles
428                                                       
429   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ffln        !:
430   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fflf        !:
431   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ffls        !:
432
433   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: cmask       !: ???
434
435   !!----------------------------------------------------------------------
436   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
437   !! $Id$
438   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
439   !!----------------------------------------------------------------------
440CONTAINS
441
442   INTEGER FUNCTION sms_medusa_alloc()
443      !!----------------------------------------------------------------------
444      !!        *** ROUTINE sms_medusa_alloc ***
445      !!----------------------------------------------------------------------
446      USE lib_mpp , ONLY: ctl_warn
447      INTEGER ::   ierr(8)        ! Local variables
448      !!----------------------------------------------------------------------
449      ierr(:) = 0
450      !
451#if defined key_medusa
452      !* depth-dependent damping coefficient
453      ALLOCATE( remdmp(jpk,jp_medusa),                           STAT=ierr(1) )
454# if defined key_roam
455      !* 2D and 3D fields of carbonate system parameters
456      ALLOCATE( f2_ccd_cal(jpi,jpj)  , f2_ccd_arg(jpi,jpj)  ,       &
457         &      f3_pH(jpi,jpj,jpk)   , f3_h2co3(jpi,jpj,jpk),       &
458         &      f3_hco3(jpi,jpj,jpk) , f3_co3(jpi,jpj,jpk)  ,       &
459         &      f3_omcal(jpi,jpj,jpk), f3_omarg(jpi,jpj,jpk),    STAT=ierr(2) )
460      !* 2D fields of organic and inorganic material sedimented on the seafloor
461      ALLOCATE( zb_sed_n(jpi,jpj)    , zn_sed_n(jpi,jpj)    ,       &
462         &      za_sed_n(jpi,jpj)    ,                              &
463         &      zb_sed_fe(jpi,jpj)   , zn_sed_fe(jpi,jpj)   ,       &
464         &      za_sed_fe(jpi,jpj)   ,                              &
465         &      zb_sed_si(jpi,jpj)   , zn_sed_si(jpi,jpj)   ,       &
466         &      za_sed_si(jpi,jpj)   ,                              &
467         &      zb_sed_c(jpi,jpj)    , zn_sed_c(jpi,jpj)    ,       &
468         &      za_sed_c(jpi,jpj)    ,                              &
469         &      zb_sed_ca(jpi,jpj)   , zn_sed_ca(jpi,jpj)   ,       &
470         &      za_sed_ca(jpi,jpj)   ,                           STAT=ierr(3) )
471      !* 2D fields of temporally averaged properties for DMS calculations (AXY, 07/07/15)
472      ALLOCATE( zb_dms_chn(jpi,jpj)  , zn_dms_chn(jpi,jpj)  ,       &
473         &      za_dms_chn(jpi,jpj)  ,                              &
474         &      zb_dms_chd(jpi,jpj)  , zn_dms_chd(jpi,jpj)  ,       &       
475         &      za_dms_chd(jpi,jpj)  ,                              &
476         &      zb_dms_mld(jpi,jpj)  , zn_dms_mld(jpi,jpj)  ,       &       
477         &      za_dms_mld(jpi,jpj)  ,                              &
478         &      zb_dms_qsr(jpi,jpj)  , zn_dms_qsr(jpi,jpj)  ,       &       
479         &      za_dms_qsr(jpi,jpj)  ,                              &
480         &      zb_dms_din(jpi,jpj)  , zn_dms_din(jpi,jpj)  ,       &       
481         &      za_dms_din(jpi,jpj)  ,                           STAT=ierr(4) )
482      !* 2D fields needing to be knows at first tstp for coupling with atm -
483      !UKEMSi (Jpalm,14-06-2016)
484      ALLOCATE( zb_co2_flx(jpi,jpj)  , zn_co2_flx(jpi,jpj)  ,       &
485         &      za_co2_flx(jpi,jpj)  ,                              &
486         &      zb_dms_srf(jpi,jpj)  , zn_dms_srf(jpi,jpj)  ,       &           
487         &      za_dms_srf(jpi,jpj)  ,                           STAT=ierr(5) )
488# endif
489      !* 2D fields of miscellaneous parameters
490      ALLOCATE( ocal_ccd(jpi,jpj)    , dust(jpi,jpj)        ,       &
491         &      zirondep(jpi,jpj)                           ,       &
492         &      riv_n(jpi,jpj)                              ,       &
493         &      riv_si(jpi,jpj)      , riv_c(jpi,jpj)       ,       &
494         &      riv_alk(jpi,jpj)     , friver_dep(jpk,jpk)  ,    STAT=ierr(6) )
495      !* 2D and 3D fields of light parameters
496      ALLOCATE( neln(jpi,jpj)        , xze(jpi,jpj)         ,       &
497         &      xpar(jpi,jpj,jpk)    ,                           STAT=ierr(7) )
498      !* 2D and 3D fields of sediment-associated parameters
499      ALLOCATE( dminl(jpi,jpj)       , dmin3(jpi,jpj,jpk)   ,       &
500         &      sedpocb(jpi,jpj)     , sedpocn(jpi,jpj)     ,       &
501         &      sedpoca(jpi,jpj)     , fbodn(jpi,jpj)       ,       &
502         &      fbodf(jpi,jpj)       , fbods(jpi,jpj)       ,       &
503         &      ffln(jpi,jpj,jpk)    , fflf(jpi,jpj,jpk)    ,       &
504         &      ffls(jpi,jpj,jpk)    , cmask(jpi,jpj)       ,    STAT=ierr(8) ) 
505#endif
506      !
507      sms_medusa_alloc = MAXVAL( ierr )
508      !
509      IF( sms_medusa_alloc /= 0 )   CALL ctl_warn('sms_medusa_alloc: failed to allocate arrays')
510      !
511   END FUNCTION sms_medusa_alloc
512
513#else
514   !!----------------------------------------------------------------------
515   !!  Empty module :                                     NO MEDUSA model
516   !!----------------------------------------------------------------------
517#endif
518
519   !!======================================================================
520END MODULE sms_medusa
Note: See TracBrowser for help on using the repository browser.