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