Loading [MathJax]/extensions/tex2jax.js
ug4
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
ug::ScalarLowerObstacle< TDomain, TAlgebra > Class Template Reference

Scalar Lower Obstacles. More...

#include <scalar_obstacle.h>

+ Inheritance diagram for ug::ScalarLowerObstacle< TDomain, TAlgebra >:

Public Types

typedef TAlgebra algebra_type
 Algebra type.
 
typedef IObstacleConstraint< TDomain, TAlgebra > base_type
 Base class type.
 
typedef GridFunction< TDomain, TAlgebra > function_type
 Type of grid function.
 
typedef algebra_type::matrix_type matrix_type
 Matrix type.
 
typedef vector_type::value_type value_type
 Value type.
 
typedef algebra_type::vector_type vector_type
 Vector type.
 
- Public Types inherited from ug::IObstacleConstraint< TDomain, TAlgebra >
typedef TAlgebra algebra_type
 Algebra type.
 
typedef IDomainConstraint< TDomain, TAlgebra > base_type
 Base Type.
 
typedef TDomain domain_type
 Type of domain.
 
typedef algebra_type::matrix_type matrix_type
 Matrix type.
 
typedef domain_type::position_type position_type
 Type of position coordinates (e.g. position_type)
 
typedef vector_type::value_type value_type
 Value type.
 
typedef algebra_type::vector_type vector_type
 Vector type.
 
- Public Types inherited from ug::IDomainConstraint< TDomain, TAlgebra >
typedef TAlgebra algebra_type
 Algebra type.
 
typedef TDomain domain_type
 Domain Type.
 
typedef algebra_type::matrix_type matrix_type
 Type of algebra matrix.
 
typedef algebra_type::vector_type vector_type
 Type of algebra vector.
 
- Public Types inherited from ug::IConstraint< TAlgebra >
typedef TAlgebra algebra_type
 Algebra type.
 
typedef algebra_type::matrix_type matrix_type
 Type of algebra matrix.
 
typedef algebra_type::vector_type vector_type
 Type of algebra vector.
 

Public Member Functions

void adjust_defect_to_constraint (vector_type &d)
 the defect needs to be adjusted for the active indices (those indices, which are in contact)
 
void adjust_sol_and_cor (value_type &sol_i, value_type &c_i, bool &dofIsActive, const DoFIndex &dof)
 projects the i-th index of the solution onto the admissible set and adjusts the correction
 
void restrict_obs_values ()
 restricts the obstacle values to a coarser grid in a multigrid hierarchy
 
 ScalarLowerObstacle ()
 default constructor
 
 ScalarLowerObstacle (const function_type &u)
 constructor for a scalar obstacle
 
 ~ScalarLowerObstacle ()
 Destructor.
 
- Public Member Functions inherited from ug::IObstacleConstraint< TDomain, TAlgebra >
void active_dofs (vector< DoFIndex > &vActiveDoFs)
 returns the vector storing the active dofs
 
void add (number value, const char *function)
 adds a constant value as dirichlet condition for a function on subsets and on whole domain
 
void add (number value, const char *function, const char *subsets)
 
void add (SmartPtr< UserData< MathVector< dim >, dim > > func, const char *functions)
 adds a user-defined vector as dirichlet condition for a vector-function on subsets and on whole domain
 
void add (SmartPtr< UserData< MathVector< dim >, dim > > func, const char *functions, const char *subsets)
 
void add (SmartPtr< UserData< number, dim > > func, const char *function)
 adds a user-defined value as dirichlet condition for a function on subsets and on whole domain
 
void add (SmartPtr< UserData< number, dim > > func, const char *function, const char *subsets)
 
void add (SmartPtr< UserData< number, dim, bool > > func, const char *function)
 adds a lua callback (cond and non-cond)
 
void add (SmartPtr< UserData< number, dim, bool > > func, const char *function, const char *subsets)
 
void adjust_defect (vector_type &d, const vector_type &u, ConstSmartPtr< DoFDistribution > dd, int type, number time=0.0, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol=NULL, const std::vector< number > *vScaleMass=NULL, const std::vector< number > *vScaleStiff=NULL)
 sets a zero value in the defect for all dirichlet indices
 
void adjust_jacobian (matrix_type &J, const vector_type &u, ConstSmartPtr< DoFDistribution > dd, int type, number time=0.0, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol=NULL, const number s_a0=1.0)
 sets a unity row for all dirichlet indices
 
void adjust_linear (matrix_type &A, vector_type &b, ConstSmartPtr< DoFDistribution > dd, int type, number time=0.0)
 sets unity rows in A and dirichlet values in right-hand side b
 
virtual void adjust_prolongation (matrix_type &P, ConstSmartPtr< DoFDistribution > ddFine, ConstSmartPtr< DoFDistribution > ddCoarse, int type, number time=0.0)
 sets constraints in prolongation
 
virtual void adjust_restriction (matrix_type &R, ConstSmartPtr< DoFDistribution > ddCoarse, ConstSmartPtr< DoFDistribution > ddFine, int type, number time=0.0)
 sets constraints in restriction
 
void adjust_rhs (vector_type &b, const vector_type &u, ConstSmartPtr< DoFDistribution > dd, int type, number time=0.0)
 sets the dirichlet value in the right-hand side
 
void adjust_solution (vector_type &u, ConstSmartPtr< DoFDistribution > dd, int type, number time=0.0)
 sets the dirichlet value in the solution for all dirichlet indices
 
void init ()
 
 IObstacleConstraint ()
 constructor
 
 IObstacleConstraint (const GridFunction< TDomain, TAlgebra > &u)
 constructor for an obstacle defined on some subset(s)
 
bool is_obs_dof (const DoFIndex &dof)
 checks if a given dof is in an obstacle subset
 
virtual void preprocess ()
 
void reset_active_dofs ()
 resets the vector storing the active dofs
 
virtual int type () const
 returns the type of the constraints
 
virtual ~IObstacleConstraint ()
 Destructor.
 
- Public Member Functions inherited from ug::IDomainConstraint< TDomain, TAlgebra >
SmartPtr< ApproximationSpace< TDomain > > approximation_space ()
 returns approximation space
 
ConstSmartPtr< ApproximationSpace< TDomain > > approximation_space () const
 returns approximation space
 
virtual SmartPtr< IErrEstData< TDomain > > err_est_data ()
 returns the pointer to the error estimator data object (or NULL)
 
bool err_est_enabled () const
 find out whether or not a posteriori error estimation is to be performed for this disc
 
 IDomainConstraint ()
 constructor
 
virtual void set_approximation_space (SmartPtr< ApproximationSpace< TDomain > > approxSpace)
 sets the approximation space
 
void set_ass_tuner (ConstSmartPtr< AssemblingTuner< TAlgebra > > spAssemblingTuner=NULL)
 sets the assemble adapter for the constraints
 
void set_error_estimator (SmartPtr< IErrEstData< TDomain > > ee)
 sets the pointer to an error estimator data object (or NULL)
 
- Public Member Functions inherited from ug::IConstraint< TAlgebra >
virtual void adjust_correction (vector_type &c, ConstSmartPtr< DoFDistribution > dd, int type, number time=0.0)
 
virtual void adjust_error (const vector_type &u, ConstSmartPtr< DoFDistribution > dd, int type, number time=0.0, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol=SPNULL, const std::vector< number > *vScaleMass=NULL, const std::vector< number > *vScaleStiff=NULL)
 adjusts the assembled error estimator values in the attachments according to the constraint
 
virtual void adjust_linear_residual (vector_type &d, const vector_type &u, ConstSmartPtr< DoFDistribution > dd, int type, number time=0.0)
 adjust linear residual
 
virtual void adjust_prolongation (vector_type &uFine, GridLevel fineLvl, const vector_type &uCoarse, GridLevel coarseLvl, int type)
 sets the constraints in a solution vector
 
virtual void adjust_restriction (vector_type &uCoarse, GridLevel coarseLvl, const vector_type &uFine, GridLevel fineLvl, int type)
 sets the constraints in a solution vector
 
virtual void modify_solution (SmartPtr< VectorTimeSeries< vector_type > > vSolMod, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, ConstSmartPtr< DoFDistribution > dd, int type)
 modify_solution for instationary case
 
virtual void modify_solution (vector_type &uMod, const vector_type &u, ConstSmartPtr< DoFDistribution > dd, int type)
 modifies solution vector before calling the assembling routine
 
virtual ~IConstraint ()
 virtual destructor
 

Private Attributes

map< DoFIndex, numberm_mObstacleValues
 map storing the obstacle values for every obstacle dof (key)
 
vector< DoFIndexm_vActiveDofs
 store the dofs, which satisfy the constraints with equality
 

Additional Inherited Members

- Static Public Attributes inherited from ug::IObstacleConstraint< TDomain, TAlgebra >
static const int dim = domain_type::dim
 world Dimension
 
- Protected Member Functions inherited from ug::IDomainConstraint< TDomain, TAlgebra >
ConstSmartPtr< DoFDistributiondd (const GridLevel &gl) const
 returns the level dof distribution
 
- Protected Attributes inherited from ug::IObstacleConstraint< TDomain, TAlgebra >
map< DoFIndex, numberm_mObstacleValues
 map to store obstacle values with its corresponding DoFs
 
vector< DoFIndexm_vActiveDofs
 stores the dofs, which satisfy the constraints with equality
 
vector< int > m_vObsSubsets
 stores the subset-indices of the obstacle subsets
 
- Protected Attributes inherited from ug::IDomainConstraint< TDomain, TAlgebra >
SmartPtr< ApproximationSpace< TDomain > > m_spApproxSpace
 Approximation Space.
 
ConstSmartPtr< AssemblingTuner< TAlgebra > > m_spAssTuner
 Assemble adapter.
 
SmartPtr< IErrEstData< TDomain > > m_spErrEstData
 error estimation object associated to the element discretization
 

Detailed Description

template<typename TDomain, typename TAlgebra>
class ug::ScalarLowerObstacle< TDomain, TAlgebra >

Scalar Lower Obstacles.

Scalar obstacle are described by constraints of the form

u <= upObs    (cf. 'set_upper_obstacle' in 'IObstacleConstraint')

and

u >= lowObs   (cf. 'set_lower_obstacle' in 'IObstacleConstraint')

where u is the solution vector. Here, 'upObs' and 'lowObs' are user-defined functions, which need to be of the same size as the function of unknowns u.

Those obstacle functions can be used in combination with projected preconditioners. They should be passed to the preconditioner by 'IProjPreconditioner::set_obstacle_constraint'.

Member Typedef Documentation

◆ algebra_type

template<typename TDomain , typename TAlgebra >
typedef TAlgebra ug::ScalarLowerObstacle< TDomain, TAlgebra >::algebra_type

Algebra type.

◆ base_type

template<typename TDomain , typename TAlgebra >
typedef IObstacleConstraint<TDomain,TAlgebra> ug::ScalarLowerObstacle< TDomain, TAlgebra >::base_type

Base class type.

◆ function_type

template<typename TDomain , typename TAlgebra >
typedef GridFunction<TDomain, TAlgebra> ug::ScalarLowerObstacle< TDomain, TAlgebra >::function_type

Type of grid function.

◆ matrix_type

template<typename TDomain , typename TAlgebra >
typedef algebra_type::matrix_type ug::ScalarLowerObstacle< TDomain, TAlgebra >::matrix_type

Matrix type.

◆ value_type

template<typename TDomain , typename TAlgebra >
typedef vector_type::value_type ug::ScalarLowerObstacle< TDomain, TAlgebra >::value_type

Value type.

◆ vector_type

template<typename TDomain , typename TAlgebra >
typedef algebra_type::vector_type ug::ScalarLowerObstacle< TDomain, TAlgebra >::vector_type

Vector type.

Constructor & Destructor Documentation

◆ ScalarLowerObstacle() [1/2]

template<typename TDomain , typename TAlgebra >
ug::ScalarLowerObstacle< TDomain, TAlgebra >::ScalarLowerObstacle ( const function_type u)
inline

constructor for a scalar obstacle

◆ ScalarLowerObstacle() [2/2]

template<typename TDomain , typename TAlgebra >
ug::ScalarLowerObstacle< TDomain, TAlgebra >::ScalarLowerObstacle ( )
inline

default constructor

◆ ~ScalarLowerObstacle()

template<typename TDomain , typename TAlgebra >
ug::ScalarLowerObstacle< TDomain, TAlgebra >::~ScalarLowerObstacle ( )
inline

Destructor.

Member Function Documentation

◆ adjust_defect_to_constraint()

template<typename TDomain , typename TAlgebra >
void ug::ScalarLowerObstacle< TDomain, TAlgebra >::adjust_defect_to_constraint ( vector_type d)
virtual

the defect needs to be adjusted for the active indices (those indices, which are in contact)

Implements ug::IObstacleConstraint< TDomain, TAlgebra >.

References ug::BlockRef().

◆ adjust_sol_and_cor()

template<typename TDomain , typename TAlgebra >
void ug::ScalarLowerObstacle< TDomain, TAlgebra >::adjust_sol_and_cor ( value_type sol_i,
value_type c_i,
bool &  dofIsActive,
const DoFIndex dof 
)
virtual

projects the i-th index of the solution onto the admissible set and adjusts the correction

Implements ug::IObstacleConstraint< TDomain, TAlgebra >.

References ug::BlockRef().

◆ restrict_obs_values()

template<typename TDomain , typename TAlgebra >
void ug::ScalarLowerObstacle< TDomain, TAlgebra >::restrict_obs_values ( )
virtual

restricts the obstacle values to a coarser grid in a multigrid hierarchy

Implements ug::IObstacleConstraint< TDomain, TAlgebra >.

Member Data Documentation

◆ m_mObstacleValues

template<typename TDomain , typename TAlgebra >
map<DoFIndex, number> ug::IObstacleConstraint< TDomain, TAlgebra >::m_mObstacleValues
private

map storing the obstacle values for every obstacle dof (key)

◆ m_vActiveDofs

template<typename TDomain , typename TAlgebra >
vector<DoFIndex> ug::IObstacleConstraint< TDomain, TAlgebra >::m_vActiveDofs
private

store the dofs, which satisfy the constraints with equality


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