NeoPZ
|
Defines the topology of a Pyramid element. Topology Sides 0 to 4 are vertices, sides 5 to 12 are lines, side 13 are quadrilateral (pyramid base), sides 14 to 17 are triangles and side 18 is the pyramid. More...
#include <tpzpyramid.h>
Public Types | |
enum | { NSides, NCornerNodes, Dimension, NFaces, NPermutations } |
Enumerate for topological characteristics. More... | |
Public Member Functions | |
int | ClassId () const override |
Define the class id associated with the class. More... | |
void | Read (TPZStream &buf, void *context) override |
read objects from the stream More... | |
void | Write (TPZStream &buf, int withclassid) const override |
Writes this object to the TPZStream buffer. Include the classid if withclassid = true. More... | |
TPZPyramid () | |
Default constructor. More... | |
virtual | ~TPZPyramid () |
Default destructor. More... | |
Public Member Functions inherited from TPZSavable | |
TPZSavable () | |
virtual | ~TPZSavable () |
virtual std::list< std::map< std::string, uint64_t > > | VersionHistory () const |
virtual std::pair< std::string, uint64_t > | Version () const |
virtual bool | Compare (TPZSavable *copy, bool override=false) |
Compares the object for identity with the object pointed to, eventually copy the object. More... | |
virtual bool | Compare (TPZSavable *copy, bool override=false) const |
Compares the object for identity with the object pointed to, eventually copy the object. More... | |
Public Member Functions inherited from TPZRegisterClassId | |
template<typename T > | |
TPZRegisterClassId (int(T::*)() const) | |
TPZRegisterClassId ()=default | |
Static Public Member Functions | |
static void | GetSideHDivPermutation (int transformationid, TPZVec< int > &permgather) |
Identifies the permutation of the nodes needed to make neighbouring elements compatible in terms of order of shape functions. More... | |
static constexpr REAL | RefElVolume () |
Volume of the master element. More... | |
static void | ComputeDirections (int side, TPZFMatrix< REAL > &gradx, TPZFMatrix< REAL > &directions, TPZVec< int > &sidevectors) |
static void | GetSideHDivDirections (TPZVec< int > &sides, TPZVec< int > &dir, TPZVec< int > &bilinearounao) |
static void | GetSideHDivDirections (TPZVec< int > &sides, TPZVec< int > &dir, TPZVec< int > &bilinearounao, TPZVec< int > &sidevectors) |
template<class TVar > | |
static void | ComputeHDivDirections (TPZFMatrix< TVar > &gradx, TPZFMatrix< TVar > &directions) |
Compute the directions of the HDiv vectors. More... | |
template<class TVar > | |
static void | AdjustTopDirections (int ConstrainedFace, TPZFMatrix< TVar > &gradx, TPZFMatrix< TVar > &directions) |
Adjust the directions associated with the tip of the pyramid, considering that one of the faces is constrained. More... | |
static int | NBilinearSides () |
static void | CornerShape (const TPZVec< REAL > &pt, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi) |
Computes the corner shape functions of the element. More... | |
About sides of the topological element | |
static int | SideDimension (int side) |
Returns the dimension of the side. More... | |
static void | LowerDimensionSides (int side, TPZStack< int > &smallsides) |
Get all sides with lower dimension on side. More... | |
static void | LowerDimensionSides (int side, TPZStack< int > &smallsides, int DimTarget) |
Get all sides with lower dimension but equal to DimTarget on side. More... | |
static void | HigherDimensionSides (int side, TPZStack< int > &high) |
Returns all sides whose closure contains side. More... | |
static int | NSideNodes (int side) |
Returns the number of nodes (not connectivities) associated with a side. More... | |
static int | SideNodeLocId (int side, int node) |
Returns the local node number of the node "node" along side "side". More... | |
static int | NumSides () |
Number of connects of the element (21) More... | |
static int | NumSides (int dimension) |
Returns the number of connects for a set dimension. More... | |
static int | NContainedSides (int side) |
Returns the number of nodes (not connectivities) associated with a side. More... | |
static int | ContainedSideLocId (int side, int c) |
Returns the local connect number of the connect "c" along side "side". More... | |
static void | Shape (TPZVec< REAL > &loc, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi) |
Compute the shape being used to construct the x mapping from local parametric coordinates. More... | |
template<class T > | |
static void | TShape (const TPZVec< T > &loc, TPZFMatrix< T > &phi, TPZFMatrix< T > &dphi) |
Compute the shape being used to construct the x mapping from local parametric coordinates. More... | |
template<class T > | |
static void | BlendFactorForSide (const int &side, const TPZVec< T > &xi, T &blendFactor, TPZVec< T > &corrFactorDxi) |
About points at the parametric spaces | |
static void | CenterPoint (int side, TPZVec< REAL > ¢er) |
Returns the barycentric coordinates in the master element space of the original element. More... | |
static bool | IsInParametricDomain (const TPZVec< REAL > &pt, REAL tol=pztopology::gTolerance) |
Verifies if the parametric point pt is in the element parametric domain. More... | |
static void | RandomPoint (TPZVec< REAL > &pt) |
Generates a random point in the master domain. More... | |
template<class T > | |
static bool | CheckProjectionForSingularity (const int &side, const TPZVec< T > &xiInterior) |
template<class T > | |
static void | MapToSide (int side, TPZVec< T > &InternalPar, TPZVec< T > &SidePar, TPZFMatrix< T > &JacToSide) |
static void | ParametricDomainNodeCoord (int node, TPZVec< REAL > &nodeCoord) |
About type of the topological element | |
static MElementType | Type () |
Returns the type of the element as specified in file pzeltype.h. More... | |
static MElementType | Type (int side) |
Returns the type of the element side as specified in file pzeltype.h. More... | |
About Transformations | |
static TPZTransform | SideToSideTransform (int sidefrom, int sideto) |
Returns the transformation which takes a point from the side sidefrom to the side sideto. More... | |
static TPZTransform | TransformSideToElement (int side) |
Returns the transformation which transform a point from the side to the interior of the element. More... | |
static TPZTransform | TransformElementToSide (int side) |
Returns the transformation which projects a point from the interior of the element to the side. More... | |
static int | GetTransformId (TPZVec< int64_t > &id) |
Method which identifies the transformation based on the IDs of the corner nodes. More... | |
static int | GetTransformId (int side, TPZVec< int64_t > &id) |
Method which identifies the transformation of a side based on the IDs of the corner nodes. More... | |
Static Public Member Functions inherited from TPZSavable | |
static std::set< TPZRestoreClassBase * > & | RestoreClassSet () |
This static function guarantees that the gMap object is available when needed. More... | |
static std::map< int, TPZRestore_t > & | ClassIdMap () |
This static function guarantees that the gMap object is available when needed. More... | |
static std::pair< std::string, uint64_t > | NeoPZVersion () |
static void | Register (TPZRestoreClassBase *restore) |
static void | RegisterClassId (int classid, TPZRestore_t fun) |
static TPZSavable * | CreateInstance (const int &classId) |
Static Public Attributes | |
static int | FaceNodes [5][4] |
Nodes over quadrilateral sides (2d - faces). More... | |
static int | SideNodes [8][2] |
Nodes over lines sides (1d) More... | |
Static Protected Attributes | |
Data structure which defines the pyramid transformations | |
static int | ShapeFaceId [5][4] |
Ids of the shape face. More... | |
static int | fPermutations [8][19] |
Valid permutations between nodes. More... | |
Friends | |
void | pztopology::GetPermutation (const int permute, TPZVec< int > &permutation) |
Methods related over numeric integration | |
typedef TPZIntPyram3D | IntruleType |
Typedef to numerical integration rule. More... | |
typedef TPZGraphElPyramidMapped | GraphElType |
Typedef to graphical element type. More... | |
static TPZIntPoints * | CreateSideIntegrationRule (int side, int order) |
Create an integration rule over side. More... | |
Defines the topology of a Pyramid element. Topology Sides 0 to 4 are vertices, sides 5 to 12 are lines, side 13 are quadrilateral (pyramid base), sides 14 to 17 are triangles and side 18 is the pyramid.
Definition at line 35 of file tpzpyramid.h.
Typedef to graphical element type.
Definition at line 213 of file tpzpyramid.h.
Typedef to numerical integration rule.
Definition at line 211 of file tpzpyramid.h.
anonymous enum |
Enumerate for topological characteristics.
Enumerator | |
---|---|
NSides | |
NCornerNodes | |
Dimension | |
NFaces | |
NPermutations |
Definition at line 39 of file tpzpyramid.h.
|
inline |
Default constructor.
Definition at line 46 of file tpzpyramid.h.
|
inlinevirtual |
Default destructor.
Definition at line 50 of file tpzpyramid.h.
References ContainedSideLocId(), dimension, HigherDimensionSides(), LowerDimensionSides(), NContainedSides(), NSideNodes(), NumSides(), SideDimension(), and SideNodeLocId().
|
static |
Adjust the directions associated with the tip of the pyramid, considering that one of the faces is constrained.
Definition at line 1698 of file tpzpyramid.cpp.
References TPZMatrix< TVar >::Cols(), TPZAxesTools< TVar >::ComputeDetjac(), and DebugStop.
Referenced by TPZGeoElRefLess< TGeo >::HDivDirections(), and RefElVolume().
|
static |
This method calculates the influence (a.k.a. the blend function) of the side side regarding an interior point qsi. It is used by the TPZGeoBlend class.
side | the index of the side |
xi | coordinates of the interior point |
blendFactor | influence (0 <= blendFactor <= 1) |
corrFactorDxi | derivative of the blendFactor in respect to xi |
Definition at line 365 of file tpzpyramid.cpp.
References DebugStop, pztopology::GetTolerance(), IsInParametricDomain(), LOGPZ_FATAL, PZError, TPZVec< T >::Resize(), TPZVec< T >::size(), and pzgeom::tol.
Referenced by Shape().
|
static |
Returns the barycentric coordinates in the master element space of the original element.
Definition at line 510 of file tpzpyramid.cpp.
References DebugStop, and TPZVec< T >::size().
Referenced by PYBIND11_MODULE(), and Shape().
|
static |
This method will check if the projection to a certain side (MapToSide method) is regular, i.e., if the interior point in the parametric domain is not too close to the projection's singularity.
side | the index of the side upon which the interior point will be projected upon |
xiInterior | coordinates of the interior point |
Definition at line 985 of file tpzpyramid.cpp.
References DebugStop, fabs, pztopology::GetTolerance(), and PZError.
Referenced by Shape().
|
overridevirtual |
Define the class id associated with the class.
This id has to be unique for all classes A non unique id is flagged at the startup of the program
Implements TPZSavable.
Reimplemented in pzgeom::TPZNodeRep< 13, pztopology::TPZPyramid >, and pzgeom::TPZNodeRep< 5, pztopology::TPZPyramid >.
Definition at line 1869 of file tpzpyramid.cpp.
References Hash().
Referenced by pzshape::TPZShapePiram::ClassId().
|
static |
Definition at line 1466 of file tpzpyramid.cpp.
References TPZMatrix< TVar >::Cols(), TPZAxesTools< TVar >::ComputeDetjac(), pztopology::computedirectionsPy(), DebugStop, TPZFMatrix< TVar >::PutVal(), TPZFMatrix< TVar >::Redim(), TPZVec< T >::Resize(), and TPZFMatrix< TVar >::Resize().
Referenced by RefElVolume().
|
static |
Compute the directions of the HDiv vectors.
Referenced by RefElVolume().
|
static |
Returns the local connect number of the connect "c" along side "side".
Definition at line 923 of file tpzpyramid.cpp.
References PZError.
Referenced by ~TPZPyramid().
|
static |
Computes the corner shape functions of the element.
pt | (input) point where the shape function is computed |
phi | (output) value of the (5) shape functions |
dphi | (output) value of the derivatives of the (5) shape functions holding the derivatives in a column |
Definition at line 1804 of file tpzpyramid.cpp.
References fabs.
Referenced by RefElVolume().
|
static |
Create an integration rule over side.
side | Side to create integration rule |
order | Order of the integration rule to be created |
Definition at line 842 of file tpzpyramid.cpp.
References PZError.
Referenced by GetTransformId(), and PYBIND11_MODULE().
|
static |
Definition at line 1768 of file tpzpyramid.cpp.
References TPZVec< T >::Resize().
Referenced by RefElVolume().
|
static |
Definition at line 1784 of file tpzpyramid.cpp.
References TPZVec< T >::Resize().
|
static |
Identifies the permutation of the nodes needed to make neighbouring elements compatible in terms of order of shape functions.
side | Side for which the permutation is needed |
id | Ids of the corner nodes of the elements |
permgather | Permutation vector in a gather order |
Identifies the permutation of the nodes needed to make neighbouring elements compatible in terms of order of shape functions
side | : side for which the permutation is needed |
id | : ids of the corner nodes of the elements |
permgather | : permutation vector in a gather order |
Definition at line 1331 of file tpzpyramid.cpp.
References DebugStop.
|
inlinestatic |
Method which identifies the transformation based on the IDs of the corner nodes.
id | Indexes of the corner nodes |
Definition at line 184 of file tpzpyramid.h.
References CreateSideIntegrationRule(), and DebugStop.
|
static |
Method which identifies the transformation of a side based on the IDs of the corner nodes.
side | Index of side |
id | Indexes of the corner nodes |
Definition at line 1337 of file tpzpyramid.cpp.
References pztopology::computedirectionsPy(), DebugStop, pztopology::TPZTriangle::GetTransformId(), and pztopology::TPZQuadrilateral::GetTransformId().
|
static |
Returns all sides whose closure contains side.
side | smaller dimension side |
high | vector which will contain all sides whose closure contain sidefrom |
Definition at line 482 of file tpzpyramid.cpp.
References TPZStack< T, NumExtAlloc >::Push(), and PZError.
Referenced by PYBIND11_MODULE(), and ~TPZPyramid().
|
static |
Verifies if the parametric point pt is in the element parametric domain.
Definition at line 952 of file tpzpyramid.cpp.
References fabs.
Referenced by BlendFactorForSide(), IsInSideParametricDomain(), PYBIND11_MODULE(), and Shape().
|
static |
Get all sides with lower dimension on side.
Definition at line 464 of file tpzpyramid.cpp.
References TPZStack< T, NumExtAlloc >::Push(), and TPZManVector< T, NumExtAlloc >::Resize().
Referenced by PYBIND11_MODULE(), and ~TPZPyramid().
|
static |
Get all sides with lower dimension but equal to DimTarget on side.
Definition at line 473 of file tpzpyramid.cpp.
References TPZStack< T, NumExtAlloc >::Push(), and TPZManVector< T, NumExtAlloc >::Resize().
|
static |
Definition at line 1058 of file tpzpyramid.cpp.
References DebugStop, TPZMatrix< TVar >::Identity(), PZError, TPZVec< T >::Resize(), TPZFMatrix< TVar >::Resize(), TPZVec< T >::size(), and TPZExtractVal::val().
Referenced by Shape().
|
static |
Returns the number of bilinear sides to this shape. Needed to compute the number shapefunctions( NConnectShapeF )
Definition at line 458 of file tpzpyramid.cpp.
References DebugStop.
Referenced by RefElVolume().
|
static |
Returns the number of nodes (not connectivities) associated with a side.
Definition at line 913 of file tpzpyramid.cpp.
Referenced by ~TPZPyramid().
|
static |
Returns the number of nodes (not connectivities) associated with a side.
Definition at line 82 of file tpzpyramid.cpp.
Referenced by PYBIND11_MODULE(), and ~TPZPyramid().
|
static |
Number of connects of the element (21)
Definition at line 897 of file tpzpyramid.cpp.
Referenced by PYBIND11_MODULE(), and ~TPZPyramid().
|
static |
Returns the number of connects for a set dimension.
Definition at line 902 of file tpzpyramid.cpp.
References PZError.
|
static |
Definition at line 1272 of file tpzpyramid.cpp.
References DebugStop, and TPZVec< T >::Resize().
Referenced by Shape().
|
static |
Generates a random point in the master domain.
Definition at line 973 of file tpzpyramid.cpp.
References val().
Referenced by Shape().
|
overridevirtual |
read objects from the stream
Reimplemented from TPZSavable.
Reimplemented in pzgeom::TPZNodeRep< 13, pztopology::TPZPyramid >, and pzgeom::TPZNodeRep< 5, pztopology::TPZPyramid >.
Definition at line 1873 of file tpzpyramid.cpp.
|
inlinestatic |
Volume of the master element.
Definition at line 227 of file tpzpyramid.h.
References AdjustTopDirections(), pztopology::bilinearounao, ComputeDirections(), ComputeHDivDirections(), CornerShape(), GetSideHDivDirections(), and NBilinearSides().
Referenced by PYBIND11_MODULE().
|
inlinestatic |
Compute the shape being used to construct the x mapping from local parametric coordinates.
Definition at line 88 of file tpzpyramid.h.
References BlendFactorForSide(), CenterPoint(), CheckProjectionForSingularity(), pztopology::gTolerance, IsInParametricDomain(), MapToSide(), ParametricDomainNodeCoord(), RandomPoint(), SideToSideTransform(), TPZVec< T >::size(), pzgeom::tol, TransformElementToSide(), TransformSideToElement(), TShape(), Type(), and val().
|
static |
Returns the dimension of the side.
Definition at line 520 of file tpzpyramid.cpp.
References PZError.
Referenced by pzrefine::TPZRefPyramid::GetTransform(), pzrefine::TPZRefTetrahedra::GetTransform(), PYBIND11_MODULE(), and ~TPZPyramid().
|
static |
Returns the local node number of the node "node" along side "side".
Definition at line 492 of file tpzpyramid.cpp.
References PZError.
Referenced by PYBIND11_MODULE(), and ~TPZPyramid().
|
static |
Returns the transformation which takes a point from the side sidefrom to the side sideto.
sidefrom | Side where the point resides |
sideto | Side whose closure contains sidefrom |
Definition at line 528 of file tpzpyramid.cpp.
References TPZTransform< T >::Mult(), PZError, and TPZTransform< T >::Sum().
Referenced by PYBIND11_MODULE(), and Shape().
|
static |
Returns the transformation which projects a point from the interior of the element to the side.
side | Side to which the point will be tranformed (0<=side<=20) |
Definition at line 563 of file tpzpyramid.cpp.
References TPZTransform< T >::Mult(), PZError, TPZTransform< T >::Sum(), and TPZFMatrix< TVar >::Zero().
Referenced by PYBIND11_MODULE(), and Shape().
|
static |
Returns the transformation which transform a point from the side to the interior of the element.
side | Side from which the point will be tranformed (0<=side<=20) |
Definition at line 711 of file tpzpyramid.cpp.
References TPZTransform< T >::Mult(), PZError, TPZTransform< T >::Sum(), and TPZFMatrix< TVar >::Zero().
Referenced by PYBIND11_MODULE(), and Shape().
|
inlinestatic |
Compute the shape being used to construct the x mapping from local parametric coordinates.
Definition at line 302 of file tpzpyramid.cpp.
References DebugStop, and IsZero().
Referenced by GetSideShapeFunction(), pzgeom::TPZGeoPyramid::GradX(), ProjectBissectionInParametricDomain(), Shape(), and pzgeom::TPZGeoPyramid::X().
|
static |
Returns the type of the element as specified in file pzeltype.h.
Definition at line 859 of file tpzpyramid.cpp.
References EPiramide.
Referenced by Shape().
|
static |
Returns the type of the element side as specified in file pzeltype.h.
Definition at line 864 of file tpzpyramid.cpp.
References ENoType, EOned, EPiramide, EPoint, EQuadrilateral, and ETriangle.
|
overridevirtual |
Writes this object to the TPZStream buffer. Include the classid if withclassid = true.
Writes this object to the TPZStream buffer. Include the classid if withclassid = true
Reimplemented from TPZSavable.
Reimplemented in pzgeom::TPZNodeRep< 13, pztopology::TPZPyramid >, and pzgeom::TPZNodeRep< 5, pztopology::TPZPyramid >.
Definition at line 1877 of file tpzpyramid.cpp.
|
friend |
|
static |
Nodes over quadrilateral sides (2d - faces).
Definition at line 259 of file tpzpyramid.h.
|
staticprotected |
Valid permutations between nodes.
Definition at line 274 of file tpzpyramid.h.
|
staticprotected |
Ids of the shape face.
Definition at line 271 of file tpzpyramid.h.
|
static |
Nodes over lines sides (1d)
Definition at line 262 of file tpzpyramid.h.