Plugins
Loading...
Searching...
No Matches
ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra > Class Template Reference

Linker for the Darcy velocity in a domain with a free surface specified by the level-set. More...

#include <ls_darcy_velocity_linker.h>

+ Inheritance diagram for ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >:

Public Member Functions

template<int refDim>
void eval_and_deriv (MathVector< dim > vDarcyVel[], const MathVector< dim > vGlobIP[], number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< refDim > vLocIP[], const size_t nip, LocalVector *u, bool bDeriv, int s, std::vector< std::vector< MathVector< dim > > > vvvDeriv[], const MathMatrix< refDim, dim > *vJT=NULL) const
 
void evaluate (MathVector< dim > &value, const MathVector< dim > &globIP, number time, int si) const
 
template<int refDim>
void evaluate (MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< refDim > vLocIP[], const size_t nip, LocalVector *u, const MathMatrix< refDim, dim > *vJT=NULL) const
 
 LSDarcyVelocityLinker (SmartPtr< extrapol_type > spExtrapol)
 
void set_density (number val)
 
void set_density (SmartPtr< CplUserData< number, dim > > data)
 set density import
 
void set_gravity (SmartPtr< CplUserData< MathVector< dim >, dim > > data)
 set gravity import
 
void set_permeability (number val)
 
void set_permeability (SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > data)
 set permeability import
 
void set_pressure_gradient (SmartPtr< CplUserData< MathVector< dim >, dim > > data)
 set pressure gradient import
 
void set_viscosity (number val)
 
void set_viscosity (SmartPtr< CplUserData< number, dim > > data)
 set permeability import
 
- Public Member Functions inherited from ug::StdDataLinker< LSDarcyVelocityLinker< TDomain, TAlgebra >, MathVector< TDomain::dim >, TDomain::dim >
virtual void check_setup () const
 
virtual void compute (LocalVector *u, GridObject *elem, const MathVector< dim > vCornerCoords[], bool bDeriv=false)
 
virtual void compute (LocalVectorTimeSeries *u, GridObject *elem, const MathVector< dim > vCornerCoords[], bool bDeriv=false)
 
virtual bool continuous () const
 
void evaluate (TData vValue[], const MathVector< dim > vGlobIP[], number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< refDim > vLocIP[], const size_t nip, LocalVector *u, const MathMatrix< refDim, dim > *vJT=NULL) const
 
virtual SmartPtr< ICplUserData< dim > > needed_data (size_t i)
 
virtual size_t num_input () const
 
virtual size_t num_needed_data () const
 
virtual void operator() (TData &value, const MathVector< dim > &globIP, number time, int si) const
 
virtual void operator() (TData vValue[], const MathVector< dim > vGlobIP[], number time, int si, const size_t nip) const
 
virtual bool requires_grid_fct () const
 
virtual void set_function_pattern (ConstSmartPtr< FunctionPattern > fctPatt)
 
virtual void set_input (size_t i, SmartPtr< ICplUserData< dim > > input, SmartPtr< UserDataInfo > info)
 
void set_num_input (size_t num)
 
virtual bool zero_derivative () const
 
bool zero_derivative (size_t i) const
 
- Public Member Functions inherited from ug::StdUserData< StdDataLinker< TImpl, TData, dim >, TData, dim, void, DependentUserData< TData, dim > >
virtual void operator() (TData vValue[], const MathVector< dim > vGlobIP[], number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< 1 > vLocIP[], const size_t nip, LocalVector *u, const MathMatrix< 1, dim > *vJT=NULL) const
 
virtual void operator() (TData vValue[], const MathVector< dim > vGlobIP[], number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< 1 > vLocIP[], const size_t nip, LocalVector *u, const MathMatrix< 1, dim > *vJT=NULL) const
 
virtual void operator() (TData vValue[], const MathVector< dim > vGlobIP[], number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< 2 > vLocIP[], const size_t nip, LocalVector *u, const MathMatrix< 2, dim > *vJT=NULL) const
 
virtual void operator() (TData vValue[], const MathVector< dim > vGlobIP[], number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< 2 > vLocIP[], const size_t nip, LocalVector *u, const MathMatrix< 2, dim > *vJT=NULL) const
 
virtual void operator() (TData vValue[], const MathVector< dim > vGlobIP[], number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< 3 > vLocIP[], const size_t nip, LocalVector *u, const MathMatrix< 3, dim > *vJT=NULL) const
 
virtual void operator() (TData vValue[], const MathVector< dim > vGlobIP[], number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< 3 > vLocIP[], const size_t nip, LocalVector *u, const MathMatrix< 3, dim > *vJT=NULL) const
 
- Public Member Functions inherited from ug::CplUserData< typename TData, int dim, typename TRet >
bool defined (size_t s, size_t ip) const
 
size_t num_ip (size_t s) const
 
size_t num_series () const
 
void register_storage_callback (DataImport< TData, dim > *obj, void(DataImport< TData, dim >::*func)())
 
void unregister_storage_callback (DataImport< TData, dim > *obj)
 
TData & value (size_t s, size_t ip)
 
const TData & value (size_t s, size_t ip) const
 
TData * values (size_t s)
 
const TData * values (size_t s) const
 
 ~CplUserData ()
 
- Public Member Functions inherited from ug::ICplUserData< int dim >
bool at_current_time (size_t s) const
 
void clear ()
 
virtual bool constant () const
 
int dim_local_ips () const
 
 ICplUserData ()
 
const MathVector< dim > & ip (size_t s, size_t ip) const
 
const MathVector< dim > * ips (size_t s) const
 
const MathVector< ldim > & local_ip (size_t s, size_t ip) const
 
const MathVector< ldim > * local_ips (size_t s) const
 
size_t num_ip (size_t s) const
 
size_t num_series () const
 
virtual void prepare_element (GridObject *e, const MathVector< dim > vCornerCoords[])
 
size_t register_local_ip_series (const MathVector< ldim > *vPos, const size_t numIP, bool bMayChange=true)
 
size_t register_local_ip_series (const MathVector< ldim > *vPos, const size_t numIP, const int timePointSpec, bool bMayChange=true)
 
void set_global_ips (size_t s, const MathVector< dim > *vPos, size_t numIP)
 
void set_local_ips (const size_t seriesId, const MathVector< ldim > *vPos, const size_t numIP)
 
void set_subset (int si)
 
void set_time_point (const size_t seriesId, const int timePointSpec)
 
void set_time_point (size_t timePoint)
 
void set_times (const std::vector< number > &vTime)
 
int subset () const
 
number time () const
 
number time (size_t s) const
 
size_t time_point ()
 
size_t time_point (size_t s) const
 
int time_point_specification (size_t s) const
 
virtual void update_dof_sizes (const LocalIndices &ind)
 
virtual ~ICplUserData ()
 
- Public Member Functions inherited from ug::UserDataInfo
const FunctionGroupfunction_group () const
 
const FunctionIndexMappingmap () const
 
size_t num_fct () const
 
const char * obj_name ()
 
void set_obj_name (const char *name)
 
virtual ~UserDataInfo ()
 
- Public Member Functions inherited from ug::UserData< typename TData, int dim, typename TRet >
int get_dim () const
 
TRet operator() (TData &value, const MathVector< dim > &globIP, number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< 1 > &locIP, LocalVector *u) const
 
TRet operator() (TData &value, const MathVector< dim > &globIP, number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< 1 > &locIP, LocalVector *u) const
 
TRet operator() (TData &value, const MathVector< dim > &globIP, number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< 2 > &locIP, LocalVector *u) const
 
TRet operator() (TData &value, const MathVector< dim > &globIP, number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< 2 > &locIP, LocalVector *u) const
 
TRet operator() (TData &value, const MathVector< dim > &globIP, number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< 3 > &locIP, LocalVector *u) const
 
TRet operator() (TData &value, const MathVector< dim > &globIP, number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< 3 > &locIP, LocalVector *u) const
 
virtual void operator() (TData &value, const MathVector< dim > &globIP, number time, int si, Vertex *vrt) const
 
std::string type () const
 

Protected Attributes

SmartPtr< DependentUserData< number, dim > > m_spDDensity
 
SmartPtr< CplUserData< number, dim > > m_spDensity
 
SmartPtr< DependentUserData< MathVector< dim >, dim > > m_spDGravity
 
SmartPtr< DependentUserData< MathMatrix< dim, dim >, dim > > m_spDPermeability
 
SmartPtr< DependentUserData< MathVector< dim >, dim > > m_spDPressureGrad
 
SmartPtr< DependentUserData< number, dim > > m_spDViscosity
 
SmartPtr< extrapol_typem_spExtrapolation
 extrapolation by the level-set function
 
SmartPtr< CplUserData< MathVector< dim >, dim > > m_spGravity
 
SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > m_spPermeability
 
SmartPtr< CplUserData< MathVector< dim >, dim > > m_spPressureGrad
 
SmartPtr< CplUserData< number, dim > > m_spViscosity
 
- Protected Attributes inherited from ug::StdDataLinker< LSDarcyVelocityLinker< TDomain, TAlgebra >, MathVector< TDomain::dim >, TDomain::dim >
std::vector< FunctionIndexMappingm_vMap
 
std::vector< SmartPtr< ICplUserData< dim > > > m_vspICplUserData
 
std::vector< SmartPtr< UserDataInfo > > m_vspUserDataInfo
 
std::vector< std::vector< size_t > > m_vvSeriesID
 
- Protected Attributes inherited from ug::ICplUserData< int dim >
int m_defaultTimePoint
 
int m_locPosDim
 
std::vector< const MathVector< 1 > * > m_pvLocIP1d
 
std::vector< const MathVector< 2 > * > m_pvLocIP2d
 
std::vector< const MathVector< 3 > * > m_pvLocIP3d
 
int m_si
 
size_t m_timePoint
 
std::vector< bool > m_vMayChange
 
std::vector< size_t > m_vNumIP
 
std::vector< numberm_vTime
 
std::vector< int > m_vTimePoint
 
std::vector< const MathVector< dim > * > m_vvGlobPos
 
- Protected Attributes inherited from ug::UserDataInfo
FunctionGroup m_fctGrp
 
FunctionIndexMapping m_map
 
SmartPtr< char > m_objName
 

Static Protected Attributes

static const size_t _DP_ = 4
 import for pressure gradient
 
static const size_t _G_ = 3
 import for gravity
 
static const size_t _K_ = 0
 import for permeability
 
static const size_t _MU_ = 1
 import for viscosity
 
static const size_t _RHO_ = 2
 import for density
 

Private Types

typedef TAlgebra algebra_type
 
typedef StdDataLinker< LSDarcyVelocityLinker< domain_type, algebra_type >, MathVector< dim >, dimbase_type
 
typedef TDomain domain_type
 
typedef IInterfaceExtrapolation< domain_type, algebra_typeextrapol_type
 

Private Member Functions

int elem_cut (GridObject *elem, int si, const MathVector< dim > vCornerCoords[], number time) const
 

Static Private Attributes

static const int dim = domain_type::dim
 

Additional Inherited Members

- Public Types inherited from ug::CplUserData< typename TData, int dim, typename TRet >
typedef ICplUserData< dim > base_type
 
- Public Types inherited from ug::UserData< typename TData, int dim, typename TRet >
typedef TData data_type
 
typedef TRet return_type
 
- Protected Member Functions inherited from ug::StdDataLinker< LSDarcyVelocityLinker< TDomain, TAlgebra >, MathVector< TDomain::dim >, TDomain::dim >
void eval_deriv (LocalVector *u, GridObject *elem, const MathVector< dim > vCornerCoords[], bool bDeriv=false)
 
void eval_deriv (LocalVectorTimeSeries *u, GridObject *elem, const MathVector< dim > vCornerCoords[], bool bDeriv=false)
 
TImpl & getImpl ()
 
const TImpl & getImpl () const
 
virtual void global_ips_changed (const size_t seriesID, const MathVector< dim > *vPos, const size_t numIP)
 
size_t input_common_fct (size_t i, size_t fct) const
 
size_t input_num_fct (size_t i) const
 
virtual void local_ip_series_added (const size_t seriesID)
 
virtual void local_ip_series_to_be_cleared ()
 
virtual void local_ips_changed (const size_t seriesID, const size_t newNumIP)
 
size_t series_id (size_t i, size_t s) const
 
- Protected Member Functions inherited from ug::StdUserData< StdDataLinker< TImpl, TData, dim >, TData, dim, void, DependentUserData< TData, dim > >
TImpl & getImpl ()
 
const TImpl & getImpl () const
 
- Protected Member Functions inherited from ug::CplUserData< typename TData, int dim, typename TRet >
void call_storage_callback () const
 
void check_series (size_t s) const
 
void check_series_ip (size_t s, size_t ip) const
 
virtual void value_storage_changed (const size_t seriesID)
 
- Protected Member Functions inherited from ug::ICplUserData< int dim >
void check_s (size_t s) const
 
void check_s_ip (size_t s, size_t ip) const
 
std::vector< const MathVector< 1 > * > & get_local_ips (Int2Type< 1 >)
 
const std::vector< const MathVector< 1 > * > & get_local_ips (Int2Type< 1 >) const
 
std::vector< const MathVector< 2 > * > & get_local_ips (Int2Type< 2 >)
 
const std::vector< const MathVector< 2 > * > & get_local_ips (Int2Type< 2 >) const
 
std::vector< const MathVector< 3 > * > & get_local_ips (Int2Type< 3 >)
 
const std::vector< const MathVector< 3 > * > & get_local_ips (Int2Type< 3 >) const
 

Detailed Description

template<typename TDomain, typename TAlgebra>
class ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >

Linker for the Darcy velocity in a domain with a free surface specified by the level-set.

This linker computes the Darcy velocity \( \mathbf{q} = - \frac{\mathbf{K}}{\mu} ( \nabla p - \rho \mathbf{g} ) \), where

  • \( \mathbf{K} \) permeability
  • \( \mu \) viscosity
  • \( \rho \) density
  • \( \mathbf{g} \) gravity
  • \( \nabla p \) pressure gradient

are input parameters. This linker can be composed as a tree of other linkers, but is computationally cheaper.

Note that the input parameters should be properly extrapolated. This linker merely cuts off the velocity above the interface.

Member Typedef Documentation

◆ algebra_type

template<typename TDomain , typename TAlgebra >
typedef TAlgebra ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::algebra_type
private

◆ base_type

template<typename TDomain , typename TAlgebra >
typedef StdDataLinker<LSDarcyVelocityLinker<domain_type, algebra_type>, MathVector<dim>, dim> ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::base_type
private

◆ domain_type

template<typename TDomain , typename TAlgebra >
typedef TDomain ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::domain_type
private

◆ extrapol_type

template<typename TDomain , typename TAlgebra >
typedef IInterfaceExtrapolation<domain_type, algebra_type> ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::extrapol_type
private

Constructor & Destructor Documentation

◆ LSDarcyVelocityLinker()

template<typename TDomain , typename TAlgebra >
ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::LSDarcyVelocityLinker ( SmartPtr< extrapol_type spExtrapol)
inline

Member Function Documentation

◆ elem_cut()

template<typename TDomain , typename TAlgebra >
int ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::elem_cut ( GridObject elem,
int  si,
const MathVector< dim vCornerCoords[],
number  time 
) const
inlineprivate

◆ eval_and_deriv()

template<typename TDomain , typename TAlgebra >
template<int refDim>
void ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::eval_and_deriv ( MathVector< dim vDarcyVel[],
const MathVector< dim vGlobIP[],
number  time,
int  si,
GridObject elem,
const MathVector< dim vCornerCoords[],
const MathVector< refDim >  vLocIP[],
const size_t  nip,
LocalVector u,
bool  bDeriv,
int  s,
std::vector< std::vector< MathVector< dim > > >  vvvDeriv[],
const MathMatrix< refDim, dim > *  vJT = NULL 
) const
inline

References ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::_DP_, ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::_G_, ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::_K_, ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::_MU_, ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::_RHO_, ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::elem_cut(), ug::StdDataLinker< LSDarcyVelocityLinker< TDomain, TAlgebra >, MathVector< TDomain::dim >, TDomain::dim >::input_common_fct(), ug::ICplUserData< int dim >::ip(), ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::m_spDDensity, ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::m_spDensity, ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::m_spDGravity, ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::m_spDPermeability, ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::m_spDPressureGrad, ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::m_spDViscosity, ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::m_spGravity, ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::m_spPermeability, ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::m_spPressureGrad, ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::m_spViscosity, ug::MatScale(), ug::MatVecMult(), s, ug::ICplUserData< int dim >::time(), UG_ASSERT, ug::VecScale(), ug::VecScaleAppend(), ug::VecSubtract(), and ug::StdDataLinker< LSDarcyVelocityLinker< TDomain, TAlgebra >, MathVector< TDomain::dim >, TDomain::dim >::zero_derivative().

◆ evaluate() [1/2]

template<typename TDomain , typename TAlgebra >
void ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::evaluate ( MathVector< dim > &  value,
const MathVector< dim > &  globIP,
number  time,
int  si 
) const
inline

References UG_THROW.

◆ evaluate() [2/2]

template<typename TDomain , typename TAlgebra >
template<int refDim>
void ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::evaluate ( MathVector< dim vValue[],
const MathVector< dim vGlobIP[],
number  time,
int  si,
GridObject elem,
const MathVector< dim vCornerCoords[],
const MathVector< refDim >  vLocIP[],
const size_t  nip,
LocalVector u,
const MathMatrix< refDim, dim > *  vJT = NULL 
) const
inline

◆ set_density() [1/2]

template<typename TDomain , typename TAlgebra >
void ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::set_density ( number  val)
inline

◆ set_density() [2/2]

◆ set_gravity()

◆ set_permeability() [1/2]

template<typename TDomain , typename TAlgebra >
void ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::set_permeability ( number  val)
inline

◆ set_permeability() [2/2]

◆ set_pressure_gradient()

◆ set_viscosity() [1/2]

template<typename TDomain , typename TAlgebra >
void ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::set_viscosity ( number  val)
inline

◆ set_viscosity() [2/2]

Member Data Documentation

◆ _DP_

template<typename TDomain , typename TAlgebra >
const size_t ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::_DP_ = 4
staticprotected

◆ _G_

template<typename TDomain , typename TAlgebra >
const size_t ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::_G_ = 3
staticprotected

◆ _K_

template<typename TDomain , typename TAlgebra >
const size_t ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::_K_ = 0
staticprotected

◆ _MU_

template<typename TDomain , typename TAlgebra >
const size_t ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::_MU_ = 1
staticprotected

◆ _RHO_

template<typename TDomain , typename TAlgebra >
const size_t ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::_RHO_ = 2
staticprotected

◆ dim

◆ m_spDDensity

◆ m_spDensity

◆ m_spDGravity

◆ m_spDPermeability

◆ m_spDPressureGrad

◆ m_spDViscosity

◆ m_spExtrapolation

template<typename TDomain , typename TAlgebra >
SmartPtr<extrapol_type> ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::m_spExtrapolation
protected

extrapolation by the level-set function

Referenced by ug::LevelSet::LSDarcyVelocityLinker< TDomain, TAlgebra >::elem_cut().

◆ m_spGravity

◆ m_spPermeability

◆ m_spPressureGrad

◆ m_spViscosity


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