2.0.0b10
catchment modelling framework
Loading...
Searching...
No Matches
aquifer Class Reference

A class to represent large groundwater storages, not bounded to the usual horizontal discretization scheme, the Cell. More...

+ Inheritance diagram for aquifer:
+ Collaboration diagram for aquifer:

Detailed Description

A class to represent large groundwater storages, not bounded to the usual horizontal discretization scheme, the Cell.

Naturally aquifers are connected with aquifer_Darcy or kinematic_wave connections. As a boundary condition for a cell based soil water system, aquifers are used as a right hand side node of percolation connections.

Basic head ( \(\Psi\)) / volume ( \(V\)) relation:

\[ \Psi = z_{base} + \frac {V}{A \Phi} \]

  • \(\Psi\) water head in m
  • \(z_{base}\) base height of the aquifer
  • \(V\) volume of stored water in m3
  • \(A\) Base area of the aquifer in m2
  • \(\Phi\) Porosity, or more general, \(\frac {dV_{bulk}}{dV_{H_2O}}\)

Public Member Functions

 aquifer (cmf::project &p, cmf::geometry::point position, real area, real thickness, real porosity, real K=1e-4)
 Creates an aquifer at a certain position.
 
 aquifer (cmf::upslope::cell_vector &cells, real thickness, real porosity, real K=1e-4)
 Creates an aquifer below a collection of cells.
 
real conc (cmf::math::Time t, const cmf::water::solute &_Solute) const override
 Returns the current WaterQuality (concentration of all solutes)
 
real conc (const cmf::water::solute &_Solute) const
 Returns the concentration of the given solute.
 
void conc (const cmf::water::solute &_Solute, real NewConcetration)
 Sets a new concentration.
 
cmf::water::flux_connectionconnection_to (const cmf::water::flux_node &target)
 Returns the connection between this and target.
 
virtual real dxdt (const cmf::math::Time &time)
 Returns the derivate of the state variable at time time.
 
real flux_to (const cmf::water::flux_node &target, cmf::math::Time t)
 Returns the actual flux between this and target (positive sign means "from this into target")
 
cmf::geometry::point get_3d_flux (cmf::math::Time t)
 Returns the sum of all flux vectors.
 
real get_base_height () const
 Returns the base height of the aquifer in m a.s.l.
 
virtual real get_K (cmf::geometry::point direction) const
 Returns the conductivity in m/day for a specific direction.
 
real get_potential (cmf::math::Time t=cmf::math::never) const override
 Returns the water potential of the node in m waterhead.
 
cmf::projectget_project () const
 Returns the project, this node is part of.
 
real get_state () const
 Returns the current state of the variable.
 
char get_state_variable_content () const
 A character indicating the integrated variable (either 'V' for Volume or 'h' for head)
 
real get_top_height () const
 Returns the top height of the aquifer in m a.s.l.
 
virtual real get_volume () const
 Returns the volume of water in this storage in m3
 
virtual bool is_connected (const cmf::math::StateVariable &other) const
 Returns True if this waterstorage is effected by another state.
 
bool is_storage () const override
 Returns true, since this is a storage.
 
real operator() (cmf::math::Time t) const
 returns the waterblance
 
bool remove_connection (cmf::water::flux_node::ptr To)
 Remove the connection.
 
virtual void set_potential (real new_potential)
 Sets the potential of this flux node.
 
void set_state (real newState)
 Gives access to the state variable.
 
void set_state_variable_content (char content)
 A character indicating the integrated variable (either 'V' for Volume or 'h' for head)
 
virtual void set_volume (real newwatercontent)
 Sets the volume of water in this storage in m3
 
SoluteStorage & Solute (const cmf::water::solute _Solute)
 Returns the water quality of the water storage.
 
real waterbalance (cmf::math::Time t, const flux_connection *Without=0) const
 Returns the sum of all fluxes (positive and negative) at time t.
 

Static Public Member Functions

static aquifer::ptr cast (cmf::water::flux_node::ptr for_cast)
 Casts a flux_node to an aquifer, if the flux_node is an aquifer.
 

Public Attributes

real area
 The horizontal area of the aquifer.
 
cmf::geometry::point K
 The conductivity in m/day for the three spatial dimensions.
 
std::string Name
 The Name of this node.
 
const int node_id
 The Id of the node.
 
real porosity
 The porosity of the aquifer in m3/m3.
 
cmf::geometry::point position
 The spatial position of the node.
 
real thickness
 The thickness of the aquifer in m.
 

Protected Member Functions

void MarkStateChangeHandled ()
 Sets the updated flag (m_StateIsNew) to false.
 
bool StateIsChanged ()
 Returns if the state was currently updated.
 

Overrides of flux_node

virtual bool RecalcFluxes (cmf::math::Time t)
 Pure flux_nodes do not influence fluxes, therefore no recalculation of fluxes is required by flux_node.
 
virtual double is_empty () const
 Returns true if the node has no water.
 

Constructor & Destructor Documentation

◆ aquifer() [1/2]

aquifer ( cmf::project & p,
cmf::geometry::point position,
real area,
real thickness,
real porosity,
real K = 1e-4 )

Creates an aquifer at a certain position.

Parameters
pProject, this aquifer belongs to
positionPosition of the aquifer center (x and y) and the aquifer top (z)
areaArea of the aquifer
thicknessMean thickness of the aquifer in m
porosityMean porositiy of the aquifer
KConductivity of the aquifer in m/day. If the conductivity should be anisotropic, change the x,y and z values of the member K

◆ aquifer() [2/2]

aquifer ( cmf::upslope::cell_vector & cells,
real thickness,
real porosity,
real K = 1e-4 )

Creates an aquifer below a collection of cells.

Parameters
cellsThe cells above the aquifer. The area of the aquifer equals the area of the cells, and the upper boundary equals the soildepth of the lowest cell
thicknessThe thickness of the aquifer in m
porosityPorosity of the aquifer
KConductivity of the aquifer in m/day. If the conductivity should be anisotropic, change the x,y and z values of the member K

Member Function Documentation

◆ get_K()

virtual real get_K ( cmf::geometry::point direction) const
virtual

Returns the conductivity in m/day for a specific direction.

Takes account for anisotropy

\[ \|K\|(d) = \frac{d}{\|d\|} \bullet K\]

Implements conductable.

◆ get_potential()

real get_potential ( cmf::math::Time = cmf::math::never) const
overridevirtualinherited

Returns the water potential of the node in m waterhead.

The base class water storage always returns the height of the location

Reimplemented from flux_node.

◆ RecalcFluxes()

virtual bool RecalcFluxes ( cmf::math::Time t)
virtualinherited

Pure flux_nodes do not influence fluxes, therefore no recalculation of fluxes is required by flux_node.

WaterStorage overrides this, since state changes require an update of the fluxes

Reimplemented from flux_node.

◆ waterbalance()

real waterbalance ( cmf::math::Time t,
const flux_connection * Without = 0 ) const
inherited

Returns the sum of all fluxes (positive and negative) at time t.


Single fluxes can be excluded from the calculation

Parameters
tTime of the query
WithoutA flux_connection that is excluded from the waterbalance (e.g. to prevent closed circuits)