Skip to content

add a salinity limitation function for nitrification and denitrification #34

@aed-modeller

Description

@aed-modeller

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions