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