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

Implements the shape functions of a quadrilateral (2D) element. Shape. More...

#include <pzshapequad.h>

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

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 quadrilateral 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 ShapeCorner (TPZVec< REAL > &pt, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi)
 Computes the corner shape functions for a quadrilateral element. 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 ShapeInternal (TPZVec< REAL > &x, int order, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi, int quad_transformation_index)
 Compute the internal functions of the quadrilateral shape function at a point. More...
 
static void ShapeInternal (TPZVec< REAL > &x, int order, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi)
 
static void TransformDerivative2dQ (int transid, int num, TPZFMatrix< REAL > &in)
 Transform the derivatives of num shapefunctions in place for a quadrilateral. More...
 
static void TransformPoint2dQ (int transid, TPZVec< REAL > &in, TPZVec< REAL > &out)
 Transform the coordinates of the point in the space of the quadrilateral master element based on the transformation id. More...
 
static void ProjectPoint2dQuadToRib (int rib, TPZVec< REAL > &in, REAL &out)
 Projects a point from the interior of the element to a rib. More...
 
static int GetTransformId2dQ (TPZVec< int64_t > &id)
 Method which identifies the quadrilateral transformation based on the IDs of the corner nodes. More...
 
static void TransformDerivativeFromRibToQuad (int rib, int num, TPZFMatrix< REAL > &dphi)
 Transforms the derivative of a shapefunction computed on the rib into the two dimensional derivative of the function with respect to the element.
The parameter dphi should be dimensioned (2,num), at least. 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 TPZTransform< REAL > ParametricTransform (int trans_id)
 
static void ShapeInternal (int side, TPZVec< REAL > &x, int order, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi)
 
- Static Public Member Functions inherited from pztopology::TPZQuadrilateral
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)
 
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)
 
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 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 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 gTrans2dQ [8][2][2]
 Data structure which defines the quadrilateral transformations. More...
 
static REAL gFaceTr2dQ [6][2][3]
 Data structure which defines the quadrilateral transformations. More...
 
static REAL gRibTrans2dQ1d [4][2]
 Data structure which defines the quadrilateral transformations. More...
 

Additional Inherited Members

- Public Types inherited from pztopology::TPZQuadrilateral
enum  {
  NSides, NCornerNodes, Dimension, NFaces,
  NPermutations
}
 Enumerate for topological characteristics. More...
 
enum  EHdivType { HdivConform, HdivFull }
 
typedef TPZIntQuad IntruleType
 Typedef to numerical integration rule. More...
 
typedef TPZGraphElQ2dd GraphElType
 Typedef to graphical element type. More...
 
- Public Member Functions inherited from pztopology::TPZQuadrilateral
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 Protected Attributes inherited from pztopology::TPZQuadrilateral
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]
 

Detailed Description

Implements the shape functions of a quadrilateral (2D) element. Shape.

The quadrilateral shape functions are also used in 3D elements
The range of the master element is -1,1

Definition at line 30 of file pzshapequad.h.

Member Function Documentation

◆ GetTransformId2dQ()

int pzshape::TPZShapeQuad::GetTransformId2dQ ( TPZVec< int64_t > &  id)
static

Method which identifies the quadrilateral transformation based on the IDs of the corner nodes.

Parameters
idindexes of the corner nodes
Returns
index of the transformation of the point

Definition at line 395 of file pzshapequad.cpp.

◆ NConnectShapeF()

int pzshape::TPZShapeQuad::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 432 of file pzshapequad.cpp.

References PZError.

◆ NShapeF()

int pzshape::TPZShapeQuad::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 448 of file pzshapequad.cpp.

References TPZVec< T >::NElements(), test::res, TPZVec< T >::Resize(), and TPZVec< T >::size().

◆ ParametricTransform()

TPZTransform< REAL > pzshape::TPZShapeQuad::ParametricTransform ( int  trans_id)
static

Definition at line 382 of file pzshapequad.cpp.

References TPZTransform< T >::Mult().

Referenced by GetSideTransform().

◆ ProjectPoint2dQuadToRib()

void pzshape::TPZShapeQuad::ProjectPoint2dQuadToRib ( int  rib,
TPZVec< REAL > &  in,
REAL &  out 
)
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
outcoordinate of the point on the rib

Definition at line 390 of file pzshapequad.cpp.

◆ Shape()

void pzshape::TPZShapeQuad::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 quadrilateral 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 element for its implementation

Definition at line 95 of file pzshapequad.cpp.

◆ ShapeCorner()

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

Computes the corner shape functions for a quadrilateral element.

Parameters
pt(input) point where the shape function is computed
phi(output) value of the (4) shape functions
dphi(output) value of the derivatives of the (4) shape functions holding the derivatives in a column

Definition at line 36 of file pzshapequad.cpp.

References dx().

Referenced by TPZGraphElT2dMapped::QsiEta().

◆ ShapeGenerating()

void pzshape::TPZShapeQuad::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

Definition at line 67 of file pzshapequad.cpp.

◆ ShapeInternal() [1/3]

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

Compute the internal functions of the quadrilateral 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
quad_transformation_indexdetermines the transformation applied to the internal shape functions.
This parameter is computed by the GetTransformId2dQ method
See also
GetTransformId2dQ The internal The shape functions classes functions are the shapefunctions before being multiplied by the corner The shape functions classes functions
Shape2dQuadInternal is basically a call to the orthogonal shapefunction with the transformation determined by the transformation index

Definition at line 303 of file pzshapequad.cpp.

References TPZMatrix< TVar >::Cols(), TPZFMatrix< TVar >::Resize(), and TPZMatrix< TVar >::Rows().

Referenced by pzshape::TPZShapePiram::ShapeInternal(), pzshape::TPZShapePrism::ShapeInternal(), and pzshape::TPZShapeCube::ShapeInternal().

◆ ShapeInternal() [2/3]

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

◆ ShapeInternal() [3/3]

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

Definition at line 332 of file pzshapequad.cpp.

References DebugStop, LOGPZ_ERROR, and pzshape::TPZShapeLinear::ShapeInternal().

◆ ShapeOrder()

void pzshape::TPZShapeQuad::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 166 of file pzshapequad.cpp.

References TPZGenMatrix< TObj >::Cols(), DebugStop, and TPZGenMatrix< TObj >::Rows().

◆ SideShape()

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

Definition at line 146 of file pzshapequad.cpp.

References Shape().

◆ SideShapeOrder()

void pzshape::TPZShapeQuad::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 214 of file pzshapequad.cpp.

References DebugStop, and TPZGenMatrix< TObj >::Rows().

◆ TransformDerivative2dQ()

void pzshape::TPZShapeQuad::TransformDerivative2dQ ( int  transid,
int  num,
TPZFMatrix< REAL > &  in 
)
static

Transform the derivatives of num shapefunctions in place for a quadrilateral.

Parameters
transididentifier of the transformation of the quad element as obtained by the GetTransformId2dQ method
numnumber of shapefunctions needed to transform
inmatrix containing the values of the derivatives of the shapefunctions as a row vector
the values of the derivatives contained in this matrix are modified upon return

Definition at line 363 of file pzshapequad.cpp.

◆ TransformDerivativeFromRibToQuad()

void pzshape::TPZShapeQuad::TransformDerivativeFromRibToQuad ( int  rib,
int  num,
TPZFMatrix< REAL > &  dphi 
)
static

Transforms the derivative of a shapefunction computed on the rib into the two dimensional derivative of the function with respect to the element.
The parameter dphi should be dimensioned (2,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

Definition at line 424 of file pzshapequad.cpp.

◆ TransformPoint2dQ()

void pzshape::TPZShapeQuad::TransformPoint2dQ ( int  transid,
TPZVec< REAL > &  in,
TPZVec< REAL > &  out 
)
static

Transform the coordinates of the point in the space of the quadrilateral master element based on the transformation id.

Parameters
transididentifier of the transformation of the element as obtained by the GetTransformId2dQ method
incoordinates of the variational parameter
outcoordinates of the transformed parameter

Definition at line 375 of file pzshapequad.cpp.

Member Data Documentation

◆ gFaceTr2dQ

REAL pzshape::TPZShapeQuad::gFaceTr2dQ[6][2][3]
static

Data structure which defines the quadrilateral transformations.

Definition at line 182 of file pzshapequad.h.

◆ gRibTrans2dQ1d

REAL pzshape::TPZShapeQuad::gRibTrans2dQ1d
static

Data structure which defines the quadrilateral transformations.

Definition at line 184 of file pzshapequad.h.

◆ gTrans2dQ

REAL pzshape::TPZShapeQuad::gTrans2dQ
static

Data structure which defines the quadrilateral transformations.

Transformation of the point within a quadrilateral face

Definition at line 180 of file pzshapequad.h.

Referenced by TPZGeoElSide::NeighbourSideTransform().


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