8 #ifndef _HYDRO_FUNCTIONS_HH 9 #define _HYDRO_FUNCTIONS_HH 16 namespace internal {
class VanGenuchten; }
64 virtual double conductivity(
const double &phead)
const =0;
65 virtual auto conductivity_diff(
const DiffDouble &p_head)->DiffDouble
const =0;
67 virtual double water_content(
const double &phead)
const =0;
68 virtual auto water_content_diff(
const DiffDouble &p_head)->DiffDouble
const =0;
74 template <
class Model>
89 double conductivity(
const double &p_head)
const override;
90 auto conductivity_diff(
const DiffDouble &p_head)->DiffDouble
const override;
92 double water_content(
const double &p_head)
const override;
93 auto water_content_diff(
const DiffDouble &p_head)->DiffDouble
const override;
114 T conductivity_(
const T &h)
const;
117 T water_content_(
const T &h)
const;
121 template <
class T> T Q_rel(
const T &h)
const;
122 template <
class T> T Q_rel_inv(
const T &q)
const;
149 T conductivity_(
const T &h)
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 {
fadbad::B< double > DiffDouble
SoilModelImplBase< internal::Irmay > SoilModel_Irmay
SoilModelBase::DiffDouble DiffDouble
SoilModelImplBase< internal::VanGenuchten > SoilModel_VanGenuchten