ROMS
Loading...
Searching...
No Matches
nemuro_mod.h
Go to the documentation of this file.
1 MODULE mod_biology
2!
3!git $Id$
4!================================================== Hernan G. Arango ===
5! Copyright (c) 2002-2025 The ROMS Group !
6! Licensed under a MIT/X style license !
7! See License_ROMS.md !
8!=======================================================================
9! !
10! Parameters for Nemuro ecosystem model: !
11! !
12! AlphaPS Small Phytoplankton photochemical reaction coefficient: !
13! initial slope (low light) of the P-I curve, !
14! [1/(W/m2) 1/day]. !
15! AlphaPL Large Phytoplankton photochemical reaction coefficient: !
16! initial slope (low light) of the P-I curve, !
17! [1/(W/m2) 1/day]. !
18! AlphaZL Large Zooplankton assimilation efficiency, !
19! [nondimemsional]. !
20! AlphaZP Predator Zooplankton assimilation efficiency, !
21! [nondimemsional]. !
22! AlphaZS Small Zooplankton assimilation efficiency, !
23! [nondimemsional]. !
24! AttPL Light attenuation due to Large Phytoplankton, self- !
25! shading coefficient, [m2/millimole_N]. !
26! AttPS Light attenuation due to Small Phytoplankton, self- !
27! shading coefficient, [m2/millimole_N]. !
28! AttSW Light attenuation due to sea water, [1/m]. !
29! BetaPL Large Phytoplankton photoinhibition coefficient, !
30! [1/(W/m2) 1/day]. !
31! BetaPS Small Phytoplankton photoinhibition coefficient, !
32! [1/(W/m2) 1/day]. !
33! BetaZL Large Zooplankton growth efficiency [nondimensional]. !
34! BetaZP Predator Zooplankton growth efficiency [nondimensional].!
35! BetaZS Small Zooplankton growth efficiency [nondimensional]. !
36! BioIter Maximum number of iterations to achieve convergence of !
37! the nonlinear solution. !
38! GammaL Large Phytoplankton ratio of extracellular excretion to !
39! photosynthesis [nondimensional]. !
40! GammaS Small Phytoplankton ratio of extracellular excretion to !
41! photosynthesis [nondimensional]. !
42! GRmaxLpl Large Zooplankton maximum grazing rate on Large !
43! Phytoplankton at 0 Celsius, [1/day]. !
44! GRmaxLps Large Zooplankton maximum grazing rate on Small !
45! Phytoplankton at 0 Celsius, [1/day]. !
46! GRmaxLzs Small Zooplankton maximum grazing rate on Small !
47! Zooplankton at 0 Celsius, [1/day]. !
48! GRmaxPpl Predator Zooplankton maximum grazing rate on Large !
49! Phytoplankton at 0 Celsius, [1/day]. !
50! GRmaxPzl Predator Zooplankton maximum grazing rate on Large !
51! Phytoplankton at 0 Celsius, [1/day]. !
52! GRmaxPzs Predator Zooplankton maximum grazing rate on Small !
53! Zooplankton at 0 Celsius, [1/day]. !
54! GRmaxSps Small Zooplankton maximum grazing rate on Small !
55! Phytoplankton at 0 Celsius, [1/day]. !
56! KD2N Temperature coefficient for DON to NH4 decomposition, !
57! [1/Celsius]. !
58! KGppL Large Phytoplankton temperature coefficient for !
59! photosynthetic rate, [1/Celsius]. !
60! KGppS Small Phytoplankton temperature coefficient for !
61! photosynthetic rate, [1/Celsius]. !
62! KGraL Large Zooplankton temperature coefficient for grazing, !
63! [1/Celsius]. !
64! KGraP Predator Zooplankton temperature coefficient for !
65! grazing,[1/Celsius]. !
66! KGraS Small Zooplankton temperature coefficient for grazing, !
67! [1/Celsius]. !
68! KMorPL Large Phytoplankton temperature coefficient for !
69! mortality, [1/Celsius]. !
70! KMorPS Small Phytoplankton temperature coefficient for !
71! mortality, [1/Celsius]. !
72! KMorZL Large Zooplankton temperature coefficient for !
73! mortality, [1/Celsius]. !
74! KMorZP Predator Zooplankton temperature coefficient for !
75! mortality, [1/Celsius]. !
76! KMorZS Small Zooplankton temperature coefficient for !
77! mortality, [1/Celsius]. !
78! KNit Temperature coefficient for nitrification (NH4 to NO3) !
79! decomposition, [1/Celsius]. !
80! KNH4L Large Phytoplankton half satuation constant for NH4, !
81! [millimole_N/m3]. !
82! KNH4S Small Phytoplankton half satuation constant for NH4, !
83! [millimole_N/m3]. !
84! KNO3L Large Phytoplankton half satuation constant for NO3, !
85! [millimole_N/m3]. !
86! KNO3S Small Phytoplankton half satuation constant for NO3, !
87! [millimole_N/m3]. !
88! KO2S Temperature coefficient for Opal to SiOH4 decomposition,!
89! [1/Celsius]. !
90! KP2D Temperature coefficient for PON to DON decomposition, !
91! [1/Celsius]. !
92! KP2N Temperature coefficient for PON to NH4 decomposition, !
93! [1/Celsius]. !
94! KPL2ZL Large Zooplankton half-saturation coefficient for !
95! ingestion on Large Phytoplankton [millimole_N/m3]^2. !
96! KPL2ZP Predator Zooplankton half-saturation coefficient for !
97! ingestion on Large Phytoplankton [millimole_N/m3]^2. !
98! KPS2ZL Larg Zooplankton half-saturation coefficient for !
99! ingestion on Small Phytoplankton [millimole_N/m3]^2. !
100! KPS2ZS Small Zooplankton half-saturation coefficient for !
101! ingestion on Small Phytoplankton [millimole_N/m3]^2. !
102! KResPL Large Phytoplankton temperature coefficient for !
103! respiration, [1/Celsius]. !
104! KResPS Small Phytoplankton temperature coefficient for !
105! respiration, [1/Celsius]. !
106! KSiL Large Phytoplankton half satuation constant for SiOH4, !
107! [millimole_Si/m3]. !
108! KZL2ZP Predator Zooplankton half-saturation coefficient for !
109! ingestion on Large Zooplankton [millimole_N/m3]^2. !
110! KZS2ZL Large Zooplankton half-saturation coefficient for !
111! ingestion on Small Phytoplankton [millimole_N/m3]^2. !
112! KZS2ZP Predator Zooplankton half-saturation coefficient for !
113! ingestion on Small Zooplankton [millimole_N/m3]^2. !
114! LamL Large Zooplankton Ivlev constant, [m3/millimole_N]. !
115! LamP Predator Zooplankton Ivlev constant, [m3/millimole_N]. !
116! LamS Small Zooplankton Ivlev constant, [m3/millimole_N]. !
117! MorPL0 Large Phytoplankton mortality rate at 0 Celsius, !
118! [m3/millimole_N 1/day]. !
119! MorPS0 Small Phytoplankton mortality rate at 0 Celsius, !
120! [m3/millimole_N 1/day]. !
121! MorZL0 Large Zooplankton mortality rate at 0 Celsius, !
122! [m3/millimole_N 1/day]. !
123! MorZP0 Predator Zooplankton mortality rate at 0 Celsius, !
124! [m3/millimole_N 1/day]. !
125! MorZS0 Small Zooplankton mortality rate at 0 Celsius, !
126! [m3/millimole_N 1/day]. !
127! Nit0 Nitrification (NH4 to NO3) rate at 0 Celsius, [1/day]. !
128! PARfrac Fraction of shortwave radiation that is available for !
129! photosyntesis [nondimensional]. !
130! PL2ZLstar Large Zooplankton threshold value for grazing on !
131! Large Phytoplankton, [millimole_N/m3]. !
132! PL2ZPstar Predator Zooplankton threshold value for grazing on !
133! Large Phytoplankton, [millimole_N/m3]. !
134! PS2ZLstar Large Zooplankton threshold value for grazing on !
135! Small Phytoplankton, [millimole_N/m3]. !
136! PS2ZSstar Small Zooplankton threshold value for grazing on !
137! Small Phytoplankton, [millimole_N/m3]. !
138! PusaiL Large Phytoplankton Ammonium inhibition coefficient, !
139! [m3/millimole_N]. !
140! PusaiPL Predator Zooplankton grazing on Large Phytoplankton !
141! inhibition coefficient, [m3/millimole_N]. !
142! PusaiS Small Phytoplankton Ammonium inhibition coefficient, !
143! [m3/millimole_N]. !
144! PusaiZS Predator Zooplankton grazing on Small Zooplankton !
145! inhibition coefficient, [m3/millimole_N]. !
146! ResPL0 Large Phytoplankton respiration rate at 0 Celsius, !
147! [1/day]. !
148! ResPS0 Small Phytoplankton respiration rate at 0 Celsius, !
149! [1/day]. !
150! RSiN Si:N ratio [millimole_Si/millimole_N]. !
151! setVOpal Opal Settling (sinking) velocity [m/day]. !
152! setVPON PON Settling (sinking) velocity [m/day]. !
153! VD2N0 DON to NH4 decomposition rate at 0 Celsius, [1/day]. !
154! VmaxL Maximum Large Phytoplankton photosynthetic rate [1/day] !
155! in the absence of photoinhibition under optimal light.!
156! VmaxS Maximum Small Phytoplankton photosynthetic rate [1/day] !
157! in the absence of photoinhibition under optimal light.!
158! VO2S0 Opal to Silicate decomposition rate at 0 Celsius, !
159! [1/day]. !
160! VP2D0 PON to DON decomposition rate at 0 Celsius, [1/day]. !
161! VP2N0 PON to NH4 decomposition rate at 0 Celsius, [1/day]. !
162! ZL2ZPstar Small Zooplankton threshold value for grazing on !
163! Small Phytoplankton, [millimole_N/m3]. !
164! ZS2ZLstar Large Zooplankton threshold value for grazing on !
165! Small Zooplankton, [millimole_N/m3]. !
166! ZS2ZPstar Predator Zooplankton threshold value for grazing on !
167! Small Zooplankton, [millimole_N/m3]. !
168! !
169!=======================================================================
170!
171 USE mod_param
172!
173 implicit none
174!
175! Set biological tracer identification indices.
176!
177 integer, allocatable :: idbio(:) ! Biological tracers
178 integer :: ilphy ! Large Phytoplankton biomass
179 integer :: isphy ! Small Phytoplankton biomass
180 integer :: ilzoo ! Large Zooplankton biomass
181 integer :: iszoo ! Small Zooplankton biomass
182 integer :: ipzoo ! Predator Zooplankton biomass
183 integer :: ino3_ ! Nitrate concentration
184 integer :: inh4_ ! Ammonium concentration
185 integer :: ipon_ ! Particulate Organic Nitrogen
186 integer :: idon_ ! Dissolved Organic Nitrogen
187 integer :: isioh ! Silicate concentration
188 integer :: iopal ! Particulate organic silica
189!
190! Biological parameters.
191!
192 integer, allocatable :: bioiter(:)
193
194 real(r8), allocatable :: alphapl(:) ! 1/(W/m2) 1/day
195 real(r8), allocatable :: alphaps(:) ! 1/(W/m2) 1/day
196 real(r8), allocatable :: alphazl(:) ! nondimensional
197 real(r8), allocatable :: alphazp(:) ! nondimensional
198 real(r8), allocatable :: alphazs(:) ! nondimensional
199 real(r8), allocatable :: attpl(:) ! m2/mmole_N
200 real(r8), allocatable :: attps(:) ! m2/mmole_N
201 real(r8), allocatable :: attsw(:) ! 1/m
202 real(r8), allocatable :: betapl(:) ! 1/(W/m2) 1/day
203 real(r8), allocatable :: betaps(:) ! 1/(W/m2) 1/day
204 real(r8), allocatable :: betazs(:) ! nondimensional
205 real(r8), allocatable :: betazl(:) ! nondimensional
206 real(r8), allocatable :: betazp(:) ! nondimensional
207 real(r8), allocatable :: gammal(:) ! nondimensional
208 real(r8), allocatable :: gammas(:) ! nondimensional
209 real(r8), allocatable :: grmaxlpl(:) ! 1/day
210 real(r8), allocatable :: grmaxlps(:) ! 1/day
211 real(r8), allocatable :: grmaxlzs(:) ! 1/day
212 real(r8), allocatable :: grmaxppl(:) ! 1/day
213 real(r8), allocatable :: grmaxpzl(:) ! 1/day
214 real(r8), allocatable :: grmaxpzs(:) ! 1/day
215 real(r8), allocatable :: grmaxsps(:) ! 1/day
216 real(r8), allocatable :: kd2n(:) ! 1/Celsius
217 real(r8), allocatable :: kgppl(:) ! 1/Celsius
218 real(r8), allocatable :: kgpps(:) ! 1/Celsius
219 real(r8), allocatable :: kgral(:) ! 1/Celsius
220 real(r8), allocatable :: kgrap(:) ! 1/Celsius
221 real(r8), allocatable :: kgras(:) ! 1/Celsius
222 real(r8), allocatable :: kmorpl(:) ! 1/Celsius
223 real(r8), allocatable :: kmorps(:) ! 1/Celsius
224 real(r8), allocatable :: kmorzl(:) ! 1/Celsius
225 real(r8), allocatable :: kmorzp(:) ! 1/Celsius
226 real(r8), allocatable :: kmorzs(:) ! 1/Celsius
227 real(r8), allocatable :: knh4l(:) ! mmole_N/m3
228 real(r8), allocatable :: knh4s(:) ! mmole_N/m3
229 real(r8), allocatable :: knit(:) ! 1/Celsius
230 real(r8), allocatable :: kno3l(:) ! mmole_N/m3
231 real(r8), allocatable :: kno3s(:) ! mmole_N/m3
232 real(r8), allocatable :: ko2s(:) ! 1/Celsius
233 real(r8), allocatable :: kp2d(:) ! 1/Celsius
234 real(r8), allocatable :: kp2n(:) ! 1/Celsius
235 real(r8), allocatable :: kpl2zl(:) ! mmole_N/m3
236 real(r8), allocatable :: kps2zl(:) ! mmole_N/m3
237 real(r8), allocatable :: kps2zs(:) ! mmole_N/m3
238 real(r8), allocatable :: kpl2zp(:) ! mmole_N/m3
239 real(r8), allocatable :: krespl(:) ! 1/Celsius
240 real(r8), allocatable :: kresps(:) ! 1/Celsius
241 real(r8), allocatable :: ksil(:) ! mmole_Si/m3
242 real(r8), allocatable :: kzl2zp(:) ! mmole_N/m3
243 real(r8), allocatable :: kzs2zl(:) ! mmole_N/m3
244 real(r8), allocatable :: kzs2zp(:) ! mmole_N/m3
245 real(r8), allocatable :: laml(:) ! m3/mmole_N
246 real(r8), allocatable :: lamp(:) ! m3/mmole_N
247 real(r8), allocatable :: lams(:) ! m3/mmole_N
248 real(r8), allocatable :: morpl0(:) ! m3/mmole_N/day
249 real(r8), allocatable :: morps0(:) ! m3/mmole_N/day
250 real(r8), allocatable :: morzl0(:) ! m3/mmole_N 1/day
251 real(r8), allocatable :: morzp0(:) ! m3/mmole_N 1/day
252 real(r8), allocatable :: morzs0(:) ! m3/mmole_N 1/day
253 real(r8), allocatable :: nit0(:) ! 1/day
254 real(r8), allocatable :: parfrac(:) ! nondimensional
255 real(r8), allocatable :: pusail(:) ! m3/mmole_N
256 real(r8), allocatable :: pusaipl(:) ! m3/mmole_N
257 real(r8), allocatable :: pusais(:) ! m3/mmole_N
258 real(r8), allocatable :: pusaizs(:) ! m3/mmole_N
259 real(r8), allocatable :: pl2zlstar(:) ! mmole_N/m3
260 real(r8), allocatable :: pl2zpstar(:) ! mmole_N/m3
261 real(r8), allocatable :: ps2zlstar(:) ! mmole_N/m3
262 real(r8), allocatable :: ps2zsstar(:) ! mmole_N/m3
263 real(r8), allocatable :: respl0(:) ! 1/day
264 real(r8), allocatable :: resps0(:) ! 1/day
265 real(r8), allocatable :: rsin(:) ! mmole_Si/mmole_N
266 real(r8), allocatable :: setvopal(:) ! m/day
267 real(r8), allocatable :: setvpon(:) ! m/day
268 real(r8), allocatable :: vd2n0(:) ! 1/day
269 real(r8), allocatable :: vmaxl(:) ! 1/day
270 real(r8), allocatable :: vmaxs(:) ! 1/day
271 real(r8), allocatable :: vo2s0(:) ! 1/day
272 real(r8), allocatable :: vp2d0(:) ! 1/day
273 real(r8), allocatable :: vp2n0(:) ! 1/day
274 real(r8), allocatable :: zl2zpstar(:) ! mmole_N/m3
275 real(r8), allocatable :: zs2zlstar(:) ! mmole_N/m3
276 real(r8), allocatable :: zs2zpstar(:) ! mmole_N/m3
277
278 CONTAINS
279
280 SUBROUTINE initialize_biology
281!
282!=======================================================================
283! !
284! This routine sets several variables needed by the biology model. !
285! It allocates and assigns biological tracers indices. !
286! !
287!=======================================================================
288!
289! Local variable declarations
290!
291 integer :: i, ic
292!
293!-----------------------------------------------------------------------
294! Set number of biological tracers.
295!-----------------------------------------------------------------------
296!
297 nbt=11
298!
299!-----------------------------------------------------------------------
300! Allocate various module variables.
301!-----------------------------------------------------------------------
302!
303 IF (.not.allocated(bioiter)) THEN
304 allocate ( bioiter(ngrids) )
305 dmem(1)=dmem(1)+real(ngrids,r8)
306 END IF
307
308 IF (.not.allocated(alphapl)) THEN
309 allocate ( alphapl(ngrids) )
310 dmem(1)=dmem(1)+real(ngrids,r8)
311 END IF
312
313 IF (.not.allocated(alphaps)) THEN
314 allocate ( alphaps(ngrids) )
315 dmem(1)=dmem(1)+real(ngrids,r8)
316 END IF
317
318 IF (.not.allocated(alphazl)) THEN
319 allocate ( alphazl(ngrids) )
320 dmem(1)=dmem(1)+real(ngrids,r8)
321 END IF
322
323 IF (.not.allocated(alphazp)) THEN
324 allocate ( alphazp(ngrids) )
325 dmem(1)=dmem(1)+real(ngrids,r8)
326 END IF
327
328 IF (.not.allocated(alphazs)) THEN
329 allocate ( alphazs(ngrids) )
330 dmem(1)=dmem(1)+real(ngrids,r8)
331 END IF
332
333 IF (.not.allocated(attpl)) THEN
334 allocate ( attpl(ngrids) )
335 dmem(1)=dmem(1)+real(ngrids,r8)
336 END IF
337
338 IF (.not.allocated(attps)) THEN
339 allocate ( attps(ngrids) )
340 dmem(1)=dmem(1)+real(ngrids,r8)
341 END IF
342
343 IF (.not.allocated(attsw)) THEN
344 allocate ( attsw(ngrids) )
345 dmem(1)=dmem(1)+real(ngrids,r8)
346 END IF
347
348 IF (.not.allocated(betapl)) THEN
349 allocate ( betapl(ngrids) )
350 dmem(1)=dmem(1)+real(ngrids,r8)
351 END IF
352
353 IF (.not.allocated(betaps)) THEN
354 allocate ( betaps(ngrids) )
355 dmem(1)=dmem(1)+real(ngrids,r8)
356 END IF
357
358 IF (.not.allocated(betazs)) THEN
359 allocate ( betazs(ngrids) )
360 dmem(1)=dmem(1)+real(ngrids,r8)
361 END IF
362
363 IF (.not.allocated(betazl)) THEN
364 allocate ( betazl(ngrids) )
365 dmem(1)=dmem(1)+real(ngrids,r8)
366 END IF
367
368 IF (.not.allocated(betazp)) THEN
369 allocate ( betazp(ngrids) )
370 dmem(1)=dmem(1)+real(ngrids,r8)
371 END IF
372
373 IF (.not.allocated(gammal)) THEN
374 allocate ( gammal(ngrids) )
375 dmem(1)=dmem(1)+real(ngrids,r8)
376 END IF
377
378 IF (.not.allocated(gammas)) THEN
379 allocate ( gammas(ngrids) )
380 dmem(1)=dmem(1)+real(ngrids,r8)
381 END IF
382
383 IF (.not.allocated(grmaxlpl)) THEN
384 allocate ( grmaxlpl(ngrids) )
385 dmem(1)=dmem(1)+real(ngrids,r8)
386 END IF
387
388 IF (.not.allocated(grmaxlps)) THEN
389 allocate ( grmaxlps(ngrids) )
390 dmem(1)=dmem(1)+real(ngrids,r8)
391 END IF
392
393 IF (.not.allocated(grmaxlzs)) THEN
394 allocate ( grmaxlzs(ngrids) )
395 dmem(1)=dmem(1)+real(ngrids,r8)
396 END IF
397
398 IF (.not.allocated(grmaxppl)) THEN
399 allocate ( grmaxppl(ngrids) )
400 dmem(1)=dmem(1)+real(ngrids,r8)
401 END IF
402
403 IF (.not.allocated(grmaxpzl)) THEN
404 allocate ( grmaxpzl(ngrids) )
405 dmem(1)=dmem(1)+real(ngrids,r8)
406 END IF
407
408 IF (.not.allocated(grmaxpzs)) THEN
409 allocate ( grmaxpzs(ngrids) )
410 dmem(1)=dmem(1)+real(ngrids,r8)
411 END IF
412
413 IF (.not.allocated(grmaxsps)) THEN
414 allocate ( grmaxsps(ngrids) )
415 dmem(1)=dmem(1)+real(ngrids,r8)
416 END IF
417
418 IF (.not.allocated(kd2n)) THEN
419 allocate ( kd2n(ngrids) )
420 dmem(1)=dmem(1)+real(ngrids,r8)
421 END IF
422
423 IF (.not.allocated(kgppl)) THEN
424 allocate ( kgppl(ngrids) )
425 dmem(1)=dmem(1)+real(ngrids,r8)
426 END IF
427
428 IF (.not.allocated(kgpps)) THEN
429 allocate ( kgpps(ngrids) )
430 dmem(1)=dmem(1)+real(ngrids,r8)
431 END IF
432
433 IF (.not.allocated(kgral)) THEN
434 allocate ( kgral(ngrids) )
435 dmem(1)=dmem(1)+real(ngrids,r8)
436 END IF
437
438 IF (.not.allocated(kgrap)) THEN
439 allocate ( kgrap(ngrids) )
440 dmem(1)=dmem(1)+real(ngrids,r8)
441 END IF
442
443 IF (.not.allocated(kgras)) THEN
444 allocate ( kgras(ngrids) )
445 dmem(1)=dmem(1)+real(ngrids,r8)
446 END IF
447
448 IF (.not.allocated(kmorpl)) THEN
449 allocate ( kmorpl(ngrids) )
450 dmem(1)=dmem(1)+real(ngrids,r8)
451 END IF
452
453 IF (.not.allocated(kmorps)) THEN
454 allocate ( kmorps(ngrids) )
455 dmem(1)=dmem(1)+real(ngrids,r8)
456 END IF
457
458 IF (.not.allocated(kmorzl)) THEN
459 allocate ( kmorzl(ngrids) )
460 dmem(1)=dmem(1)+real(ngrids,r8)
461 END IF
462
463 IF (.not.allocated(kmorzp)) THEN
464 allocate ( kmorzp(ngrids) )
465 dmem(1)=dmem(1)+real(ngrids,r8)
466 END IF
467
468 IF (.not.allocated(kmorzs)) THEN
469 allocate ( kmorzs(ngrids) )
470 dmem(1)=dmem(1)+real(ngrids,r8)
471 END IF
472
473 IF (.not.allocated(knh4l)) THEN
474 allocate ( knh4l(ngrids) )
475 dmem(1)=dmem(1)+real(ngrids,r8)
476 END IF
477
478 IF (.not.allocated(knh4s)) THEN
479 allocate ( knh4s(ngrids) )
480 dmem(1)=dmem(1)+real(ngrids,r8)
481 END IF
482
483 IF (.not.allocated(knit)) THEN
484 allocate ( knit(ngrids) )
485 dmem(1)=dmem(1)+real(ngrids,r8)
486 END IF
487
488 IF (.not.allocated(kno3l)) THEN
489 allocate ( kno3l(ngrids) )
490 dmem(1)=dmem(1)+real(ngrids,r8)
491 END IF
492
493 IF (.not.allocated(kno3s)) THEN
494 allocate ( kno3s(ngrids) )
495 dmem(1)=dmem(1)+real(ngrids,r8)
496 END IF
497
498 IF (.not.allocated(ko2s)) THEN
499 allocate ( ko2s(ngrids) )
500 dmem(1)=dmem(1)+real(ngrids,r8)
501 END IF
502
503 IF (.not.allocated(kp2d)) THEN
504 allocate ( kp2d(ngrids) )
505 dmem(1)=dmem(1)+real(ngrids,r8)
506 END IF
507
508 IF (.not.allocated(kp2n)) THEN
509 allocate ( kp2n(ngrids) )
510 dmem(1)=dmem(1)+real(ngrids,r8)
511 END IF
512
513 IF (.not.allocated(kpl2zl)) THEN
514 allocate ( kpl2zl(ngrids) )
515 dmem(1)=dmem(1)+real(ngrids,r8)
516 END IF
517
518 IF (.not.allocated(kps2zl)) THEN
519 allocate ( kps2zl(ngrids) )
520 dmem(1)=dmem(1)+real(ngrids,r8)
521 END IF
522
523 IF (.not.allocated(kps2zs)) THEN
524 allocate ( kps2zs(ngrids) )
525 dmem(1)=dmem(1)+real(ngrids,r8)
526 END IF
527
528 IF (.not.allocated(kpl2zp)) THEN
529 allocate ( kpl2zp(ngrids) )
530 dmem(1)=dmem(1)+real(ngrids,r8)
531 END IF
532
533 IF (.not.allocated(krespl)) THEN
534 allocate ( krespl(ngrids) )
535 dmem(1)=dmem(1)+real(ngrids,r8)
536 END IF
537
538 IF (.not.allocated(kresps)) THEN
539 allocate ( kresps(ngrids) )
540 dmem(1)=dmem(1)+real(ngrids,r8)
541 END IF
542
543 IF (.not.allocated(ksil)) THEN
544 allocate ( ksil(ngrids) )
545 dmem(1)=dmem(1)+real(ngrids,r8)
546 END IF
547
548 IF (.not.allocated(kzl2zp)) THEN
549 allocate ( kzl2zp(ngrids) )
550 dmem(1)=dmem(1)+real(ngrids,r8)
551 END IF
552
553 IF (.not.allocated(kzs2zl)) THEN
554 allocate ( kzs2zl(ngrids) )
555 dmem(1)=dmem(1)+real(ngrids,r8)
556 END IF
557
558 IF (.not.allocated(kzs2zp)) THEN
559 allocate ( kzs2zp(ngrids) )
560 dmem(1)=dmem(1)+real(ngrids,r8)
561 END IF
562
563 IF (.not.allocated(laml)) THEN
564 allocate ( laml(ngrids) )
565 dmem(1)=dmem(1)+real(ngrids,r8)
566 END IF
567
568 IF (.not.allocated(lamp)) THEN
569 allocate ( lamp(ngrids) )
570 dmem(1)=dmem(1)+real(ngrids,r8)
571 END IF
572
573 IF (.not.allocated(lams)) THEN
574 allocate ( lams(ngrids) )
575 dmem(1)=dmem(1)+real(ngrids,r8)
576 END IF
577
578 IF (.not.allocated(morpl0)) THEN
579 allocate ( morpl0(ngrids) )
580 dmem(1)=dmem(1)+real(ngrids,r8)
581 END IF
582
583 IF (.not.allocated(morps0)) THEN
584 allocate ( morps0(ngrids) )
585 dmem(1)=dmem(1)+real(ngrids,r8)
586 END IF
587
588 IF (.not.allocated(morzl0)) THEN
589 allocate ( morzl0(ngrids) )
590 dmem(1)=dmem(1)+real(ngrids,r8)
591 END IF
592
593 IF (.not.allocated(morzp0)) THEN
594 allocate ( morzp0(ngrids) )
595 dmem(1)=dmem(1)+real(ngrids,r8)
596 END IF
597
598 IF (.not.allocated(morzs0)) THEN
599 allocate ( morzs0(ngrids) )
600 dmem(1)=dmem(1)+real(ngrids,r8)
601 END IF
602
603 IF (.not.allocated(nit0)) THEN
604 allocate ( nit0(ngrids) )
605 dmem(1)=dmem(1)+real(ngrids,r8)
606 END IF
607
608 IF (.not.allocated(parfrac)) THEN
609 allocate ( parfrac(ngrids) )
610 dmem(1)=dmem(1)+real(ngrids,r8)
611 END IF
612
613 IF (.not.allocated(pusail)) THEN
614 allocate ( pusail(ngrids) )
615 dmem(1)=dmem(1)+real(ngrids,r8)
616 END IF
617
618 IF (.not.allocated(pusaipl)) THEN
619 allocate ( pusaipl(ngrids) )
620 dmem(1)=dmem(1)+real(ngrids,r8)
621 END IF
622
623 IF (.not.allocated(pusais)) THEN
624 allocate ( pusais(ngrids) )
625 dmem(1)=dmem(1)+real(ngrids,r8)
626 END IF
627
628 IF (.not.allocated(pusaizs)) THEN
629 allocate ( pusaizs(ngrids) )
630 dmem(1)=dmem(1)+real(ngrids,r8)
631 END IF
632
633 IF (.not.allocated(pl2zlstar)) THEN
634 allocate ( pl2zlstar(ngrids) )
635 dmem(1)=dmem(1)+real(ngrids,r8)
636 END IF
637
638 IF (.not.allocated(pl2zpstar)) THEN
639 allocate ( pl2zpstar(ngrids) )
640 dmem(1)=dmem(1)+real(ngrids,r8)
641 END IF
642
643 IF (.not.allocated(ps2zlstar)) THEN
644 allocate ( ps2zlstar(ngrids) )
645 dmem(1)=dmem(1)+real(ngrids,r8)
646 END IF
647
648 IF (.not.allocated(ps2zsstar)) THEN
649 allocate ( ps2zsstar(ngrids) )
650 dmem(1)=dmem(1)+real(ngrids,r8)
651 END IF
652
653 IF (.not.allocated(respl0)) THEN
654 allocate ( respl0(ngrids) )
655 dmem(1)=dmem(1)+real(ngrids,r8)
656 END IF
657
658 IF (.not.allocated(resps0)) THEN
659 allocate ( resps0(ngrids) )
660 dmem(1)=dmem(1)+real(ngrids,r8)
661 END IF
662
663 IF (.not.allocated(rsin)) THEN
664 allocate ( rsin(ngrids) )
665 dmem(1)=dmem(1)+real(ngrids,r8)
666 END IF
667
668 IF (.not.allocated(setvopal)) THEN
669 allocate ( setvopal(ngrids) )
670 dmem(1)=dmem(1)+real(ngrids,r8)
671 END IF
672
673 IF (.not.allocated(setvpon)) THEN
674 allocate ( setvpon(ngrids) )
675 dmem(1)=dmem(1)+real(ngrids,r8)
676 END IF
677
678 IF (.not.allocated(vd2n0)) THEN
679 allocate ( vd2n0(ngrids) )
680 dmem(1)=dmem(1)+real(ngrids,r8)
681 END IF
682
683 IF (.not.allocated(vmaxl)) THEN
684 allocate ( vmaxl(ngrids) )
685 dmem(1)=dmem(1)+real(ngrids,r8)
686 END IF
687
688 IF (.not.allocated(vmaxs)) THEN
689 allocate ( vmaxs(ngrids) )
690 dmem(1)=dmem(1)+real(ngrids,r8)
691 END IF
692
693 IF (.not.allocated(vo2s0)) THEN
694 allocate ( vo2s0(ngrids) )
695 dmem(1)=dmem(1)+real(ngrids,r8)
696 END IF
697
698 IF (.not.allocated(vp2d0)) THEN
699 allocate ( vp2d0(ngrids) )
700 dmem(1)=dmem(1)+real(ngrids,r8)
701 END IF
702
703 IF (.not.allocated(vp2n0)) THEN
704 allocate ( vp2n0(ngrids) )
705 dmem(1)=dmem(1)+real(ngrids,r8)
706 END IF
707
708 IF (.not.allocated(zl2zpstar)) THEN
709 allocate ( zl2zpstar(ngrids) )
710 dmem(1)=dmem(1)+real(ngrids,r8)
711 END IF
712
713 IF (.not.allocated(zs2zlstar)) THEN
714 allocate ( zs2zlstar(ngrids) )
715 dmem(1)=dmem(1)+real(ngrids,r8)
716 END IF
717
718 IF (.not.allocated(zs2zpstar)) THEN
719 allocate ( zs2zpstar(ngrids) )
720 dmem(1)=dmem(1)+real(ngrids,r8)
721 END IF
722!
723! Allocate biological tracer vector.
724!
725 IF (.not.allocated(idbio)) THEN
726 allocate ( idbio(nbt) )
727 dmem(1)=dmem(1)+real(nbt,r8)
728 END IF
729!
730!-----------------------------------------------------------------------
731! Initialize tracer identification indices.
732!-----------------------------------------------------------------------
733!
734 ic=nat+npt+ncs+nns
735 DO i=1,nbt
736 idbio(i)=ic+i
737 END DO
738 isphy=ic+1
739 ilphy=ic+2
740 iszoo=ic+3
741 ilzoo=ic+4
742 ipzoo=ic+5
743 ino3_=ic+6
744 inh4_=ic+7
745 ipon_=ic+8
746 idon_=ic+9
747 isioh=ic+10
748 iopal=ic+11
749!
750 RETURN
751 END SUBROUTINE initialize_biology
752
753 END MODULE mod_biology
real(r8), dimension(:), allocatable pl2zlstar
Definition nemuro_mod.h:259
integer isioh
Definition nemuro_mod.h:187
real(r8), dimension(:), allocatable kps2zs
Definition nemuro_mod.h:237
real(r8), dimension(:), allocatable parfrac
Definition fennel_mod.h:139
real(r8), dimension(:), allocatable kmorzl
Definition nemuro_mod.h:224
real(r8), dimension(:), allocatable kpl2zl
Definition nemuro_mod.h:235
integer ipzoo
Definition nemuro_mod.h:182
real(r8), dimension(:), allocatable ko2s
Definition nemuro_mod.h:232
real(r8), dimension(:), allocatable pusaipl
Definition nemuro_mod.h:256
real(r8), dimension(:), allocatable knit
Definition nemuro_mod.h:229
real(r8), dimension(:), allocatable pusais
Definition nemuro_mod.h:257
real(r8), dimension(:), allocatable kzs2zl
Definition nemuro_mod.h:243
real(r8), dimension(:), allocatable vp2n0
Definition nemuro_mod.h:273
integer ipon_
Definition nemuro_mod.h:185
real(r8), dimension(:), allocatable alphaps
Definition nemuro_mod.h:195
integer ilphy
Definition nemuro_mod.h:178
real(r8), dimension(:), allocatable vmaxs
Definition nemuro_mod.h:270
real(r8), dimension(:), allocatable vp2d0
Definition nemuro_mod.h:272
real(r8), dimension(:), allocatable ps2zsstar
Definition nemuro_mod.h:262
integer, dimension(:), allocatable bioiter
Definition ecosim_mod.h:343
real(r8), dimension(:), allocatable zs2zpstar
Definition nemuro_mod.h:276
real(r8), dimension(:), allocatable attsw
Definition fennel_mod.h:125
real(r8), dimension(:), allocatable knh4l
Definition nemuro_mod.h:227
real(r8), dimension(:), allocatable kgpps
Definition nemuro_mod.h:218
real(r8), dimension(:), allocatable grmaxppl
Definition nemuro_mod.h:212
integer ino3_
Definition ecosim_mod.h:277
integer iszoo
Definition nemuro_mod.h:181
real(r8), dimension(:), allocatable lams
Definition nemuro_mod.h:247
real(r8), dimension(:), allocatable kzs2zp
Definition nemuro_mod.h:244
real(r8), dimension(:), allocatable kps2zl
Definition nemuro_mod.h:236
real(r8), dimension(:), allocatable vd2n0
Definition nemuro_mod.h:268
real(r8), dimension(:), allocatable setvpon
Definition nemuro_mod.h:267
real(r8), dimension(:), allocatable kmorzs
Definition nemuro_mod.h:226
real(r8), dimension(:), allocatable vmaxl
Definition nemuro_mod.h:269
real(r8), dimension(:), allocatable morpl0
Definition nemuro_mod.h:248
real(r8), dimension(:), allocatable kmorps
Definition nemuro_mod.h:223
real(r8), dimension(:), allocatable rsin
Definition nemuro_mod.h:265
real(r8), dimension(:), allocatable grmaxpzs
Definition nemuro_mod.h:214
real(r8), dimension(:), allocatable vo2s0
Definition nemuro_mod.h:271
real(r8), dimension(:), allocatable pusail
Definition nemuro_mod.h:255
real(r8), dimension(:), allocatable kgppl
Definition nemuro_mod.h:217
real(r8), dimension(:), allocatable kresps
Definition nemuro_mod.h:240
real(r8), dimension(:), allocatable grmaxlzs
Definition nemuro_mod.h:211
real(r8), dimension(:), allocatable krespl
Definition nemuro_mod.h:239
real(r8), dimension(:), allocatable kgras
Definition nemuro_mod.h:221
real(r8), dimension(:), allocatable alphazl
Definition nemuro_mod.h:196
real(r8), dimension(:), allocatable kgral
Definition nemuro_mod.h:219
real(r8), dimension(:), allocatable betapl
Definition nemuro_mod.h:202
real(r8), dimension(:), allocatable resps0
Definition nemuro_mod.h:264
real(r8), dimension(:), allocatable attpl
Definition nemuro_mod.h:199
real(r8), dimension(:), allocatable kp2n
Definition nemuro_mod.h:234
integer isphy
Definition nemuro_mod.h:179
real(r8), dimension(:), allocatable attps
Definition nemuro_mod.h:200
real(r8), dimension(:), allocatable morzl0
Definition nemuro_mod.h:250
real(r8), dimension(:), allocatable betazp
Definition nemuro_mod.h:206
real(r8), dimension(:), allocatable morzs0
Definition nemuro_mod.h:252
real(r8), dimension(:), allocatable gammal
Definition nemuro_mod.h:207
real(r8), dimension(:), allocatable lamp
Definition nemuro_mod.h:246
integer inh4_
Definition ecosim_mod.h:278
real(r8), dimension(:), allocatable alphapl
Definition nemuro_mod.h:194
real(r8), dimension(:), allocatable kmorzp
Definition nemuro_mod.h:225
real(r8), dimension(:), allocatable kpl2zp
Definition nemuro_mod.h:238
real(r8), dimension(:), allocatable ps2zlstar
Definition nemuro_mod.h:261
real(r8), dimension(:), allocatable grmaxlps
Definition nemuro_mod.h:210
real(r8), dimension(:), allocatable kd2n
Definition nemuro_mod.h:216
real(r8), dimension(:), allocatable zl2zpstar
Definition nemuro_mod.h:274
real(r8), dimension(:), allocatable nit0
Definition nemuro_mod.h:253
real(r8), dimension(:), allocatable kno3l
Definition nemuro_mod.h:230
real(r8), dimension(:), allocatable alphazs
Definition nemuro_mod.h:198
real(r8), dimension(:), allocatable kzl2zp
Definition nemuro_mod.h:242
real(r8), dimension(:), allocatable betazl
Definition nemuro_mod.h:205
real(r8), dimension(:), allocatable gammas
Definition nemuro_mod.h:208
real(r8), dimension(:), allocatable setvopal
Definition nemuro_mod.h:266
real(r8), dimension(:), allocatable grmaxlpl
Definition nemuro_mod.h:209
real(r8), dimension(:), allocatable respl0
Definition nemuro_mod.h:263
real(r8), dimension(:), allocatable kno3s
Definition nemuro_mod.h:231
real(r8), dimension(:), allocatable morzp0
Definition nemuro_mod.h:251
subroutine initialize_biology
Definition ecosim_mod.h:499
real(r8), dimension(:), allocatable kmorpl
Definition nemuro_mod.h:222
real(r8), dimension(:), allocatable pl2zpstar
Definition nemuro_mod.h:260
real(r8), dimension(:), allocatable pusaizs
Definition nemuro_mod.h:258
integer iopal
Definition nemuro_mod.h:188
real(r8), dimension(:), allocatable alphazp
Definition nemuro_mod.h:197
real(r8), dimension(:), allocatable grmaxsps
Definition nemuro_mod.h:215
real(r8), dimension(:), allocatable kgrap
Definition nemuro_mod.h:220
real(r8), dimension(:), allocatable betazs
Definition nemuro_mod.h:204
real(r8), dimension(:), allocatable knh4s
Definition nemuro_mod.h:228
real(r8), dimension(:), allocatable ksil
Definition nemuro_mod.h:241
integer idon_
Definition nemuro_mod.h:186
real(r8), dimension(:), allocatable grmaxpzl
Definition nemuro_mod.h:213
real(r8), dimension(:), allocatable laml
Definition nemuro_mod.h:245
real(r8), dimension(:), allocatable morps0
Definition nemuro_mod.h:249
real(r8), dimension(:), allocatable kp2d
Definition nemuro_mod.h:233
real(r8), dimension(:), allocatable betaps
Definition nemuro_mod.h:203
real(r8), dimension(:), allocatable zs2zlstar
Definition nemuro_mod.h:275
integer ilzoo
Definition nemuro_mod.h:180
integer nat
Definition mod_param.F:499
real(r8), dimension(:), allocatable dmem
Definition mod_param.F:137
integer ncs
Definition mod_param.F:525
integer nbt
Definition mod_param.F:509
integer ngrids
Definition mod_param.F:113
integer nns
Definition mod_param.F:529
integer npt
Definition mod_param.F:505