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, |
149 |
_RL PARlocal |
_RL PARlocal |
150 |
_RL Tlocal |
_RL Tlocal |
151 |
_RL Slocal |
_RL Slocal |
152 |
|
_RL pCO2local |
153 |
_RL freefelocal |
_RL freefelocal |
154 |
_RL inputFelocal |
_RL inputFelocal |
155 |
_RL bottom |
_RL bottom |
249 |
_RL limit(npmax) |
_RL limit(npmax) |
250 |
c phytoplankton light limitation term |
c phytoplankton light limitation term |
251 |
_RL ilimit(npmax) |
_RL ilimit(npmax) |
252 |
|
_RL pCO2limit(npmax) |
253 |
_RL ngrow(npmax) |
_RL ngrow(npmax) |
254 |
_RL grow(npmax) |
_RL grow(npmax) |
255 |
_RL PspecificPO4(npmax) |
_RL PspecificPO4(npmax) |
256 |
_RL phytoTempFunction(npmax) |
_RL phytoTempFunction(npmax) |
257 |
|
_RL mortPTempFunction |
258 |
_RL dummy |
_RL dummy |
259 |
_RL Ndummy |
_RL Ndummy |
260 |
_RL Nsourcelimit(npmax) |
_RL Nsourcelimit(npmax) |
285 |
#ifdef OLD_GRAZE |
#ifdef OLD_GRAZE |
286 |
c variables for zooplankton grazing rates |
c variables for zooplankton grazing rates |
287 |
_RL zooTempFunction(nzmax) |
_RL zooTempFunction(nzmax) |
288 |
|
_RL mortZTempFunction |
289 |
|
_RL mortZ2TempFunction |
290 |
_RL grazing_phyto(npmax) |
_RL grazing_phyto(npmax) |
291 |
_RL grazingP(nzmax) |
_RL grazingP(nzmax) |
292 |
_RL grazingN(nzmax) |
_RL grazingN(nzmax) |
295 |
#else |
#else |
296 |
c variables for zooplankton grazing rates |
c variables for zooplankton grazing rates |
297 |
_RL zooTempFunction(nzmax) |
_RL zooTempFunction(nzmax) |
298 |
|
_RL mortZTempFunction |
299 |
|
_RL mortZ2TempFunction |
300 |
_RL allphyto(nzmax) |
_RL allphyto(nzmax) |
301 |
_RL denphyto(nzmax) |
_RL denphyto(nzmax) |
302 |
_RL grazphy(npmax,nzmax) |
_RL grazphy(npmax,nzmax) |
608 |
|
|
609 |
c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
610 |
call MONOD_TEMPFUNC(Tlocal,phytoTempFunction, |
call MONOD_TEMPFUNC(Tlocal,phytoTempFunction, |
611 |
& zooTempFunction, reminTempFunction, myThid) |
& zooTempFunction, reminTempFunction, |
612 |
|
& mortPTempFunction, mortZTempFunction, |
613 |
|
& mortZ2TempFunction, myThid) |
614 |
if (debug.eq.1) print*,'phytoTempFunction', |
if (debug.eq.1) print*,'phytoTempFunction', |
615 |
& phytoTempFunction, Tlocal |
& phytoTempFunction, Tlocal |
616 |
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
639 |
#endif |
#endif |
640 |
c ANNA endif |
c ANNA endif |
641 |
|
|
642 |
|
c pCO2 limit - default to non |
643 |
|
do np=1,npmax |
644 |
|
pCO2limit(np)=1. _d 0 |
645 |
|
c if (np.eq.6) then |
646 |
|
c pCO2limit(np)=1. _d 0 + (pCO2local-400. _d -6)/600 _d -6 |
647 |
|
c pCO2limit(np)=max(pCO2limit(np),1. _d 0) |
648 |
|
c pCO2limit(np)=min(pCO2limit(np),2. _d 0) |
649 |
|
c endif |
650 |
|
if (debug.eq.15) print*,'pco2limit',pCO2limit(np),pCO2local |
651 |
|
enddo |
652 |
|
|
653 |
|
|
654 |
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
655 |
c Determine phytoplankton nutrient limitation as mimimum of |
c Determine phytoplankton nutrient limitation as mimimum of |
656 |
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 |
868 |
#endif |
#endif |
869 |
|
|
870 |
do np = 1, npmax |
do np = 1, npmax |
871 |
pcm(np)=pcmax(np)*limit(np)*phytoTempFunction(np) |
pcm(np)=pcmax(np)*limit(np)*phytoTempFunction(np)* |
872 |
|
& pCO2limit(np) |
873 |
#ifdef DYNAMIC_CHL |
#ifdef DYNAMIC_CHL |
874 |
if (phyto(np).gt. 0. _d 0) then |
if (phyto(np).gt. 0. _d 0) then |
875 |
chl2c(np)=phychl(np)/(phyto(np)*R_PC(np)) |
chl2c(np)=phychl(np)/(phyto(np)*R_PC(np)) |
946 |
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 |
947 |
ChlGeiderlocal = 0. _d 0 |
ChlGeiderlocal = 0. _d 0 |
948 |
do np = 1, npmax |
do np = 1, npmax |
949 |
tmppcm = mu(np)*limit(np)*phytoTempFunction(np) |
tmppcm = mu(np)*limit(np)*phytoTempFunction(np)* |
950 |
|
& pCO2limit(np) |
951 |
if (tmppcm.gt.0.d0) then |
if (tmppcm.gt.0.d0) then |
952 |
tmpchl2c = Geider_chl2cmax(np)/ |
tmpchl2c = Geider_chl2cmax(np)/ |
953 |
& (1+(Geider_chl2cmax(np)*Geider_alphachl(np)*PARdaylocal)/ |
& (1+(Geider_chl2cmax(np)*Geider_alphachl(np)*PARdaylocal)/ |
1106 |
c accumulate particulate and dissolved detritus |
c accumulate particulate and dissolved detritus |
1107 |
do np=1, npmax |
do np=1, npmax |
1108 |
totphy_pop=totphy_pop+ |
totphy_pop=totphy_pop+ |
1109 |
& ExportFracP(np)*mortphy(np)*phytomin(np) |
& ExportFracP(np)*mortphy(np)* |
1110 |
|
& mortPTempFunction*phytomin(np) |
1111 |
totphy_dop=totphy_dop+ |
totphy_dop=totphy_dop+ |
1112 |
& (1. _d 0-ExportFracP(np))*mortphy(np)*phytomin(np) |
& (1. _d 0-ExportFracP(np))*mortphy(np)* |
1113 |
|
& mortPTempFunction*phytomin(np) |
1114 |
totphy_pon=totphy_pon+ R_NP(np)* |
totphy_pon=totphy_pon+ R_NP(np)* |
1115 |
& ExportFracP(np)*mortphy(np)*phytomin(np) |
& ExportFracP(np)*mortphy(np)* |
1116 |
|
& mortPTempFunction*phytomin(np) |
1117 |
totphy_don=totphy_don+ R_NP(np)* |
totphy_don=totphy_don+ R_NP(np)* |
1118 |
& (1. _d 0-ExportFracP(np))*mortphy(np)*phytomin(np) |
& (1. _d 0-ExportFracP(np))*mortphy(np)* |
1119 |
|
& mortPTempFunction*phytomin(np) |
1120 |
totphy_pofe=totphy_pofe+ R_FeP(np)* |
totphy_pofe=totphy_pofe+ R_FeP(np)* |
1121 |
& ExportFracP(np)*mortphy(np)*phytomin(np) |
& ExportFracP(np)*mortphy(np)* |
1122 |
|
& mortPTempFunction*phytomin(np) |
1123 |
totphy_dofe=totphy_dofe+ R_FeP(np)* |
totphy_dofe=totphy_dofe+ R_FeP(np)* |
1124 |
& (1. _d 0-ExportFracP(np))*mortphy(np)*phytomin(np) |
& (1. _d 0-ExportFracP(np))*mortphy(np)* |
1125 |
|
& mortPTempFunction*phytomin(np) |
1126 |
totphy_posi=totphy_posi+ R_SiP(np)* |
totphy_posi=totphy_posi+ R_SiP(np)* |
1127 |
& mortphy(np)*phytomin(np) |
& mortphy(np)* |
1128 |
|
& mortPTempFunction*phytomin(np) |
1129 |
#ifdef ALLOW_CARBON |
#ifdef ALLOW_CARBON |
1130 |
totphy_poc=totphy_poc+ R_PC(np)* |
totphy_poc=totphy_poc+ R_PC(np)* |
1131 |
& ExportFracP(np)*mortphy(np)*phytomin(np) |
& ExportFracP(np)*mortphy(np)* |
1132 |
|
& mortPTempFunction*phytomin(np) |
1133 |
totphy_doc=totphy_doc+ R_PC(np)* |
totphy_doc=totphy_doc+ R_PC(np)* |
1134 |
& (1. _d 0-ExportFracP(np))*mortphy(np)*phytomin(np) |
& (1. _d 0-ExportFracP(np))*mortphy(np)* |
1135 |
|
& mortPTempFunction*phytomin(np) |
1136 |
totphy_pic=totphy_pic+ R_PC(np)*R_PICPOC(np)* |
totphy_pic=totphy_pic+ R_PC(np)*R_PICPOC(np)* |
1137 |
& mortphy(np)*phytomin(np) |
& mortphy(np)* |
1138 |
|
& mortPTempFunction*phytomin(np) |
1139 |
#endif |
#endif |
1140 |
enddo |
enddo |
1141 |
#ifdef ALLOW_CDOM |
#ifdef ALLOW_CDOM |
1201 |
c accumulate particulate and dissolved detritus |
c accumulate particulate and dissolved detritus |
1202 |
do nz=1, nzmax |
do nz=1, nzmax |
1203 |
totzoo_pop=totzoo_pop+ |
totzoo_pop=totzoo_pop+ |
1204 |
& ExportFracZ(nz)*( mortzoo(nz)*zooP(nz) |
& ExportFracZ(nz)*( mortzoo(nz)* |
1205 |
& + mortzoo2(nz)*zooP(nz)**2 ) |
& mortZTempFunction*zooP(nz) |
1206 |
|
& + mortzoo2(nz)* |
1207 |
|
& mortZ2TempFunction*zooP(nz)**2 ) |
1208 |
totzoo_dop=totzoo_dop+ |
totzoo_dop=totzoo_dop+ |
1209 |
& (1. _d 0-ExportFracZ(nz))*( |
& (1. _d 0-ExportFracZ(nz))*( |
1210 |
& mortzoo(nz)*zooP(nz)+ |
& mortzoo(nz)* |
1211 |
& mortzoo2(nz)*zooP(nz)**2 ) |
& mortZTempFunction*zooP(nz)+ |
1212 |
|
& mortzoo2(nz)* |
1213 |
|
& mortZ2TempFunction*zooP(nz)**2 ) |
1214 |
totzoo_pon=totzoo_pon+ |
totzoo_pon=totzoo_pon+ |
1215 |
& ExportFracZ(nz)*( mortzoo(nz)*zooN(nz) |
& ExportFracZ(nz)*( mortzoo(nz)* |
1216 |
& + mortzoo2(nz)*zooN(nz)**2 ) |
& mortZTempFunction*zooN(nz) |
1217 |
|
& + mortzoo2(nz)* |
1218 |
|
& mortZ2TempFunction*zooN(nz)**2 ) |
1219 |
totzoo_don=totzoo_don+ |
totzoo_don=totzoo_don+ |
1220 |
& (1. _d 0-ExportFracZ(nz))*( |
& (1. _d 0-ExportFracZ(nz))*( |
1221 |
& mortzoo(nz)*zooN(nz)+ |
& mortzoo(nz)* |
1222 |
& mortzoo2(nz)*zooN(nz)**2 ) |
& mortZTempFunction*zooN(nz)+ |
1223 |
|
& mortzoo2(nz)* |
1224 |
|
& mortZ2TempFunction*zooN(nz)**2 ) |
1225 |
totzoo_pofe=totzoo_pofe+ |
totzoo_pofe=totzoo_pofe+ |
1226 |
& ExportFracZ(nz)*( mortzoo(nz)*zooFe(nz) |
& ExportFracZ(nz)*( mortzoo(nz)* |
1227 |
& + mortzoo2(nz)*zooFe(nz)**2 ) |
& mortZTempFunction*zooFe(nz) |
1228 |
|
& + mortzoo2(nz)* |
1229 |
|
& mortZ2TempFunction*zooFe(nz)**2 ) |
1230 |
totzoo_dofe=totzoo_dofe+ |
totzoo_dofe=totzoo_dofe+ |
1231 |
& (1. _d 0-ExportFracZ(nz))*( |
& (1. _d 0-ExportFracZ(nz))*( |
1232 |
& mortzoo(nz)*zooFe(nz) + |
& mortzoo(nz)* |
1233 |
& mortzoo2(nz)*zooFe(nz)**2 ) |
& mortZTempFunction*zooFe(nz) + |
1234 |
|
& mortzoo2(nz)* |
1235 |
|
& mortZ2TempFunction*zooFe(nz)**2 ) |
1236 |
totzoo_posi=totzoo_posi+ |
totzoo_posi=totzoo_posi+ |
1237 |
& ( mortzoo(nz)*zooSi(nz)+ |
& ( mortzoo(nz)* |
1238 |
& mortzoo2(nz)*zooSi(nz)**2 ) |
& mortZTempFunction*zooSi(nz)+ |
1239 |
|
& mortzoo2(nz)* |
1240 |
|
& mortZ2TempFunction*zooSi(nz)**2 ) |
1241 |
#ifdef ALLOW_CARBON |
#ifdef ALLOW_CARBON |
1242 |
totzoo_poc=totzoo_poc+ |
totzoo_poc=totzoo_poc+ |
1243 |
& ExportFracZ(nz)*( mortzoo(nz)*zooClocal(nz) |
& ExportFracZ(nz)*( mortzoo(nz)* |
1244 |
& + mortzoo2(nz)*zooClocal(nz)**2 ) |
& mortZTempFunction*zooClocal(nz) |
1245 |
|
& + mortzoo2(nz)* |
1246 |
|
& mortZ2TempFunction*zooClocal(nz)**2 ) |
1247 |
totzoo_doc=totzoo_doc+ |
totzoo_doc=totzoo_doc+ |
1248 |
& (1. _d 0-ExportFracZ(nz))*( mortzoo(nz)*zooClocal(nz) |
& (1. _d 0-ExportFracZ(nz))*( mortzoo(nz)* |
1249 |
& + mortzoo2(nz)*zooClocal(nz)**2 ) |
& mortZTempFunction*zooClocal(nz) |
1250 |
|
& + mortzoo2(nz)* |
1251 |
|
& mortZ2TempFunction*zooClocal(nz)**2 ) |
1252 |
#endif |
#endif |
1253 |
enddo |
enddo |
1254 |
|
|
1307 |
c phospate uptake by each phytoplankton |
c phospate uptake by each phytoplankton |
1308 |
#ifndef GEIDER |
#ifndef GEIDER |
1309 |
grow(np)=ngrow(np)*mu(np)*limit(np)*ilimit(np)* |
grow(np)=ngrow(np)*mu(np)*limit(np)*ilimit(np)* |
1310 |
& phytoTempFunction(np) |
& phytoTempFunction(np)*pCO2limit(np) |
1311 |
#endif |
#endif |
1312 |
#ifdef GEIDER |
#ifdef GEIDER |
1313 |
grow(np)=ngrow(np)*pcarbon(np) |
grow(np)=ngrow(np)*pcarbon(np) |
1482 |
#else |
#else |
1483 |
& - sumgrazphy(np) |
& - sumgrazphy(np) |
1484 |
#endif |
#endif |
1485 |
& - mortphy(np)*phytomin(np) |
& - mortphy(np)* |
1486 |
|
& mortPTempFunction*phytomin(np) |
1487 |
& + psinkphy(np) |
& + psinkphy(np) |
1488 |
#ifdef GEIDER |
#ifdef GEIDER |
1489 |
#ifdef DYNAMIC_CHL |
#ifdef DYNAMIC_CHL |
1498 |
#else |
#else |
1499 |
& - sumgrazphy(np) |
& - sumgrazphy(np) |
1500 |
#endif |
#endif |
1501 |
& - mortphy(np)*phytomin(np)) *chl2c(np)*R_PC(np) |
& - mortphy(np)* |
1502 |
|
& mortPTempFunction*phytomin(np)) |
1503 |
|
& *chl2c(np)*R_PC(np) |
1504 |
& + psinkChl(np) |
& + psinkChl(np) |
1505 |
#endif |
#endif |
1506 |
Chl=Chl + phychl(np) |
Chl=Chl + phychl(np) |
1511 |
#ifdef OLD_GRAZE |
#ifdef OLD_GRAZE |
1512 |
tmpr=grazing_phyto(np)* |
tmpr=grazing_phyto(np)* |
1513 |
& (phytomin(np)/(phytomin(np) + kgrazesat)) |
& (phytomin(np)/(phytomin(np) + kgrazesat)) |
1514 |
& + mortphy(np)*phytomin(np) |
& + mortphy(np)* |
1515 |
|
& mortPTempFunction*phytomin(np) |
1516 |
& - psinkphy(np) |
& - psinkphy(np) |
1517 |
#else |
#else |
1518 |
tmpr=sumgrazphy(np) |
tmpr=sumgrazphy(np) |
1519 |
& + mortphy(np)*phytomin(np) |
& + mortphy(np)* |
1520 |
|
& mortPTempFunction*phytomin(np) |
1521 |
& - psinkphy(np) |
& - psinkphy(np) |
1522 |
#endif |
#endif |
1523 |
#ifdef DAR_DIAG_RSTAR |
#ifdef DAR_DIAG_RSTAR |
1524 |
#ifndef GEIDER |
#ifndef GEIDER |
1525 |
tmpgrow=ngrow(np)*mu(np)*ilimit(np)* |
tmpgrow=ngrow(np)*mu(np)*ilimit(np)* |
1526 |
& phytoTempFunction(np) |
& phytoTempFunction(np)*pCO2limit(np) |
1527 |
#endif |
#endif |
1528 |
#ifdef GEIDER |
#ifdef GEIDER |
1529 |
tmpgrow=grow(np)/limit(np) |
tmpgrow=grow(np)/limit(np) |
1584 |
do nz=1,nzmax |
do nz=1,nzmax |
1585 |
c zoo in P currency |
c zoo in P currency |
1586 |
dzooPdt(nz) = dzooPdt(nz) |
dzooPdt(nz) = dzooPdt(nz) |
1587 |
& - mortzoo(nz)*zooP(nz) |
& - mortzoo(nz)* |
1588 |
& - mortzoo2(nz)*zooP(nz)**2 |
& mortZTempFunction*zooP(nz) |
1589 |
|
& - mortzoo2(nz)* |
1590 |
|
& mortZ2TempFunction*zooP(nz)**2 |
1591 |
c zooplankton in other currencies |
c zooplankton in other currencies |
1592 |
C zooplankton stoichiometry varies according to food source |
C zooplankton stoichiometry varies according to food source |
1593 |
dzooNdt(nz) = dzooNdt(nz) |
dzooNdt(nz) = dzooNdt(nz) |
1594 |
& - mortzoo(nz)*zooN(nz) |
& - mortzoo(nz)* |
1595 |
& - mortzoo2(nz)*zooN(nz)**2 |
& mortZTempFunction*zooN(nz) |
1596 |
|
& - mortzoo2(nz)* |
1597 |
|
& mortZ2TempFunction*zooN(nz)**2 |
1598 |
dzooFedt(nz) = dzooFedt(nz) |
dzooFedt(nz) = dzooFedt(nz) |
1599 |
& - mortzoo(nz)*zooFe(nz) |
& - mortzoo(nz)* |
1600 |
& - mortzoo2(nz)*zooFe(nz)**2 |
& mortZTempFunction*zooFe(nz) |
1601 |
|
& - mortzoo2(nz)* |
1602 |
|
& mortZ2TempFunction*zooFe(nz)**2 |
1603 |
dzooSidt(nz) = dzooSidt(nz) |
dzooSidt(nz) = dzooSidt(nz) |
1604 |
& - mortzoo(nz)*zooSi(nz) |
& - mortzoo(nz)* |
1605 |
& - mortzoo2(nz)*zooSi(nz)**2 |
& mortZTempFunction*zooSi(nz) |
1606 |
|
& - mortzoo2(nz)* |
1607 |
|
& mortZ2TempFunction*zooSi(nz)**2 |
1608 |
enddo |
enddo |
1609 |
|
|
1610 |
|
|
1721 |
#ifdef OLD_GRAZE |
#ifdef OLD_GRAZE |
1722 |
do nz=1,nzmax |
do nz=1,nzmax |
1723 |
dzooCdt(nz) = grazingC(nz)*zooClocal(nz) |
dzooCdt(nz) = grazingC(nz)*zooClocal(nz) |
1724 |
& - mortzoo(nz)*zooClocal(nz) |
& - mortzoo(nz)* |
1725 |
& - mortzoo2(nz)*zooClocal(nz)**2 |
& mortZTempFunction*zooClocal(nz) |
1726 |
|
& - mortzoo2(nz)* |
1727 |
|
& mortZ2TempFunction*zooClocal(nz)**2 |
1728 |
enddo |
enddo |
1729 |
#else |
#else |
1730 |
do nz=1,nzmax |
do nz=1,nzmax |
1731 |
dzooCdt(nz) = sumgrazzooc(nz) |
dzooCdt(nz) = sumgrazzooc(nz) |
1732 |
& - mortzoo(nz)*zooClocal(nz) |
& - mortzoo(nz)* |
1733 |
& - mortzoo2(nz)*zooClocal(nz)**2 |
& mortZTempFunction*zooClocal(nz) |
1734 |
|
& - mortzoo2(nz)* |
1735 |
|
& mortZ2TempFunction*zooClocal(nz)**2 |
1736 |
enddo |
enddo |
1737 |
#endif |
#endif |
1738 |
|
|