NeoPZ
Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
pzshape::TPZShapePiram Class Reference

Implements the shape functions of a pyramid (3D) element. Shape. More...

#include <pzshapepiram.h>

Inheritance diagram for pzshape::TPZShapePiram:
[legend]
Collaboration diagram for pzshape::TPZShapePiram:
[legend]

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 > &center)
 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 TPZIntPointsCreateSideIntegrationRule (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 TPZSavableCreateInstance (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...
 

Detailed Description

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.

Member Function Documentation

◆ ClassId()

int pzshape::TPZShapePiram::ClassId ( ) const
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().

◆ NConnectShapeF()

int pzshape::TPZShapePiram::NConnectShapeF ( int  side,
int  order 
)
static

Number of shapefunctions of the connect associated with the side, considering the order of interpolation of the element.

Parameters
sideassociated side
ordervector of integers indicating the interpolation order of the element
Returns
number of shape functions

Definition at line 594 of file pzshapepiram.cpp.

References PZError.

◆ NShapeF()

int pzshape::TPZShapePiram::NShapeF ( TPZVec< int > &  order)
static

Total number of shapefunctions, considering the order of interpolation of the element.

Parameters
ordervector of integers indicating the interpolation order of the element
Returns
number of shape functions

Definition at line 616 of file pzshapepiram.cpp.

References test::res.

◆ ProjectPoint3dPiramToFace()

void pzshape::TPZShapePiram::ProjectPoint3dPiramToFace ( int  face,
TPZVec< REAL > &  in,
TPZVec< REAL > &  outval 
)
static

Projects a point from the interior of the element to a face.

Parameters
faceface index to which the point should be projected
incoordinate of the point at the interior of the element
outvalcoordinates of the point on the face

Definition at line 583 of file pzshapepiram.cpp.

◆ ProjectPoint3dPiramToRib()

void pzshape::TPZShapePiram::ProjectPoint3dPiramToRib ( int  rib,
TPZVec< REAL > &  in,
REAL &  outval 
)
static

Projects a point from the interior of the element to a rib.

Parameters
ribrib index to which the point should be projected
incoordinate of the point at the interior of the element
outvalcoordinate of the point on the rib

Definition at line 578 of file pzshapepiram.cpp.

◆ Shape()

void pzshape::TPZShapePiram::Shape ( TPZVec< REAL > &  pt,
TPZVec< int64_t > &  id,
TPZVec< int > &  order,
TPZFMatrix< REAL > &  phi,
TPZFMatrix< REAL > &  dphi 
)
static

Computes the values of the shape functions and their derivatives for a pyramid element.

Parameters
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().

◆ ShapeCorner()

void pzshape::TPZShapePiram::ShapeCorner ( const TPZVec< REAL > &  pt,
TPZFMatrix< REAL > &  phi,
TPZFMatrix< REAL > &  dphi 
)
static

Definition at line 246 of file pzshapepiram.cpp.

References fabs.

◆ ShapeGenerating()

void pzshape::TPZShapePiram::ShapeGenerating ( TPZVec< REAL > &  pt,
TPZFMatrix< REAL > &  phi,
TPZFMatrix< REAL > &  dphi 
)
static

Computes the generating shape functions for a quadrilateral element.

Parameters
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

Parameters
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.

◆ ShapeInternal() [1/2]

void pzshape::TPZShapePiram::ShapeInternal ( TPZVec< REAL > &  x,
int  order,
TPZFMatrix< REAL > &  phi,
TPZFMatrix< REAL > &  dphi 
)
static

Compute the internal functions of the pyramid shape function at a point
.

Parameters
xcoordinate of the point
ordermaximum order of shape functions to be computed
phishapefunction values
dphivalues 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.

◆ ShapeInternal() [2/2]

void pzshape::TPZShapePiram::ShapeInternal ( int  side,
TPZVec< REAL > &  x,
int  order,
TPZFMatrix< REAL > &  phi,
TPZFMatrix< REAL > &  dphi 
)
static

◆ ShapeOrder()

void pzshape::TPZShapePiram::ShapeOrder ( TPZVec< int64_t > &  id,
TPZVec< int > &  order,
TPZGenMatrix< int > &  shapeorders 
)
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().

◆ SideShape()

void pzshape::TPZShapePiram::SideShape ( int  side,
TPZVec< REAL > &  pt,
TPZVec< int64_t > &  id,
TPZVec< int > &  order,
TPZFMatrix< REAL > &  phi,
TPZFMatrix< REAL > &  dphi 
)
static

Definition at line 310 of file pzshapepiram.cpp.

References PZError, and Shape().

◆ SideShapeOrder()

void pzshape::TPZShapePiram::SideShapeOrder ( int  side,
TPZVec< int64_t > &  id,
int  order,
TPZGenMatrix< int > &  shapeorders 
)
static

returns the polynomial order in the natural ksi, eta of the internal shapefunctions of a side

Parameters
sidesis 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().

◆ TransformDerivativeFace3dPiram()

void pzshape::TPZShapePiram::TransformDerivativeFace3dPiram ( int  transid,
int  face,
int  num,
TPZFMatrix< REAL > &  in 
)
static

Transform the derivatives of the shapefunction on the shape (i.e. two dimensional derivative) to acount for the transformation on the corresponding face.

Parameters
transidid of the transformation which needs to be applied to the face
faceface to which the coordinates of the point refers
numnumber of derivatives of shapefunctions which need to be transformed
inmatrix of derivatives of dimension (2,num)

Definition at line 572 of file pzshapepiram.cpp.

◆ TransformDerivativeFromFaceToPiram()

void pzshape::TPZShapePiram::TransformDerivativeFromFaceToPiram ( int  face,
int  num,
TPZFMatrix< REAL > &  dphi 
)
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.

Parameters
faceface to which the coordinates refer
numnumber of shapefunction derivatives which need to be transformed
dphivalues of the derivatives of the shapefunctions (modified in place)

Definition at line 563 of file pzshapepiram.cpp.

◆ TransformDerivativeFromRibToPiram()

void pzshape::TPZShapePiram::TransformDerivativeFromRibToPiram ( int  rib,
int  num,
TPZFMatrix< REAL > &  dphi 
)
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.

Parameters
ribrib index along which the shapefunction is defined
numnumber of shapefunction derivatives which need to be transformed
dphivalues of the derivatives of the shapefunctions (modified in place)

Definition at line 555 of file pzshapepiram.cpp.

◆ TransformPoint3dPiramFace()

void pzshape::TPZShapePiram::TransformPoint3dPiramFace ( int  transid,
int  face,
TPZVec< REAL > &  in,
TPZVec< REAL > &  out 
)
static

Transforms a point on the face by the corresponding transformation.

Parameters
transidtransformation index of the face
faceface to which the coordinates refer
incoordinate of the point on the face before transformation
outcoordinate 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.

Member Data Documentation

◆ gFaceSum3dPiram2d

REAL pzshape::TPZShapePiram::gFaceSum3dPiram2d
static

Data structure which defines the pyramid transformations and topology.

Definition at line 140 of file pzshapepiram.h.

◆ gFaceTrans3dPiram2d

REAL pzshape::TPZShapePiram::gFaceTrans3dPiram2d
static

Data structure which defines the pyramid transformations and topology.

Definition at line 134 of file pzshapepiram.h.

◆ gRibTrans3dPiram1d

REAL pzshape::TPZShapePiram::gRibTrans3dPiram1d
static

Data structure which defines the pyramid transformations and topology.

Definition at line 137 of file pzshapepiram.h.


The documentation for this class was generated from the following files: