8 #ifndef _HYDRO_FUNCTIONS_HH 9 #define _HYDRO_FUNCTIONS_HH 15 namespace internal {
class VanGenuchten; }
63 virtual double conductivity(
const double &phead)
const =0;
64 virtual auto conductivity_diff(
const DiffDouble &p_head)->DiffDouble
const =0;
66 virtual double water_content(
const double &phead)
const =0;
67 virtual auto water_content_diff(
const DiffDouble &p_head)->DiffDouble
const =0;
73 template <
class Model>
88 double conductivity(
const double &p_head)
const override;
89 auto conductivity_diff(
const DiffDouble &p_head)->DiffDouble
const override;
91 double water_content(
const double &p_head)
const override;
92 auto water_content_diff(
const DiffDouble &p_head)->DiffDouble
const override;
113 T conductivity_(
const T &h)
const;
116 T water_content_(
const T &h)
const;
120 template <
class T> T Q_rel(
const T &h)
const;
121 template <
class T> T Q_rel_inv(
const T &q)
const;
148 T conductivity_(
const T &h)
const;
380 inline double cap_arg_max() const { return -0.765378926665788882857; }
383 T FK(const T &h) const
385 if (h>=0.0) return ( 2.0 );
386 return ( 2.0 / (1+h*h) );
390 T FQ(const T &h) const
392 static T pi_half =std::atan(1.0)*2;
393 if (h>=0.0) return ( 2.0*pi_half*pi_half );
395 return ( 2*pi_half*pi_half - a_tan*a_tan );
402 class HydroModel_linear
404 HydroModel_linear(ParameterHandler &prm) {};
408 T FK(const T &h) const {
413 T FQ(const T &h) const {
fadbad::B< double > DiffDouble
SoilModelImplBase< internal::Irmay > SoilModel_Irmay
SoilModelBase::DiffDouble DiffDouble
SoilModelImplBase< internal::VanGenuchten > SoilModel_VanGenuchten