|
Plugins
|
Finite Volume Element Discretization for Density Driven Flow. More...
#include <density_driven_flow_base.h>
Inheritance diagram for ug::d3f::DensityDrivenFlowBase< TDomain >:Public Member Functions | |
| SmartPtr< CplUserData< number, dim > > | brine () |
| returns the export of brine mass fracture | |
| SmartPtr< CplUserData< MathVector< dim >, dim > > | brine_grad () |
| returns the export of brine mass fracture | |
| SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > | brine_tensor () |
| returns the export of brine tensor | |
| SmartPtr< CplUserData< MathVector< dim >, dim > > | darcy_velocity () |
| returns the export of the darcy velocity | |
| DensityDrivenFlowBase (const char *functions, const char *subsets) | |
| Constructor. | |
| DensityDrivenFlowBase (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset) | |
| SmartPtr< CplUserData< number, dim > > | pressure () |
| returns the export of pressure | |
| SmartPtr< CplUserData< MathVector< dim >, dim > > | pressure_grad () |
| returns the export of brine mass fracture | |
| SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > | pressure_tensor () |
| returns the export of brine tensor | |
| void | set_boussinesq_flow (bool bUse) |
| sets usage of boussinesq approximation for flow equation | |
| void | set_boussinesq_transport (bool bUse) |
| sets usage of boussinesq approximation for transport equation | |
| virtual void | set_dispersion (SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > data)=0 |
| set dispersion | |
| virtual void | set_porosity (SmartPtr< CplUserData< number, dim > > user)=0 |
| sets the porosity | |
| void | set_porosity (number val) |
| sets the porosity | |
| virtual void | set_gravity (SmartPtr< CplUserData< MathVector< dim >, dim > > user)=0 |
| sets the gravity vector | |
| void | set_gravity (const std::vector< number > &vVel) |
| sets the gravity vector | |
| virtual void | set_molecular_diffusion (SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user)=0 |
| sets the molecular diffusion tensor | |
| void | set_molecular_diffusion (number val) |
| sets the molecular diffusion tensor | |
| virtual void | set_permeability (SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user)=0 |
| sets the permeability tensor | |
| void | set_permeability (number val) |
| sets the permeability tensor | |
| virtual void | set_viscosity (SmartPtr< CplUserData< number, dim > > user)=0 |
| sets the viscosity tensor | |
| void | set_viscosity (number val) |
| sets the viscosity tensor | |
| virtual void | set_density (SmartPtr< CplUserData< number, dim > > data)=0 |
| sets the density | |
| void | set_density (number val) |
| sets the density | |
Public Member Functions inherited from ug::IElemDisc< TDomain > | |
| void | add_elem_modifier (SmartPtr< IElemDiscModifier< TDomain > > elemModifier) |
| std::vector< SmartPtr< IElemDiscModifier< TDomain > > > & | get_elem_modifier () |
| IElemDisc (const char *functions, const char *subsets) | |
| IElemDisc (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset) | |
Public Member Functions inherited from ug::IElemAssembleFuncs< IElemDisc< TDomain >, TDomain > | |
| virtual void | add_def_A_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| virtual void | add_def_A_expl_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| virtual void | add_def_M_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| virtual void | add_jac_A_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| virtual void | add_jac_M_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| virtual void | add_rhs_elem (LocalVector &rhs, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| TLeaf & | asLeaf () |
| void | check_roid (ReferenceObjectID roid, int discType) |
| void | do_add_def_A_elem (LocalVector &d, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| void | do_add_def_A_expl_elem (LocalVector &d, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| void | do_add_def_M_elem (LocalVector &d, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| void | do_add_jac_A_elem (LocalMatrix &J, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| void | do_add_jac_M_elem (LocalMatrix &J, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| void | do_add_rhs_elem (LocalVector &rhs, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| void | do_fsh_elem_loop () |
| void | do_fsh_timestep (const number time, VectorProxyBase *u, size_t algebra_id) |
| void | do_fsh_timestep_elem (const number time, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| void | do_prep_elem (LocalVector &u, GridObject *elem, const ReferenceObjectID roid, const MathVector< dim > vCornerCoords[]) |
| void | do_prep_elem_loop (const ReferenceObjectID roid, const int si) |
| void | do_prep_timestep (number future_time, const number time, VectorProxyBase *u, size_t algebra_id) |
| void | do_prep_timestep_elem (const number time, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| virtual void | fsh_elem_loop () |
| virtual void | fsh_timestep (number time, VectorProxyBase *u) |
| virtual void | fsh_timestep_elem (const number time, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| IElemAssembleFuncs () | |
| virtual void | post_assemble_loop () |
| virtual void | prep_assemble_loop () |
| virtual void | prep_elem (const LocalVector &u, GridObject *elem, const ReferenceObjectID roid, const MathVector< dim > vCornerCoords[]) |
| virtual void | prep_elem_loop (const ReferenceObjectID roid, const int si) |
| virtual void | prep_timestep (number future_time, number time, VectorProxyBase *u) |
| virtual void | prep_timestep_elem (const number time, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| void | set_roid (ReferenceObjectID id, int discType) |
| virtual | ~IElemAssembleFuncs () |
Public Member Functions inherited from ug::IElemError< typename TDomain > | |
| IElemError (const char *functions, const char *subsets) | |
| IElemError (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset) | |
Public Member Functions inherited from ug::IElemDiscBase< typename TDomain > | |
| SmartPtr< ApproximationSpace< TDomain > > | approx_space () |
| ConstSmartPtr< ApproximationSpace< TDomain > > | approx_space () const |
| void | check_setup (bool bNonRegularGrid) |
| void | clear_imports () |
| SmartPtr< TDomain > | domain () |
| ConstSmartPtr< TDomain > | domain () const |
| const FunctionGroup & | function_group () const |
| ConstSmartPtr< FunctionPattern > | function_pattern () const |
| IDataImport< dim > & | get_import (size_t i) |
| IElemDiscBase (const char *functions="", const char *subsets="") | |
| IElemDiscBase (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset) | |
| bool | is_time_dependent () const |
| bool | local_time_series_needed () |
| const LocalVectorTimeSeries * | local_time_solutions () const |
| const FunctionIndexMapping & | map () const |
| number | mass_scale () const |
| number | mass_scale () const |
| number | mass_scale (const size_t timePoint) const |
| number | mass_scale (const size_t timePoint) const |
| const std::vector< number > & | mass_scales () const |
| const std::vector< number > & | mass_scales () const |
| size_t | num_fct () const |
| size_t | num_imports () const |
| size_t | num_subsets () const |
| virtual void | prepare_setting (const std::vector< LFEID > &vLfeID, bool bNonRegularGrid)=0 |
| void | register_import (IDataImport< dim > &Imp) |
| void | set_approximation_space (SmartPtr< ApproximationSpace< TDomain > > approxSpace) |
| void | set_functions (const std::string &functions) |
| void | set_functions (const std::vector< std::string > &functions) |
| void | set_stationary () |
| void | set_stationary (bool bStationaryForced=true) |
| void | set_subsets (const std::string &subsets) |
| void | set_subsets (const std::vector< std::string > &subsets) |
| void | set_time_dependent (LocalVectorTimeSeries &locTimeSeries, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff) |
| void | set_time_independent () |
| void | set_time_point (const size_t timePoint) |
| number | stiff_scale () const |
| number | stiff_scale () const |
| number | stiff_scale (const size_t timePoint) const |
| number | stiff_scale (const size_t timePoint) const |
| const std::vector< number > & | stiff_scales () const |
| const std::vector< number > & | stiff_scales () const |
| TDomain::subset_handler_type & | subset_handler () |
| const TDomain::subset_handler_type & | subset_handler () const |
| const std::vector< std::string > & | symb_fcts () const |
| const std::vector< std::string > & | symb_subsets () const |
| number | time () const |
| size_t | time_point () const |
| virtual int | type () const |
| virtual bool | use_hanging () const |
| virtual | ~IElemDiscBase () |
Public Member Functions inherited from ug::IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain > | |
| TLeaf & | asLeaf () |
| void | check_roid (ReferenceObjectID roid, int discType) |
| virtual void | compute_err_est_A_elem (const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
| virtual void | compute_err_est_M_elem (const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
| virtual void | compute_err_est_rhs_elem (GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
| void | do_compute_err_est_A_elem (LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
| void | do_compute_err_est_M_elem (LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
| void | do_compute_err_est_rhs_elem (GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
| void | do_fsh_err_est_elem_loop () |
| void | do_prep_err_est_elem (LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| void | do_prep_err_est_elem_loop (const ReferenceObjectID roid, const int si) |
| virtual SmartPtr< IErrEstData< TDomain > > | err_est_data () |
| bool | err_est_enabled () const |
| virtual void | fsh_err_est_elem_loop () |
| IElemEstimatorFuncs () | |
| virtual void | prep_err_est_elem (const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| virtual void | prep_err_est_elem_loop (const ReferenceObjectID roid, const int si) |
| void | set_error_estimator (SmartPtr< IErrEstData< TDomain > > ee) |
| void | set_roid (ReferenceObjectID id, int discType) |
| virtual | ~IElemEstimatorFuncs () |
Static Public Attributes | |
| static const int | dim = base_type::dim |
| World dimension. | |
Static Public Attributes inherited from ug::IElemDisc< TDomain > | |
| static const int | dim |
Static Public Attributes inherited from ug::IElemAssembleFuncs< IElemDisc< TDomain >, TDomain > | |
| static const int | dim |
Static Public Attributes inherited from ug::IElemError< typename TDomain > | |
| static const int | dim |
Static Public Attributes inherited from ug::IElemDiscBase< typename TDomain > | |
| static const int | dim |
Static Public Attributes inherited from ug::IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain > | |
| static const int | dim |
Private Types | |
| typedef IElemDisc< TDomain > | base_type |
| Base class type. | |
| typedef DensityDrivenFlowBase< TDomain > | this_type |
| own type | |
Additional Inherited Members | |
Public Types inherited from ug::IElemDisc< TDomain > | |
| typedef IElemAssembleFuncs< IElemDisc< TDomain >, TDomain > | assemble_base_type |
| typedef IElemError< TDomain > | base_type |
| typedef TDomain | domain_type |
| typedef IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain > | estimator_base_type |
Public Types inherited from ug::IElemAssembleFuncs< IElemDisc< TDomain >, TDomain > | |
| typedef TDomain | domain_type |
| typedef TLeaf | leaf_type |
Public Types inherited from ug::IElemError< typename TDomain > | |
| typedef TDomain | domain_type |
| typedef IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain > | estimator_base_type |
Public Types inherited from ug::IElemDiscBase< typename TDomain > | |
| typedef TDomain | domain_type |
| typedef TDomain::position_type | position_type |
Public Types inherited from ug::IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain > | |
| typedef TDomain | domain_type |
| typedef TLeaf | leaf_type |
Finite Volume Element Discretization for Density Driven Flow.
This class implements the IElemDisc interface for the density driven flow equations. It is a system of two coupled equations of the form.
\begin{align*} \partial_t (\phi \rho) + \nabla(\rho \vec{q}) &= 0\\ \partial_t (\phi \rho c) - \nabla(\rho D \nabla c -\rho c \vec{q}) &= 0\\ \vec{q} &:= - \frac{K}{\mu}(\nabla p - \rho \vec{g}) \end{align*}
with
and given data
as well as the abbreviation
The first equation is usually referred to as the flow equation. The second equation is known as the transport equation.
|
private |
Base class type.
|
private |
own type
| ug::d3f::DensityDrivenFlowBase< TDomain >::DensityDrivenFlowBase | ( | const char * | functions, |
| const char * | subsets | ||
| ) |
Constructor.
References ug::d3f::DensityDrivenFlowBase< TDomain >::init().
| ug::d3f::DensityDrivenFlowBase< TDomain >::DensityDrivenFlowBase | ( | const std::vector< std::string > & | vFct, |
| const std::vector< std::string > & | vSubset | ||
| ) |
|
inline |
returns the export of brine mass fracture
References ug::d3f::DensityDrivenFlowBase< TDomain >::m_exBrine.
|
inline |
returns the export of brine mass fracture
References ug::d3f::DensityDrivenFlowBase< TDomain >::m_exBrineGrad.
|
inline |
returns the export of brine tensor
References ug::d3f::DensityDrivenFlowBase< TDomain >::m_exBrineTensor.
|
protected |
compute darcy velocity at one ip
|
inline |
returns the export of the darcy velocity
References ug::d3f::DensityDrivenFlowBase< TDomain >::m_exDarcyVel.
|
protected |
standard initialization
References make_sp(), and UG_THROW.
Referenced by ug::d3f::DensityDrivenFlowBase< TDomain >::DensityDrivenFlowBase(), and ug::d3f::DensityDrivenFlowBase< TDomain >::DensityDrivenFlowBase().
|
inline |
returns the export of pressure
References ug::d3f::DensityDrivenFlowBase< TDomain >::m_exPressure.
|
inline |
returns the export of brine mass fracture
References ug::d3f::DensityDrivenFlowBase< TDomain >::m_exPressureGrad.
|
inline |
returns the export of brine tensor
References ug::d3f::DensityDrivenFlowBase< TDomain >::m_exPressureTensor.
|
inlineprotectedvirtual |
returns if local time series is needed
Reimplemented from ug::IElemDiscBase< typename TDomain >.
Reimplemented in ug::d3f::DensityDrivenFlowFV1< TDomain >.
|
inline |
sets usage of boussinesq approximation for flow equation
References ug::d3f::DensityDrivenFlowBase< TDomain >::m_BoussinesqFlow.
|
inline |
sets usage of boussinesq approximation for transport equation
References ug::d3f::DensityDrivenFlowBase< TDomain >::m_BoussinesqTransport.
| void ug::d3f::DensityDrivenFlowBase< TDomain >::set_density | ( | number | val | ) |
|
pure virtual |
sets the density
This method sets the Density.
Implemented in ug::d3f::DensityDrivenFlowFV< TDomain >, and ug::d3f::DensityDrivenFlowFV1< TDomain >.
|
pure virtual |
set dispersion
Implemented in ug::d3f::DensityDrivenFlowFV< TDomain >, and ug::d3f::DensityDrivenFlowFV1< TDomain >.
| void ug::d3f::DensityDrivenFlowBase< TDomain >::set_gravity | ( | const std::vector< number > & | vVel | ) |
sets the gravity vector
This method sets the Gravity. (Unit is \( \frac{m}{s^2} \))
|
pure virtual |
sets the gravity vector
This method sets the Gravity. (Unit is \( \frac{m}{s^2} \))
Implemented in ug::d3f::DensityDrivenFlowFV< TDomain >, and ug::d3f::DensityDrivenFlowFV1< TDomain >.
| void ug::d3f::DensityDrivenFlowBase< TDomain >::set_molecular_diffusion | ( | number | val | ) |
sets the molecular diffusion tensor
This method sets the molecular Diffusion tensor.
References make_sp().
|
pure virtual |
sets the molecular diffusion tensor
This method sets the molecular Diffusion tensor.
Implemented in ug::d3f::DensityDrivenFlowFV< TDomain >, and ug::d3f::DensityDrivenFlowFV1< TDomain >.
| void ug::d3f::DensityDrivenFlowBase< TDomain >::set_permeability | ( | number | val | ) |
|
pure virtual |
sets the permeability tensor
This method sets the Permeability tensor.
Implemented in ug::d3f::DensityDrivenFlowFV< TDomain >, and ug::d3f::DensityDrivenFlowFV1< TDomain >.
| void ug::d3f::DensityDrivenFlowBase< TDomain >::set_porosity | ( | number | val | ) |
|
pure virtual |
sets the porosity
This method sets the Porosity. (Dimensionless)
Implemented in ug::d3f::DensityDrivenFlowFV< TDomain >, and ug::d3f::DensityDrivenFlowFV1< TDomain >.
| void ug::d3f::DensityDrivenFlowBase< TDomain >::set_viscosity | ( | number | val | ) |
|
pure virtual |
sets the viscosity tensor
This method sets the Viscosity.
Implemented in ug::d3f::DensityDrivenFlowFV< TDomain >, and ug::d3f::DensityDrivenFlowFV1< TDomain >.
|
static |
World dimension.
|
protected |
flag if using boussinesq flow
Referenced by ug::d3f::DensityDrivenFlowBase< TDomain >::set_boussinesq_flow().
|
protected |
flag if using boussinesq transport
Referenced by ug::d3f::DensityDrivenFlowBase< TDomain >::set_boussinesq_transport().
|
protected |
Export for the brine mass fraction.
Referenced by ug::d3f::DensityDrivenFlowBase< TDomain >::brine().
|
protected |
Export for the gradient of brine mass fraction.
Referenced by ug::d3f::DensityDrivenFlowBase< TDomain >::brine_grad().
|
protected |
Export for the brine related tensor.
Referenced by ug::d3f::DensityDrivenFlowBase< TDomain >::brine_tensor().
|
protected |
Export for the Darcy velocity.
Referenced by ug::d3f::DensityDrivenFlowBase< TDomain >::darcy_velocity().
|
protected |
Export for the brine mass fraction.
Referenced by ug::d3f::DensityDrivenFlowBase< TDomain >::pressure().
|
protected |
Export for the gradient of brine mass fraction.
Referenced by ug::d3f::DensityDrivenFlowBase< TDomain >::pressure_grad().
|
protected |
Export for the pressure related tensor.
Referenced by ug::d3f::DensityDrivenFlowBase< TDomain >::pressure_tensor().
|
protected |
constant Gravity, read in once