ug4
|
Obstacle Class for Obstacle in normal direction. More...
#include <obstacle_in_normal_dir.h>
Classes | |
struct | obsDoFData |
struct to store data for a specific obstacle DoF More... | |
Public Types | |
typedef TAlgebra | algebra_type |
Algebra type. | |
typedef IObstacleConstraint< TDomain, TAlgebra > | base_type |
Base class type. | |
typedef TDomain | domain_type |
Domain type. | |
typedef GridFunction< TDomain, TAlgebra > | function_type |
Type of grid function. | |
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. | |
![]() | |
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. | |
![]() | |
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. | |
![]() | |
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 | |
ObstacleInNormalDir () | |
constructor | |
ObstacleInNormalDir (const function_type &u) | |
void | preprocess () |
preprocess is useful to attach the normals for every obstacle DoF | |
void | restrict_obs_values () |
restricts the obstacle values to a coarser grid in a multigrid hierarchy | |
~ObstacleInNormalDir () | |
Destructor. | |
![]() | |
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 | |
void | reset_active_dofs () |
resets the vector storing the active dofs | |
virtual int | type () const |
returns the type of the constraints | |
virtual | ~IObstacleConstraint () |
Destructor. | |
![]() | |
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) | |
![]() | |
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 | |
Static Public Attributes | |
static const int | dim = domain_type::dim |
World dimension. | |
![]() | |
static const int | dim = domain_type::dim |
world Dimension | |
Private Member Functions | |
template<typename TElem , typename TIterator > | |
void | adjust_sol_and_cor_elem (TIterator iterBegin, TIterator iterEnd, value_type &sol_i, value_type &c_i, bool &dofIsAdmissible, const DoFIndex &dof) |
void | transform_eulerian_coord_sys (MathVector< dim > transformedONB[], const MathVector< dim > &firstTransformedBaseVec) |
Private Attributes | |
map< DoFIndex, number > | m_mObstacleValues |
map storing the obstacle values for every obstacle dof (key) | |
ConstSmartPtr< DoFDistribution > | m_spDD |
pointer to the DofDistribution on the whole domain | |
ConstSmartPtr< TDomain > | m_spDomain |
pointer to the domain | |
vector< DoFIndex > | m_vActiveDofs |
store the dofs, which satisfy the constraints with equality | |
vector< int > | m_vObsSubsets |
stores the subset-indices of the obstacle subsets | |
Additional Inherited Members | |
![]() | |
ConstSmartPtr< DoFDistribution > | dd (const GridLevel &gl) const |
returns the level dof distribution | |
![]() | |
map< DoFIndex, number > | m_mObstacleValues |
map to store obstacle values with its corresponding DoFs | |
vector< DoFIndex > | m_vActiveDofs |
stores the dofs, which satisfy the constraints with equality | |
vector< int > | m_vObsSubsets |
stores the subset-indices of the obstacle subsets | |
![]() | |
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 | |
Obstacle Class for Obstacle in normal direction.
Scalar obstacle are described by constraints of the form
u * n <= upObs (cf. 'set_upper_obstacle' in 'IObstacleConstraint')
and
u * n >= lowObs (cf. 'set_lower_obstacle' in 'IObstacleConstraint')
where u is the solution vector and n the normal vector to the boundary-face/side.
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'.
typedef TAlgebra ug::ObstacleInNormalDir< TDomain, TAlgebra >::algebra_type |
Algebra type.
typedef IObstacleConstraint<TDomain,TAlgebra> ug::ObstacleInNormalDir< TDomain, TAlgebra >::base_type |
Base class type.
typedef TDomain ug::ObstacleInNormalDir< TDomain, TAlgebra >::domain_type |
Domain type.
typedef GridFunction<TDomain, TAlgebra> ug::ObstacleInNormalDir< TDomain, TAlgebra >::function_type |
Type of grid function.
typedef algebra_type::matrix_type ug::ObstacleInNormalDir< TDomain, TAlgebra >::matrix_type |
Matrix type.
typedef domain_type::position_type ug::ObstacleInNormalDir< TDomain, TAlgebra >::position_type |
Type of position coordinates (e.g. position_type)
typedef vector_type::value_type ug::ObstacleInNormalDir< TDomain, TAlgebra >::value_type |
Value type.
typedef algebra_type::vector_type ug::ObstacleInNormalDir< TDomain, TAlgebra >::vector_type |
Vector type.
|
inline |
constructor for an obstacle in normal direction defined on some subset(s)
References ug::ObstacleInNormalDir< TDomain, TAlgebra >::m_spDD, ug::ObstacleInNormalDir< TDomain, TAlgebra >::m_spDomain, and UG_LOG.
|
inline |
constructor
|
inline |
Destructor.
|
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().
|
virtual |
projects the i-th index of the solution onto the admissible set and adjusts the correction
Implements ug::IObstacleConstraint< TDomain, TAlgebra >.
References ug::DimensionOfSubset(), UG_LOG, and UG_THROW.
|
private |
References ug::BlockRef(), ug::CollectCornerCoordinates(), and ug::ReferenceElementProvider::get().
|
virtual |
preprocess is useful to attach the normals for every obstacle DoF
Reimplemented from ug::IObstacleConstraint< TDomain, TAlgebra >.
|
virtual |
restricts the obstacle values to a coarser grid in a multigrid hierarchy
Implements ug::IObstacleConstraint< TDomain, TAlgebra >.
|
private |
References ug::MatHouseholder(), ug::VecLength(), ug::VecScale(), and ug::VecScaleAdd().
|
static |
World dimension.
|
private |
map storing the obstacle values for every obstacle dof (key)
|
private |
pointer to the DofDistribution on the whole domain
Referenced by ug::ObstacleInNormalDir< TDomain, TAlgebra >::ObstacleInNormalDir().
|
private |
pointer to the domain
Referenced by ug::ObstacleInNormalDir< TDomain, TAlgebra >::ObstacleInNormalDir().
|
private |
store the dofs, which satisfy the constraints with equality
|
private |
stores the subset-indices of the obstacle subsets