| 1 |
C $Header: /u/gcmpack/MITgcm_contrib/darwin2/pkg/monod/monod_init_fixed.F,v 1.8 2012/07/26 18:05:34 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 |
#ifdef ONLY_P_CYCLE |
| 225 |
val_R_SiP_diatom=0.0 _d 0 |
| 226 |
val_R_NP=0.0 _d 0 |
| 227 |
val_RFeP=0.0 _d -3 |
| 228 |
val_R_NP_diaz=0.0 _d 0 |
| 229 |
val_RFeP_diaz=0.0 _d 0 * val_RFeP |
| 230 |
val_R_PC=0.0 _d 0 |
| 231 |
val_R_PICPOC=0.0 _d 0 |
| 232 |
#else |
| 233 |
val_R_SiP_diatom=16.0 _d 0 ! 32 for Fanny's runs |
| 234 |
val_R_NP=16.0 _d 0 |
| 235 |
val_RFeP=1.0 _d -3 |
| 236 |
val_R_NP_diaz=40.0 _d 0 |
| 237 |
val_RFeP_diaz=30.0 _d 0 * val_RFeP |
| 238 |
val_R_PC=120.0 _d 0 |
| 239 |
val_R_PICPOC=0.8 _d 0 |
| 240 |
#endif |
| 241 |
c |
| 242 |
#ifdef OLD_GRAZE |
| 243 |
c grazing hlaf saturation |
| 244 |
kgrazesat = 0.1 _d 0 |
| 245 |
c set grazing rates .. small or big organism? |
| 246 |
GrazeFast = 1.0 _d 0/(5.0 _d 0*pday) |
| 247 |
GrazeSlow = 1.0 _d 0/(30.0 _d 0*pday) |
| 248 |
c set grazing effeciency |
| 249 |
GrazeEffsmall=0.6 _d 0 |
| 250 |
GrazeEffbig =0.2 _d 0 |
| 251 |
c set grazing of diatom factor |
| 252 |
diatomgraz = 0.8 _d 0 |
| 253 |
coccograz = 0.7 _d 0 |
| 254 |
olargegraz = 0.9 _d 0 |
| 255 |
#else |
| 256 |
c grazing hlaf saturation |
| 257 |
c kgrazesat = 0.1 _d 0 |
| 258 |
kgrazesat = 0.1 _d 0 |
| 259 |
c phygrazmin = 1 _d -5 |
| 260 |
phygrazmin = 1 _d -10 |
| 261 |
c set grazing rates .. small or big organism? |
| 262 |
c GrazeFast = 1.0 _d 0/(5.0 _d 0*pday) |
| 263 |
GrazeFast = 1.0 _d 0/(2.0 _d 0*pday) |
| 264 |
c GrazeSlow = 1.0 _d 0/(30.0 _d 0*pday) |
| 265 |
GrazeSlow = 1.0 _d 0/(7.0 _d 0*pday) |
| 266 |
c set grazing effeciency |
| 267 |
GrazeEfflow= 0.2 _d 0 |
| 268 |
GrazeEffmod= 0.5 _d 0 |
| 269 |
GrazeEffhi = 0.7 _d 0 |
| 270 |
c set palatibility |
| 271 |
palathi = 1.0 _d 0 |
| 272 |
palatlo = 0.2 _d 0 |
| 273 |
c set palatibilty diatom factor |
| 274 |
diatomgraz = 0.7 _d 0 |
| 275 |
coccograz = 0.6 _d 0 |
| 276 |
olargegraz = 1.0 _d 0 |
| 277 |
c set faction graz to POM |
| 278 |
ExGrazfracbig = 0.8 _d 0 |
| 279 |
ExGrazfracsmall = 0.8 _d 0 |
| 280 |
c grazing exponential 1= holling 2, 2=holling 3 |
| 281 |
hollexp=1.0 _d 0 |
| 282 |
#endif |
| 283 |
c set zoo mortality |
| 284 |
ZoomortSmall = 1.0 _d 0/(30.0 _d 0*pday) |
| 285 |
ZoomortBig = 1.0 _d 0/(30.0 _d 0*pday) |
| 286 |
ZoomortSmall2 = 0. _d 0 |
| 287 |
ZoomortBig2 = 0. _d 0 |
| 288 |
c set zoo exportfrac |
| 289 |
ZooexfacSmall = 0.2 _d 0 |
| 290 |
ZooexfacBig = 0.7 _d 0 |
| 291 |
c minimum phyto (below which grazing and mortality doesn't happen) |
| 292 |
c phymin = 1 _d -10 |
| 293 |
c phymin = 1 _d -50 |
| 294 |
phymin = 1 _d -20 |
| 295 |
c DOM remin rates |
| 296 |
Kdop = 1.0 _d 0/(100.0 _d 0*pday) |
| 297 |
Kdon = 1.0 _d 0/(100.0 _d 0*pday) |
| 298 |
KdoFe = 1.0 _d 0/(100.0 _d 0*pday) |
| 299 |
c Particulate detritus remin rates |
| 300 |
c z* = wx_sink/Kremin_X |
| 301 |
c for e-folding length scale, z* = 300 m |
| 302 |
c choose Kremin_X = 1/30 day-1, wx_sink = 10 m day-1 |
| 303 |
Kpremin_P = 1.0 _d 0/(50.0 _d 0*pday) |
| 304 |
Kpremin_N = Kpremin_P |
| 305 |
Kpremin_Fe = Kpremin_P |
| 306 |
Kpremin_Si = 1.0 _d 0/(300.0 _d 0*pday) |
| 307 |
c sinking rate for particulate matter (m/s) |
| 308 |
wp_sink = 10.0 _d 0/pday |
| 309 |
wn_sink = wp_sink |
| 310 |
wfe_sink = wp_sink |
| 311 |
wsi_sink = wp_sink |
| 312 |
|
| 313 |
#ifdef ALLOW_CARBON |
| 314 |
R_OP = 170 _d 0 |
| 315 |
Kdoc = 1.0 _d 0/(100.0 _d 0*pday) |
| 316 |
Kpremin_C = 1.0 _d 0/(50.0 _d 0*pday) |
| 317 |
Kdissc = 1.0 _d 0/(300.0 _d 0*pday) |
| 318 |
wc_sink = wp_sink |
| 319 |
wpic_sink = 15.0 _d 0/pday |
| 320 |
permil = 1. _d 0 / 1024.5 _d 0 |
| 321 |
Pa2Atm = 1.01325 _d 5 |
| 322 |
#endif |
| 323 |
|
| 324 |
#ifdef ALLOW_CDOM |
| 325 |
fraccdom=2. _d 0 / 100. _d 0 |
| 326 |
cdomdegrd= 1. _d 0 / (200 _d 0 *pday) |
| 327 |
cdombleach = 1. _d 0 / (15 _d 0 *pday) |
| 328 |
PARcdom = 20. _d 0 |
| 329 |
rnp_cdom = 16. _d 0 |
| 330 |
rfep_cdom = 1. _d -3 |
| 331 |
rcp_cdom = 120. _d 0 |
| 332 |
cdomcoeff = .1 _d -1 / 1.d -4 |
| 333 |
#endif |
| 334 |
|
| 335 |
C make sure we have reserved enough space in Ptracers |
| 336 |
IF ( nCompZooMax .LT. 4 ) THEN |
| 337 |
#ifndef ONLY_P_CYCLE |
| 338 |
WRITE(msgBuf,'(A,A,I3)') |
| 339 |
& 'MONOD_INIT_FIXED: ERROR: 4 zooplankton components, but ', |
| 340 |
& 'nCompZooMax = ', nCompZooMax |
| 341 |
CALL PRINT_ERROR( msgBuf , 1) |
| 342 |
STOP 'ABNORMAL END: S/R MONOD_INIT_FIXED' |
| 343 |
#endif |
| 344 |
ENDIF |
| 345 |
DO nz = 1,nzmax |
| 346 |
iZooP (nz) = iZoo + (nz-1)*strideTypeZoo |
| 347 |
#ifdef ONLY_P_CYCLE |
| 348 |
iZooN (nz) = nptot |
| 349 |
iZooFe(nz) = nptot |
| 350 |
iZooSi(nz) = nptot |
| 351 |
#else |
| 352 |
iZooN (nz) = iZoo + 1*strideCompZoo + (nz-1)*strideTypeZoo |
| 353 |
iZooFe(nz) = iZoo + 2*strideCompZoo + (nz-1)*strideTypeZoo |
| 354 |
iZooSi(nz) = iZoo + 3*strideCompZoo + (nz-1)*strideTypeZoo |
| 355 |
#endif |
| 356 |
ENDDO |
| 357 |
#ifdef ALLOW_CARBON |
| 358 |
DO nz = 1,nzmax |
| 359 |
iZooC (nz) = iZoC + (nz-1) |
| 360 |
ENDDO |
| 361 |
#endif |
| 362 |
|
| 363 |
#ifdef DAR_DIAG_DIVER |
| 364 |
c only look at grid point with a minimum biomass |
| 365 |
diver_thresh0=1 _d -12 |
| 366 |
c diver1 - if any type greater than |
| 367 |
diver_thresh1=1 _d -8 |
| 368 |
c diver2 - if more than this proportion of total biomass |
| 369 |
diver_thresh2=1 _d -3 |
| 370 |
c diver3 - fraction of biomass to count |
| 371 |
diver_thresh3=.999 _d 0 |
| 372 |
c diver4 - fraction of maximum species |
| 373 |
diver_thresh4=1 _d -5 |
| 374 |
c threshold on total biomass for contributing to Shannon and Simpson ind |
| 375 |
c (these become large at very small biomass) |
| 376 |
shannon_thresh = 1 _d -8 ! mmol P m-3 |
| 377 |
#endif |
| 378 |
|
| 379 |
c set up diagnostics |
| 380 |
#ifdef ALLOW_MNC |
| 381 |
IF ( useMNC ) THEN |
| 382 |
CALL DARWIN_MNC_INIT( myThid ) |
| 383 |
#ifdef ALLOW_CARBON |
| 384 |
CALL DIC_MNC_INIT( myThid ) |
| 385 |
#endif |
| 386 |
ENDIF |
| 387 |
#endif /* ALLOW_MNC */ |
| 388 |
|
| 389 |
COJ set up diagnostics |
| 390 |
#ifdef ALLOW_DIAGNOSTICS |
| 391 |
IF ( useDIAGNOSTICS ) THEN |
| 392 |
CALL MONOD_DIAGNOSTICS_INIT( myThid ) |
| 393 |
#ifdef ALLOW_CARBON |
| 394 |
CALL DIC_DIAGNOSTICS_INIT( myThid ) |
| 395 |
#endif |
| 396 |
ENDIF |
| 397 |
#endif /* ALLOW_DIAGNOSTICS */ |
| 398 |
COJ |
| 399 |
|
| 400 |
|
| 401 |
|
| 402 |
RETURN |
| 403 |
END |
| 404 |
C============================================================================ |
| 405 |
#endif |
| 406 |
#endif |
| 407 |
|