Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add a salinity limitation function for nitrification and denitrification #34

Open
aed-modeller opened this issue Feb 2, 2022 · 0 comments

Comments

@aed-modeller
Copy link

nitrification = amm * NitrfO2Function(data%use_oxy,data%Rnitrif,data%Knitrif,data%theta_nitrif,oxy,temp)

To condiser the inhibitation of hypersalinity on the nitrification/denitrification processes;
Reference: Coorong T&I 1.2 report (Mosley et al., 2020); Enrich-Pratt, 2009; Isaji et al, 2019 ..

A proposed function is like below (same method for both nitrif/denit processes but different coefficients):
IF( data%simNitrfSal ) nitrification = nitrification * NitrfSalFunction(salModel, K_sal, S0, sal)
IF( data%simNitrfSal ) denitrification = denitrification * NitrfSalFunction(salModel, K_sal, S0, sal)

where salModel is switch of model selection, Sal is salinity, S0 is the threshold of Salinity starting to affect nit/denif, and Ksal is the half-saturation coefficient.

The function is as below:

FUNCTION NitrfSalFunction(salModel,K_sal,S0,salinity) RESULT(fSal)
!-------------------------------------------------------------------------------
! Salinity dependency of nitrification/denitrification
! based on review of hypersalinity on N cycling, major refs: Mosley et al. 2020;
! Isaji et al. 2019; Enrich-Pratt et al. 2009
!-------------------------------------------------------------------------------
!ARGUMENTS
INTEGER,INTENT(in) :: salModel ! 0: no effect; 1: Michaelis Menten function, default = 0
AED_REAL,INTENT(in) :: K_sal ! half-saturation coefficient, default = 20
AED_REAL,INTENT(in) :: S0 ! salinity threshold, default = 40
AED_REAL,INTENT(in) :: salinity ! salinity
!
!LOCALS
AED_REAL :: fSal ! Returns the salinity function
!
!-------------------------------------------------------------------------------
!BEGIN
fSal = 1.0 !## initialized to be 1

IF (salModel == 0) THEN ! no effect
fSal = 1.0
ELSEIF (salModel == 1) THEN
!# f(S) = 1 at S<=S0, f(S) = K_sal/(K_sal+S-S0) at S>S0
IF (salinity>S0) THEN
fSal = K_sal / (K_sal + salinity - S0)
ELSE
fSal = 1.0
ENDIF
ELSE
PRINT *,'STOP: Unsupported salModel flag for nitrogen module'
ENDIF

IF( fSal < zero_ ) fSal = zero_

END FUNCTION NitrfSalFunction

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant