#include <cell2D.hh>
Public Types | |
typedef uint | index_type |
Public Member Functions | |
Quad3d (Quad &cntr, const MappingQuad3d &map, const Z2 dir=0) | |
virtual Quad3d * | child (uint i) |
virtual const Quad3d * | child (uint i) const |
bool | hasChildren () const |
Real3d | chi (Real xi, Real eta) const |
Real3d | elemMap (const Real2d &coord_local) const |
Element map from point local coordinates in 2D. | |
Real3d | jacobianColumn (uint i, const Real xi, const Real eta) const |
Real | faceElement (const Real xi, const Real eta) const |
virtual Real | gramDeterminantRoot (const Real xi, const Real eta) const |
virtual Real | lineElement (const Real xi, const uint edge) const |
Real3d | n0 (Real xi, Real eta) const |
Real3d | vertex (uint i) const |
Returns the coordinates of the ith vertex. | |
Real3d | center () const |
Returns the center of the cell. | |
const MappingQuad3d * | map () const |
Quad3d * | clone (Quad &cntr, MappingQuad3d *map) const |
Returns a copy of itself. | |
virtual uint | dim () const |
Z2 | dir () const |
Quad & | connector () const |
Returns the quadrilateral connector (topology) | |
Level< 2 > | level () const |
virtual Real3d | elemMap (const Real3d &coord_local) const |
virtual Real3d | elemMap (const Real coord_local) const |
Element map from point local coordinates in 1D. | |
Static Public Attributes | |
static uint | MAX_LEVEL |
Protected Member Functions | |
virtual std::ostream & | info (std::ostream &os) const |
Returns information in an output stream. | |
Quad3d * | createChild_ (Quad &cntr, const Index &idx, bool flag) const |
Protected Attributes | |
MappingQuad3d * | map_ |
Pointer to the element map. | |
Quad & | cntr_ |
Reference to the quadrilateral connector (topology) | |
Index | idx_ |
Index of this element. | |
A quadrilateral cell in 3D.
If a quad is subdivided, two or four new quads are created. This happens automatically, if a child is requested, depending on the strategy that has been set. If two or four children are created depends on the chosen strategy. The default strategy is the create four children.
The directions of the edges in the quadrilateral on the coarsest level are externally defined, see Quad::rho(). The edges of quadrilaterals which are created by subdivision are always counter-clockwise.
concepts::Quad3d::Quad3d | ( | Quad & | cntr, |
const MappingQuad3d & | map, | ||
const Z2 | dir = 0 |
||
) |
Constructor. Takes the connector cntr
and the element map map
and creates a cell.
cntr | Topological information of the quadrilateral |
map | Element map of the quadrilateral |
dir | Direction of the normal vector when looking at the quad from the side that the counterclockwise orientation of the nodes can be seen (dir = 0: normal points back to the point of view, dir = 1: normal points in view direction). |
|
inlinevirtual |
Returns the center of the cell.
Implements concepts::Cell2.
Evaluates the element map. Maps a point from the the reference coordinates in [0,1]2 onto the physical coordinates.
xi | |
eta |
Returns a child. If no children exist, four new children are created. The quadrilateral is cut into four new quadrilaterals by joining the midpoints of its edges.
i | Index of the child to be returned. |
Implements concepts::Cell2.
Returns a child. If no children exist, none are created and 0 is returned.
i | Index of the child to be returned. |
Implements concepts::Cell2.
|
inline |
|
inlinevirtualinherited |
Returns the quadrilateral connector (topology)
Implements concepts::Cell2.
|
protected |
Non-virtual form of the private createChild_() method. Can be called by inheritated classes.
Sets the subdivision strategy of this quad.
If the parameter is set to 0 (or if the method is called without parameter) the strategy is set to the default (if not already set). The default subdivision strategy is subdivision into 4 children.
strategy | Pointer to an instance of a subdivision strategy. |
StrategyChange | if the change is not allowed (the change is not allowed if there are children present or the topological strategy is set). Returns the subdivision strategy of this quad. |
If you want to find check against another strategy use
quad.getStrategy() == QuadSubdiv2V::instance()
Implements concepts::QuadNd.
|
inline |
Element map from point local coordinates in 1D.
Reimplemented in concepts::SphericalSurface3d, concepts::Sphere3d, concepts::Edge1d, and concepts::Edge2d.
Element map from point local coordinates in 2D.
Implements concepts::Cell2.
Element map from point local coordinates in 3D
Reference element is 2D, third component is omitted.
Reimplemented from concepts::Cell.
Returns the face element for the transformation at xi
, eta
|
inlinevirtual |
Returns the square root of the Gram determinant.
The Gram determinant is given by
where A is the Jacobian of the mapping. Note that for a Quad2d
this is the same as the determinant of the Jacobian.
Implements concepts::QuadNd.
|
protectedvirtual |
Returns information in an output stream.
Implements concepts::Cell.
Computes the Jacobian for xi
, eta
. The Jacobian of a cell in the initial mesh is computed by the element map. The Jacobian of a subdivided cell is computed as follows. Let be the subdivision map in the reference coordinates (0,1)2 and , the element maps of K and K' respectively. Then,
The subdivision map H in reference coordinates is
where , . is the level of the cell with respect to the cell in the initial mesh. The derivative of H is .
Then, the Jacobian of is
The part (without H) is computed by the element map and the part is computed in jacobian()
.
TODO: improve/revise comment
|
inlineinherited |
Implements concepts::QuadNd.
|
inline |
Returns the normal vector on a point of the quad.
Returns the coordinates of the ith vertex.
Implements concepts::Cell2.
|
protectedinherited |
|
protectedinherited |
|
protected |