48 |
I phytoup, popuplocal, ponuplocal, |
I phytoup, popuplocal, ponuplocal, |
49 |
I pofeuplocal, psiuplocal, |
I pofeuplocal, psiuplocal, |
50 |
I PARlocal,Tlocal, Slocal, |
I PARlocal,Tlocal, Slocal, |
51 |
|
I pCO2local, |
52 |
I freefelocal, inputFelocal, |
I freefelocal, inputFelocal, |
53 |
I bottom, dzlocal, |
I bottom, dzlocal, |
54 |
O Rstarlocal, RNstarlocal, |
O Rstarlocal, RNstarlocal, |
75 |
#endif |
#endif |
76 |
#ifdef GEIDER |
#ifdef GEIDER |
77 |
I phychl, |
I phychl, |
78 |
|
#ifdef DAR_DIAG_EK |
79 |
|
O Ek, EkoverE, |
80 |
|
#endif |
81 |
|
#ifdef DAR_DIAG_PARW |
82 |
|
O chl2c, |
83 |
|
#endif |
84 |
#ifdef DYNAMIC_CHL |
#ifdef DYNAMIC_CHL |
85 |
O dphychl, Chlup, |
O dphychl, Chlup, |
86 |
|
#ifdef DAR_DIAG_EK |
87 |
|
O acclim, |
88 |
|
#endif |
89 |
#endif |
#endif |
90 |
#ifdef ALLOW_CDOM |
#ifdef ALLOW_CDOM |
91 |
O dcdomdt , |
O dcdomdt , |
93 |
#endif |
#endif |
94 |
#ifdef WAVEBANDS |
#ifdef WAVEBANDS |
95 |
I PARwlocal, |
I PARwlocal, |
96 |
|
#ifdef DAR_DIAG_EK |
97 |
|
O Ek_nl, EkoverE_nl, |
98 |
|
#endif |
99 |
#endif |
#endif |
100 |
#endif |
#endif |
101 |
#ifdef ALLOW_PAR_DAY |
#ifdef ALLOW_PAR_DAY |
161 |
_RL PARlocal |
_RL PARlocal |
162 |
_RL Tlocal |
_RL Tlocal |
163 |
_RL Slocal |
_RL Slocal |
164 |
|
_RL pCO2local |
165 |
_RL freefelocal |
_RL freefelocal |
166 |
_RL inputFelocal |
_RL inputFelocal |
167 |
_RL bottom |
_RL bottom |
216 |
#endif |
#endif |
217 |
#ifdef GEIDER |
#ifdef GEIDER |
218 |
_RL phychl(npmax) |
_RL phychl(npmax) |
219 |
|
_RL Ek(npmax) |
220 |
|
_RL EkoverE(npmax) |
221 |
|
_RL chl2c(npmax) |
222 |
#ifdef DYNAMIC_CHL |
#ifdef DYNAMIC_CHL |
223 |
_RL dphychl(npmax) |
_RL dphychl(npmax) |
224 |
_RL Chlup(npmax) |
_RL Chlup(npmax) |
225 |
|
_RL acclim(npmax) |
226 |
#endif |
#endif |
227 |
#endif |
#endif |
228 |
#ifdef ALLOW_CDOM |
#ifdef ALLOW_CDOM |
244 |
c ANNA these variables are passed in/out of darwin_forcing.F |
c ANNA these variables are passed in/out of darwin_forcing.F |
245 |
#ifdef WAVEBANDS |
#ifdef WAVEBANDS |
246 |
_RL PARwlocal(tlam) !PAR at midpoint of previous(in) and local(out) gridcell |
_RL PARwlocal(tlam) !PAR at midpoint of previous(in) and local(out) gridcell |
247 |
|
_RL Ek_nl(npmax,tlam) |
248 |
|
_RL EkoverE_nl(npmax,tlam) |
249 |
#endif |
#endif |
250 |
c ANNA endif |
c ANNA endif |
251 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
252 |
c LOCAL VARIABLES |
c LOCAL VARIABLES |
253 |
c ------------------------------------------------------------- |
c ------------------------------------------------------------- |
254 |
|
|
263 |
_RL limit(npmax) |
_RL limit(npmax) |
264 |
c phytoplankton light limitation term |
c phytoplankton light limitation term |
265 |
_RL ilimit(npmax) |
_RL ilimit(npmax) |
266 |
|
_RL pCO2limit(npmax) |
267 |
_RL ngrow(npmax) |
_RL ngrow(npmax) |
268 |
_RL grow(npmax) |
_RL grow(npmax) |
269 |
_RL PspecificPO4(npmax) |
_RL PspecificPO4(npmax) |
329 |
_RL alpha_I(npmax) |
_RL alpha_I(npmax) |
330 |
_RL pcarbon(npmax) |
_RL pcarbon(npmax) |
331 |
_RL pcm(npmax) |
_RL pcm(npmax) |
|
_RL chl2c(npmax) |
|
332 |
#ifdef DYNAMIC_CHL |
#ifdef DYNAMIC_CHL |
|
_RL acclim(npmax) |
|
333 |
_RL psinkchl(npmax) |
_RL psinkchl(npmax) |
334 |
_RL rhochl(npmax) |
_RL rhochl(npmax) |
335 |
#endif |
#endif |
467 |
#endif |
#endif |
468 |
c ANNA endif |
c ANNA endif |
469 |
|
|
|
c ANNA - for inhib |
|
|
_RL Ek |
|
|
_RL EkoverE |
|
|
|
|
470 |
c................................................................. |
c................................................................. |
471 |
|
|
472 |
#ifdef ALLOW_MUTANTS |
#ifdef ALLOW_MUTANTS |
524 |
pcarbon(np) = 0. _d 0 |
pcarbon(np) = 0. _d 0 |
525 |
pcm(np)=0. _d 0 |
pcm(np)=0. _d 0 |
526 |
chl2c(np)=0. _d 0 |
chl2c(np)=0. _d 0 |
527 |
|
Ek(np)=0. _d 0 |
528 |
|
EkoverE(np)=0. _d 0 |
529 |
#ifdef DYNAMIC_CHL |
#ifdef DYNAMIC_CHL |
530 |
acclim(np)=0. _d 0 |
acclim(np)=0. _d 0 |
531 |
psinkChl(np)=0. _d 0 |
psinkChl(np)=0. _d 0 |
532 |
#endif |
#endif |
533 |
|
#ifdef WAVEBANDS |
534 |
|
do ilam=1,tlam |
535 |
|
Ek_nl(np,ilam)=0. _d 0 |
536 |
|
EkoverE_nl(np,ilam)=0. _d 0 |
537 |
|
enddo |
538 |
|
#endif |
539 |
enddo |
enddo |
540 |
#endif |
#endif |
541 |
|
|
655 |
#endif |
#endif |
656 |
c ANNA endif |
c ANNA endif |
657 |
|
|
658 |
|
c pCO2 limit - default to non |
659 |
|
do np=1,npmax |
660 |
|
pCO2limit(np)=1. _d 0 |
661 |
|
c if (np.eq.6) then |
662 |
|
c pCO2limit(np)=1. _d 0 + (pCO2local-400. _d -6)/600 _d -6 |
663 |
|
c pCO2limit(np)=max(pCO2limit(np),1. _d 0) |
664 |
|
c pCO2limit(np)=min(pCO2limit(np),2. _d 0) |
665 |
|
c endif |
666 |
|
if (debug.eq.15) print*,'pco2limit',pCO2limit(np),pCO2local |
667 |
|
enddo |
668 |
|
|
669 |
|
|
670 |
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
671 |
c Determine phytoplankton nutrient limitation as mimimum of |
c Determine phytoplankton nutrient limitation as mimimum of |
672 |
c P,N,Si,Fe. However N can be utilized in several forms, so |
c P,N,Si,Fe. However N can be utilized in several forms, so |
884 |
#endif |
#endif |
885 |
|
|
886 |
do np = 1, npmax |
do np = 1, npmax |
887 |
pcm(np)=pcmax(np)*limit(np)*phytoTempFunction(np) |
pcm(np)=pcmax(np)*limit(np)*phytoTempFunction(np)* |
888 |
|
& pCO2limit(np) |
889 |
#ifdef DYNAMIC_CHL |
#ifdef DYNAMIC_CHL |
890 |
if (phyto(np).gt. 0. _d 0) then |
if (phyto(np).gt. 0. _d 0) then |
891 |
chl2c(np)=phychl(np)/(phyto(np)*R_PC(np)) |
chl2c(np)=phychl(np)/(phyto(np)*R_PC(np)) |
906 |
c Eq A1 in Geider et al 1997 |
c Eq A1 in Geider et al 1997 |
907 |
pcarbon(np)=pcm(np)*( 1 - |
pcarbon(np)=pcm(np)*( 1 - |
908 |
& exp((-alpha_I(np)*chl2c(np))/(pcm(np))) ) |
& exp((-alpha_I(np)*chl2c(np))/(pcm(np))) ) |
|
c for inhibition |
|
|
if (inhibcoef_geid(np).gt.0. _d 0) then |
|
909 |
#ifdef WAVEBANDS |
#ifdef WAVEBANDS |
910 |
Ek = pcm(np)/(chl2c(np)*alpha_mean(np)) |
Ek(np) = pcm(np)/(chl2c(np)*alpha_mean(np)) |
911 |
|
EkoverE(np) = Ek(np) / PARlocal |
912 |
|
do nl=1, tlam |
913 |
|
Ek_nl(np,nl)=pcm(np)/(chl2c(np)*alphachl_nl(np,nl)) |
914 |
|
EkoverE_nl(np,nl) = Ek_nl(np,nl) / PARwlocal(nl) |
915 |
|
enddo |
916 |
#else |
#else |
917 |
Ek = pcm(np)/(chl2c(np)*alphachl(np)) |
Ek(np) = pcm(np)/(chl2c(np)*alphachl(np)) |
918 |
|
EkoverE(np) = Ek(np) / PARlocal |
919 |
#endif |
#endif |
920 |
EkoverE = Ek / PARlocal |
c for inhibition |
921 |
if (PARlocal .ge. Ek) then !photoinhibition begins |
if (inhibcoef_geid(np).gt.0. _d 0) then |
922 |
pcarbon(np) = pcarbon(np)*(EkoverE*inhibcoef_geid(np)) |
if (PARlocal .ge. Ek(np)) then !photoinhibition begins |
923 |
|
pcarbon(np) = pcarbon(np)* |
924 |
|
& (EkoverE(np)*inhibcoef_geid(np)) |
925 |
endif |
endif |
926 |
endif |
endif |
927 |
c end inhib |
c end inhib |
937 |
pcarbon(np)=0. _d 0 |
pcarbon(np)=0. _d 0 |
938 |
endif |
endif |
939 |
else ! if pcm 0 |
else ! if pcm 0 |
940 |
pcm(np)=0.d0 |
pcm(np)=0. _d 0 |
941 |
#ifndef DYNAMIC_CHL |
#ifndef DYNAMIC_CHL |
942 |
chl2c(np)=chl2cmin(np) |
chl2c(np)=chl2cmin(np) |
943 |
#endif |
#endif |
944 |
pcarbon(np)=0.d0 |
pcarbon(np)=0. _d 0 |
945 |
ilimit(np)=0.d0 |
ilimit(np)=0. _d 0 |
946 |
endif |
endif |
947 |
#ifdef DYNAMIC_CHL |
#ifdef DYNAMIC_CHL |
948 |
c Chl:C acclimated to current conditions |
c Chl:C acclimated to current conditions |
968 |
c diagnostic version of the above that does not feed back to growth |
c diagnostic version of the above that does not feed back to growth |
969 |
ChlGeiderlocal = 0. _d 0 |
ChlGeiderlocal = 0. _d 0 |
970 |
do np = 1, npmax |
do np = 1, npmax |
971 |
tmppcm = mu(np)*limit(np)*phytoTempFunction(np) |
tmppcm = mu(np)*limit(np)*phytoTempFunction(np)* |
972 |
|
& pCO2limit(np) |
973 |
if (tmppcm.gt.0.d0) then |
if (tmppcm.gt.0.d0) then |
974 |
tmpchl2c = Geider_chl2cmax(np)/ |
tmpchl2c = Geider_chl2cmax(np)/ |
975 |
& (1+(Geider_chl2cmax(np)*Geider_alphachl(np)*PARdaylocal)/ |
& (1+(Geider_chl2cmax(np)*Geider_alphachl(np)*PARdaylocal)/ |
1329 |
c phospate uptake by each phytoplankton |
c phospate uptake by each phytoplankton |
1330 |
#ifndef GEIDER |
#ifndef GEIDER |
1331 |
grow(np)=ngrow(np)*mu(np)*limit(np)*ilimit(np)* |
grow(np)=ngrow(np)*mu(np)*limit(np)*ilimit(np)* |
1332 |
& phytoTempFunction(np) |
& phytoTempFunction(np)*pCO2limit(np) |
1333 |
#endif |
#endif |
1334 |
#ifdef GEIDER |
#ifdef GEIDER |
1335 |
grow(np)=ngrow(np)*pcarbon(np) |
grow(np)=ngrow(np)*pcarbon(np) |
1478 |
#endif |
#endif |
1479 |
#endif |
#endif |
1480 |
|
|
1481 |
|
#ifdef ALLOW_DENIT |
1482 |
|
if (O2local.lt.O2crit) then |
1483 |
|
if (NO3local.lt.no3crit) then |
1484 |
|
c no remineralization for N, P, Fe (not Si?) |
1485 |
|
DOPremin = 0. _d 0 |
1486 |
|
DONremin = 0. _d 0 |
1487 |
|
DOFeremin = 0. _d 0 |
1488 |
|
preminP = 0. _d 0 |
1489 |
|
preminN = 0. _d 0 |
1490 |
|
preminFe = 0. _d 0 |
1491 |
|
#ifdef ALLOW_CDOM |
1492 |
|
preminP_cdom = 0. _d 0 |
1493 |
|
preminN_cdom = 0. _d 0 |
1494 |
|
preminFe_cdom = 0. _d 0 |
1495 |
|
#endif |
1496 |
|
#ifdef ALLOW_CARBON |
1497 |
|
DOCremin = 0. _d 0 |
1498 |
|
preminC = 0. _d 0 |
1499 |
|
#ifdef ALLOW_CDOM |
1500 |
|
preminC_cdom = 0. _d 0 |
1501 |
|
#endif |
1502 |
|
#endif |
1503 |
|
|
1504 |
|
#ifdef ALLOW_CDOM |
1505 |
|
c degradation of CDOM - high when bleached by light |
1506 |
|
cdomp_degrd = reminTempFunction * cdomlocal |
1507 |
|
& *(cdombleach*min(PARlocal/PARcdom,1. _d 0) ) |
1508 |
|
cdomn_degrd = rnp_cdom * cdomp_degrd |
1509 |
|
cdomfe_degrd= rfep_cdom * cdomp_degrd |
1510 |
|
#ifdef ALLOW_CARBON |
1511 |
|
cdomc_degrd = rcp_cdom * cdomp_degrd |
1512 |
|
#endif |
1513 |
|
#endif |
1514 |
|
endif |
1515 |
|
endif |
1516 |
|
#endif |
1517 |
|
c end denit caveats |
1518 |
|
|
1519 |
c chemistry |
c chemistry |
1520 |
c NH4 -> NO2 -> NO3 by bacterial action |
c NH4 -> NO2 -> NO3 by bacterial action |
1521 |
NO2prod = knita*( 1. _d 0-min(PARlocal/PAR0,1. _d 0) ) |
NO2prod = knita*( 1. _d 0-min(PARlocal/PAR0,1. _d 0) ) |
1583 |
#ifdef DAR_DIAG_RSTAR |
#ifdef DAR_DIAG_RSTAR |
1584 |
#ifndef GEIDER |
#ifndef GEIDER |
1585 |
tmpgrow=ngrow(np)*mu(np)*ilimit(np)* |
tmpgrow=ngrow(np)*mu(np)*ilimit(np)* |
1586 |
& phytoTempFunction(np) |
& phytoTempFunction(np)*pCO2limit(np) |
1587 |
#endif |
#endif |
1588 |
#ifdef GEIDER |
#ifdef GEIDER |
1589 |
tmpgrow=grow(np)/limit(np) |
tmpgrow=grow(np)/limit(np) |
1695 |
#else |
#else |
1696 |
& *(preminP + DOPremin) |
& *(preminP + DOPremin) |
1697 |
#endif |
#endif |
1698 |
dNO3dt = dNO3dt - denit |
dNO3dt = dNO3dt - (denit_no3/denit_np)*denit |
1699 |
dNH4dt = dNH4dt - |
dNH4dt = dNH4dt - |
1700 |
#ifdef ALLOW_CDOM |
#ifdef ALLOW_CDOM |
1701 |
& (DONremin) |
& (DONremin) |