8 #ifndef _HYDRO_FUNCTIONS_HH
9 #define _HYDRO_FUNCTIONS_HH
16 namespace internal {
class VanGenuchten; }
74 template <
class Model>
89 double conductivity(
const double &p_head)
const override;
121 template <
class T> T
Q_rel(
const T &h)
const;
122 template <
class T> T
Q_rel_inv(
const T &q)
const;
381 inline double cap_arg_max() const { return -0.765378926665788882857; }
384 T FK(const T &h) const
386 if (h>=0.0) return ( 2.0 );
387 return ( 2.0 / (1+h*h) );
391 T FQ(const T &h) const
393 static T pi_half =std::atan(1.0)*2;
394 if (h>=0.0) return ( 2.0*pi_half*pi_half );
396 return ( 2*pi_half*pi_half - a_tan*a_tan );
403 class HydroModel_linear
405 HydroModel_linear(ParameterHandler &prm) {};
409 T FK(const T &h) const {
414 T FQ(const T &h) const {
virtual auto water_content_diff(const DiffDouble &p_head) -> DiffDouble const =0
virtual auto conductivity_diff(const DiffDouble &p_head) -> DiffDouble const =0
virtual double water_content(const double &phead) const =0
fadbad::B< double > DiffDouble
virtual void reset(SoilData soil)=0
virtual double conductivity(const double &phead) const =0
auto water_content_diff(const DiffDouble &p_head) -> DiffDouble const override
auto conductivity_diff(const DiffDouble &p_head) -> DiffDouble const override
double conductivity(const double &p_head) const override
double water_content(const double &p_head) const override
void reset(SoilData data) override
SoilModelBase::DiffDouble DiffDouble
SoilModelImplBase(double cut_fraction=0.999)
T conductivity_(const T &h) const
T water_content_(const T &h) const
void reset_(SoilData soil)
T Q_rel_inv(const T &q) const
T Q_rel(const T &h) const
T conductivity_(const T &h) const
k(h)=t(h)**(0.5)* (1- ((h)**n/(1+(h)**n)) **m)**2
SoilModelImplBase< internal::VanGenuchten > SoilModel_VanGenuchten
SoilModelImplBase< internal::Irmay > SoilModel_Irmay