concepts::Quad2d Class Reference
A 2D cell: quadrilateral. More...
#include <cell2D.hh>
Public Types | |
typedef uint | index_type |
Public Member Functions | |
Real3d | center () const |
Returns the center of the cell. More... | |
Real2d | chi (Real xi, Real eta) const |
Evaluates the element map. More... | |
virtual Quad2d * | child (uint i) |
Returns a child. More... | |
virtual const Quad2d * | child (uint i) const |
Returns a child. More... | |
const Quad2d * | child (uint i, Real xi, Real eta, Real &xiC, Real &etaC) const |
Returns a child. More... | |
Quad2d * | clone (Quad &cntr, MappingQuad2d *map) const |
Returns a copy of itself. More... | |
Quad & | connector () const |
Returns the quadrilateral connector (topology) More... | |
virtual uint | dim () const |
Returns the dimension of the space. More... | |
MappingEdge2d * | edgeMap (uint edge) const |
Returns the mapping of an edge. More... | |
virtual Real3d | elemMap (const Real coord_local) const |
Element map from point local coordinates in 1D. More... | |
Real3d | elemMap (const Real2d &coord_local) const |
Element map from point local coordinates in 2D. More... | |
virtual Real3d | elemMap (const Real3d &coord_local) const |
Element map from point local coordinates in 3D. More... | |
const Quad2dSubdivision * | getStrategy () const |
Returns the subdivision strategy of this quad. More... | |
virtual Real | gramDeterminantRoot (const Real xi, const Real eta) const |
Returns the square root of the Gram determinant. More... | |
bool | hasChildren () const |
MapReal2d | inverseLaplace (const Real xi, const Real eta) const |
Computes the second partial derivatives of the inverse Mapping. More... | |
MapReal2d | jacobian (const concepts::Real2d &p) const |
MapReal2d | jacobian (const Real xi, const Real eta) const |
Computes the Jacobian for xi , eta . More... | |
Real | jacobianDeterminant (const Real xi, const Real eta) const |
Returns the determinant of the Jacobian for xi , eta . More... | |
MapReal2d | jacobianInverse (const Real xi, const Real eta) const |
Returns the inverse of the Jacobian for xi , eta . More... | |
Level< 2 > | level () const |
Returns the level of the cell. More... | |
virtual Real | lineElement (const Real xi, const uint edge) const |
Computes the differential element on an edge. More... | |
const MappingQuad2d * | map () const |
Returns the stored element map (same for all family related to one ancestor). More... | |
Quad2d (Quad &cntr, const MappingQuad2d &map) | |
Constructor. More... | |
virtual void | setStrategy (const Quad2dSubdivision *strategy=0) throw (StrategyChange) |
Sets the subdivision strategy of this quad. More... | |
Real3d | vertex (uint i) const |
Returns the coordinates of the ith vertex. More... | |
virtual | ~Quad2d () |
Static Public Attributes | |
static uint | MAX_LEVEL |
Protected Member Functions | |
Quad2d * | createChild_ (Quad &cntr, const Index &idx, bool flag) const |
Non-virtual form of the private createChild_() method. More... | |
virtual std::ostream & | info (std::ostream &os) const |
Returns information in an output stream. More... | |
Quad2d (Quad &cntr, MappingQuad2d *map, const Index &idx) | |
Private constructor. More... | |
Protected Attributes | |
Quad & | cntr_ |
Reference to the quadrilateral connector (topology) More... | |
Index | idx_ |
Index of this element. More... | |
MappingQuad2d * | map_ |
Pointer to the element map. More... | |
Private Member Functions | |
virtual Quad2d * | createChild_ (Quad &cntr, const Index &idx) const |
Creates and returns a child. More... | |
Quad2d & | operator= (const Quad2d &other) |
Quad2d (const Quad2d &other) | |
Private Attributes | |
Quad2d * | chld_ |
Pointer to the first child. More... | |
concepts::Array< Edge2d * > | edge_ |
Quad2d * | lnk_ |
Pointer to a sibling. More... | |
const Quad2dSubdivision * | subdivStrategy_ |
Subdivision strategy for the quadrilateral. More... | |
Friends | |
class | Quad2dSubdiv2H |
class | Quad2dSubdiv2V |
class | Quad2dSubdiv4 |
class | Quad2dSubdivision |
Detailed Description
A 2D cell: quadrilateral.
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.
- See also
- Cell for more information on cells in a mesh.
- Examples
- meshes.cc.
Member Typedef Documentation
◆ index_type
|
inherited |
Constructor & Destructor Documentation
◆ Quad2d() [1/3]
concepts::Quad2d::Quad2d | ( | Quad & | cntr, |
const MappingQuad2d & | map | ||
) |
Constructor.
Takes the connector cntr
and the element map map
and creates a cell.
- Parameters
-
cntr Topological information of the quadrilateral map Element map of the quadrilateral
◆ ~Quad2d()
|
virtual |
◆ Quad2d() [2/3]
|
private |
◆ Quad2d() [3/3]
|
protected |
Private constructor.
Member Function Documentation
◆ center()
|
inlinevirtual |
Returns the center of the cell.
Implements concepts::Cell2.
◆ chi()
Evaluates the element map.
Maps a point from the the reference coordinates in [0,1]2 onto the physical coordinates.
- Returns
- Point in 2D in physical coordinates.
- Parameters
-
xi eta
◆ child() [1/3]
|
virtual |
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.
- Parameters
-
i Index of the child to be returned.
Implements concepts::Cell2.
◆ child() [2/3]
|
virtual |
Returns a child.
If no children exist, none are created and 0 is returned.
- Parameters
-
i Index of the child to be returned.
Implements concepts::Cell2.
◆ child() [3/3]
|
inline |
Returns a child.
If not a valid children exist, none are created and 0 is returned. FIXME: xiC and etaC are useless parameters
- Parameters
-
i Index of the child to be returned. xi,eta local coordinates, where the child is located xiC,etaC local coordinates in the child
◆ clone()
|
inline |
◆ connector()
|
inlinevirtualinherited |
Returns the quadrilateral connector (topology)
Implements concepts::Cell2.
◆ createChild_() [1/2]
|
privatevirtual |
Creates and returns a child.
Can only called by the object itself or friend classes. Its virtual, so that inheritated classes with additional properties can create a child of the same kind.
◆ createChild_() [2/2]
|
protected |
Non-virtual form of the private createChild_() method.
Can be called by inheritated classes.
◆ dim()
|
inlinevirtual |
Returns the dimension of the space.
Implements concepts::QuadNd.
◆ edgeMap()
MappingEdge2d* concepts::Quad2d::edgeMap | ( | uint | edge | ) | const |
Returns the mapping of an edge.
Construct a cell for an edge of quad
with
Edge2d edge(*quad.connector().edge(0), *quad.edgeMap(0));
The edgeMap can be useful for egde integrals in a 2D quadrilateral mesh.
◆ elemMap() [1/3]
Element map from point local coordinates in 1D.
Reimplemented in concepts::Edge2d, concepts::Edge1d, concepts::Sphere3d, and concepts::SphericalSurface3d.
◆ elemMap() [2/3]
Element map from point local coordinates in 2D.
Implements concepts::Cell2.
◆ elemMap() [3/3]
Element map from point local coordinates in 3D.
Reference element is 2D, third component is omitted.
Reimplemented from concepts::Cell.
◆ getStrategy()
|
inline |
Returns the subdivision strategy of this quad.
If you want to find check against another strategy use
quad.getStrategy() == QuadSubdiv2V::instance()
◆ gramDeterminantRoot()
|
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.
◆ hasChildren()
◆ info()
|
protectedvirtual |
Returns information in an output stream.
Implements concepts::Cell.
◆ inverseLaplace()
Computes the second partial derivatives of the inverse Mapping.
Those from a cell in the initial mesh are computed by the element map itsself. For a subdivided cell, with the use of the subdivision map , the values are computed by the element map at the Point . For notation check out the documentation of the method jacobian()
of this class.
xi
, eta
◆ jacobian() [1/2]
MapReal2d concepts::Quad2d::jacobian | ( | const concepts::Real2d & | p | ) | const |
◆ jacobian() [2/2]
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()
.
◆ jacobianDeterminant()
◆ jacobianInverse()
◆ level()
|
inlineinherited |
◆ lineElement()
Computes the differential element on an edge.
xi
stand for one of the variables
,
depending on the edge.
Implements concepts::QuadNd.
◆ map()
|
inline |
◆ operator=()
◆ setStrategy()
|
virtual |
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.
- Parameters
-
strategy Pointer to an instance of a subdivision strategy.
- Exceptions
-
StrategyChange if the change is not allowed (the change is not allowed if there are children present or the topological strategy is set).
◆ vertex()
|
virtual |
Returns the coordinates of the ith vertex.
Implements concepts::Cell2.
Friends And Related Function Documentation
◆ Quad2dSubdiv2H
|
friend |
◆ Quad2dSubdiv2V
|
friend |
◆ Quad2dSubdiv4
|
friend |
◆ Quad2dSubdivision
|
friend |
Member Data Documentation
◆ chld_
|
private |
◆ cntr_
|
protectedinherited |
◆ edge_
|
mutableprivate |
◆ idx_
|
protectedinherited |
◆ lnk_
|
private |
◆ map_
|
protected |
◆ MAX_LEVEL
◆ subdivStrategy_
|
private |
Subdivision strategy for the quadrilateral.
The documentation for this class was generated from the following file:
- geometry/cell2D.hh