Plugins
Loading...
Searching...
No Matches
ug::d3f::FractDDF_FV1< TDomain > Class Template Reference

FV-discretization of the density-driven flow in porous media with fractures. More...

#include <fract_ddf_fv1.h>

+ Inheritance diagram for ug::d3f::FractDDF_FV1< TDomain >:

Classes

struct  RegisterLocalDiscr
 

Public Member Functions

SmartPtr< CplUserData< number, dim > > brine ()
 returns the export parameter of the brine mass fraction
 
SmartPtr< CplUserData< MathVector< dim >, dim > > DarcyVel ()
 returns the export parameter of the Darcy velocity in fracture
 
 FractDDF_FV1 (const char *functions, const char *subsets)
 class constructor
 
 FractDDF_FV1 (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset)
 
void init ()
 
SmartPtr< CplUserData< number, dim > > OrthoDarcyVel ()
 returns the export parameter of the orthogonal Darcy velocity in fracture
 
SmartPtr< CplUserData< number, dim > > pressure ()
 returns the export parameter of the pressure
 
void set_aperture (number val)
 
void set_aperture (SmartPtr< CplUserData< number, dim > > user)
 set Specific parameters for low-dimensional subdomains (fractures):
 
void set_boussinesq (bool bUse)
 whether to use boussinesq approximation in both the equations
 
void set_boussinesq_flow (bool bUse)
 whether to use boussinesq approximation for flow equation
 
void set_boussinesq_transport (bool bUse)
 whether to use boussinesq approximation for transport equation
 
void set_density (number val)
 
void set_density (SmartPtr< CplUserData< number, dim > > data)
 set the Global parameters (for all subdomains):
 
void set_fract_manager (SmartPtr< fract_manager_type > fract_manager)
 sets the fracture manager
 
void set_fract_molecular_diffusion (number val)
 
void set_fract_molecular_diffusion (SmartPtr< CplUserData< number, dim > > user)
 
void set_fract_permeability (number val)
 
void set_fract_permeability (SmartPtr< CplUserData< number, dim > > user)
 
void set_gravity (const std::vector< number > &vGravity)
 
void set_gravity (SmartPtr< CplUserData< MathVector< dim >, dim > > user)
 
void set_molecular_diffusion (number val)
 
void set_molecular_diffusion (SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user)
 
void set_orthofract_molecular_diffusion (number val)
 
void set_orthofract_molecular_diffusion (SmartPtr< CplUserData< number, dim > > user)
 
void set_orthofract_permeability (number val)
 
void set_orthofract_permeability (SmartPtr< CplUserData< number, dim > > user)
 
void set_permeability (number val)
 
void set_permeability (SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user)
 set Specific parameters for full-dimensional subdomains (bulk medium):
 
void set_porosity (number val)
 
void set_porosity (SmartPtr< CplUserData< number, dim > > user)
 set Specific parameters of subdomains:
 
void set_sss_manager (SmartPtr< DDSingularSourcesAndSinks< dim > > sss_mngr)
 set singular sources and sinks
 
void set_upwind (SmartPtr< IConvectionShapes< dim > > upwind)
 sets the upwind for the transport equation
 
void set_viscosity (number val)
 
void set_viscosity (SmartPtr< CplUserData< number, dim > > user)
 
void set_volume_stabilization (SmartPtr< FlowVolStabData< TDomain > > volStabData)
 set volume stabilization
 
SmartPtr< DDSingularSourcesAndSinks< dim > > sss_manager ()
 get singular sources and sinks
 
- 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_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 FunctionGroupfunction_group () const
 
ConstSmartPtr< FunctionPatternfunction_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 LocalVectorTimeSerieslocal_time_solutions () const
 
const FunctionIndexMappingmap () 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
 
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 ()
 

Protected Member Functions

template<typename TElem >
void ass_dA_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const position_type vCornerCoords[])
 computes the stiffness part of the local defect
 
template<typename TElem >
void ass_dM_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const position_type vCornerCoords[])
 computes the mass part of the defect of a time-dependent problem
 
template<typename TElem >
void ass_JA_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const position_type vCornerCoords[])
 computes the local stiffness matrix
 
template<typename TElem >
void ass_JM_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const position_type vCornerCoords[])
 computes the mass matrix of a time-dependent problem
 
template<typename TElem >
void ass_rhs_elem (LocalVector &d, GridObject *elem, const position_type vCornerCoords[])
 computes the right-hand side due to the sources
 
template<typename TElem >
void ass_sss_dA_elem (LocalVector &d, const LocalVector &u, TElem *pElem, size_t co, number intensity, number concentration)
 assembles a singular source or sink in the defect
 
template<typename TElem >
void ass_sss_JA_elem (LocalMatrix &J, const LocalVector &u, TElem *pElem, size_t co, number intensity, number concentration)
 assembles a singular source or sink in the jacobian
 
template<typename TFVGeom , typename TConsGravity >
void compute_ip_Darcy_velocity (MathVector< dim > &Vel, size_t ip, const TFVGeom &bulk_geo, TConsGravity &ConsGravityMethod, MathVector< TFVGeom::dim > vConsGravity[], number vPressure[], number Viscosity)
 computes the Darcy velocity (not scaled with the permeability)
 
template<typename TFVGeom , typename TConsGravity , size_t maxCorners>
void compute_J_ip_Darcy_velocity (MathVector< dim > &Vel, MathVector< dim > Vel_c[], MathVector< dim > Vel_p[], size_t ip, const TFVGeom &geo, TConsGravity &ConsGravityMethod, MathVector< TFVGeom::dim > vConsGravity_c[][maxCorners], number vPressure[], number Viscosity, number Viscosity_c[])
 computes the derivatives of the Darcy velocity (not scaled with the permeability)
 
template<typename TElem >
void finish_element_loop ()
 finalizes the loop over the elements
 
virtual void prep_assemble_loop ()
 called once bevore assembling
 
template<typename TElem >
void prepare_element (const LocalVector &u, GridObject *elem, ReferenceObjectID roid, const position_type vCornerCoords[])
 prepares a given element for assembling
 
template<typename TElem >
void prepare_element_loop (ReferenceObjectID roid, int si)
 prepares the loop over the elements: checks whether the parameters are set, ...
 
virtual void prepare_setting (const std::vector< LFEID > &vLfeID, bool bNonRegular)
 check type of the grid and the trial space
 
virtual bool requests_local_time_series ()
 
- Protected Member Functions inherited from ug::IElemDisc< TDomain >
void clear_add_fct ()
 
void clear_add_fct (ReferenceObjectID id)
 
void set_default_add_fct ()
 
- Protected Member Functions inherited from ug::IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >
void clear_add_fct ()
 
void clear_add_fct (ReferenceObjectID id)
 
void remove_add_def_A_elem_fct (ReferenceObjectID id)
 
void remove_add_def_A_expl_elem_fct (ReferenceObjectID id)
 
void remove_add_def_M_elem_fct (ReferenceObjectID id)
 
void remove_add_jac_A_elem_fct (ReferenceObjectID id)
 
void remove_add_jac_M_elem_fct (ReferenceObjectID id)
 
void remove_add_rhs_elem_fct (ReferenceObjectID id)
 
void remove_fsh_elem_loop_fct (ReferenceObjectID id)
 
void remove_fsh_timestep_elem_fct (ReferenceObjectID id)
 
void remove_fsh_timestep_fct (size_t algebra_id)
 
void remove_prep_elem_fct (ReferenceObjectID id)
 
void remove_prep_elem_loop_fct (ReferenceObjectID id)
 
void remove_prep_timestep_elem_fct (ReferenceObjectID id)
 
void remove_prep_timestep_fct (size_t algebra_id)
 
void set_add_def_A_elem_fct (ReferenceObjectID id, TAssFunc func)
 
void set_add_def_A_expl_elem_fct (ReferenceObjectID id, TAssFunc func)
 
void set_add_def_M_elem_fct (ReferenceObjectID id, TAssFunc func)
 
void set_add_jac_A_elem_fct (ReferenceObjectID id, TAssFunc func)
 
void set_add_jac_M_elem_fct (ReferenceObjectID id, TAssFunc func)
 
void set_add_rhs_elem_fct (ReferenceObjectID id, TAssFunc func)
 
void set_default_add_fct ()
 
void set_fsh_elem_loop_fct (ReferenceObjectID id, TAssFunc func)
 
void set_fsh_timestep_elem_fct (ReferenceObjectID id, TAssFunc func)
 
void set_fsh_timestep_fct (size_t algebra_id, TAssFunc func)
 
void set_prep_elem_fct (ReferenceObjectID id, TAssFunc func)
 
void set_prep_elem_loop_fct (ReferenceObjectID id, TAssFunc func)
 
void set_prep_timestep_elem_fct (ReferenceObjectID id, TAssFunc func)
 
void set_prep_timestep_fct (size_t algebra_id, TAssFunc func)
 
- Protected Member Functions inherited from ug::IElemError< typename TDomain >
void clear_add_fct ()
 
void clear_add_fct (ReferenceObjectID id)
 
- Protected Member Functions inherited from ug::IElemDiscBase< typename TDomain >
virtual void approximation_space_changed ()
 
void set_function_pattern (ConstSmartPtr< FunctionPattern > fctPatt)
 
void update_function_index_mapping ()
 
- Protected Member Functions inherited from ug::IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain >
void clear_add_fct ()
 
void clear_add_fct (ReferenceObjectID id)
 
void remove_compute_err_est_A_elem (ReferenceObjectID id)
 
void remove_compute_err_est_M_elem (ReferenceObjectID id)
 
void remove_compute_err_est_rhs_elem (ReferenceObjectID id)
 
void remove_fsh_err_est_elem_loop (ReferenceObjectID id)
 
void remove_prep_err_est_elem (ReferenceObjectID id)
 
void remove_prep_err_est_elem_loop (ReferenceObjectID id)
 
void set_compute_err_est_A_elem (ReferenceObjectID id, TAssFunc func)
 
void set_compute_err_est_M_elem (ReferenceObjectID id, TAssFunc func)
 
void set_compute_err_est_rhs_elem (ReferenceObjectID id, TAssFunc func)
 
void set_default_add_fct ()
 
void set_fsh_err_est_elem_loop (ReferenceObjectID id, TAssFunc func)
 
void set_prep_err_est_elem (ReferenceObjectID id, TAssFunc func)
 
void set_prep_err_est_elem_loop (ReferenceObjectID id, TAssFunc func)
 

Private Types

typedef domain_traits< dim >::DimElemList AssembleElemList
 list of element types for assembling
 
typedef IElemDisc< TDomain > base_type
 base class type
 
typedef base_type::domain_type domain_type
 domain type
 
typedef DegeneratedLayerManager< dimfract_manager_type
 fracture manager type
 
typedef base_type::position_type position_type
 position type
 
typedef fract_manager_type::side_type side_type
 type of the sides of elements (als low-dimensional fracture elements)
 
typedef DimFV1Geometry< low_dim, dimTFractFVGeom
 FV geometry for the fractures.
 
typedef FractDDF_FV1< TDomain > this_type
 own type
 

Private Member Functions

template<typename TElem >
void bulk_ass_dA_elem (LocalVector &d, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
 computes the stiffness part of the local defect on a bulk element
 
template<typename TElem >
void bulk_ass_dM_elem (LocalVector &d, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
 computes the mass part of the defect of a time-dependent problem on a bulk element
 
template<typename TElem >
void bulk_ass_JA_elem (LocalMatrix &J, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
 computes the local stiffness matrix on a bulk element
 
template<typename TElem >
void bulk_ass_JM_elem (LocalMatrix &J, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
 computes the mass matrix of a time-dependent problem on a bulk element
 
template<typename TElem >
void bulk_ass_rhs_elem (LocalVector &d, TElem *elem, const position_type vCornerCoords[])
 
template<typename TElem >
void bulk_prepare_element (const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
 prepares a given bulk element for assembling
 
template<typename TElem >
void bulk_prepare_element_loop (ReferenceObjectID roid, int si)
 prepares the loop over the elements: the 'bulk' version
 
template<typename TElem >
void ex_brine (number vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< number > > vvvDeriv[])
 export parameter for the concentration (to compute density and viscosity)
 
template<typename TElem >
void ex_darcy_fract (MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< MathVector< dim > > > vvvDeriv[])
 export parameter for the Darcy velocity in the fracture
 
template<typename TElem >
void ex_darcy_ortho_fract (number vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< number > > vvvDeriv[])
 export parameter for the orthogonal Darcy velocity
 
template<typename TElem >
void ex_pressure (number vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< number > > vvvDeriv[])
 export parameter for the pressure
 
template<typename TElem >
void fract_ass_dA_elem (LocalVector &d, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
 computes the stiffness part of the local defect on a fracture element
 
template<typename TElem >
void fract_ass_dM_elem (LocalVector &d, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
 computes the mass part of the defect of a time-dependent problem on a fracture element
 
template<typename TElem >
void fract_ass_JA_elem (LocalMatrix &J, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
 computes the local stiffness matrix on a fracture element
 
template<typename TElem >
void fract_ass_JM_elem (LocalMatrix &J, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
 computes the mass matrix of a time-dependent problem on a fracture element
 
template<typename TElem >
void fract_ass_rhs_elem (LocalVector &d, TElem *elem, const position_type vCornerCoords[])
 
template<typename TElem >
void fract_bulk_ass_dA_elem (LocalVector &d, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
 computes the stiffness fracture-bulk interaction terms of the local defect on a fracture element
 
template<typename TElem >
void fract_bulk_ass_JA_elem (LocalMatrix &J, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
 computes the local stiffness matrix of the fracture-bulk interaction terms on a fracture element
 
template<typename TElem >
void fract_prepare_element (const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
 prepares a given fracture element for assembling
 
template<typename TElem >
void fract_prepare_element_loop (ReferenceObjectID roid, int si)
 prepares the loop over the elements: the 'fracture' version
 
template<typename TElem >
void register_loc_discr_func ()
 registers the local assembler functions for a given element
 

Private Attributes

size_t m_assCo [2 *maxFractSideCorners]
 correspondence of the corners of the sides
 
bool m_BoussinesqFlow
 whether to use the Boussinesq approximation in the flow eq.
 
bool m_BoussinesqTransport
 whether to use the Boussinesq approximation in the transport eq.
 
bool m_bVolStabDataActive
 Whether the volume stabilization is active (i.e. m_spVolStabData is not SPNULL and active)
 
MathVector< dimm_elem_loc_coe
 local coordinates of the mass center of a fracture element
 
MathVector< dimm_elem_loc_scvf [TFractFVGeom::maxNumSCVF]
 local ip's in a fracture element
 
SmartPtr< DataExport< number, dim > > m_exBrine
 Export parameter for the brine mass fraction.
 
SmartPtr< DataExport< MathVector< dim >, dim > > m_exFractDarcyVel
 Export parameter for the Darcy velocity in the fracture.
 
SmartPtr< DataExport< number, dim > > m_exOrthoFractDarcyVel
 Export parameter for the Darcy velocity orthogonal to the fracture.
 
SmartPtr< DataExport< number, dim > > m_exPressure
 Export parameter for the pressure.
 
MathVector< dimm_Gravity
 the gravity vector
 
DataImport< number, dimm_imAperture
 the fracture width (constant per element)
 
DataImport< MathVector< dim >, dimm_imConstGravity
 gravity (must be constant)
 
DataImport< number, dimm_imDensityCo
 density of the fluid phase (at the corners)
 
DataImport< number, dimm_imDensityIP
 density of the fluid phase (at the ip's)
 
DataImport< MathMatrix< dim, dim >, dimm_imDiffusion
 molecular diffusion times tortuosity in the fluid phase (constant per element)
 
DataImport< MathVector< dim >, dimm_imFractDarcyVelIP
 Data import for Darcy Velocity.
 
DataImport< number, dimm_imFractDiffusion
 molecular diffusion times tortuosity along the fracture (constant per element)
 
DataImport< number, dimm_imFractPermeability
 scalar permeability along the fracture (constant per element)
 
DataImport< number, dimm_imOldDensityCo
 old density of the fluid phase (at the corners)
 
DataImport< number, dimm_imOrthoDiffusion
 molecular diffusion times tortuosity at the fracture-bulk interface (constant per element)
 
DataImport< number, dimm_imOrthoPermeability
 scalar permeability at the fracture-bulk interface (constant per element)
 
DataImport< MathMatrix< dim, dim >, dimm_imPermeability
 permeability (constant per element)
 
DataImport< number, dimm_imPorosity
 porosity (constant per element)
 
DataImport< number, dimm_imViscosityCo
 viscosity of the fluid phase (at the corners)
 
DataImport< number, dimm_imViscosityIP
 viscosity of the fluid phase (at the ip's)
 
side_typem_innerFractSide
 inner side of the fracture element
 
size_t m_innerFractSideIdx
 index of the inner side in the ref. elem.
 
size_t m_innerSideCo [maxFractSideCorners]
 inner side corner idx -> elem. corner idx
 
bool m_isFracture
 if the current subset is registered in the fracture manager
 
size_t m_numFractCo
 number of corners of the fracture side
 
number m_orthGravity
 projection of the gravity to the outer normal of the fracture element
 
side_typem_outerFractSide
 outer side of the fracture element
 
size_t m_outerFractSideIdx
 index of the outer side in the ref. elem.
 
size_t m_outerSideCo [maxFractSideCorners]
 outer side corner idx -> elem. corner idx
 
TFractFVGeomm_pFractGeo
 FV geometry object of fracture elements.
 
SmartPtr< fract_manager_typem_spFractManager
 degenerated fracture manager (may be SPNULL)
 
SmartPtr< IConvectionShapes< dim > > m_spUpwind
 upwind method
 
SmartPtr< FlowVolStabData< TDomain > > m_spVolStabData
 Volume stabilization.
 
SmartPtr< DDSingularSourcesAndSinks< dim > > m_sss_mngr
 singular sources and sinks manager
 
MathVector< dimm_unitOuterNormal
 unit outer normal to the fracture
 

Static Private Attributes

static const size_t _C_ = 0
 abbreviation for local function: brine mass fraction
 
static const size_t _P_ = 1
 abbreviation for local function: pressure
 
static const int dim = base_type::dim
 world ('full') dimension
 
static const int low_dim = dim - 1
 manifold ('low') dimension
 
static const size_t maxFractSideCorners = fract_manager_type::maxLayerSideCorners
 max. number of corners of non-degenerated sides
 

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
 
- 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
 
- Protected Attributes inherited from ug::IElemDisc< TDomain >
std::vector< SmartPtr< IElemDiscModifier< TDomain > > > m_spElemModifier
 
- Protected Attributes inherited from ug::IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >
ReferenceObjectID m_roid
 
- Protected Attributes inherited from ug::IElemDiscBase< typename TDomain >
bool m_bStationaryForced
 
FunctionGroup m_fctGrp
 
FunctionIndexMapping m_fctIndexMap
 
LocalVectorTimeSeriesm_pLocalVectorTimeSeries
 
SmartPtr< ApproximationSpace< TDomain > > m_spApproxSpace
 
ConstSmartPtr< FunctionPatternm_spFctPattern
 
size_t m_timePoint
 
std::vector< std::string > m_vFct
 
std::vector< IDataImport< dim > * > m_vIImport
 
std::vector< numberm_vScaleMass
 
std::vector< numberm_vScaleStiff
 
std::vector< std::string > m_vSubset
 
- Protected Attributes inherited from ug::IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain >
ReferenceObjectID m_roid
 
SmartPtr< IErrEstData< TDomain > > m_spErrEstData
 

Detailed Description

template<typename TDomain>
class ug::d3f::FractDDF_FV1< TDomain >

FV-discretization of the density-driven flow in porous media with fractures.

This class implements the local vertex-centered FV-discretization of the density-driven flow model with (optionally) low-dimensional fractures. For details, cf.

  • S. Reiter, D. Logashenko, A. Grillo, G. Wittum, Preparation of grids for simulations of groundwater flow in fractured porous media, Computing and Visualization in Science, Vol. 15, No. 4 (2012), pp. 209-225, DOI: 10.1007/s00791-013-0210-7
  • S. Reiter, D. Logashenko, S. Stichel, G. Wittum, A. Grillo, Models and simulations of variable-density flow in fractured porous media. Int. J. Computational Science and Engineering, 2014, in press

Member Typedef Documentation

◆ AssembleElemList

template<typename TDomain >
typedef domain_traits<dim>::DimElemList ug::d3f::FractDDF_FV1< TDomain >::AssembleElemList
private

list of element types for assembling

◆ base_type

template<typename TDomain >
typedef IElemDisc<TDomain> ug::d3f::FractDDF_FV1< TDomain >::base_type
private

base class type

◆ domain_type

template<typename TDomain >
typedef base_type::domain_type ug::d3f::FractDDF_FV1< TDomain >::domain_type
private

domain type

◆ fract_manager_type

template<typename TDomain >
typedef DegeneratedLayerManager<dim> ug::d3f::FractDDF_FV1< TDomain >::fract_manager_type
private

fracture manager type

◆ position_type

template<typename TDomain >
typedef base_type::position_type ug::d3f::FractDDF_FV1< TDomain >::position_type
private

position type

◆ side_type

template<typename TDomain >
typedef fract_manager_type::side_type ug::d3f::FractDDF_FV1< TDomain >::side_type
private

type of the sides of elements (als low-dimensional fracture elements)

◆ TFractFVGeom

template<typename TDomain >
typedef DimFV1Geometry<low_dim, dim> ug::d3f::FractDDF_FV1< TDomain >::TFractFVGeom
private

FV geometry for the fractures.

◆ this_type

template<typename TDomain >
typedef FractDDF_FV1<TDomain> ug::d3f::FractDDF_FV1< TDomain >::this_type
private

own type

Constructor & Destructor Documentation

◆ FractDDF_FV1() [1/2]

template<typename TDomain >
ug::d3f::FractDDF_FV1< TDomain >::FractDDF_FV1 ( const char *  functions,
const char *  subsets 
)

class constructor

Parameters
functionsnames of the grid functons for concentration and pressure
subsetsnames of the (full-dimensional) subsets

References ug::d3f::FractDDF_FV1< TDomain >::init().

◆ FractDDF_FV1() [2/2]

template<typename TDomain >
ug::d3f::FractDDF_FV1< TDomain >::FractDDF_FV1 ( const std::vector< std::string > &  vFct,
const std::vector< std::string > &  vSubset 
)

Member Function Documentation

◆ ass_dA_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::ass_dA_elem ( LocalVector d,
const LocalVector u,
GridObject elem,
const position_type  vCornerCoords[] 
)
protected

computes the stiffness part of the local defect

Parameters
dthe local defect to update
ucurrent approximation of the solution
elemgrid element
vCornerCoordscorner coordinates of the grid element

◆ ass_dM_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::ass_dM_elem ( LocalVector d,
const LocalVector u,
GridObject elem,
const position_type  vCornerCoords[] 
)
protected

computes the mass part of the defect of a time-dependent problem

Parameters
dthe local defect to update
ucurrent approximation of the solution
elemgrid element
vCornerCoordscorner coordinates of the grid element

◆ ass_JA_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::ass_JA_elem ( LocalMatrix J,
const LocalVector u,
GridObject elem,
const position_type  vCornerCoords[] 
)
protected

computes the local stiffness matrix

Parameters
Jthe local matrix to update
ucurrent approximation of the solution
elemgrid element
vCornerCoordscorner coordinates of the grid element

◆ ass_JM_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::ass_JM_elem ( LocalMatrix J,
const LocalVector u,
GridObject elem,
const position_type  vCornerCoords[] 
)
protected

computes the mass matrix of a time-dependent problem

Parameters
Jthe local matrix to update
ucurrent approximation of the solution
elemgrid element
vCornerCoordscorner coordinates of the grid element

◆ ass_rhs_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::ass_rhs_elem ( LocalVector b,
GridObject elem,
const position_type  vCornerCoords[] 
)
protected

computes the right-hand side due to the sources

Parameters
bthe right-hand side to update
elemgrid element
vCornerCoordscorner coordinates of the grid element

◆ ass_sss_dA_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::ass_sss_dA_elem ( LocalVector d,
const LocalVector u,
TElem *  pElem,
size_t  co,
number  intensity,
number  concentration 
)
protected

assembles a singular source or sink in the defect

Parameters
dthe defect to update
ucurrent solution
pElemthe element
cocorner for the source/sink
intensityintensity of the source/sink (premultiplied by the length for lines)
concentrationconcentration in the source

◆ ass_sss_JA_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::ass_sss_JA_elem ( LocalMatrix J,
const LocalVector u,
TElem *  pElem,
size_t  co,
number  intensity,
number  concentration 
)
protected

assembles a singular source or sink in the jacobian

Parameters
Jthe matrix to update
ucurrent solution
pElemthe element
cocorner for the source/sink
intensityintensity of the source/sink (premultiplied by the length for lines)
concentrationconcentration in the source

◆ brine()

template<typename TDomain >
SmartPtr< CplUserData< number, dim > > ug::d3f::FractDDF_FV1< TDomain >::brine ( )
inline

returns the export parameter of the brine mass fraction

References ug::d3f::FractDDF_FV1< TDomain >::m_exBrine.

◆ bulk_ass_dA_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::bulk_ass_dA_elem ( LocalVector d,
const LocalVector u,
TElem *  pElem,
const position_type  vCornerCoords[] 
)
inlineprivate

computes the stiffness part of the local defect on a bulk element

Parameters
dthe local defect to update
ucurrent approximation of the solution
pElemgrid element
vCornerCoordscorner coordinates of the grid element

References ug::GeomProvider< typename TGeom >::get(), grid(), ug::MatScale(), ug::MatVecMult(), ug::FVPointSourceOrSink< int dim, typename TData >::position(), UG_CATCH_THROW, UG_THROW, ug::VecDistance(), ug::VecDot(), ug::VecScaleAppend(), and ug::VecSet().

◆ bulk_ass_dM_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::bulk_ass_dM_elem ( LocalVector d,
const LocalVector u,
TElem *  pElem,
const position_type  vCornerCoords[] 
)
inlineprivate

computes the mass part of the defect of a time-dependent problem on a bulk element

Parameters
dthe local defect to update
ucurrent approximation of the solution
pElemgrid element
vCornerCoordscorner coordinates of the grid element

References ug::GeomProvider< typename TGeom >::get().

◆ bulk_ass_JA_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::bulk_ass_JA_elem ( LocalMatrix J,
const LocalVector u,
TElem *  pElem,
const position_type  vCornerCoords[] 
)
inlineprivate

computes the local stiffness matrix on a bulk element

Parameters
Jthe local matrix to update
ucurrent approximation of the solution
pElemgrid element
vCornerCoordscorner coordinates of the grid element

References ug::IConvectionShapes< int dim >::D_vel(), ug::GeomProvider< typename TGeom >::get(), grid(), ug::MatScale(), ug::MatVecMult(), ug::FVPointSourceOrSink< int dim, typename TData >::position(), UG_CATCH_THROW, UG_THROW, ug::VecDistance(), ug::VecDot(), ug::VecScaleAppend(), and ug::VecSet().

◆ bulk_ass_JM_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::bulk_ass_JM_elem ( LocalMatrix J,
const LocalVector u,
TElem *  pElem,
const position_type  vCornerCoords[] 
)
inlineprivate

computes the mass matrix of a time-dependent problem on a bulk element

Parameters
Jthe local matrix to update
ucurrent approximation of the solution
pElemgrid element
vCornerCoordscorner coordinates of the grid element

References ug::GeomProvider< typename TGeom >::get().

◆ bulk_ass_rhs_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::bulk_ass_rhs_elem ( LocalVector d,
TElem *  elem,
const position_type  vCornerCoords[] 
)
inlineprivate

◆ bulk_prepare_element()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::bulk_prepare_element ( const LocalVector u,
TElem *  elem,
const position_type  vCornerCoords[] 
)
inlineprivate

prepares a given bulk element for assembling

Parameters
ulocal solution at the dofs associated with elem
elemelement to prepare
vCornerCoordscoordinates of the corners of the element

References ug::GeomProvider< typename TGeom >::get(), subset_handler(), and UG_CATCH_THROW.

◆ bulk_prepare_element_loop()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::bulk_prepare_element_loop ( ReferenceObjectID  roid,
int  si 
)
inlineprivate

prepares the loop over the elements: the 'bulk' version

Parameters
roidonly elements with this roid are looped over
siand only in this subdomain

References ug::GeomProvider< typename TGeom >::get(), SPNULL, and UG_THROW.

◆ compute_ip_Darcy_velocity()

template<typename TDomain >
template<typename TFVGeom , typename TConsGravity >
void ug::d3f::FractDDF_FV1< TDomain >::compute_ip_Darcy_velocity ( MathVector< dim > &  Vel,
size_t  ip,
const TFVGeom &  bulk_geo,
TConsGravity &  ConsGravityMethod,
MathVector< TFVGeom::dim >  vConsGravity[],
number  vPressure[],
number  Viscosity 
)
inlineprotected

computes the Darcy velocity (not scaled with the permeability)

Parameters
Velto save the velocity
ipindex of the integration point
bulk_geofinite-volume geometry
ConsGravityMethodfor computation of consistent gravity
vConsGravityconsistent gravity primary function (at corners)
vPressurecorner values of the pressure
Viscosityviscosity at the integration point

References ug::VecScale(), ug::VecScaleAppend(), and Viscosity().

◆ compute_J_ip_Darcy_velocity()

template<typename TDomain >
template<typename TFVGeom , typename TConsGravity , size_t maxCorners>
void ug::d3f::FractDDF_FV1< TDomain >::compute_J_ip_Darcy_velocity ( MathVector< dim > &  Vel,
MathVector< dim Vel_c[],
MathVector< dim Vel_p[],
size_t  ip,
const TFVGeom &  geo,
TConsGravity &  ConsGravityMethod,
MathVector< TFVGeom::dim >  vConsGravity_c[][maxCorners],
number  vPressure[],
number  Viscosity,
number  Viscosity_c[] 
)
protected

computes the derivatives of the Darcy velocity (not scaled with the permeability)

Parameters
Velto the velocity (should be computed by compute_ip_Darcy_velocity before)
Vel_cto save the derivatives wrt the corner concentrations
Vel_pto save the derivatives wrt the corner pressures
ipindex of the integration point
geofinite-volume geometry
ConsGravityMethodfor computation of consistent gravity
vConsGravity_cderivatives of vConsGravity wrt corner c
vPressurecorner values of the pressure
Viscosityviscosity at the integration point
Viscosity_cderivatives of the viscosity wrt the corner c (NULL for constant visc.)

References ug::VecScale(), ug::VecScaleAppend(), and Viscosity().

◆ DarcyVel()

template<typename TDomain >
SmartPtr< CplUserData< MathVector< dim >, dim > > ug::d3f::FractDDF_FV1< TDomain >::DarcyVel ( )
inline

returns the export parameter of the Darcy velocity in fracture

References ug::d3f::FractDDF_FV1< TDomain >::m_exFractDarcyVel.

◆ ex_brine()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::ex_brine ( number  vValue[],
const MathVector< dim vGlobIP[],
number  time,
int  si,
const LocalVector u,
GridObject elem,
const MathVector< dim vCornerCoords[],
const MathVector< dim vLocIP[],
const size_t  nip,
bool  bDeriv,
std::vector< std::vector< number > >  vvvDeriv[] 
)
private

export parameter for the concentration (to compute density and viscosity)

References get(), and ug::BaseLSFS< typename TImpl, int TDim, typename TShape, typename TGrad >::shapes().

◆ ex_darcy_fract()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::ex_darcy_fract ( MathVector< dim vValue[],
const MathVector< dim vGlobIP[],
number  time,
int  si,
const LocalVector u,
GridObject elem,
const MathVector< dim vCornerCoords[],
const MathVector< dim vLocIP[],
const size_t  nip,
bool  bDeriv,
std::vector< std::vector< MathVector< dim > > >  vvvDeriv[] 
)
private

export parameter for the Darcy velocity in the fracture

References UG_CATCH_THROW, UG_THROW, and ug::VecScale().

◆ ex_darcy_ortho_fract()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::ex_darcy_ortho_fract ( number  vValue[],
const MathVector< dim vGlobIP[],
number  time,
int  si,
const LocalVector u,
GridObject elem,
const MathVector< dim vCornerCoords[],
const MathVector< dim vLocIP[],
const size_t  nip,
bool  bDeriv,
std::vector< std::vector< number > >  vvvDeriv[] 
)
private

export parameter for the orthogonal Darcy velocity

References ug::MatVecMult(), UG_THROW, and ug::VecDot().

◆ ex_pressure()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::ex_pressure ( number  vValue[],
const MathVector< dim vGlobIP[],
number  time,
int  si,
const LocalVector u,
GridObject elem,
const MathVector< dim vCornerCoords[],
const MathVector< dim vLocIP[],
const size_t  nip,
bool  bDeriv,
std::vector< std::vector< number > >  vvvDeriv[] 
)
private

◆ finish_element_loop()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::finish_element_loop ( )
protected

finalizes the loop over the elements

◆ fract_ass_dA_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::fract_ass_dA_elem ( LocalVector d,
const LocalVector u,
TElem *  pElem,
const position_type  vCornerCoords[] 
)
inlineprivate

computes the stiffness part of the local defect on a fracture element

Parameters
dthe local defect to update
ucurrent approximation of the solution
pElemgrid element
vCornerCoordscorner coordinates of the grid element

References grid(), ug::MatDiagSet(), ug::MatSet(), ug::MatVecMult(), UG_THROW, ug::VecDot(), ug::VecScaleAppend(), and ug::VecSet().

◆ fract_ass_dM_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::fract_ass_dM_elem ( LocalVector d,
const LocalVector u,
TElem *  pElem,
const position_type  vCornerCoords[] 
)
inlineprivate

computes the mass part of the defect of a time-dependent problem on a fracture element

Parameters
dthe local defect to update
ucurrent approximation of the solution
pElemgrid element
vCornerCoordscorner coordinates of the grid element

◆ fract_ass_JA_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::fract_ass_JA_elem ( LocalMatrix J,
const LocalVector u,
TElem *  pElem,
const position_type  vCornerCoords[] 
)
inlineprivate

computes the local stiffness matrix on a fracture element

Parameters
Jthe local matrix to update
ucurrent approximation of the solution
pElemgrid element
vCornerCoordscorner coordinates of the grid element

References ug::IConvectionShapes< int dim >::D_vel(), grid(), ug::MatDiagSet(), ug::MatSet(), ug::MatVecMult(), UG_THROW, ug::VecDot(), ug::VecScaleAppend(), and ug::VecSet().

◆ fract_ass_JM_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::fract_ass_JM_elem ( LocalMatrix J,
const LocalVector u,
TElem *  pElem,
const position_type  vCornerCoords[] 
)
inlineprivate

computes the mass matrix of a time-dependent problem on a fracture element

Parameters
Jthe local matrix to update
ucurrent approximation of the solution
pElemgrid element
vCornerCoordscorner coordinates of the grid element

◆ fract_ass_rhs_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::fract_ass_rhs_elem ( LocalVector d,
TElem *  elem,
const position_type  vCornerCoords[] 
)
inlineprivate

◆ fract_bulk_ass_dA_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::fract_bulk_ass_dA_elem ( LocalVector d,
const LocalVector u,
TElem *  pElem,
const position_type  vCornerCoords[] 
)
inlineprivate

computes the stiffness fracture-bulk interaction terms of the local defect on a fracture element

Contributions to the fluxes through the fracture-bulk interface

Parameters
dthe local defect to update
ucurrent approximation of the solution
pElemgrid element
vCornerCoordscorner coordinates of the grid element

References ug::MatVecMult(), and ug::VecDot().

◆ fract_bulk_ass_JA_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::fract_bulk_ass_JA_elem ( LocalMatrix J,
const LocalVector u,
TElem *  pElem,
const position_type  vCornerCoords[] 
)
inlineprivate

computes the local stiffness matrix of the fracture-bulk interaction terms on a fracture element

contribution to the fluxes:

Parameters
Jthe local matrix to update
ucurrent approximation of the solution
pElemgrid element
vCornerCoordscorner coordinates of the grid element

References ug::MatVecMult(), s, and ug::VecDot().

◆ fract_prepare_element()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::fract_prepare_element ( const LocalVector u,
TElem *  elem,
const position_type  vCornerCoords[] 
)
inlineprivate

prepares a given fracture element for assembling

Parameters
ulocal solution at the dofs associated with elem
elemelement to prepare
vCornerCoordscoordinates of the corners of the element

References ug::Provider< typename TClass >::get(), ug::DimReferenceMapping< int TDim, int TWorldDim >::local_to_global(), subset_handler(), UG_CATCH_THROW, UG_THROW, ug::DimReferenceMapping< int TDim, int TWorldDim >::update(), ug::VecDot(), and ug::VecLength().

◆ fract_prepare_element_loop()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::fract_prepare_element_loop ( ReferenceObjectID  roid,
int  si 
)
inlineprivate

prepares the loop over the elements: the 'fracture' version

Parameters
roidonly elements with this roid are looped over
siand only in this subdomain

References ug::GeomProvider< typename TGeom >::get(), ug::Provider< typename TClass >::get(), ug::LFEID::LAGRANGE, and UG_THROW.

◆ init()

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::init ( )

◆ OrthoDarcyVel()

template<typename TDomain >
SmartPtr< CplUserData< number, dim > > ug::d3f::FractDDF_FV1< TDomain >::OrthoDarcyVel ( )
inline

returns the export parameter of the orthogonal Darcy velocity in fracture

References ug::d3f::FractDDF_FV1< TDomain >::m_exOrthoFractDarcyVel.

◆ prep_assemble_loop()

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::prep_assemble_loop ( )
protectedvirtual

called once bevore assembling

Reimplemented from ug::IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >.

◆ prepare_element()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::prepare_element ( const LocalVector u,
GridObject elem,
ReferenceObjectID  roid,
const position_type  vCornerCoords[] 
)
protected

prepares a given element for assembling

Parameters
ulocal solution at the dofs associated with elem
elemelement to prepare
vCornerCoordscoordinates of the corners of the element

◆ prepare_element_loop()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::prepare_element_loop ( ReferenceObjectID  roid,
int  si 
)
protected

prepares the loop over the elements: checks whether the parameters are set, ...

Parameters
roidonly elements with this roid are looped over
siand only in this subdomain

References UG_THROW.

◆ prepare_setting()

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::prepare_setting ( const std::vector< LFEID > &  vLfeID,
bool  bNonRegular 
)
protectedvirtual

check type of the grid and the trial space

checks the grid and the shape functions

Implements ug::IElemDiscBase< typename TDomain >.

References ug::LFEID::LAGRANGE, and UG_THROW.

◆ pressure()

template<typename TDomain >
SmartPtr< CplUserData< number, dim > > ug::d3f::FractDDF_FV1< TDomain >::pressure ( )
inline

returns the export parameter of the pressure

References ug::d3f::FractDDF_FV1< TDomain >::m_exPressure.

◆ register_loc_discr_func()

template<typename TDomain >
template<typename TElem >
void ug::d3f::FractDDF_FV1< TDomain >::register_loc_discr_func ( )
private

registers the local assembler functions for a given element

Referenced by ug::d3f::FractDDF_FV1< TDomain >::RegisterLocalDiscr::operator()().

◆ requests_local_time_series()

template<typename TDomain >
virtual bool ug::d3f::FractDDF_FV1< TDomain >::requests_local_time_series ( )
inlineprotectedvirtual

◆ set_aperture() [1/2]

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_aperture ( number  val)
inline

◆ set_aperture() [2/2]

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_aperture ( SmartPtr< CplUserData< number, dim > >  user)
inline

set Specific parameters for low-dimensional subdomains (fractures):

References ug::d3f::FractDDF_FV1< TDomain >::m_imAperture, and ug::DataImport< typename TData, int dim >::set_data().

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_aperture().

◆ set_boussinesq()

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_boussinesq ( bool  bUse)
inline

whether to use boussinesq approximation in both the equations

References ug::d3f::FractDDF_FV1< TDomain >::m_BoussinesqFlow, and ug::d3f::FractDDF_FV1< TDomain >::m_BoussinesqTransport.

◆ set_boussinesq_flow()

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_boussinesq_flow ( bool  bUse)
inline

whether to use boussinesq approximation for flow equation

References ug::d3f::FractDDF_FV1< TDomain >::m_BoussinesqFlow.

◆ set_boussinesq_transport()

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_boussinesq_transport ( bool  bUse)
inline

whether to use boussinesq approximation for transport equation

References ug::d3f::FractDDF_FV1< TDomain >::m_BoussinesqTransport.

◆ set_density() [1/2]

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_density ( number  val)
inline

◆ set_density() [2/2]

◆ set_fract_manager()

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_fract_manager ( SmartPtr< fract_manager_type fract_manager)
inline

sets the fracture manager

References ug::d3f::FractDDF_FV1< TDomain >::m_spFractManager.

◆ set_fract_molecular_diffusion() [1/2]

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_fract_molecular_diffusion ( number  val)
inline

◆ set_fract_molecular_diffusion() [2/2]

◆ set_fract_permeability() [1/2]

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_fract_permeability ( number  val)
inline

◆ set_fract_permeability() [2/2]

◆ set_gravity() [1/2]

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_gravity ( const std::vector< number > &  vGravity)
inline

◆ set_gravity() [2/2]

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_gravity ( SmartPtr< CplUserData< MathVector< dim >, dim > >  user)
inline

◆ set_molecular_diffusion() [1/2]

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_molecular_diffusion ( number  val)
inline

◆ set_molecular_diffusion() [2/2]

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_molecular_diffusion ( SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > >  user)
inline

◆ set_orthofract_molecular_diffusion() [1/2]

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_orthofract_molecular_diffusion ( number  val)
inline

◆ set_orthofract_molecular_diffusion() [2/2]

◆ set_orthofract_permeability() [1/2]

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_orthofract_permeability ( number  val)
inline

◆ set_orthofract_permeability() [2/2]

◆ set_permeability() [1/2]

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_permeability ( number  val)
inline

◆ set_permeability() [2/2]

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_permeability ( SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > >  user)
inline

set Specific parameters for full-dimensional subdomains (bulk medium):

References ug::d3f::FractDDF_FV1< TDomain >::m_imPermeability.

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_permeability().

◆ set_porosity() [1/2]

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_porosity ( number  val)
inline

◆ set_porosity() [2/2]

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_porosity ( SmartPtr< CplUserData< number, dim > >  user)
inline

◆ set_sss_manager()

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_sss_manager ( SmartPtr< DDSingularSourcesAndSinks< dim > >  sss_mngr)
inline

set singular sources and sinks

References ug::d3f::FractDDF_FV1< TDomain >::m_sss_mngr.

◆ set_upwind()

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_upwind ( SmartPtr< IConvectionShapes< dim > >  upwind)
inline

sets the upwind for the transport equation

References ug::d3f::FractDDF_FV1< TDomain >::m_spUpwind.

◆ set_viscosity() [1/2]

template<typename TDomain >
void ug::d3f::FractDDF_FV1< TDomain >::set_viscosity ( number  val)
inline

◆ set_viscosity() [2/2]

◆ set_volume_stabilization()

◆ sss_manager()

template<typename TDomain >
SmartPtr< DDSingularSourcesAndSinks< dim > > ug::d3f::FractDDF_FV1< TDomain >::sss_manager ( )
inline

get singular sources and sinks

References ug::d3f::FractDDF_FV1< TDomain >::m_sss_mngr.

Member Data Documentation

◆ _C_

template<typename TDomain >
const size_t ug::d3f::FractDDF_FV1< TDomain >::_C_ = 0
staticprivate

abbreviation for local function: brine mass fraction

◆ _P_

template<typename TDomain >
const size_t ug::d3f::FractDDF_FV1< TDomain >::_P_ = 1
staticprivate

abbreviation for local function: pressure

◆ dim

template<typename TDomain >
const int ug::d3f::FractDDF_FV1< TDomain >::dim = base_type::dim
staticprivate

world ('full') dimension

◆ low_dim

template<typename TDomain >
const int ug::d3f::FractDDF_FV1< TDomain >::low_dim = dim - 1
staticprivate

manifold ('low') dimension

◆ m_assCo

template<typename TDomain >
size_t ug::d3f::FractDDF_FV1< TDomain >::m_assCo[2 *maxFractSideCorners]
private

correspondence of the corners of the sides

◆ m_BoussinesqFlow

template<typename TDomain >
bool ug::d3f::FractDDF_FV1< TDomain >::m_BoussinesqFlow
private

whether to use the Boussinesq approximation in the flow eq.

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_boussinesq(), and ug::d3f::FractDDF_FV1< TDomain >::set_boussinesq_flow().

◆ m_BoussinesqTransport

template<typename TDomain >
bool ug::d3f::FractDDF_FV1< TDomain >::m_BoussinesqTransport
private

whether to use the Boussinesq approximation in the transport eq.

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_boussinesq(), and ug::d3f::FractDDF_FV1< TDomain >::set_boussinesq_transport().

◆ m_bVolStabDataActive

template<typename TDomain >
bool ug::d3f::FractDDF_FV1< TDomain >::m_bVolStabDataActive
private

Whether the volume stabilization is active (i.e. m_spVolStabData is not SPNULL and active)

◆ m_elem_loc_coe

template<typename TDomain >
MathVector<dim> ug::d3f::FractDDF_FV1< TDomain >::m_elem_loc_coe
private

local coordinates of the mass center of a fracture element

◆ m_elem_loc_scvf

template<typename TDomain >
MathVector<dim> ug::d3f::FractDDF_FV1< TDomain >::m_elem_loc_scvf[TFractFVGeom::maxNumSCVF]
private

local ip's in a fracture element

◆ m_exBrine

template<typename TDomain >
SmartPtr<DataExport<number, dim> > ug::d3f::FractDDF_FV1< TDomain >::m_exBrine
private

Export parameter for the brine mass fraction.

Referenced by ug::d3f::FractDDF_FV1< TDomain >::brine().

◆ m_exFractDarcyVel

template<typename TDomain >
SmartPtr<DataExport<MathVector<dim>, dim> > ug::d3f::FractDDF_FV1< TDomain >::m_exFractDarcyVel
private

◆ m_exOrthoFractDarcyVel

template<typename TDomain >
SmartPtr<DataExport<number, dim> > ug::d3f::FractDDF_FV1< TDomain >::m_exOrthoFractDarcyVel
private

◆ m_exPressure

template<typename TDomain >
SmartPtr<DataExport<number, dim> > ug::d3f::FractDDF_FV1< TDomain >::m_exPressure
private

Export parameter for the pressure.

Referenced by ug::d3f::FractDDF_FV1< TDomain >::pressure().

◆ m_Gravity

template<typename TDomain >
MathVector<dim> ug::d3f::FractDDF_FV1< TDomain >::m_Gravity
private

the gravity vector

◆ m_imAperture

template<typename TDomain >
DataImport<number, dim> ug::d3f::FractDDF_FV1< TDomain >::m_imAperture
private

the fracture width (constant per element)

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_aperture().

◆ m_imConstGravity

template<typename TDomain >
DataImport<MathVector<dim>, dim> ug::d3f::FractDDF_FV1< TDomain >::m_imConstGravity
private

gravity (must be constant)

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_gravity().

◆ m_imDensityCo

template<typename TDomain >
DataImport<number, dim> ug::d3f::FractDDF_FV1< TDomain >::m_imDensityCo
private

◆ m_imDensityIP

template<typename TDomain >
DataImport<number, dim> ug::d3f::FractDDF_FV1< TDomain >::m_imDensityIP
private

density of the fluid phase (at the ip's)

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_density().

◆ m_imDiffusion

template<typename TDomain >
DataImport<MathMatrix<dim, dim>, dim> ug::d3f::FractDDF_FV1< TDomain >::m_imDiffusion
private

molecular diffusion times tortuosity in the fluid phase (constant per element)

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_molecular_diffusion().

◆ m_imFractDarcyVelIP

template<typename TDomain >
DataImport<MathVector<dim>, dim> ug::d3f::FractDDF_FV1< TDomain >::m_imFractDarcyVelIP
private

Data import for Darcy Velocity.

◆ m_imFractDiffusion

template<typename TDomain >
DataImport<number, dim> ug::d3f::FractDDF_FV1< TDomain >::m_imFractDiffusion
private

molecular diffusion times tortuosity along the fracture (constant per element)

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_fract_molecular_diffusion().

◆ m_imFractPermeability

template<typename TDomain >
DataImport<number, dim> ug::d3f::FractDDF_FV1< TDomain >::m_imFractPermeability
private

scalar permeability along the fracture (constant per element)

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_fract_permeability().

◆ m_imOldDensityCo

template<typename TDomain >
DataImport<number, dim> ug::d3f::FractDDF_FV1< TDomain >::m_imOldDensityCo
private

◆ m_imOrthoDiffusion

template<typename TDomain >
DataImport<number, dim> ug::d3f::FractDDF_FV1< TDomain >::m_imOrthoDiffusion
private

molecular diffusion times tortuosity at the fracture-bulk interface (constant per element)

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_orthofract_molecular_diffusion().

◆ m_imOrthoPermeability

template<typename TDomain >
DataImport<number, dim> ug::d3f::FractDDF_FV1< TDomain >::m_imOrthoPermeability
private

scalar permeability at the fracture-bulk interface (constant per element)

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_orthofract_permeability().

◆ m_imPermeability

template<typename TDomain >
DataImport<MathMatrix<dim, dim>, dim> ug::d3f::FractDDF_FV1< TDomain >::m_imPermeability
private

permeability (constant per element)

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_permeability().

◆ m_imPorosity

template<typename TDomain >
DataImport<number, dim> ug::d3f::FractDDF_FV1< TDomain >::m_imPorosity
private

porosity (constant per element)

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_porosity().

◆ m_imViscosityCo

template<typename TDomain >
DataImport<number, dim> ug::d3f::FractDDF_FV1< TDomain >::m_imViscosityCo
private

viscosity of the fluid phase (at the corners)

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_viscosity().

◆ m_imViscosityIP

template<typename TDomain >
DataImport<number, dim> ug::d3f::FractDDF_FV1< TDomain >::m_imViscosityIP
private

viscosity of the fluid phase (at the ip's)

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_viscosity().

◆ m_innerFractSide

template<typename TDomain >
side_type* ug::d3f::FractDDF_FV1< TDomain >::m_innerFractSide
private

inner side of the fracture element

◆ m_innerFractSideIdx

template<typename TDomain >
size_t ug::d3f::FractDDF_FV1< TDomain >::m_innerFractSideIdx
private

index of the inner side in the ref. elem.

◆ m_innerSideCo

template<typename TDomain >
size_t ug::d3f::FractDDF_FV1< TDomain >::m_innerSideCo[maxFractSideCorners]
private

inner side corner idx -> elem. corner idx

◆ m_isFracture

template<typename TDomain >
bool ug::d3f::FractDDF_FV1< TDomain >::m_isFracture
private

if the current subset is registered in the fracture manager

◆ m_numFractCo

template<typename TDomain >
size_t ug::d3f::FractDDF_FV1< TDomain >::m_numFractCo
private

number of corners of the fracture side

◆ m_orthGravity

template<typename TDomain >
number ug::d3f::FractDDF_FV1< TDomain >::m_orthGravity
private

projection of the gravity to the outer normal of the fracture element

◆ m_outerFractSide

template<typename TDomain >
side_type* ug::d3f::FractDDF_FV1< TDomain >::m_outerFractSide
private

outer side of the fracture element

◆ m_outerFractSideIdx

template<typename TDomain >
size_t ug::d3f::FractDDF_FV1< TDomain >::m_outerFractSideIdx
private

index of the outer side in the ref. elem.

◆ m_outerSideCo

template<typename TDomain >
size_t ug::d3f::FractDDF_FV1< TDomain >::m_outerSideCo[maxFractSideCorners]
private

outer side corner idx -> elem. corner idx

◆ m_pFractGeo

template<typename TDomain >
TFractFVGeom* ug::d3f::FractDDF_FV1< TDomain >::m_pFractGeo
private

FV geometry object of fracture elements.

◆ m_spFractManager

template<typename TDomain >
SmartPtr<fract_manager_type> ug::d3f::FractDDF_FV1< TDomain >::m_spFractManager
private

degenerated fracture manager (may be SPNULL)

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_fract_manager().

◆ m_spUpwind

template<typename TDomain >
SmartPtr<IConvectionShapes<dim> > ug::d3f::FractDDF_FV1< TDomain >::m_spUpwind
private

upwind method

Referenced by ug::d3f::FractDDF_FV1< TDomain >::set_upwind().

◆ m_spVolStabData

◆ m_sss_mngr

template<typename TDomain >
SmartPtr<DDSingularSourcesAndSinks<dim> > ug::d3f::FractDDF_FV1< TDomain >::m_sss_mngr
private

◆ m_unitOuterNormal

template<typename TDomain >
MathVector<dim> ug::d3f::FractDDF_FV1< TDomain >::m_unitOuterNormal
private

unit outer normal to the fracture

◆ maxFractSideCorners

template<typename TDomain >
const size_t ug::d3f::FractDDF_FV1< TDomain >::maxFractSideCorners = fract_manager_type::maxLayerSideCorners
staticprivate

max. number of corners of non-degenerated sides


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