SNOWPACK 20251115.95629361
Physically based, energy balance snow cover model
Loading...
Searching...
No Matches
vanGenuchten Class Reference

Detailed Description

This module contains the van Genuchten model for the water retention curve.

Version
1.0
Author
Nander Wever

#include <vanGenuchten.h>

Public Types

enum  SoilTypes {
  ORGANIC , CLAY , CLAYLOAM , LOAM ,
  LOAMYSAND , SAND , SANDYCLAY , SANDYCLAYLOAM ,
  SANDYLOAM , SILT , SILTYCLAY , SILTYCLAYLOAM ,
  SILTLOAM , WFJGRAVELSAND
}
 
enum  VanGenuchten_ModelTypesSnow { YAMAGUCHI2012 , YAMAGUCHI2010 , YAMAGUCHI2010_ADAPTED , DAANEN }
 
enum  K_Parameterizations { CALONNE , KOZENYCARMAN , SHIMIZU }
 

Public Member Functions

 vanGenuchten (ElementData &pEMS)
 Class constructor
.
 
 vanGenuchten (const vanGenuchten &c)
 Copy constructor
.
 
virtual ~vanGenuchten ()
 
vanGenuchtenoperator= (const vanGenuchten &)
 Assignement operator.
 
double fromTHETAtoH (const double theta, const double h_d)
 Calculating pressure head from water content
The following function calculates the pressure head belonging to a given water content
.
 
double fromTHETAtoHforICE (const double theta, const double h_d, const double theta_i)
 Calculating pressure head from water content when ice is present
The following function calculates the pressure head belonging to a given water content when ice is present
.
 
double fromHtoTHETA (const double h)
 Calculating volumetric water content from pressure head
The following function calculates the volumetric water content belonging to a given pressure head
.
 
double fromHtoTHETAforICE (const double h, const double theta_i)
 Calculating volumetric water content from pressure head when ice is present
The following function calculates the volumetric water content belonging to a given pressure head when ice is present
.
 
double dtheta_dh (const double h)
 Specific moisture capacity
This function should return exact value of the derivative d.theta / d.h, otherwise RE-solver is unstable. When modifying the water retention curve, for example in the dry limit, the specific moisture capacity function needs to be modified too, to remain an exact derivative.
.
 
void SetVGParamsSnow (VanGenuchten_ModelTypesSnow VGModelTypeSnow, K_Parameterizations K_PARAM, const bool &matrix, const bool &seaice)
 Initialize van Genuchten model for snow layers
.
 
void SetVGParamsSoil ()
 Initialize van Genuchten model for soil layers, based on index approach via grain size
.
 
bool enforceThermalEquilibrium (const bool fixTemp=true)
 Enforce thermal equilibrium in the soil layers
.
 

Static Public Member Functions

static double AirEntryPressureHead (double MaximumPoreSize, double Temperature)
 Calculate air entry pressure head
Air entry pressure head in [m] that corresponds to a maximum pore size (using Young-Laplace Equation).
This is a required value for specifying water retention curves, see Ippisch et al. (2006).
.
 

Public Attributes

ElementDataEMS
 
double theta_r
 
double theta_s
 
double alpha
 
double n
 
double m
 
double h_e
 
double Sc
 
double ksat
 
double field_capacity
 
bool defined
 

Friends

std::iostream & operator<< (std::iostream &os, const vanGenuchten &data)
 
std::iostream & operator>> (std::iostream &is, vanGenuchten &data)
 

Member Enumeration Documentation

◆ K_Parameterizations

Enumerator
CALONNE 
KOZENYCARMAN 
SHIMIZU 

◆ SoilTypes

Enumerator
ORGANIC 
CLAY 
CLAYLOAM 
LOAM 
LOAMYSAND 
SAND 
SANDYCLAY 
SANDYCLAYLOAM 
SANDYLOAM 
SILT 
SILTYCLAY 
SILTYCLAYLOAM 
SILTLOAM 
WFJGRAVELSAND 

◆ VanGenuchten_ModelTypesSnow

Enumerator
YAMAGUCHI2012 
YAMAGUCHI2010 
YAMAGUCHI2010_ADAPTED 
DAANEN 

Constructor & Destructor Documentation

◆ vanGenuchten() [1/2]

vanGenuchten::vanGenuchten ( ElementData pEMS)

Class constructor
.

Author
Nander Wever
Parameters
pEMSpointer to the ElementData class which owns the van Genuchten class, so the van Genuchten class can access objects from the ElementData class.

◆ vanGenuchten() [2/2]

vanGenuchten::vanGenuchten ( const vanGenuchten c)

Copy constructor
.

Author
Nander Wever
Parameters
cClass to copy

◆ ~vanGenuchten()

virtual vanGenuchten::~vanGenuchten ( )
inlinevirtual

Member Function Documentation

◆ AirEntryPressureHead()

double vanGenuchten::AirEntryPressureHead ( double  MaximumPoreSize,
double  Temperature 
)
static

Calculate air entry pressure head
Air entry pressure head in [m] that corresponds to a maximum pore size (using Young-Laplace Equation).
This is a required value for specifying water retention curves, see Ippisch et al. (2006).
.

Author
Nander Wever
Parameters
MaximumPoreSizeMaximum pore size (diameter, not radius!) [m]
TemperatureTemperature for determining surface tension [K]

◆ dtheta_dh()

double vanGenuchten::dtheta_dh ( const double  h)

Specific moisture capacity
This function should return exact value of the derivative d.theta / d.h, otherwise RE-solver is unstable. When modifying the water retention curve, for example in the dry limit, the specific moisture capacity function needs to be modified too, to remain an exact derivative.
.

Author
Nander Wever
Parameters
hPressure head (m)

◆ enforceThermalEquilibrium()

bool vanGenuchten::enforceThermalEquilibrium ( const bool  fixTemp = true)

Enforce thermal equilibrium in the soil layers
.

Parameters
fixTempIf true, keep element temperature fixed and repartition theta[ICE] and theta[WATER]. If false, keep theta[ICE] and theta[WATER] fixed, and calculate element temperature. The latter approach is prone to singularities. For example, a soil layer with a temperature below Constants::meltfreeze_tk, but with only water and no ice, cannot be properly initialized (i.e., there is no solution that satisfies thermal equilibrium).
Returns
True: element state was modified by this function, false: element state was not modified by this function
Author
Nander Wever

◆ fromHtoTHETA()

double vanGenuchten::fromHtoTHETA ( const double  h)

Calculating volumetric water content from pressure head
The following function calculates the volumetric water content belonging to a given pressure head
.

Author
Nander Wever
Parameters
hPressure head (m)

◆ fromHtoTHETAforICE()

double vanGenuchten::fromHtoTHETAforICE ( const double  h,
const double  theta_i 
)

Calculating volumetric water content from pressure head when ice is present
The following function calculates the volumetric water content belonging to a given pressure head when ice is present
.

Author
Nander Wever
Parameters
hPressure head (m)
theta_iIce content (m^3/m^3)

◆ fromTHETAtoH()

double vanGenuchten::fromTHETAtoH ( const double  theta,
const double  h_d 
)

Calculating pressure head from water content
The following function calculates the pressure head belonging to a given water content
.

Author
Nander Wever
Parameters
thetaWater content (m^3/m^3)
h_dDry limit of pressure head

◆ fromTHETAtoHforICE()

double vanGenuchten::fromTHETAtoHforICE ( const double  theta,
const double  h_d,
const double  theta_i 
)

Calculating pressure head from water content when ice is present
The following function calculates the pressure head belonging to a given water content when ice is present
.

Author
Nander Wever
Parameters
thetaWater content (m^3/m^3)
h_dDry limit of pressure head
theta_iIce content (m^3/m^3)

◆ operator=()

vanGenuchten & vanGenuchten::operator= ( const vanGenuchten source)

Assignement operator.

Assignment operator
.

Author
Nander Wever
Parameters
sourceClass to assign

◆ SetVGParamsSnow()

void vanGenuchten::SetVGParamsSnow ( VanGenuchten_ModelTypesSnow  VGModelTypeSnow,
K_Parameterizations  K_PARAM,
const bool &  matrix,
const bool &  seaice 
)

Initialize van Genuchten model for snow layers
.

Author
Nander Wever
Parameters
VGModelTypeSnowvan Genuchten model parameterization to use
K_PARAMhydraulic conductivity parameterization to use
matrixtrue: set parameters for matrix domain. false: set parameters for preferential flow domain
seaiceif true: use some tweaks for sea ice.

◆ SetVGParamsSoil()

void vanGenuchten::SetVGParamsSoil ( )

Initialize van Genuchten model for soil layers, based on index approach via grain size
.

Author
Nander Wever

Friends And Related Symbol Documentation

◆ operator<<

std::iostream & operator<< ( std::iostream &  os,
const vanGenuchten data 
)
friend

◆ operator>>

std::iostream & operator>> ( std::iostream &  is,
vanGenuchten data 
)
friend

Member Data Documentation

◆ alpha

double vanGenuchten::alpha

◆ defined

bool vanGenuchten::defined

◆ EMS

ElementData* vanGenuchten::EMS

◆ field_capacity

double vanGenuchten::field_capacity

◆ h_e

double vanGenuchten::h_e

◆ ksat

double vanGenuchten::ksat

◆ m

double vanGenuchten::m

◆ n

double vanGenuchten::n

◆ Sc

double vanGenuchten::Sc

◆ theta_r

double vanGenuchten::theta_r

◆ theta_s

double vanGenuchten::theta_s

The documentation for this class was generated from the following files: