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) |
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)/ |
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) |
1456 |
#endif |
#endif |
1457 |
#endif |
#endif |
1458 |
|
|
1459 |
|
#ifdef ALLOW_DENIT |
1460 |
|
if (O2local.lt.O2crit) then |
1461 |
|
if (NO3local.lt.no3crit) then |
1462 |
|
c no remineralization for N, P, Fe (not Si?) |
1463 |
|
DOPremin = 0. _d 0 |
1464 |
|
DONremin = 0. _d 0 |
1465 |
|
DOFeremin = 0. _d 0 |
1466 |
|
preminP = 0. _d 0 |
1467 |
|
preminN = 0. _d 0 |
1468 |
|
preminFe = 0. _d 0 |
1469 |
|
#ifdef ALLOW_CDOM |
1470 |
|
preminP_cdom = 0. _d 0 |
1471 |
|
preminN_cdom = 0. _d 0 |
1472 |
|
preminFe_cdom = 0. _d 0 |
1473 |
|
#endif |
1474 |
|
#ifdef ALLOW_CARBON |
1475 |
|
DOCremin = 0. _d 0 |
1476 |
|
preminC = 0. _d 0 |
1477 |
|
#ifdef ALLOW_CDOM |
1478 |
|
preminC_cdom = 0. _d 0 |
1479 |
|
#endif |
1480 |
|
#endif |
1481 |
|
|
1482 |
|
#ifdef ALLOW_CDOM |
1483 |
|
c degradation of CDOM - high when bleached by light |
1484 |
|
cdomp_degrd = reminTempFunction * cdomlocal |
1485 |
|
& *(cdombleach*min(PARlocal/PARcdom,1. _d 0) ) |
1486 |
|
cdomn_degrd = rnp_cdom * cdomp_degrd |
1487 |
|
cdomfe_degrd= rfep_cdom * cdomp_degrd |
1488 |
|
#ifdef ALLOW_CARBON |
1489 |
|
cdomc_degrd = rcp_cdom * cdomp_degrd |
1490 |
|
#endif |
1491 |
|
#endif |
1492 |
|
endif |
1493 |
|
endif |
1494 |
|
#endif |
1495 |
|
c end denit caveats |
1496 |
|
|
1497 |
c chemistry |
c chemistry |
1498 |
c NH4 -> NO2 -> NO3 by bacterial action |
c NH4 -> NO2 -> NO3 by bacterial action |
1499 |
NO2prod = knita*( 1. _d 0-min(PARlocal/PAR0,1. _d 0) ) |
NO2prod = knita*( 1. _d 0-min(PARlocal/PAR0,1. _d 0) ) |
1561 |
#ifdef DAR_DIAG_RSTAR |
#ifdef DAR_DIAG_RSTAR |
1562 |
#ifndef GEIDER |
#ifndef GEIDER |
1563 |
tmpgrow=ngrow(np)*mu(np)*ilimit(np)* |
tmpgrow=ngrow(np)*mu(np)*ilimit(np)* |
1564 |
& phytoTempFunction(np) |
& phytoTempFunction(np)*pCO2limit(np) |
1565 |
#endif |
#endif |
1566 |
#ifdef GEIDER |
#ifdef GEIDER |
1567 |
tmpgrow=grow(np)/limit(np) |
tmpgrow=grow(np)/limit(np) |
1673 |
#else |
#else |
1674 |
& *(preminP + DOPremin) |
& *(preminP + DOPremin) |
1675 |
#endif |
#endif |
1676 |
dNO3dt = dNO3dt - denit |
dNO3dt = dNO3dt - (denit_no3/denit_np)*denit |
1677 |
dNH4dt = dNH4dt - |
dNH4dt = dNH4dt - |
1678 |
#ifdef ALLOW_CDOM |
#ifdef ALLOW_CDOM |
1679 |
& (DONremin) |
& (DONremin) |