AquaticEcoDynamics / libaed-water

Code for the AED water quality model
GNU General Public License v3.0
6 stars 6 forks source link

add a new function of P-adsorption capability to salinity and temperature #35

Open aed-modeller opened 2 years ago

aed-modeller commented 2 years ago

https://github.com/AquaticEcoDynamics/libaed-water/blob/bd1babc7fe6ec22db27382e712f0101efbd3f270/src/aed_phosphorus.F90#L281

Condiser a new function for the sensitivity of P-adsorption capability to the water temperature and salinity; Ref: Zhang and Huang 2011, in Floriday bay, suggesting increasing P-adsorption capability with increasing temperature and decreasing salinity

data%Kpo4p = data%Kpo4p * Kpo4p_Function(Topt, theta_Kpo4, K_sal, sal, temp)

FUNCTION Kpo4p_Function(Topt, theta_Kpo4, K_sal, sal, temp) !------------------------------------------------------------------------------- ! Michaelis-Menten formulation for P-adsorption sensitivity to Sal & T ! Ref: Zhang and Huang 2011, in Floriday bay, suggesting increasing P-adsorption ! capability with increasing temperature and decreasing salinity !------------------------------------------------------------------------------- !ARGUMENTS AED_REAL,INTENT(in) :: Topt ! optimum temperature for P-adsorp, default = 45 as the ref showed increasing P-adsorp with temperature AED_REAL,INTENT(in) :: theta_Kpo4 ! theta for P-adsorp on limitation, default = 1.02 AED_REAL,INTENT(in) :: K_sal ! half-saturation of salinity, default = 60 AED_REAL,INTENT(in) :: temp AED_REAL,INTENT(in) :: sal AED_REAL :: f_ads ! Returns the salinity function AED_REAL :: fT, fSal ! !------------------------------------------------------------------------------- !BEGIN

fT = (theta_Kpo4**(temp-Topt))

IF(Ksal==zero)THEN fSal = one_ ELSE fSal = K_sal/(K_sal+sal) ENDIF

f_ads = fT * fSal

END FUNCTION Kpo4p_Function

P_adsorp