Run1-Temperature: Set TOPTx, KxBETA1, KxBETA2, KxC, KxRT for all three groups equal to the values for PHYT3 (green). All other parameters at their default values.
TOPT*: Optimal growth temperature
K*BETA1/2: Temperature correction effect on growth rate below/above TOPT*
K*C: Saturated phytoplankton growth rate at TOPT*
K*RT: Temperature coefficient for KRB, KRB is Endogenous respiration rate at 30 deg. C
control run | SR01 |
---|---|
TOPT1=2.5000E1 | TOPT1=2.0000E1 |
TOPT2=4.0000E0 | TOPT2=2.0000E1 |
TOPT3=2.0000E1 | TOPT3=2.0000E1 |
K1BETA1=5.0000E-2 | K1BETA1=6.0000E-3 |
K2BETA1=6.0000E-3 | K2BETA1=6.0000E-3 |
K3BETA1=6.0000E-3 | K3BETA1=6.0000E-3 |
K1BETA2=5.0000E-2 | K1BETA2=6.0000E-3 |
K2BETA2=6.0000E-3 | K2BETA2=6.0000E-3 |
K3BETA2=6.0000E-3 | K3BETA2=6.0000E-3 |
K1C=2.3000E0 | K1C=2.0000E0 |
K2C=2.0000E0 | K2C=2.0000E0 |
K3C=2.0000E0 | K3C=2.0000E0 |
K1RT=1.0900E0 | K1RT=1.0800E0 |
K2RT=1.0700E0 | K2RT=1.0800E0 |
K3RT=1.0800E0 | K3RT=1.0800E0 |
TOPT*, K*BETA1, K*BETA2 and K*C, KRT* were defined in mod_CONSTANTS.F
TOPT(n) = CONST(j+ 1) !
KBETA1(n) = CONST(j+ 2) !
KBETA2(n) = CONST(j+ 3) !
KCx(n) = CONST(j+ 4) !
KRT(n) = CONST(j+11) !
TOPT*, K*BETA1, KBETA2 and KC were used in eutro_init_std.F
!---------------------------------------------------
!- Step #1: COMPUTE TEMPERATURE-CORR. GROWTH RATE
!---------------------------------------------------
IF(HYDTEMP(I,K).LE.TOPT(N))THEN
val = KCx(N)*EXP(-KBETA1(N)*(HYDTEMP(I,K)-TOPT(N))**2.) #KCx is K*C; KBETA1 is K*BETA1
ELSE
val = KCx(N)*EXP(-KBETA2(N)*(TOPT(N)-HYDTEMP(I,K))**2.)
ENDIF
K*RT were used in eutro_init_std.F
!-------------------------------------------------------------------
!- INITIALIZE TEMP-CORRECTED REACTION RATES (LOOKUP ARRAYS:
!-------------------------------------------------------------------
DO ITEMP=1,450
TEMP = (FLOAT(ITEMP-1)/10.+0.05) - 20.
DO N=1,MXPHYT
KRBT(N,ITEMP) = KRB(N)*(KRT(N)**TEMP) #KRT is K*RT
KGRZCT(N,ITEMP) = KGRZC(N)*(KGRZT(N)**TEMP)
ENDDO
ENDDO
KRBT was used in step 4
!---------------------------------------------------
!- Step #4: DEATH: RESPIRATION + GRAZING BY ZOOPLANKTON
!---------------------------------------------------
IF (DO(I,K,1).LT.1.0E-04) THEN
RESP0(I,K,N) = 0.0
GRAZ0(I,K,N) = 0.0
ELSE
RESP0(I,K,N) = KRG(N)*GPP(I,K,N) & !Growth-dependent...
+ KRBT(N,ISTP20(I,K))*CPHYT !Basal/resting...
IF(ZGMOPT.EQ.0) THEN !User-specified grazing rate (temp.-corr.)...
GRAZ0(I,K,N) = KGRZCT(N,ISTP20(I,K))*CPHYT
ELSEIF(ZGMOPT.EQ.1) THEN !Calculated in zooplankton sub-model...
ELSEIF(ZGMOPT.EQ.2) THEN !UMR-specific approach originally coded by HQI...
CALL GRZCOEFF(IX,CLAD,COPE) !Update CLAD,COPE coefficients...
ALGC = PHYT1(I,K,1)+PHYT2(I,K,1)+PHYT3(I,K,1) &
+PHYT4(I,K,1)+PHYT5(I,K,1)
GRAZ0(I,K,N) = KGRZCT(N,ISTP20(I,K))*CPHYT &
* ( CLAD*0.9/(0.9+ALGC) + COPE*0.35/(0.35+ALGC))
ENDIF
ENDIF
Run4-phosphorus: Set KMPx, CRBPx1, CRBPx2, CRBPx3, for all three groups equal to the values for PHYT3 (green). All other parameters at their default values.
KMP*: Half saturation constant for phosphorus
CRBP*1: Carbon to phosphorus ratio (non‐P‐limited)
CRBP*2: Carbon to phosphorus ratio (P‐limited)
CRBP*3: Coefficient determining range of P limitation
control run | SR01 |
---|---|
KMP1=3.0000E-3 | KMP1=1.0000E-3 |
KMP2=1.0000E-3 | KMP2=1.0000E-3 |
KMP3=1.0000E-3 | KMP3=1.0000E-3 |
CRBP11=4.0000E1 | CRBP11=5.0000E1 |
CRBP21=4.0000E1 | CRBP21=5.0000E1 |
CRBP31=5.0000E1 | CRBP31=5.0000E1 |
CRBP12=9.0000E1 | CRBP12=1.0000E2 |
CRBP22=9.0000E1 | CRBP22=1.0000E2 |
CRBP32=1.0000E2 | CRBP32=1.0000E2 |
CRBP13=1.0000E2 | CRBP13=5.0000E1 |
CRBP23=2.0000E2 | CRBP23=5.0000E1 |
CRBP33=5.0000E1 | CRBP33=5.0000E1 |
KMP* were defined in mod_CONSTANTS.F
KMP(n) = CONST(j+ 8) !
KMP* were used in eutro_init_std.F
!---------------------------------------------------
!- Step #3: GROWTH RATE REDUCTION TO NUTRIENT LIMITATION(S)
!---------------------------------------------------
!---COMPUTE MICHAELIS TERMS
DIN = DNH4(I,K,1) + NO23(I,K,1)
XEMP1 = (DIN) / (KMN(N) + DIN)
XEMP2 = DPO4(I,K,1) / (KMP(N) + DPO4(I,K,1)). ##### KMP was used here!!!!
XEMP3 = DSI(I,K,1) / (KMS(N) + DSI(I,K,1))
!---COMPUTE GROWTH RATE REDUCTION DUE TO NUTRIENT LIMITATION
!---USE 'MINIMUM' FORM RATHER THAN 'MULTIPLICATIVE' FORM
RNUTR(I,K,N) = MIN(XEMP1,XEMP2,XEMP3)
RDIN(I,K,N) = XEMP1
RPHP(I,K,N) = XEMP2
RDSI(I,K,N) = XEMP3
! IF (RNUTR(I,K,N) < 0.) THEN
! PRINT*, "I, K, N = ", I, K, N
! PRINT*, "KMN(N) = ", KMN(N)
! PRINT*, "KMP(N) = ", KMP(N)
! PRINT*, "KMS(N) = ", KMS(N)
! PRINT*, "DNH4(I,K,1) = ", DNH4(I,K,1)
! PRINT*, "NO23(I,K,1) = ", NO23(I,K,1)
! PRINT*, "DPO4(I,K,1) = ", DPO4(I,K,1)
! PRINT*, "DSI(I,K,1) = ", DSI(I,K,1)
! ENDIF
ALGVS(I,K,N) = (VSBAS(N)+VSNTR(N)*(1.-RNUTR(I,K,N))) & !Effect of nutrient lim. on settling...
*VSBAST**STP20(I,K)
GPP(I,K,N) = RNUTR(I,K,N)*RLGHT(I,K,N) & !Removed RGP factor (TMR-2/14/07)
*GITMAX(I,K,N)*CPHYT !Compute gross growth rate (combine factors)...
CRBP** were defined in mod_CONSTANTS.F
CRBP(n,1) = CONST(j+16) !
CRBP(n,2) = CONST(j+17) !
CRBP(n,3) = CONST(j+18) !
CRBP** were used in eutro_init_std.F
IF(CRBP(N,2).GT.0) THEN
IF(CRBP(N,2).GE.CRBP(N,1)) THEN
CRBP(N,2) = CRBP(N,2)-CRBP(N,1)
ELSE
WRITE(OUT,1001) CRBP(N,1),CRBP(N,2)
1001 FORMAT(///10X,'ERROR...CRBP(N,1) > CRBP(N,2)',F6.1,' > ',F6.1)
ENDIF
ENDIF
!-------------------------------------------------------------------
!- INITIALIZE ALGAL NUTRIENT TO CARBON RATIOS
!-------------------------------------------------------------------
DO I=1,M
DO K=1,ZGVC(I)
PCRB1(I,K) = 1./CRBP(1,1)
NCRB1(I,K) = 1./CRBN(1,1)
SCRB1(I,K) = 1./CRBS(1,1)
PCRB2(I,K) = 1./CRBP(2,1)
NCRB2(I,K) = 1./CRBN(2,1)
SCRB2(I,K) = 1./CRBS(2,1)
PCRB3(I,K) = 1./CRBP(3,1)
NCRB3(I,K) = 1./CRBN(3,1)
SCRB3(I,K) = 1./CRBS(3,1)
PCRB4(I,K) = 1./CRBP(4,1)
NCRB4(I,K) = 1./CRBN(4,1)
SCRB4(I,K) = 1./CRBS(4,1)
PCRB5(I,K) = 1./CRBP(5,1)
NCRB5(I,K) = 1./CRBN(5,1)
SCRB5(I,K) = 1./CRBS(5,1)
ENDDO
ENDDO
!-------------------------------------------------------------------
!- INITIALIZE RATIO ARRAYS:
!-------------------------------------------------------------------
DO n=1,3 !Loop over 3 coefficients...
CRBP1(n) = CRBP(1,n)
CRBP2(n) = CRBP(2,n)
CRBP3(n) = CRBP(3,n)
!-----------------------------------------------------------------------
! PHOSPHORUS
!-----------------------------------------------------------------------
IF(FSM(IXG).EQ.1.)THEN !Bypass stoich calcs for boundary cells (TMR-1/4/11)...
IF(CRBP(1,2).NE.0. .OR. CRBP(2,2).NE.0. .OR. CRBP(3,2).NE.0. &
.OR. CRBP(4,2).NE.0. .OR. CRBP(5,2).NE.0.) THEN
CALL STOICH_P5(PO4T(I,K,1),DIP_MIN,KADPO41,KADPO42 &
,SS1(I,K,1),SS2(I,K,1) &
,PHYT1(I,K,1),PHYT2(I,K,1),PHYT3(I,K,1) &
,PHYT4(I,K,1),PHYT5(I,K,1) &
,CRBP1,CRBP2,CRBP3,CRBP4,CRBP5 &
,PCRB1(I,K),PCRB2(I,K),PCRB3(I,K) &
,PCRB4(I,K),PCRB5(I,K),.FALSE.,PIP_FLAG)
ENDIF
ENDIF
Run9-zooplankton feeding selectivity: Set UPxZ1 = 1, UPxZ2 = 1, and UPxZ3 = 1 for all PHYT groups (zooplankton feeding selectivity). All other parameters at their default values.
UP1/2/3Z*: Utilization of PHYT1/2/3 by cladocerans/copepods/microzooplankton
control run | SR01 |
---|---|
UP1Z1=0 | UP1Z1=1 |
UP2Z1=1 | UP2Z1=1 |
UP3Z1=1 | UP3Z1=1 |
UP1Z2=0 | UP1Z2=1 |
UP2Z2=1 | UP2Z2=1 |
UP3Z2=1 | UP3Z2=1 |
UP1Z3=0 | UP1Z3=1 |
UP2Z3=1 | UP2Z3=1 |
UP3Z3=1 | UP3Z3=1 |
UP*Z1/2/3 were defined in mod_CONSTANTS.F
mod_CONSTANTS.F: UP1Z(z) = CONST(j+17) !
mod_CONSTANTS.F: UP2Z(z) = CONST(j+18) !
mod_CONSTANTS.F: UP3Z(z) = CONST(j+19) !
mod_CONSTANTS.F: UP4Z(z) = CONST(j+20) !
mod_CONSTANTS.F: UP5Z(z) = CONST(j+21) !
# z=1,3
# IF(z.EQ.1) j=300
# IF(z.EQ.2) j=340
# IF(z.EQ.3) j=380
# The sequence aligns with the position of UP*Z* in pc.inp.
UP*Z were used in eutro_zooplankton.F
!---Grazing of phytoplankton & detritus:
GZP1(z) = UP1Z(z)*MAX(0.,PHYT1(I,K,1)-CP1Z(z)) !Blue-greens...
GZP2(z) = UP2Z(z)*MAX(0.,PHYT2(I,K,1)-CP2Z(z)) !Diatoms...
GZP3(z) = UP3Z(z)*MAX(0.,PHYT3(I,K,1)-CP3Z(z)) !Assemblage...