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

Finite Volume Element Discretization for Thermohaline Flow. More...

#include <thermohaline_flow.h>

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

Classes

struct  RegisterFV1
 

Public Types

typedef base_type::domain_type domain_type
 Domain type.
 
typedef base_type::position_type position_type
 Position type.
 
- 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
 

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 gradient
 
SmartPtr< CplUserData< MathVector< dim >, dim > > darcy_velocity ()
 returns the export of the darcy velocity
 
virtual void prepare_setting (const std::vector< LFEID > &vLfeID, bool bNonRegularGrid)
 type of trial space for each function used
 
SmartPtr< CplUserData< MathVector< dim >, dim > > pressure_grad ()
 returns the export of brine mass fracture
 
void set_boussinesq_density (number den)
 sets reference density used for boussinesq flow
 
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
 
void set_consistent_gravity (bool bUse)
 sets usage of consistent gravity
 
void set_density (SmartPtr< CplUserData< number, dim > > data)
 set density
 
void set_dispersion (SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > data)
 set dispersion
 
void set_gravity (number vel_x)
 
void set_gravity (number vel_x, number vel_y)
 
void set_gravity (number vel_x, number vel_y, number vel_z)
 
void set_heat_capacity_fluid (number data)
 sets the heat capacity of the fluid-phase
 
void set_heat_capacity_solid (number data)
 sets the heat capacity of the solid-phase
 
void set_mass_density_solid (number data)
 sets the mass density of the solid-phase
 
void set_partial_velocity (int mask)
 
void set_scheidegger_dispersion (const number alphaLong, const number alphaTrans)
 
void set_sss_manager (SmartPtr< THSingularSourcesAndSinks< dim > > sss_mngr)
 set singular sources and sinks
 
void set_upwind (SmartPtr< IConvectionShapes< dim > > shape)
 sets the type of upwind
 
void set_upwind_energy (SmartPtr< IConvectionShapes< dim > > shape)
 sets the type of upwind for the energy equation
 
void set_volume_stabilization (SmartPtr< FlowVolStabData< TDomain > > volStabData)
 sets usage of volume stabilization
 
SmartPtr< THSingularSourcesAndSinks< dim > > sss_manager ()
 get singular sources and sinks
 
SmartPtr< CplUserData< number, dim > > temperature ()
 returns the export of temperature
 
SmartPtr< CplUserData< MathVector< dim >, dim > > temperature_grad ()
 returns the export of temperature gradient
 
 ThermohalineFlow (const char *functions, const char *subsets)
 Constructor.
 
 ThermohalineFlow (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset)
 
void set_porosity (SmartPtr< CplUserData< number, dim > > user)
 sets the porosity
 
void set_porosity (number val)
 sets the porosity
 
void set_gravity (SmartPtr< CplUserData< MathVector< dim >, dim > > user)
 sets the gravity vector
 
void set_gravity (number vel_x)
 sets the gravity vector
 
void set_gravity (number vel_x, number vel_y)
 sets the gravity vector
 
void set_gravity (number vel_x, number vel_y, number vel_z)
 sets the gravity vector
 
void set_molecular_diffusion (SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user)
 sets the molecular diffusion tensor
 
void set_molecular_diffusion (number val)
 sets the molecular diffusion tensor
 
void set_thermal_conductivity (SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user)
 sets the thermal conductivity tensor
 
void set_thermal_conductivity (number val)
 sets the thermal conductivity tensor
 
void set_permeability (SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user)
 sets the permeability tensor
 
void set_permeability (number val)
 sets the permeability tensor
 
void set_viscosity (SmartPtr< CplUserData< number, dim > > user)
 sets the viscosity tensor
 
void set_viscosity (number val)
 sets the viscosity tensor
 
- 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_expl_elem (LocalVector &d, const LocalVector &u, 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_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_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 ()
 

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
 

Protected Member Functions

void compute_darcy_velocity_ip_std (MathVector< dim > &DarcyVel, const MathMatrix< dim, dim > &Permeability, number Viscosity, const MathVector< dim > &DensityTimesGravity, const MathVector< dim > &PressureGrad, bool compDeriv, MathVector< dim > *DarcyVel_c, MathVector< dim > *DarcyVel_p, MathVector< dim > *DarcyVel_T, const MathVector< dim > *DensityTimesGravity_c, const MathVector< dim > *DensityTimesGravity_T, const number *Viscosity_c, const MathVector< dim > *PressureGrad_p, size_t numSh)
 compute darcy velocity at one ip
 
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< FV1Geometry< TElem, dim >::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< number > > vvvDeriv[])
 computes the value of the brine mass fraction
 
template<typename TElem >
void ex_brine_grad (MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< FV1Geometry< TElem, dim >::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< MathVector< dim > > > vvvDeriv[])
 computes the value of the gradient of the brine mass fraction
 
template<typename TElem >
void ex_darcy_cons_grav (MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< FV1Geometry< TElem, dim >::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< MathVector< dim > > > vvvDeriv[])
 computes the darcy velocity using consistent gravity
 
template<typename TElem >
void ex_darcy_std (MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< FV1Geometry< TElem, dim >::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< MathVector< dim > > > vvvDeriv[])
 computes the darcy velocity using consistent gravity
 
template<typename TElem >
void ex_pressure_grad (MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< FV1Geometry< TElem, dim >::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< MathVector< dim > > > vvvDeriv[])
 computes the value of the gradient of the pressure
 
template<typename TElem >
void ex_temperature (number vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< FV1Geometry< TElem, dim >::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< number > > vvvDeriv[])
 computes the value of the brine mass fraction
 
template<typename TElem >
void ex_temperature_grad (MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< FV1Geometry< TElem, dim >::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< MathVector< dim > > > vvvDeriv[])
 computes the value of the gradient of the brine mass fraction
 
- 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)
 

Protected Attributes

SmartPtr< DataExport< number, dim > > m_exBrine
 Export for the brine mass fraction.
 
SmartPtr< DataExport< MathVector< dim >, dim > > m_exBrineGrad
 Export for the gradient of brine mass fraction.
 
SmartPtr< DataExport< MathVector< dim >, dim > > m_exDarcyVel
 Export for the Darcy velocity.
 
SmartPtr< DataExport< MathVector< dim >, dim > > m_exPressureGrad
 Export for the gradient of brine mass fraction.
 
SmartPtr< DataExport< number, dim > > m_exTemperature
 Export for the temperature.
 
SmartPtr< DataExport< MathVector< dim >, dim > > m_exTemperatureGrad
 Export for the gradient of temperature.
 
int m_partialAssMask_Conv
 
- 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
 

Private Types

typedef IElemDisc< TDomain > base_type
 Base class type.
 
typedef ThermohalineFlow< TDomain > this_type
 own type
 

Private Member Functions

template<typename TElem >
void add_def_A_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[])
 
template<typename TElem >
void add_def_M_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[])
 
template<typename TElem >
void add_jac_A_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[])
 
template<typename TElem >
void add_jac_M_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[])
 
template<typename TElem >
void add_rhs_elem (LocalVector &d, GridObject *elem, const MathVector< dim > vCornerCoords[])
 
template<typename TElem >
void add_sss_def_elem (LocalVector &d, const LocalVector &u, TElem *elem, const FV1Geometry< TElem, dim > &geo, size_t i, number intensity, number concentration, number temperature, number factor=1)
 adds contributions of a singular source or sink to the defect
 
template<typename TElem >
void add_sss_jac_elem (LocalMatrix &J, const LocalVector &u, TElem *elem, const FV1Geometry< TElem, dim > &geo, size_t i, number intensity, number concentration, number temperature, number factor=1)
 adds contributions of a singular source or sink to the matrix
 
template<typename TElem >
void fsh_elem_loop ()
 
void init (const char *functions)
 
virtual void prep_assemble_loop ()
 
template<typename TElem >
void prep_elem (const LocalVector &u, GridObject *elem, const ReferenceObjectID roid, const MathVector< dim > vCornerCoords[])
 
template<typename TElem >
void prep_elem_loop (const ReferenceObjectID roid, const int si)
 
void register_all_fv1_funcs ()
 
template<typename TElem >
void register_fv1_func ()
 
virtual bool requests_local_time_series ()
 returns if local time series is needed
 

Private Attributes

bool m_bConsGravity
 flag if using Consistent Gravity
 
number m_BoussinesqDensity
 Reference Density for the Boussinesq flow case (needed in Energy eq)
 
bool m_BoussinesqEnergy
 flag if using boussinesq flow
 
bool m_BoussinesqFlow
 flag if using boussinesq flow
 
bool m_BoussinesqTransport
 flag if using boussinesq transport
 
bool m_bVolStabDataActive
 whether the volume stabilization is active (i.e. m_spVolStabData is not SPNULL and active)
 
MathVector< dimm_Gravity
 constant Gravity, read in once
 
DataImport< MathVector< dim >, dimm_imBrineGradScvf
 
DataImport< number, dimm_imBrineScvf
 Data import for brine mass fraction at scvf ips.
 
DataImport< MathVector< dim >, dimm_imConstGravity
 Data import for gravity (must be constant in current implementation)
 
DataImport< MathVector< dim >, dimm_imDarcyVelScvf
 Data import for Darcy Velocity.
 
DataImport< number, dimm_imDensityScv
 Data import for density.
 
DataImport< number, dimm_imDensityScvf
 
DataImport< MathMatrix< dim, dim >, dimm_imDispersionScvf
 Data import for Dispersion.
 
number m_imHeatCapacityFluid
 
number m_imHeatCapacitySolid
 Data import for Heat capacities.
 
number m_imMassDensitySolid
 Data import for mass density of solid-phase.
 
DataImport< MathMatrix< dim, dim >, dimm_imMolDiffusionScvf
 Data import for molecular diffusion tensor.
 
DataImport< number, dimm_imOldDensityScv
 
DataImport< MathMatrix< dim, dim >, dimm_imPermeabilityScvf
 Data import for permeability tensor.
 
DataImport< number, dimm_imPorosityScv
 Data import for the reaction term.
 
DataImport< number, dimm_imPorosityScvf
 
DataImport< MathVector< dim >, dimm_imPressureGradScvf
 Data import for pressure gradient at scvf ips.
 
DataImport< MathVector< dim >, dimm_imTemperatureGradScvf
 Data import for temperature gradient at scvf ips.
 
DataImport< MathMatrix< dim, dim >, dimm_imThermalConductivityScvf
 Data import for thermal conductivity.
 
DataImport< number, dimm_imViscosityScvf
 Data import for viscosity.
 
SmartPtr< IConvectionShapes< dim > > m_spUpwind
 strategy to compute the upwind shapes
 
SmartPtr< IConvectionShapes< dim > > m_spUpwindEnergy
 strategy to compute the upwind shapes
 
SmartPtr< FlowVolStabData< TDomain > > m_spVolStabData
 the volume stabilization
 
SmartPtr< THSingularSourcesAndSinks< dim > > m_sss_mngr
 singular sources and sinks manager
 

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 size_t _T_ = 2
 abbreviation for local function: temperature
 

Detailed Description

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

Finite Volume Element Discretization for Thermohaline Flow.

This class implements the IElemDisc interface for the thermohaline flow equations. It is a system of three 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}) \partial_t \left( (\phi \rho C_f + (1-\phi) \rho_s C_s) \theta \right) - \nabla( \Lambda_c \nabla \theta - \rho C_f \vec{q} \theta) &= 0\\ \vec{q} &:= - \frac{K}{\mu}(\nabla p - \rho \vec{g}) \end{align*}

with

  • \( c \) unknown brine mass fraction
  • \( p \) unknown pressure
  • \( \theta \) unknown temperature

and given data

  • \( \phi(\vec{x}, t) \) Porosity
  • \( K(\vec{x}, t) \) Permeability tensor
  • \( \vec{g} \) constant Gravity field
  • \( D(\vec{q}, \vec{x}, t) := \phi(\vec{x}, t) D_d(\vec{x}, t) + D_m(\vec{q}) \) Diffusion-Dispersion tensor
  • \( D_m(\vec{q}) \) mechanical Dispersion tensor
  • \( D_d(\vec{x}, t) \) molecular Diffusion tensor (prop. to Tortuosity)
  • \( \mu(c) \) Viscosity
  • \( \rho(c)\) Density
  • \( \Lambda_c(\vec{x}, t) \) thermal Conductivity
  • \( C_s \) heat capacity of the solid-phase (rock)
  • \( C_f \) heat capacity of the fluid-phase
  • \( \rho_s \) mass density of the solid-phase (rock)

as well as the abbreviation

  • \( \vec{q} \) Darcy velocity

The first equation is usually referred to as the flow equation. The second equation is known as the transport equation. The third equation is related to the conservation of energy.

Template Parameters
TDomainDomain
TAlgebraAlgebra

Member Typedef Documentation

◆ base_type

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

Base class type.

◆ domain_type

template<typename TDomain >
typedef base_type::domain_type ug::d3f::ThermohalineFlow< TDomain >::domain_type

Domain type.

◆ position_type

template<typename TDomain >
typedef base_type::position_type ug::d3f::ThermohalineFlow< TDomain >::position_type

Position type.

◆ this_type

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

own type

Constructor & Destructor Documentation

◆ ThermohalineFlow() [1/2]

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

◆ ThermohalineFlow() [2/2]

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

Member Function Documentation

◆ add_def_A_elem()

◆ add_def_M_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::ThermohalineFlow< TDomain >::add_def_M_elem ( LocalVector d,
const LocalVector u,
GridObject elem,
const MathVector< dim vCornerCoords[] 
)
privatevirtual

◆ add_jac_A_elem()

◆ add_jac_M_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::ThermohalineFlow< TDomain >::add_jac_M_elem ( LocalMatrix J,
const LocalVector u,
GridObject elem,
const MathVector< dim vCornerCoords[] 
)
privatevirtual

◆ add_rhs_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::ThermohalineFlow< TDomain >::add_rhs_elem ( LocalVector d,
GridObject elem,
const MathVector< dim vCornerCoords[] 
)
privatevirtual

◆ add_sss_def_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::ThermohalineFlow< TDomain >::add_sss_def_elem ( LocalVector d,
const LocalVector u,
TElem *  elem,
const FV1Geometry< TElem, dim > &  geo,
size_t  i,
number  intensity,
number  concentration,
number  temperature,
number  factor = 1 
)
private

adds contributions of a singular source or sink to the defect

Parameters
dthe defect to update
ucurrent solution
elemthe element
geothe FV geometry for that element
iindex of the SCV
intensityintensity of the source/sink (premultiplied by the length for lines)
concentrationconcentration in the source
temperaturetemperature in the source
factorfactor to mult. the intensity

References ug::FV1Geometry_gen< typename TElem, int TWorldDim, bool TCondensed >::scv(), and UG_THROW.

◆ add_sss_jac_elem()

template<typename TDomain >
template<typename TElem >
void ug::d3f::ThermohalineFlow< TDomain >::add_sss_jac_elem ( LocalMatrix J,
const LocalVector u,
TElem *  elem,
const FV1Geometry< TElem, dim > &  geo,
size_t  i,
number  intensity,
number  concentration,
number  temperature,
number  factor = 1 
)
private

adds contributions of a singular source or sink to the matrix

Parameters
Jthe matrix to update
ucurrent solution
elemthe element
geothe FV geometry for that element
iindex of the SCV
intensityintensity of the source/sink (premultiplied by the length for lines)
concentrationconcentration in the source
temperaturetemperature in the source
factorfactor to mult. the intensity

References ug::FV1Geometry_gen< typename TElem, int TWorldDim, bool TCondensed >::scv(), and UG_THROW.

◆ brine()

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

returns the export of brine mass fracture

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

◆ brine_grad()

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

returns the export of brine mass fracture gradient

References ug::d3f::ThermohalineFlow< TDomain >::m_exBrineGrad.

◆ compute_darcy_velocity_ip_std()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::compute_darcy_velocity_ip_std ( MathVector< dim > &  DarcyVel,
const MathMatrix< dim, dim > &  Permeability,
number  Viscosity,
const MathVector< dim > &  DensityTimesGravity,
const MathVector< dim > &  PressureGrad,
bool  compDeriv,
MathVector< dim > *  DarcyVel_c,
MathVector< dim > *  DarcyVel_p,
MathVector< dim > *  DarcyVel_T,
const MathVector< dim > *  DensityTimesGravity_c,
const MathVector< dim > *  DensityTimesGravity_T,
const number Viscosity_c,
const MathVector< dim > *  PressureGrad_p,
size_t  numSh 
)
protected

compute darcy velocity at one ip

References ug::MatVecMult(), UG_ASSERT, ug::VecScale(), ug::VecSubtract(), and Viscosity().

◆ darcy_velocity()

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

returns the export of the darcy velocity

References ug::d3f::ThermohalineFlow< TDomain >::m_exDarcyVel.

◆ ex_brine()

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

◆ ex_brine_grad()

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

◆ ex_darcy_cons_grav()

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

◆ ex_darcy_std()

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

computes the darcy velocity using consistent gravity

References get(), ug::FV1Geometry_gen< typename TElem, int TWorldDim, bool TCondensed >::scvf_local_ips(), UG_THROW, and ug::VecScale().

◆ ex_pressure_grad()

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

◆ ex_temperature()

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

◆ ex_temperature_grad()

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

◆ fsh_elem_loop()

template<typename TDomain >
template<typename TElem >
void ug::d3f::ThermohalineFlow< TDomain >::fsh_elem_loop ( )
privatevirtual

◆ init()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::init ( const char *  functions)
private

◆ prep_assemble_loop()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::prep_assemble_loop ( )
privatevirtual

◆ prep_elem()

◆ prep_elem_loop()

◆ prepare_setting()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::prepare_setting ( const std::vector< LFEID > &  vLfeID,
bool  bNonRegularGrid 
)
virtual

type of trial space for each function used

Implements ug::IElemDiscBase< typename TDomain >.

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

◆ pressure_grad()

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

returns the export of brine mass fracture

References ug::d3f::ThermohalineFlow< TDomain >::m_exPressureGrad.

◆ register_all_fv1_funcs()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::register_all_fv1_funcs ( )
private

◆ register_fv1_func()

template<typename TDomain >
template<typename TElem >
void ug::d3f::ThermohalineFlow< TDomain >::register_fv1_func ( )
private

◆ requests_local_time_series()

template<typename TDomain >
bool ug::d3f::ThermohalineFlow< TDomain >::requests_local_time_series ( )
privatevirtual

returns if local time series is needed

Reimplemented from ug::IElemDiscBase< typename TDomain >.

◆ set_boussinesq_density()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_boussinesq_density ( number  den)

sets reference density used for boussinesq flow

◆ set_boussinesq_flow()

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

sets usage of boussinesq approximation for flow equation

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

◆ set_boussinesq_transport()

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

sets usage of boussinesq approximation for transport equation

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

◆ set_consistent_gravity()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_consistent_gravity ( bool  bUse)

sets usage of consistent gravity

◆ set_density()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_density ( SmartPtr< CplUserData< number, dim > >  data)

◆ set_dispersion()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_dispersion ( SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > >  data)

set dispersion

◆ set_gravity() [1/7]

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_gravity ( number  vel_x)

sets the gravity vector

This method sets the Gravity. (Unit is \( \frac{m}{s^2} \))

References UG_THROW.

◆ set_gravity() [2/7]

void ug::d3f::ThermohalineFlow< Domain1d >::set_gravity ( number  vel_x)

◆ set_gravity() [3/7]

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_gravity ( number  vel_x,
number  vel_y 
)

sets the gravity vector

This method sets the Gravity. (Unit is \( \frac{m}{s^2} \))

References UG_THROW.

◆ set_gravity() [4/7]

void ug::d3f::ThermohalineFlow< Domain2d >::set_gravity ( number  vel_x,
number  vel_y 
)

◆ set_gravity() [5/7]

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_gravity ( number  vel_x,
number  vel_y,
number  vel_z 
)

sets the gravity vector

This method sets the Gravity. (Unit is \( \frac{m}{s^2} \))

References UG_THROW.

◆ set_gravity() [6/7]

void ug::d3f::ThermohalineFlow< Domain3d >::set_gravity ( number  vel_x,
number  vel_y,
number  vel_z 
)

◆ set_gravity() [7/7]

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

sets the gravity vector

This method sets the Gravity. (Unit is \( \frac{m}{s^2} \))

◆ set_heat_capacity_fluid()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_heat_capacity_fluid ( number  data)

sets the heat capacity of the fluid-phase

This method sets the heat capacity of the fluid-phase.

◆ set_heat_capacity_solid()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_heat_capacity_solid ( number  data)

sets the heat capacity of the solid-phase

This method sets the heat capacity of the solid-phase.

◆ set_mass_density_solid()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_mass_density_solid ( number  data)

sets the mass density of the solid-phase

This method sets the mass density of the solid-phase.

◆ set_molecular_diffusion() [1/2]

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

sets the molecular diffusion tensor

This method sets the molecular Diffusion tensor.

References make_sp().

◆ set_molecular_diffusion() [2/2]

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

sets the molecular diffusion tensor

This method sets the molecular Diffusion tensor.

◆ set_partial_velocity()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_partial_velocity ( int  mask)
inline

◆ set_permeability() [1/2]

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

sets the permeability tensor

This method sets the Permeability tensor.

References make_sp().

◆ set_permeability() [2/2]

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

sets the permeability tensor

This method sets the Permeability tensor.

◆ set_porosity() [1/2]

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

sets the porosity

This method sets the Porosity. (Dimensionless)

References make_sp().

◆ set_porosity() [2/2]

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

sets the porosity

This method sets the Porosity. (Dimensionless)

◆ set_scheidegger_dispersion()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_scheidegger_dispersion ( const number  alphaLong,
const number  alphaTrans 
)

◆ set_sss_manager()

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

set singular sources and sinks

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

◆ set_thermal_conductivity() [1/2]

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_thermal_conductivity ( number  val)

sets the thermal conductivity tensor

This method sets the thermal conductivity tensor.

References make_sp().

◆ set_thermal_conductivity() [2/2]

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_thermal_conductivity ( SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > >  user)

sets the thermal conductivity tensor

This method sets the thermal conductivity tensor.

◆ set_upwind()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_upwind ( SmartPtr< IConvectionShapes< dim > >  shape)

sets the type of upwind

This method sets the procedure that compute the upwinded flux.

◆ set_upwind_energy()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_upwind_energy ( SmartPtr< IConvectionShapes< dim > >  shape)

sets the type of upwind for the energy equation

This method sets the procedure that compute the upwinded flux.

◆ set_viscosity() [1/2]

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

sets the viscosity tensor

This method sets the Viscosity.

References make_sp().

◆ set_viscosity() [2/2]

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_viscosity ( SmartPtr< CplUserData< number, dim > >  user)

sets the viscosity tensor

This method sets the Viscosity.

References SmartPtr< typename T, template< class TT > class FreePolicy >::valid().

◆ set_volume_stabilization()

template<typename TDomain >
void ug::d3f::ThermohalineFlow< TDomain >::set_volume_stabilization ( SmartPtr< FlowVolStabData< TDomain > >  volStabData)

sets usage of volume stabilization

References SPNULL.

◆ sss_manager()

template<typename TDomain >
SmartPtr< THSingularSourcesAndSinks< dim > > ug::d3f::ThermohalineFlow< TDomain >::sss_manager ( )
inline

get singular sources and sinks

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

◆ temperature()

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

returns the export of temperature

References ug::d3f::ThermohalineFlow< TDomain >::m_exTemperature.

◆ temperature_grad()

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

returns the export of temperature gradient

References ug::d3f::ThermohalineFlow< TDomain >::m_exTemperatureGrad.

Member Data Documentation

◆ _C_

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

abbreviation for local function: brine mass fraction

◆ _P_

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

abbreviation for local function: pressure

◆ _T_

template<typename TDomain >
const size_t ug::d3f::ThermohalineFlow< TDomain >::_T_ = 2
staticprivate

abbreviation for local function: temperature

◆ dim

template<typename TDomain >
const int ug::d3f::ThermohalineFlow< TDomain >::dim = base_type::dim
static

World dimension.

◆ m_bConsGravity

template<typename TDomain >
bool ug::d3f::ThermohalineFlow< TDomain >::m_bConsGravity
private

flag if using Consistent Gravity

◆ m_BoussinesqDensity

template<typename TDomain >
number ug::d3f::ThermohalineFlow< TDomain >::m_BoussinesqDensity
private

Reference Density for the Boussinesq flow case (needed in Energy eq)

◆ m_BoussinesqEnergy

template<typename TDomain >
bool ug::d3f::ThermohalineFlow< TDomain >::m_BoussinesqEnergy
private

flag if using boussinesq flow

◆ m_BoussinesqFlow

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

flag if using boussinesq flow

Referenced by ug::d3f::ThermohalineFlow< TDomain >::set_boussinesq_flow().

◆ m_BoussinesqTransport

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

flag if using boussinesq transport

Referenced by ug::d3f::ThermohalineFlow< TDomain >::set_boussinesq_transport().

◆ m_bVolStabDataActive

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

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

◆ m_exBrine

template<typename TDomain >
SmartPtr<DataExport<number, dim> > ug::d3f::ThermohalineFlow< TDomain >::m_exBrine
protected

Export for the brine mass fraction.

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

◆ m_exBrineGrad

template<typename TDomain >
SmartPtr<DataExport<MathVector<dim>, dim> > ug::d3f::ThermohalineFlow< TDomain >::m_exBrineGrad
protected

Export for the gradient of brine mass fraction.

Referenced by ug::d3f::ThermohalineFlow< TDomain >::brine_grad().

◆ m_exDarcyVel

template<typename TDomain >
SmartPtr<DataExport<MathVector<dim>, dim> > ug::d3f::ThermohalineFlow< TDomain >::m_exDarcyVel
protected

Export for the Darcy velocity.

Referenced by ug::d3f::ThermohalineFlow< TDomain >::darcy_velocity().

◆ m_exPressureGrad

template<typename TDomain >
SmartPtr<DataExport<MathVector<dim>, dim> > ug::d3f::ThermohalineFlow< TDomain >::m_exPressureGrad
protected

Export for the gradient of brine mass fraction.

Referenced by ug::d3f::ThermohalineFlow< TDomain >::pressure_grad().

◆ m_exTemperature

template<typename TDomain >
SmartPtr<DataExport<number, dim> > ug::d3f::ThermohalineFlow< TDomain >::m_exTemperature
protected

Export for the temperature.

Referenced by ug::d3f::ThermohalineFlow< TDomain >::temperature().

◆ m_exTemperatureGrad

template<typename TDomain >
SmartPtr<DataExport<MathVector<dim>, dim> > ug::d3f::ThermohalineFlow< TDomain >::m_exTemperatureGrad
protected

Export for the gradient of temperature.

Referenced by ug::d3f::ThermohalineFlow< TDomain >::temperature_grad().

◆ m_Gravity

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

constant Gravity, read in once

◆ m_imBrineGradScvf

template<typename TDomain >
DataImport<MathVector<dim>, dim> ug::d3f::ThermohalineFlow< TDomain >::m_imBrineGradScvf
private

◆ m_imBrineScvf

template<typename TDomain >
DataImport<number, dim> ug::d3f::ThermohalineFlow< TDomain >::m_imBrineScvf
private

Data import for brine mass fraction at scvf ips.

◆ m_imConstGravity

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

Data import for gravity (must be constant in current implementation)

◆ m_imDarcyVelScvf

template<typename TDomain >
DataImport<MathVector<dim>, dim> ug::d3f::ThermohalineFlow< TDomain >::m_imDarcyVelScvf
private

Data import for Darcy Velocity.

◆ m_imDensityScv

template<typename TDomain >
DataImport<number, dim> ug::d3f::ThermohalineFlow< TDomain >::m_imDensityScv
private

Data import for density.

◆ m_imDensityScvf

template<typename TDomain >
DataImport<number, dim> ug::d3f::ThermohalineFlow< TDomain >::m_imDensityScvf
private

◆ m_imDispersionScvf

template<typename TDomain >
DataImport<MathMatrix<dim,dim>, dim> ug::d3f::ThermohalineFlow< TDomain >::m_imDispersionScvf
private

Data import for Dispersion.

◆ m_imHeatCapacityFluid

template<typename TDomain >
number ug::d3f::ThermohalineFlow< TDomain >::m_imHeatCapacityFluid
private

◆ m_imHeatCapacitySolid

template<typename TDomain >
number ug::d3f::ThermohalineFlow< TDomain >::m_imHeatCapacitySolid
private

Data import for Heat capacities.

◆ m_imMassDensitySolid

template<typename TDomain >
number ug::d3f::ThermohalineFlow< TDomain >::m_imMassDensitySolid
private

Data import for mass density of solid-phase.

◆ m_imMolDiffusionScvf

template<typename TDomain >
DataImport<MathMatrix<dim, dim>, dim> ug::d3f::ThermohalineFlow< TDomain >::m_imMolDiffusionScvf
private

Data import for molecular diffusion tensor.

◆ m_imOldDensityScv

template<typename TDomain >
DataImport<number, dim> ug::d3f::ThermohalineFlow< TDomain >::m_imOldDensityScv
private

◆ m_imPermeabilityScvf

template<typename TDomain >
DataImport<MathMatrix<dim, dim>, dim> ug::d3f::ThermohalineFlow< TDomain >::m_imPermeabilityScvf
private

Data import for permeability tensor.

◆ m_imPorosityScv

template<typename TDomain >
DataImport<number, dim> ug::d3f::ThermohalineFlow< TDomain >::m_imPorosityScv
private

Data import for the reaction term.

◆ m_imPorosityScvf

template<typename TDomain >
DataImport<number, dim> ug::d3f::ThermohalineFlow< TDomain >::m_imPorosityScvf
private

◆ m_imPressureGradScvf

template<typename TDomain >
DataImport<MathVector<dim>, dim> ug::d3f::ThermohalineFlow< TDomain >::m_imPressureGradScvf
private

Data import for pressure gradient at scvf ips.

◆ m_imTemperatureGradScvf

template<typename TDomain >
DataImport<MathVector<dim>, dim> ug::d3f::ThermohalineFlow< TDomain >::m_imTemperatureGradScvf
private

Data import for temperature gradient at scvf ips.

◆ m_imThermalConductivityScvf

template<typename TDomain >
DataImport<MathMatrix<dim, dim>, dim> ug::d3f::ThermohalineFlow< TDomain >::m_imThermalConductivityScvf
private

Data import for thermal conductivity.

◆ m_imViscosityScvf

template<typename TDomain >
DataImport<number, dim> ug::d3f::ThermohalineFlow< TDomain >::m_imViscosityScvf
private

Data import for viscosity.

◆ m_partialAssMask_Conv

template<typename TDomain >
int ug::d3f::ThermohalineFlow< TDomain >::m_partialAssMask_Conv
protected

◆ m_spUpwind

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

strategy to compute the upwind shapes

◆ m_spUpwindEnergy

template<typename TDomain >
SmartPtr<IConvectionShapes<dim> > ug::d3f::ThermohalineFlow< TDomain >::m_spUpwindEnergy
private

strategy to compute the upwind shapes

◆ m_spVolStabData

template<typename TDomain >
SmartPtr<FlowVolStabData<TDomain> > ug::d3f::ThermohalineFlow< TDomain >::m_spVolStabData
private

the volume stabilization

◆ m_sss_mngr

template<typename TDomain >
SmartPtr<THSingularSourcesAndSinks<dim> > ug::d3f::ThermohalineFlow< TDomain >::m_sss_mngr
private

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