1 |
C $Header: /u/gcmpack/MITgcm_contrib/darwin2/pkg/monod/monod_init_fixed.F,v 1.10 2013/12/04 21:21:32 jahn Exp $ |
2 |
C $Name: $ |
3 |
|
4 |
#include "CPP_OPTIONS.h" |
5 |
#include "PTRACERS_OPTIONS.h" |
6 |
#include "DARWIN_OPTIONS.h" |
7 |
|
8 |
#ifdef ALLOW_PTRACERS |
9 |
#ifdef ALLOW_MONOD |
10 |
|
11 |
c=============================================================================== |
12 |
C=============================================================================== |
13 |
CStartofinterface |
14 |
SUBROUTINE MONOD_INIT_FIXED(myThid) |
15 |
C =============== Global data ========================================== |
16 |
C === Global variables === |
17 |
implicit none |
18 |
#include "SIZE.h" |
19 |
#include "EEPARAMS.h" |
20 |
#include "PARAMS.h" |
21 |
#include "GRID.h" |
22 |
#include "DYNVARS.h" |
23 |
#include "GCHEM.h" |
24 |
#include "DARWIN_PARAMS.h" |
25 |
#include "MONOD_SIZE.h" |
26 |
#include "MONOD.h" |
27 |
#include "DARWIN_FLUX.h" |
28 |
|
29 |
INTEGER myThid |
30 |
C============== Local variables ============================================ |
31 |
C msgBuf - Informational/error meesage buffer |
32 |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
33 |
_RL pday |
34 |
INTEGER i,j,k,bi,bj,nz |
35 |
INTEGER tmp |
36 |
INTEGER prec |
37 |
CHARACTER*(MAX_LEN_MBUF) fn |
38 |
C /--------------------------------------------------------------\ |
39 |
C | initialise common block biochemical parameters | |
40 |
C \--------------------------------------------------------------/ |
41 |
|
42 |
_BEGIN_MASTER(myThid) |
43 |
|
44 |
WRITE(msgBuf,'(A)') |
45 |
&'// =======================================================' |
46 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
47 |
& SQUEEZE_RIGHT, myThid ) |
48 |
WRITE(msgBuf,'(A)') '// Darwin loading parameters' |
49 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
50 |
& SQUEEZE_RIGHT, myThid ) |
51 |
WRITE(msgBuf,'(A)') |
52 |
&'// =======================================================' |
53 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
54 |
& SQUEEZE_RIGHT, myThid ) |
55 |
|
56 |
|
57 |
c ANNA set fixed params for WAVEBANDS |
58 |
#ifdef WAVEBANDS |
59 |
call wavebands_init_fixed(myThid) |
60 |
#endif |
61 |
|
62 |
c c define 1 day in seconds |
63 |
pday = 86400.0 _d 0 |
64 |
|
65 |
|
66 |
c attenuation coefficients |
67 |
c ANNA only if not wavebands |
68 |
#ifndef WAVEBANDS |
69 |
k0= 4. _d -2 !atten coefficient water(m^-1) |
70 |
#ifdef GEIDER |
71 |
kc= 4. _d -2 !atten coefficient chl ((mmol chl/m3)-1) |
72 |
#else |
73 |
kc= 4. _d -2*16. _d 0*1. _d 0 !atten coefficient phy((uM m)-1) |
74 |
#endif |
75 |
#endif |
76 |
c ANNA endif |
77 |
|
78 |
|
79 |
c par parameters |
80 |
parfrac= 0.4 _d 0 !fraction Qsw that is PAR |
81 |
parconv= 1. _d 0/0.2174 _d 0 !conversion from W/m2 to uEin/m2/s |
82 |
c for chl |
83 |
chlpmax=40. _d 0 ! mg Chl/mmolP |
84 |
chlpmin=16. _d 0 ! mg Chl/mmolP |
85 |
istar=90. _d 0 ! w/m2 |
86 |
c iron related |
87 |
alpfe= 0.04 _d 0 !solubility of Fe dust |
88 |
scav= 0.4 _d 0/(360. _d 0*86400. _d 0) !iron chem scavenging rate (s-1) |
89 |
ligand_tot=1. _d -3 !total ligand (uM) |
90 |
ligand_stab=2. _d 5 !ligand stability rate ratio |
91 |
freefemax = .4 _d -3 ! max free fe |
92 |
|
93 |
#ifdef IRON_SED_SOURCE |
94 |
c iron sediment source |
95 |
depthfesed=1000.0 _d 0 !depth above which to add sediment source |
96 |
fesedflux =1.0 _d 0 * 1.0 _d -3 / (86400.0 _d 0) !iron flux (mmol/m2/s) |
97 |
fesedflux_pcm =0.68 _d 0 * 1.0 _d -3 !iron flux (mmol/m3/s) per |
98 |
c mmol POC/m3/s |
99 |
#endif |
100 |
#ifdef PART_SCAV |
101 |
scav_rat=0.005 _d 0 /(86400.0 _d 0) |
102 |
scav_inter=0.079 _d 0 |
103 |
scav_exp=0.58 _d 0 |
104 |
#endif |
105 |
|
106 |
c depth for denitrification to start |
107 |
depthdenit=185.0 _d 0 |
108 |
|
109 |
c critical oxygen for O2/NO3 remineralization |
110 |
O2crit = 6.0 _d 0 !(Lipschultz et al 1990, DSR 37, 1513-1541) |
111 |
c ratio of n to p in denitrification process |
112 |
denit_np = 120.0 _d 0 |
113 |
c ratio no3 used relative to all n in denitrification process |
114 |
denit_no3 = 104.0 _d 0 |
115 |
c critical nitrate below which no denit (or remin) happens |
116 |
no3crit = 1. _d -2 |
117 |
c |
118 |
c oxidation rates for ammonium and nitrite |
119 |
c i.e. Knita ... NH4 -> NO2 |
120 |
c i.e. Knitb ... NO2 -> NO3 |
121 |
Knita = 1.0 _d 0/(.50 _d 0*pday) |
122 |
Knitb = 1.0 _d 0/(10.0 _d 0*pday) |
123 |
c critical light level (muEin/m2/s) after which oxidation starts |
124 |
PAR0 = 10. _d 0 |
125 |
c |
126 |
#ifndef GEIDER |
127 |
c set growth days ...small or big organism? |
128 |
Smallgrow = .7 _d 0 |
129 |
Biggrow = .4 _d 0 |
130 |
Smallgrowrange = 0. _d 0 |
131 |
Biggrowrange = 0. _d 0 |
132 |
diaz_growfac = 2. _d 0 |
133 |
#endif |
134 |
c set mort days ...small or big organism? |
135 |
Smallmort = 10. _d 0 |
136 |
Bigmort = 10. _d 0 |
137 |
Smallmortrange = 0. _d 0 |
138 |
Bigmortrange = 0. _d 0 |
139 |
c set export fraction ...small or big organism? |
140 |
Smallexport = 0.2 _d 0 |
141 |
Bigexport = 0.5 _d 0 |
142 |
c set sinking rates (m/s)... small or big organism? |
143 |
SmallSink = 0.0 _d 0/pday |
144 |
BigSink = 0.5 _d 0/pday !0.5 _d 0/pday |
145 |
c set parameters for light function for phyto growth |
146 |
#ifndef GEIDER |
147 |
smallksatpar = 0.12 _d 0 ! 0.8 _d 0 |
148 |
smallksatparstd = 0.20 _d 0 ! 0.3 _d 0 |
149 |
smallkinhib = 6.0 _d 0 ! 2.0 _d 0 |
150 |
smallkinhibstd = 0.10 _d 0 ! 0.5 _d 0 |
151 |
Bigksatpar = 0.12 _d 0 ! 0.35 _d 0 |
152 |
Bigksatparstd = 0.06 _d 0 ! 0.1 _d 0 |
153 |
Bigkinhib = 1.0 _d 0 ! 0.5 _d 0 |
154 |
Bigkinhibstd = 0.05 _d 0 ! 0.1 _d 0 |
155 |
#endif |
156 |
#ifdef GEIDER |
157 |
c for Pcm -- should be growth rates, but using old variables |
158 |
c note these are in terms of days - converted to 1/s later |
159 |
Smallgrow = .7 _d 0 |
160 |
Biggrow = .4 _d 0 |
161 |
Smallgrowrange = 0. _d 0 |
162 |
Biggrowrange = 0. _d 0 |
163 |
diaz_growfac = 2. _d 0 |
164 |
c |
165 |
smallchl2cmax = 0.2 _d 0 !mg Chl (mmol C) |
166 |
smallchl2cmaxrange = 0.3 _d 0 !mg Chl (mmol C) |
167 |
Bigchl2cmax = 0.5 _d 0 !mg Chl (mmol C) |
168 |
Bigchl2cmaxrange = 0.3 _d 0 !mg Chl (mmol C) |
169 |
|
170 |
c ANNA_Q units for alpha are same as expected: mmol C (mg chla)-1 (uEin)-1 (m)2 |
171 |
c smallalphachl = 1. _d -6 !mmol C (uEin/m-2)-1 (mg Chl)-1 |
172 |
c smallalphachlrange = 1. _d -6 !mmol C (uEin/m-2)-1 (mg Chl)-1 |
173 |
c Bigalphachl = 6. _d -7 !mmol C (uEin/m-2)-1 (mg Chl)-1 |
174 |
c Bigalphachlrange = 4. _d -7 !mmol C (uEin/m-2)-1 (mg Chl)-1 |
175 |
c ANNA mQyield vals are from alphachl / aphy_chl which for now is 0.02 |
176 |
c ANNA ranges for mQyield are same as alphachl but reduced by factor 100 |
177 |
smallmQyield = 5. _d -5 !mmol C (uEin)-1 |
178 |
smallmQyieldrange = 1. _d -4 !mmol C (uEin)-1 |
179 |
BigmQyield = 3. _d -5 !mmol C (uEin)-1 |
180 |
BigmQyieldrange = 4. _d -5 !mmol C (uEin)-1 |
181 |
|
182 |
c ANNA value of aphy_chl_ave = 0.02 - its the mean of all spectras used as input data |
183 |
aphy_chl_ave = 0.02 _d 0 !m2 (mg chla)-1 (ie. x chla gives absorption m-1) |
184 |
|
185 |
c inhib for Prochl? |
186 |
C inhibcoef_geid_val = 1.2 _d 0 !DUMMY VAL |
187 |
inhibcoef_geid_val = 0 _d 0 !DUMMY VAL |
188 |
#ifdef DYNAMIC_CHL |
189 |
acclimtimescl = 1./(60. _d 0 *60. _d 0 *24. _d 0 * 20. _d 0) |
190 |
#endif |
191 |
#endif |
192 |
c |
193 |
|
194 |
c set temperature function |
195 |
tempcoeff1 = 1. _d 0/3. _d 0 |
196 |
tempcoeff2_small = 0.001 _d 0 |
197 |
tempcoeff2_big = 0.0003 _d 0 |
198 |
tempcoeff3 = 1.04 _d 0 |
199 |
tempmax = 30. _d 0 ! 32. _d 0 |
200 |
temprange = 32. _d 0 ! 30. _d 0 |
201 |
tempnorm = 0.3 _d 0 ! 1. _d 0 |
202 |
tempdecay = 4. _d 0 |
203 |
c set phosphate half stauration constants .. small or big organism |
204 |
SmallPsat=0.015 _d 0 |
205 |
BigPsat=0.035 _d 0 |
206 |
ProcPsat=0.01 _d 0 |
207 |
UniDzPsat=0.012 _d 0 |
208 |
SmallPsatrange=0.02 _d 0 |
209 |
BigPsatrange=0.02 _d 0 |
210 |
ProcPsatrange=0.005 _d 0 |
211 |
UniDzPsatrange=0.02 _d 0 |
212 |
c set NH4/NO2 frac, so that NH4/NO2 can be preferred nitrogen source |
213 |
ksatNH4fac=.50 _d 0 |
214 |
ksatNO2fac=1.0 _d 0 |
215 |
c set prochl lower half-sat (used only for mutants) |
216 |
prochlPsat=.85 _d 0 |
217 |
c ammonia and nitrite inhibition |
218 |
sig1 = 4.6 _d 0 |
219 |
sig2 = 4.6 _d 0 |
220 |
sig3 = 4.6 _d 0 |
221 |
ngrowfac = 1. _d 0 |
222 |
ilight = 2. _d 0 |
223 |
c set si half sat |
224 |
val_ksatsi=1. _d 0 |
225 |
c set nutrient ratios for phyto |
226 |
#ifdef ONLY_P_CYCLE |
227 |
val_R_SiP_diatom=0.0 _d 0 |
228 |
val_R_NP=0.0 _d 0 |
229 |
val_RFeP=0.0 _d -3 |
230 |
val_R_NP_diaz=0.0 _d 0 |
231 |
val_RFeP_diaz=0.0 _d 0 * val_RFeP |
232 |
val_R_PC=0.0 _d 0 |
233 |
val_R_PICPOC=0.0 _d 0 |
234 |
#else |
235 |
val_R_SiP_diatom=16.0 _d 0 ! 32 for Fanny's runs |
236 |
val_R_NP=16.0 _d 0 |
237 |
val_RFeP=1.0 _d -3 |
238 |
val_R_NP_diaz=40.0 _d 0 |
239 |
val_RFeP_diaz=30.0 _d 0 * val_RFeP |
240 |
val_R_PC=120.0 _d 0 |
241 |
val_R_PICPOC=0.8 _d 0 |
242 |
#endif |
243 |
#ifdef FIX_ZOO_QUOTAS |
244 |
val_R_NP_zoo=val_R_NP |
245 |
val_RFeP_zoo=val_RFeP |
246 |
val_R_SiP_zoo=0.0 _d 0 |
247 |
val_R_PC_zoo=val_R_PC |
248 |
#endif |
249 |
c |
250 |
#ifdef OLD_GRAZE |
251 |
c grazing hlaf saturation |
252 |
kgrazesat = 0.1 _d 0 |
253 |
c set grazing rates .. small or big organism? |
254 |
GrazeFast = 1.0 _d 0/(5.0 _d 0*pday) |
255 |
GrazeSlow = 1.0 _d 0/(30.0 _d 0*pday) |
256 |
c set grazing effeciency |
257 |
GrazeEffsmall=0.6 _d 0 |
258 |
GrazeEffbig =0.2 _d 0 |
259 |
c set grazing of diatom factor |
260 |
diatomgraz = 0.8 _d 0 |
261 |
coccograz = 0.7 _d 0 |
262 |
olargegraz = 0.9 _d 0 |
263 |
#else |
264 |
c grazing hlaf saturation |
265 |
c kgrazesat = 0.1 _d 0 |
266 |
kgrazesat = 0.1 _d 0 |
267 |
c phygrazmin = 1 _d -5 |
268 |
phygrazmin = 1 _d -10 |
269 |
c set grazing rates .. small or big organism? |
270 |
c GrazeFast = 1.0 _d 0/(5.0 _d 0*pday) |
271 |
GrazeFast = 1.0 _d 0/(2.0 _d 0*pday) |
272 |
c GrazeSlow = 1.0 _d 0/(30.0 _d 0*pday) |
273 |
GrazeSlow = 1.0 _d 0/(7.0 _d 0*pday) |
274 |
c set grazing effeciency |
275 |
GrazeEfflow= 0.2 _d 0 |
276 |
GrazeEffmod= 0.5 _d 0 |
277 |
GrazeEffhi = 0.7 _d 0 |
278 |
c set palatibility |
279 |
palathi = 1.0 _d 0 |
280 |
palatlo = 0.2 _d 0 |
281 |
c set palatibilty diatom factor |
282 |
diatomgraz = 0.7 _d 0 |
283 |
coccograz = 0.6 _d 0 |
284 |
olargegraz = 1.0 _d 0 |
285 |
c set faction graz to POM |
286 |
ExGrazfracbig = 0.8 _d 0 |
287 |
ExGrazfracsmall = 0.8 _d 0 |
288 |
c grazing exponential 1= holling 2, 2=holling 3 |
289 |
hollexp=1.0 _d 0 |
290 |
#endif |
291 |
c set zoo mortality |
292 |
ZoomortSmall = 1.0 _d 0/(30.0 _d 0*pday) |
293 |
ZoomortBig = 1.0 _d 0/(30.0 _d 0*pday) |
294 |
ZoomortSmall2 = 0. _d 0 |
295 |
ZoomortBig2 = 0. _d 0 |
296 |
c set zoo exportfrac |
297 |
ZooexfacSmall = 0.2 _d 0 |
298 |
ZooexfacBig = 0.7 _d 0 |
299 |
c minimum phyto (below which grazing and mortality doesn't happen) |
300 |
c phymin = 1 _d -10 |
301 |
c phymin = 1 _d -50 |
302 |
phymin = 1 _d -20 |
303 |
c DOM remin rates |
304 |
Kdop = 1.0 _d 0/(100.0 _d 0*pday) |
305 |
Kdon = 1.0 _d 0/(100.0 _d 0*pday) |
306 |
KdoFe = 1.0 _d 0/(100.0 _d 0*pday) |
307 |
c Particulate detritus remin rates |
308 |
c z* = wx_sink/Kremin_X |
309 |
c for e-folding length scale, z* = 300 m |
310 |
c choose Kremin_X = 1/30 day-1, wx_sink = 10 m day-1 |
311 |
Kpremin_P = 1.0 _d 0/(50.0 _d 0*pday) |
312 |
Kpremin_N = Kpremin_P |
313 |
Kpremin_Fe = Kpremin_P |
314 |
Kpremin_Si = 1.0 _d 0/(300.0 _d 0*pday) |
315 |
c sinking rate for particulate matter (m/s) |
316 |
wp_sink = 10.0 _d 0/pday |
317 |
wn_sink = wp_sink |
318 |
wfe_sink = wp_sink |
319 |
wsi_sink = wp_sink |
320 |
|
321 |
#ifdef ALLOW_CARBON |
322 |
R_OP = 170 _d 0 |
323 |
Kdoc = 1.0 _d 0/(100.0 _d 0*pday) |
324 |
Kpremin_C = 1.0 _d 0/(50.0 _d 0*pday) |
325 |
Kdissc = 1.0 _d 0/(300.0 _d 0*pday) |
326 |
wc_sink = wp_sink |
327 |
wpic_sink = 15.0 _d 0/pday |
328 |
permil = 1. _d 0 / 1024.5 _d 0 |
329 |
Pa2Atm = 1.01325 _d 5 |
330 |
#endif |
331 |
|
332 |
#ifdef ALLOW_CDOM |
333 |
fraccdom=2. _d 0 / 100. _d 0 |
334 |
cdomdegrd= 1. _d 0 / (200 _d 0 *pday) |
335 |
cdombleach = 1. _d 0 / (15 _d 0 *pday) |
336 |
PARcdom = 20. _d 0 |
337 |
rnp_cdom = 16. _d 0 |
338 |
rfep_cdom = 1. _d -3 |
339 |
rcp_cdom = 120. _d 0 |
340 |
cdomcoeff = .1 _d -1 / 1.d -4 |
341 |
#endif |
342 |
|
343 |
C make sure we have reserved enough space in Ptracers |
344 |
IF ( nCompZooMax .LT. 4 ) THEN |
345 |
#ifndef ONLY_P_CYCLE |
346 |
WRITE(msgBuf,'(A,A,I3)') |
347 |
& 'MONOD_INIT_FIXED: ERROR: 4 zooplankton components, but ', |
348 |
& 'nCompZooMax = ', nCompZooMax |
349 |
CALL PRINT_ERROR( msgBuf , 1) |
350 |
STOP 'ABNORMAL END: S/R MONOD_INIT_FIXED' |
351 |
#endif |
352 |
ENDIF |
353 |
DO nz = 1,nzmax |
354 |
iZooP (nz) = iZoo + (nz-1)*strideTypeZoo |
355 |
#ifdef ONLY_P_CYCLE |
356 |
iZooN (nz) = nptot |
357 |
iZooFe(nz) = nptot |
358 |
iZooSi(nz) = nptot |
359 |
#else |
360 |
iZooN (nz) = iZoo + 1*strideCompZoo + (nz-1)*strideTypeZoo |
361 |
iZooFe(nz) = iZoo + 2*strideCompZoo + (nz-1)*strideTypeZoo |
362 |
iZooSi(nz) = iZoo + 3*strideCompZoo + (nz-1)*strideTypeZoo |
363 |
#endif |
364 |
ENDDO |
365 |
#ifdef ALLOW_CARBON |
366 |
DO nz = 1,nzmax |
367 |
iZooC (nz) = iZoC + (nz-1) |
368 |
ENDDO |
369 |
#endif |
370 |
|
371 |
#ifdef DAR_DIAG_DIVER |
372 |
c only look at grid point with a minimum biomass |
373 |
diver_thresh0=1 _d -12 |
374 |
c diver1 - if any type greater than |
375 |
diver_thresh1=1 _d -8 |
376 |
c diver2 - if more than this proportion of total biomass |
377 |
diver_thresh2=1 _d -3 |
378 |
c diver3 - fraction of biomass to count |
379 |
diver_thresh3=.999 _d 0 |
380 |
c diver4 - fraction of maximum species |
381 |
diver_thresh4=1 _d -5 |
382 |
c threshold on total biomass for contributing to Shannon and Simpson ind |
383 |
c (these become large at very small biomass) |
384 |
shannon_thresh = 1 _d -8 ! mmol P m-3 |
385 |
#endif |
386 |
|
387 |
c set up diagnostics |
388 |
#ifdef ALLOW_MNC |
389 |
IF ( useMNC ) THEN |
390 |
CALL DARWIN_MNC_INIT( myThid ) |
391 |
#ifdef ALLOW_CARBON |
392 |
CALL DIC_MNC_INIT( myThid ) |
393 |
#endif |
394 |
ENDIF |
395 |
#endif /* ALLOW_MNC */ |
396 |
|
397 |
COJ set up diagnostics |
398 |
#ifdef ALLOW_DIAGNOSTICS |
399 |
IF ( useDIAGNOSTICS ) THEN |
400 |
CALL MONOD_DIAGNOSTICS_INIT( myThid ) |
401 |
#ifdef ALLOW_CARBON |
402 |
CALL DIC_DIAGNOSTICS_INIT( myThid ) |
403 |
#endif |
404 |
ENDIF |
405 |
#endif /* ALLOW_DIAGNOSTICS */ |
406 |
COJ |
407 |
|
408 |
_END_MASTER(myThid) |
409 |
|
410 |
RETURN |
411 |
END |
412 |
C============================================================================ |
413 |
#endif |
414 |
#endif |
415 |
|