NeoPZ
|
Implements the shape functions of a pyramid (3D) element. Shape. More...
#include <pzshapepiram.h>
Public Member Functions | |
int | ClassId () const override |
Define the class id associated with the class. More... | |
Public Member Functions inherited from pztopology::TPZPyramid | |
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 | Shape (TPZVec< REAL > &pt, TPZVec< int64_t > &id, TPZVec< int > &order, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi) |
Computes the values of the shape functions and their derivatives for a pyramid element. More... | |
static void | SideShape (int side, TPZVec< REAL > &pt, TPZVec< int64_t > &id, TPZVec< int > &order, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi) |
static void | ShapeOrder (TPZVec< int64_t > &id, TPZVec< int > &order, TPZGenMatrix< int > &shapeorders) |
returns the polynomial order in the natural ksi, eta of the side associated with each shapefunction More... | |
static void | SideShapeOrder (int side, TPZVec< int64_t > &id, int order, TPZGenMatrix< int > &shapeorders) |
returns the polynomial order in the natural ksi, eta of the internal shapefunctions of a side More... | |
static void | ShapeInternal (TPZVec< REAL > &x, int order, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi) |
Compute the internal functions of the pyramid shape function at a point . More... | |
static void | ShapeGenerating (TPZVec< REAL > &pt, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi) |
Computes the generating shape functions for a quadrilateral element. More... | |
static void | ProjectPoint3dPiramToRib (int rib, TPZVec< REAL > &in, REAL &outval) |
Projects a point from the interior of the element to a rib. More... | |
static void | ProjectPoint3dPiramToFace (int face, TPZVec< REAL > &in, TPZVec< REAL > &outval) |
Projects a point from the interior of the element to a face. More... | |
static void | TransformPoint3dPiramFace (int transid, int face, TPZVec< REAL > &in, TPZVec< REAL > &out) |
Transforms a point on the face by the corresponding transformation. More... | |
static void | TransformDerivativeFromRibToPiram (int rib, int num, TPZFMatrix< REAL > &dphi) |
Transforms the derivative of a shapefunction computed on the rib into the three dimensional derivative of the function with respect to the element. The parameter dphi should be dimensioned (3,num), at least. More... | |
static void | TransformDerivativeFromFaceToPiram (int face, int num, TPZFMatrix< REAL > &dphi) |
Transforms the derivative of a shapefunction computed on the face into the three dimensional derivative of the function with respect to the element. The parameter dphi should be dimensioned (3,num), at least. More... | |
static void | TransformDerivativeFace3dPiram (int transid, int face, int num, TPZFMatrix< REAL > &in) |
Transform the derivatives of the shapefunction on the shape (i.e. two dimensional derivative) to acount for the transformation on the corresponding face. More... | |
static int | NConnectShapeF (int side, int order) |
Number of shapefunctions of the connect associated with the side, considering the order of interpolation of the element. More... | |
static int | NShapeF (TPZVec< int > &order) |
Total number of shapefunctions, considering the order of interpolation of the element. More... | |
static void | ShapeInternal (int side, TPZVec< REAL > &x, int order, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi) |
static void | ShapeCorner (const TPZVec< REAL > &pt, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi) |
Static Public Member Functions inherited from pztopology::TPZPyramid | |
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... | |
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) |
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) |
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... | |
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 TPZIntPoints * | CreateSideIntegrationRule (int side, int order) |
Create an integration rule over side. 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 REAL | gFaceTrans3dPiram2d [5][2][3] |
Data structure which defines the pyramid transformations and topology. More... | |
static REAL | gRibTrans3dPiram1d [8][3] |
Data structure which defines the pyramid transformations and topology. More... | |
static REAL | gFaceSum3dPiram2d [5][2] |
Data structure which defines the pyramid transformations and topology. More... | |
Static Public Attributes inherited from pztopology::TPZPyramid | |
static int | FaceNodes [5][4] |
Nodes over quadrilateral sides (2d - faces). More... | |
static int | SideNodes [8][2] |
Nodes over lines sides (1d) More... | |
Additional Inherited Members | |
Public Types inherited from pztopology::TPZPyramid | |
enum | { NSides, NCornerNodes, Dimension, NFaces, NPermutations } |
Enumerate for topological characteristics. More... | |
typedef TPZIntPyram3D | IntruleType |
Typedef to numerical integration rule. More... | |
typedef TPZGraphElPyramidMapped | GraphElType |
Typedef to graphical element type. More... | |
Static Protected Attributes inherited from pztopology::TPZPyramid | |
static int | ShapeFaceId [5][4] |
Ids of the shape face. More... | |
static int | fPermutations [8][19] |
Valid permutations between nodes. More... | |
Implements the shape functions of a pyramid (3D) element. Shape.
The range of the master element is -1,1 for the base and [0,1] for the height
Definition at line 25 of file pzshapepiram.h.
|
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 pzshape::TPZShapePiramHdiv.
Definition at line 623 of file pzshapepiram.cpp.
References pztopology::TPZPyramid::ClassId(), and Hash().
|
static |
Number of shapefunctions of the connect associated with the side, considering the order of interpolation of the element.
side | associated side |
order | vector of integers indicating the interpolation order of the element |
Definition at line 594 of file pzshapepiram.cpp.
References PZError.
|
static |
Total number of shapefunctions, considering the order of interpolation of the element.
order | vector of integers indicating the interpolation order of the element |
Definition at line 616 of file pzshapepiram.cpp.
References test::res.
|
static |
Projects a point from the interior of the element to a face.
face | face index to which the point should be projected |
in | coordinate of the point at the interior of the element |
outval | coordinates of the point on the face |
Definition at line 583 of file pzshapepiram.cpp.
|
static |
Projects a point from the interior of the element to a rib.
rib | rib index to which the point should be projected |
in | coordinate of the point at the interior of the element |
outval | coordinate of the point on the rib |
Definition at line 578 of file pzshapepiram.cpp.
|
static |
Computes the values of the shape functions and their derivatives for a pyramid element.
pt | (input) point where the shape functions are computed |
id | (input) indexes of the corner points which determine the orientation of the shape functions |
order | (input) order of the side connects different from the corner connects (5 connects in this case) |
phi | (output) values of the shape functions |
dphi | (output) values of the derivatives of the shapefunctions These values depend on the point, the order of interpolation and ids of the corner points The shapefunction computation uses the shape functions of the linear and quadrilateral element for its implementation |
Definition at line 122 of file pzshapepiram.cpp.
References TPZMatrix< TVar >::Cols(), TPZManVector< T, NumExtAlloc >::Resize(), and TPZFMatrix< TVar >::Zero().
|
static |
Definition at line 246 of file pzshapepiram.cpp.
References fabs.
|
static |
Computes the generating shape functions for a quadrilateral element.
pt | (input) point where the shape function is computed |
phi | (input/output) value of the (4) shape functions |
dphi | (input/output) value of the derivatives of the (4) shape functions holding the derivatives in a column |
Computes the generating shape functions for a quadrilateral element
pt | (input) point where the shape function is computed |
phi | (input/output) value of the (4) shape functions |
dphi | (input/output) value of the derivatives of the (4) shape functions holding the derivatives in a column |
Definition at line 47 of file pzshapepiram.cpp.
|
static |
Compute the internal functions of the pyramid shape function at a point
.
x | coordinate of the point |
order | maximum order of shape functions to be computed |
phi | shapefunction values |
dphi | values of the derivatives of the shape functions The internal shape functions are the shapefunctions before being multiplied by the corner shape functions |
Definition at line 481 of file pzshapepiram.cpp.
|
static |
Definition at line 508 of file pzshapepiram.cpp.
References DebugStop, pzshape::TPZShapeTriang::ShapeInternal(), pzshape::TPZShapeQuad::ShapeInternal(), and pzshape::TPZShapeLinear::ShapeInternal().
|
static |
returns the polynomial order in the natural ksi, eta of the side associated with each shapefunction
Definition at line 325 of file pzshapepiram.cpp.
References TPZGenMatrix< TObj >::Cols(), and TPZGenMatrix< TObj >::Rows().
|
static |
Definition at line 310 of file pzshapepiram.cpp.
|
static |
returns the polynomial order in the natural ksi, eta of the internal shapefunctions of a side
sides | is a vector with copy of side as much as needed, it depends on the order |
Definition at line 358 of file pzshapepiram.cpp.
References DebugStop, TPZStack< T, NumExtAlloc >::Push(), TPZGenMatrix< TObj >::Rows(), and TPZVec< T >::size().
|
static |
Transform the derivatives of the shapefunction on the shape (i.e. two dimensional derivative) to acount for the transformation on the corresponding face.
transid | id of the transformation which needs to be applied to the face |
face | face to which the coordinates of the point refers |
num | number of derivatives of shapefunctions which need to be transformed |
in | matrix of derivatives of dimension (2,num) |
Definition at line 572 of file pzshapepiram.cpp.
|
static |
Transforms the derivative of a shapefunction computed on the face into the three dimensional derivative of the function with respect to the element. The parameter dphi should be dimensioned (3,num), at least.
face | face to which the coordinates refer |
num | number of shapefunction derivatives which need to be transformed |
dphi | values of the derivatives of the shapefunctions (modified in place) |
Definition at line 563 of file pzshapepiram.cpp.
|
static |
Transforms the derivative of a shapefunction computed on the rib into the three dimensional derivative of the function with respect to the element. The parameter dphi should be dimensioned (3,num), at least.
rib | rib index along which the shapefunction is defined |
num | number of shapefunction derivatives which need to be transformed |
dphi | values of the derivatives of the shapefunctions (modified in place) |
Definition at line 555 of file pzshapepiram.cpp.
|
static |
Transforms a point on the face by the corresponding transformation.
transid | transformation index of the face |
face | face to which the coordinates refer |
in | coordinate of the point on the face before transformation |
out | coordinate of the point after transformation This method applies two dimensional transformations which are implemented by the classes associated with triangles and quadrilaterals |
Definition at line 589 of file pzshapepiram.cpp.
|
static |
Data structure which defines the pyramid transformations and topology.
Definition at line 140 of file pzshapepiram.h.
|
static |
Data structure which defines the pyramid transformations and topology.
Definition at line 134 of file pzshapepiram.h.
|
static |
Data structure which defines the pyramid transformations and topology.
Definition at line 137 of file pzshapepiram.h.