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
https://github.com/AquaticEcoDynamics/libaed-water/blob/bd1babc7fe6ec22db27382e712f0101efbd3f270/src/aed_nitrogen.F90#L447
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