NeoPZ
|
Defines the topology of a quadrilateral element. Topology Sides 0 to 3 are vertices, sides 4 to 7 are lines, side 8 is the quadrilateral. More...
#include <tpzquadrilateral.h>
Public Types | |
enum | { NSides, NCornerNodes, Dimension, NFaces, NPermutations } |
Enumerate for topological characteristics. More... | |
enum | EHdivType { HdivConform, HdivFull } |
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... | |
TPZQuadrilateral () | |
Default constructor. More... | |
virtual | ~TPZQuadrilateral () |
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 transformid, 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 (measure) More... | |
static void | ComputeDirections (int is, 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 | ComputeHCurlDirections (TPZFMatrix< TVar > &gradx, TPZFMatrix< TVar > &directions, const TPZVec< int > &transformationIds) |
template<class TVar > | |
static void | ComputeHCurlFaceDirections (TPZVec< TVar > &v1, TPZVec< TVar > &v2, int transformationId) |
static int | NBilinearSides () |
static void | SetHdivType (EHdivType val) |
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) |
return the number of vertices (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 () |
Returns number of sides of the element (9) More... | |
static int | NumSides (int dimension) |
return the number of sides of a given dimension More... | |
static int | NContainedSides (int side) |
return the number of sides contained in the closure of a side More... | |
static int | ContainedSideLocId (int side, int c) |
returns the local side number of the side "c" contained in the closure of 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 transform 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 void | GetGatherPermute (int transformid, TPZVec< int > &permute) |
return the vector which permutes the connects according to the transformation id 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 Protected Attributes | |
static int | fPermutations [8][9] |
Valid permutations between nodes. More... | |
static REAL | fTangentVectors [16][2] |
static int | FaceNodes [1][4] |
static int | SideNodes [4][2] |
Friends | |
void | pztopology::GetPermutation (const int permute, TPZVec< int > &permutation) |
Methods related over numeric integration | |
typedef TPZIntQuad | IntruleType |
Typedef to numerical integration rule. More... | |
typedef TPZGraphElQ2dd | 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 quadrilateral element. Topology Sides 0 to 3 are vertices, sides 4 to 7 are lines, side 8 is the quadrilateral.
Definition at line 37 of file tpzquadrilateral.h.
Typedef to graphical element type.
Definition at line 231 of file tpzquadrilateral.h.
Typedef to numerical integration rule.
Definition at line 229 of file tpzquadrilateral.h.
anonymous enum |
Enumerate for topological characteristics.
Enumerator | |
---|---|
NSides | |
NCornerNodes | |
Dimension | |
NFaces | |
NPermutations |
Definition at line 42 of file tpzquadrilateral.h.
Enumerator | |
---|---|
HdivConform | |
HdivFull |
Definition at line 290 of file tpzquadrilateral.h.
|
inline |
Default constructor.
Definition at line 49 of file tpzquadrilateral.h.
|
inlinevirtual |
Default destructor.
Definition at line 53 of file tpzquadrilateral.h.
References HigherDimensionSides(), LowerDimensionSides(), NSideNodes(), SideDimension(), and SideNodeLocId().
|
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 226 of file tpzquadrilateral.cpp.
References DebugStop, pztopology::GetTolerance(), LOGPZ_FATAL, PZError, TPZVec< T >::Resize(), and pzgeom::tol.
Referenced by Shape().
|
static |
returns the barycentric coordinates in the master element space of the original element
Definition at line 324 of file tpzquadrilateral.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 406 of file tpzquadrilateral.cpp.
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< 8, pztopology::TPZQuadrilateral >, and pzgeom::TPZNodeRep< 4, pztopology::TPZQuadrilateral >.
Definition at line 1288 of file tpzquadrilateral.cpp.
References Hash().
|
static |
Definition at line 1058 of file tpzquadrilateral.cpp.
References TPZMatrix< TVar >::Cols(), TPZAxesTools< TVar >::ComputeDetjac(), pztopology::computedirectionsq(), DebugStop, TPZFMatrix< TVar >::PutVal(), TPZFMatrix< TVar >::Redim(), and TPZVec< T >::Resize().
Referenced by RefElVolume().
|
static |
Compute the directions of the HCurl vectors. These vectors are combined with H1 shape functions to create the HCurl shape functions. They must be computed in the following order:
TVar | REAL or Fad<REAL> |
gradx | the gradient of the element mapping. if computing in normal element, gradx is the identity matrix. |
directions | computed directions |
transformationIds | transformation Ids associated with each side of dim > 0 |
Definition at line 1200 of file tpzquadrilateral.cpp.
References TPZMatrix< TVar >::Rows().
Referenced by RefElVolume().
|
static |
For a given transformation id, the method will return the two vectors associated with the face
TVar | REAL or Fad<REAL> |
v1 | |
v2 | |
transformationId | The id of the transformation (node ordering) |
Definition at line 1246 of file tpzquadrilateral.cpp.
Referenced by RefElVolume().
|
static |
Compute the directions of the HDiv vectors.
Referenced by RefElVolume().
|
static |
returns the local side number of the side "c" contained in the closure of side "side"
It do not verify the values of the c
Definition at line 565 of file tpzquadrilateral.cpp.
References PZError.
Referenced by NumSides().
|
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 334 of file tpzquadrilateral.cpp.
References PZError.
Referenced by PYBIND11_MODULE(), and Shape().
|
static |
return the vector which permutes the connects according to the transformation id
Definition at line 678 of file tpzquadrilateral.cpp.
References DebugStop, and TPZVec< T >::size().
Referenced by Shape().
|
static |
Definition at line 1254 of file tpzquadrilateral.cpp.
References TPZVec< T >::Resize().
Referenced by RefElVolume().
|
static |
Definition at line 1269 of file tpzquadrilateral.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 752 of file tpzquadrilateral.cpp.
References pztopology::computedirectionsq(), DebugStop, and TPZVec< T >::size().
Referenced by TPZGeoElRefLess< TGeo >::HDivPermutation(), and TPZCompElHDiv< TSHAPE >::SideShapeFunction().
|
static |
Method which identifies the transformation based on the IDs of the corner nodes.
id | Indexes of the corner nodes |
Method which identifies the transformation based on the IDs of the corner nodes
id | indexes of the corner nodes |
Definition at line 646 of file tpzquadrilateral.cpp.
Referenced by pztopology::TPZCube::GetTransformId(), pztopology::TPZPrism::GetTransformId(), pztopology::TPZPyramid::GetTransformId(), TPZGeoElRefLess< TGeo >::HDivPermutation(), Shape(), and TPZCompElHDiv< TSHAPE >::SideShapeFunction().
|
static |
Method which identifies the transformation of a side based on the IDs of the corner nodes.
side | Index of side |
id | Ids of the corner nodes |
Method which identifies the transformation of a side based on the IDs of the corner nodes
id | indexes of the corner nodes |
Definition at line 713 of file tpzquadrilateral.cpp.
References LOGPZ_ERROR.
|
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 314 of file tpzquadrilateral.cpp.
References TPZStack< T, NumExtAlloc >::Push(), and PZError.
Referenced by PYBIND11_MODULE(), and ~TPZQuadrilateral().
|
static |
Verifies if the parametric point pt is in the element parametric domain.
Definition at line 384 of file tpzquadrilateral.cpp.
References fabs.
Referenced by IsInSideParametricDomain(), PYBIND11_MODULE(), and Shape().
|
static |
Get all sides with lower dimension on side.
Definition at line 296 of file tpzquadrilateral.cpp.
References TPZStack< T, NumExtAlloc >::Push(), and TPZManVector< T, NumExtAlloc >::Resize().
Referenced by PYBIND11_MODULE(), and ~TPZQuadrilateral().
|
static |
Get all sides with lower dimension but equal to DimTarget on side.
Definition at line 305 of file tpzquadrilateral.cpp.
References TPZStack< T, NumExtAlloc >::Push(), and TPZManVector< T, NumExtAlloc >::Resize().
|
static |
Definition at line 411 of file tpzquadrilateral.cpp.
References TPZTransform< T >::Apply(), TPZMatrix< TVar >::Cols(), TPZTransform< T >::CopyFrom(), TPZTransform< T >::Mult(), TPZVec< T >::Resize(), TPZFMatrix< TVar >::Resize(), TPZMatrix< TVar >::Rows(), and SideToSideTransform().
Referenced by Shape().
|
static |
Returns the number of bilinear sides to this shape. Needed to compute the number shapefunctions( NConnectShapeF )
Definition at line 281 of file tpzquadrilateral.cpp.
Referenced by RefElVolume().
|
static |
return the number of sides contained in the closure of a side
Definition at line 541 of file tpzquadrilateral.cpp.
References PZError.
Referenced by NumSides().
|
static |
return the number of vertices (not connectivities) associated with a side
Definition at line 38 of file tpzquadrilateral.cpp.
Referenced by PYBIND11_MODULE(), and ~TPZQuadrilateral().
|
inlinestatic |
Returns number of sides of the element (9)
Definition at line 80 of file tpzquadrilateral.h.
References ContainedSideLocId(), dimension, NContainedSides(), and NSides.
Referenced by PYBIND11_MODULE().
|
static |
return the number of sides of a given dimension
Definition at line 551 of file tpzquadrilateral.cpp.
References PZError.
|
static |
Definition at line 427 of file tpzquadrilateral.cpp.
References DebugStop, and TPZVec< T >::Resize().
Referenced by Shape().
|
static |
Generates a random point in the master domain.
Definition at line 396 of file tpzquadrilateral.cpp.
References val().
Referenced by Shape().
|
overridevirtual |
read objects from the stream
Reimplemented from TPZSavable.
Reimplemented in pzgeom::TPZNodeRep< 8, pztopology::TPZQuadrilateral >, and pzgeom::TPZNodeRep< 4, pztopology::TPZQuadrilateral >.
Definition at line 1292 of file tpzquadrilateral.cpp.
|
inlinestatic |
Volume of the master element (measure)
Definition at line 245 of file tpzquadrilateral.h.
References pztopology::bilinearounao, ComputeDirections(), ComputeHCurlDirections(), ComputeHCurlFaceDirections(), ComputeHDivDirections(), GetSideHDivDirections(), and NBilinearSides().
Referenced by PYBIND11_MODULE().
|
static |
Definition at line 153 of file tpzquadrilateral.cpp.
References DebugStop.
|
inlinestatic |
Compute the shape being used to construct the x mapping from local parametric coordinates.
Definition at line 94 of file tpzquadrilateral.h.
References BlendFactorForSide(), CenterPoint(), CheckProjectionForSingularity(), CreateSideIntegrationRule(), GetGatherPermute(), GetTransformId(), 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 533 of file tpzquadrilateral.cpp.
References PZError.
Referenced by pzrefine::TPZRefQuad::GetTransform(), PYBIND11_MODULE(), and ~TPZQuadrilateral().
|
static |
returns the local node number of the node "node" along side "side"
Definition at line 286 of file tpzquadrilateral.cpp.
References PZError.
Referenced by PYBIND11_MODULE(), and ~TPZQuadrilateral().
|
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 492 of file tpzquadrilateral.cpp.
References TPZTransform< T >::Mult(), PZError, and TPZTransform< T >::Sum().
Referenced by MapToSide(), PYBIND11_MODULE(), and Shape().
|
static |
Returns the transformation which transform a point from the interior of the element to the side.
side | Side to which the point will be tranformed (0<=side<=8) |
Definition at line 346 of file tpzquadrilateral.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<=2) |
Definition at line 588 of file tpzquadrilateral.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 202 of file tpzquadrilateral.cpp.
Referenced by GetSideShapeFunction(), pzgeom::TPZGeoQuad::GradX(), ProjectBissectionInParametricDomain(), Shape(), and pzgeom::TPZGeoQuad::X().
|
static |
Returns the type of the element as specified in file pzeltype.h.
Definition at line 467 of file tpzquadrilateral.cpp.
References EQuadrilateral.
Referenced by Shape().
|
static |
Returns the type of the element side as specified in file pzeltype.h.
Definition at line 472 of file tpzquadrilateral.cpp.
References ENoType, EOned, EPoint, and EQuadrilateral.
|
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< 8, pztopology::TPZQuadrilateral >, and pzgeom::TPZNodeRep< 4, pztopology::TPZQuadrilateral >.
Definition at line 1296 of file tpzquadrilateral.cpp.
|
friend |
|
staticprotected |
Definition at line 297 of file tpzquadrilateral.h.
|
staticprotected |
Valid permutations between nodes.
Definition at line 295 of file tpzquadrilateral.h.
|
staticprotected |
Definition at line 296 of file tpzquadrilateral.h.
|
staticprotected |
Definition at line 298 of file tpzquadrilateral.h.