Public Types | |
enum | inactivTypes { ACTIVE = 0 , INACTIVE , INACTIVEPLUS , SWITCH_ON , SWITCH_OFF , DIVIDE , MAX_TYPE } |
Public Member Functions | |
CellCondition () | |
CellCondition (const enum inactivTypes type, Set< Attribute > attributes=Set< Attribute >()) | |
CellCondition (const CellCondition &cnd) | |
Copy constructor. | |
enum inactivTypes | type () const |
Returns the type of the cell condition. | |
concepts::Set< Attribute > | attributes () const |
Returns the attribute set. | |
std::string | typeStr () const |
Return the type of the cell condition as output string. | |
virtual CellCondition & | operator= (const CellCondition &i) |
Assignment operator. | |
bool | active (const Connector2 &cell, const Connector0 &vertex) const |
Protected Member Functions | |
virtual std::ostream & | info (std::ostream &os) const |
Returns information in an output stream. | |
Definition at line 22 of file cellConditions.hh.
Different types to handle inactive cells
ACTIVE is the default type.
INACTIVE means, that these cells are in no support of any basis function. Basis functions are cut on boundary of these cells. are no degrees of freedom inside the cell.
INACTIVEPLUS means, that additionally the degrees of freedom on the boundary of the cell are set to passive.
SWITCH_ON builds only the degrees of freedom specified in the set of attributes. Inner degrees of freedom are not built.
SWITCH_OFF builds every degree of freedom except for the ones specified in the attributes set.
DIVIDE takes the degrees of freedom on a facette (edge or face) in the interior such that the degrees of freedom are doubled.
SWITCH_ON and SWITCH_OFF only work for degrees of freedom on the boundary of the cell. For inner degrees of freedom consider the class BuildH1InnerTColumnsLinTrunk in /hp2D/buildH1TColumns.hh. Consider that one cell cannot have two different CellCondition objects. The last inserted one will be the one CellConditions.add(...) is keeping.
REMARK: Be carefull with edge and vertex attributes. If an edge with attribute "a" has a vertex with no attribute, than the vertex degree of freedom will be treated the same way as the edge (SWITCH_ON or SWITCH_OFF). However, this does not apply for adjacent cells with the same vertex. If the vertex in the adjacent cell is to be treated in the same then the vertex itself needs to have the attribute "a". On the other hand, if the vertex has its own attribute, then it is independent of the edge. This method implies that you must respect a further consistency condition within each cell with cellCondition: If ever two adjacent edges have different non zero attributes, the vertex in between them needs its own attribute. By violating this condition you will produce an assertion error. If one of the edge attributes is zero (i.e. the edge has no attribute) the vertex will get the attribute of the other edge or else will also have no attribute if the two edges do not have attributes. Note that this is done in each cell separately, thus there are only two edges a vertex.
Examples for the usage of CellCondition can be found in /geometry/testsuite/testCC.cc or in /hp2D/testsuite/cellconditionsTest.cc.
Definition at line 74 of file cellConditions.hh.
concepts::CellCondition::CellCondition | ( | ) |
Default constructor. Initializes the type to ACTIVE.
concepts::CellCondition::CellCondition | ( | const enum inactivTypes | type, |
Set< Attribute > | attributes = Set< Attribute >() |
||
) |
Constructor.
bool concepts::CellCondition::active | ( | const Connector2 & | cell, |
const Connector0 & | vertex | ||
) | const |
Returns true, if the vertex
in cell
is active with respect to the cell conditions.
|
inline |
Returns the attribute set.
Definition at line 95 of file cellConditions.hh.
|
protectedvirtual |
Returns information in an output stream.
Reimplemented from concepts::OutputOperator.
|
inline |
Returns the type of the cell condition.
Definition at line 92 of file cellConditions.hh.