NeoPZ
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
pzgeom::TPZGeoBlend< TGeo > Class Template Reference

Implements a blending map from curved boundaries to the interior of the element. Geometry. More...

#include <tpzgeoblend.h>

Inheritance diagram for pzgeom::TPZGeoBlend< TGeo >:
[legend]
Collaboration diagram for pzgeom::TPZGeoBlend< TGeo >:
[legend]

Public Types

typedef TGeo::Top Top
 

Public Member Functions

int ClassId () const override
 
bool IsLinearMapping (int side) const
 
bool IsGeoBlendEl () const
 
 TPZGeoBlend (TPZVec< int64_t > &nodeindexes)
 Constructor with list of nodes. More...
 
 TPZGeoBlend ()
 Empty constructor. More...
 
 TPZGeoBlend (const TPZGeoBlend &cp, std::map< int64_t, int64_t > &gl2lcNdMap)
 Constructor with node map. More...
 
 TPZGeoBlend (const TPZGeoBlend &cp)
 Copy constructor. More...
 
 TPZGeoBlend (const TPZGeoBlend &cp, TPZGeoMesh &)
 Copy constructor. More...
 
void Read (TPZStream &buf, void *context) override
 
void Write (TPZStream &buf, int withclassid) const override
 
void SetNeighbourInfo (int side, TPZGeoElSide &neigh, TPZTransform<> &trans) override
 
bool ResetBlendConnectivity (const int64_t &side, const int64_t &index)
 
TPZGeoElSide Neighbour (int side, TPZGeoMesh *gmesh) const
 
template<class T >
void TransfBetweenNeigh (int side, TPZTransform< T > &tr) const
 
template<class T >
void X (TPZFMatrix< REAL > &cornerco, TPZVec< T > &par, TPZVec< T > &result) const
 Get the coordinates of the point at geometric elements from coordinates of the parametric point at the master element. More...
 
void Jacobian (TPZFMatrix< REAL > &cornerco, TPZVec< REAL > &par, TPZFMatrix< REAL > &jacobian, TPZFMatrix< REAL > &axes, REAL &detjac, TPZFMatrix< REAL > &jacinv) const
 Computes the Jacobian for parametric point at master element. More...
 
template<class T >
void GradX (TPZFMatrix< REAL > &cornerco, TPZVec< T > &par, TPZFMatrix< T > &gradx) const
 Computes the gradient of the transformation for parametric point at master element. More...
 
void Print (std::ostream &out=std::cout) const
 Print all relevant data of the element to cout. More...
 
void Initialize (TPZGeoEl *refel)
 Initialize the element checking connectivity on all sides. More...
 

Static Public Member Functions

static std::string TypeName ()
 Returns the type name of the element. More...
 
static void InsertExampleElement (TPZGeoMesh &gmesh, int matid, TPZVec< REAL > &lowercorner, TPZVec< REAL > &size)
 Method which creates a geometric boundary condition element based on the current geometric element, a side and a boundary condition number. More...
 

Protected Member Functions

template<class T >
bool MapToNeighSide (int side, int sidedim, TPZVec< T > &InternalPar, TPZVec< T > &NeighPar, TPZFMatrix< T > &JacNeighSide) const
 Creates a geometric element according to the type of the father element. More...
 

Protected Attributes

TPZGeoElfGeoEl
 Vector of indexes of the neighbours. More...
 
TPZGeoElSideIndex fNeighbours [1+TGeo::NSides - TGeo::NNodes]
 
TPZTransform fTrans [1+TGeo::NSides - TGeo::NNodes]
 

Detailed Description

template<class TGeo>
class pzgeom::TPZGeoBlend< TGeo >

Implements a blending map from curved boundaries to the interior of the element. Geometry.

Author
Paulo Cesar de Alvarenga Lucci
Since
2007

Definition at line 27 of file tpzgeoblend.h.

Member Typedef Documentation

◆ Top

template<class TGeo >
typedef TGeo::Top pzgeom::TPZGeoBlend< TGeo >::Top

Definition at line 38 of file tpzgeoblend.h.

Constructor & Destructor Documentation

◆ TPZGeoBlend() [1/5]

template<class TGeo >
pzgeom::TPZGeoBlend< TGeo >::TPZGeoBlend ( TPZVec< int64_t > &  nodeindexes)
inline

Constructor with list of nodes.

Definition at line 40 of file tpzgeoblend.h.

◆ TPZGeoBlend() [2/5]

template<class TGeo >
pzgeom::TPZGeoBlend< TGeo >::TPZGeoBlend ( )
inline

Empty constructor.

Definition at line 45 of file tpzgeoblend.h.

◆ TPZGeoBlend() [3/5]

template<class TGeo >
pzgeom::TPZGeoBlend< TGeo >::TPZGeoBlend ( const TPZGeoBlend< TGeo > &  cp,
std::map< int64_t, int64_t > &  gl2lcNdMap 
)
inline

Constructor with node map.

Definition at line 50 of file tpzgeoblend.h.

◆ TPZGeoBlend() [4/5]

template<class TGeo >
pzgeom::TPZGeoBlend< TGeo >::TPZGeoBlend ( const TPZGeoBlend< TGeo > &  cp)
inline

Copy constructor.

Definition at line 56 of file tpzgeoblend.h.

References pzgeom::TPZGeoBlend< TGeo >::fNeighbours, and pzgeom::TPZGeoBlend< TGeo >::fTrans.

◆ TPZGeoBlend() [5/5]

template<class TGeo >
pzgeom::TPZGeoBlend< TGeo >::TPZGeoBlend ( const TPZGeoBlend< TGeo > &  cp,
TPZGeoMesh  
)
inline

Copy constructor.

Definition at line 64 of file tpzgeoblend.h.

References pzgeom::TPZGeoBlend< TGeo >::fNeighbours, and pzgeom::TPZGeoBlend< TGeo >::fTrans.

Member Function Documentation

◆ ClassId()

template<class TGeo >
int pzgeom::TPZGeoBlend< TGeo >::ClassId ( ) const
override

Definition at line 252 of file tpzgeoblend.h.

References Hash().

◆ GradX()

template<class TGeo >
template<class T >
void pzgeom::TPZGeoBlend< TGeo >::GradX ( TPZFMatrix< REAL > &  cornerco,
TPZVec< T > &  par,
TPZFMatrix< T > &  gradx 
) const

Computes the gradient of the transformation for parametric point at master element.

The non-linear mapping is calculated from deviations of the linear mapping. The linear mapping of an element (or of any of its side) can be calculated with the barycentric coordinates of the nodes contained in it

Now, the deviation for any non-linearity of the sides' mappings must be taken into account.

Calculates the linear mapping of the side sideIndex, and the projected point on sideIndex

Calculates the non-linear mapping of the side sideIndex

Definition at line 84 of file tpzgeoblend.cpp.

References TPZMatrix< TVar >::Cols(), DebugStop, TPZGeoElSide::Dimension(), TPZGeoElSide::Exists(), TPZGeoEl::Id(), LOGPZ_DEBUG, MElementType_Name(), MElementType_NNodes(), TPZGeoEl::Mesh(), TPZMatrix< TVar >::Multiply(), TPZVec< T >::NElements(), TPZFMatrix< TVar >::Redim(), TPZMatrix< TVar >::Rows(), TPZVec< T >::size(), TPZExtractVal::val(), and val().

Referenced by pzgeom::TPZGeoBlend< TGeo >::TypeName().

◆ Initialize()

template<class TGeo >
void pzgeom::TPZGeoBlend< TGeo >::Initialize ( TPZGeoEl refel)

Initialize the element checking connectivity on all sides.

/ Este método percorre todos os lados do elemento fornecido (el) e, para cada lado, / percorre todos os vizinhos até retornar a si próprio. Se neste processo encontrar algum elemento que / seja quadrático e não seja do tipo TPZGeoBlend, recorre ao método SetNeighbourInfo() para estabelecer que este / elemento encontrado será seu vizinho pelo respectivo lado.

Definition at line 938 of file tpzgeoblend.cpp.

References TPZGeoElSide::Dimension(), TPZGeoElSide::Element(), TPZGeoElSide::Neighbour(), TPZGeoEl::SideIsUndefined(), and TPZGeoElSide::SideTransform3().

Referenced by pzgeom::TPZGeoBlend< TGeo >::TypeName().

◆ InsertExampleElement()

template<class TGeo >
void pzgeom::TPZGeoBlend< TGeo >::InsertExampleElement ( TPZGeoMesh gmesh,
int  matid,
TPZVec< REAL > &  lowercorner,
TPZVec< REAL > &  size 
)
static

Method which creates a geometric boundary condition element based on the current geometric element, a side and a boundary condition number.

create an example element based on the topology

Creates a geometric element according to the type of the father element

Definition at line 1066 of file tpzgeoblend.cpp.

References CreateCubeEl(), TPZGeoMesh::CreateGeoBlendElement(), CreateLinearEl(), CreatePointEl(), CreatePrismEl(), CreatePyramEl(), CreateQuadEl(), CreateTetraEl(), CreateTriangleEl(), TPZGeoMesh::Element(), TPZGeoMesh::ElementVec(), TPZGeoElRefLess< TGeo >::Geom(), IMPLEMENTBLEND, TPZChunkVector< T, EXP >::NElements(), TPZGeoEl::NodeIndex(), and pzgeom::TPZWavyLine::SetData().

Referenced by pzgeom::TPZGeoBlend< TGeo >::TypeName().

◆ IsGeoBlendEl()

template<class TGeo >
bool pzgeom::TPZGeoBlend< TGeo >::IsGeoBlendEl ( ) const
inline

Definition at line 35 of file tpzgeoblend.h.

◆ IsLinearMapping()

template<class TGeo >
bool pzgeom::TPZGeoBlend< TGeo >::IsLinearMapping ( int  side) const

Definition at line 20 of file tpzgeoblend.cpp.

References DebugStop, and TPZVec< T >::NElements().

◆ Jacobian()

template<class TGeo >
void pzgeom::TPZGeoBlend< TGeo >::Jacobian ( TPZFMatrix< REAL > &  cornerco,
TPZVec< REAL > &  par,
TPZFMatrix< REAL > &  jacobian,
TPZFMatrix< REAL > &  axes,
REAL &  detjac,
TPZFMatrix< REAL > &  jacinv 
) const

◆ MapToNeighSide()

template<class TGeo >
template<class T >
bool pzgeom::TPZGeoBlend< TGeo >::MapToNeighSide ( int  side,
int  sidedim,
TPZVec< T > &  InternalPar,
TPZVec< T > &  NeighPar,
TPZFMatrix< T > &  JacNeighSide 
) const
inlineprotected

Creates a geometric element according to the type of the father element.

Project the InternalPar parameter to the parameter of the neighbour along side. Return true if the map is nonsingular

Definition at line 185 of file tpzgeoblend.h.

References TPZTransform< T >::Apply(), TPZMatrix< TVar >::Cols(), LOGPZ_DEBUG, TPZTransform< T >::Mult(), TPZMatrix< TVar >::Multiply(), TPZVec< T >::NElements(), TPZMatrix< TVar >::Print(), TPZVec< T >::Resize(), TPZFMatrix< TVar >::Resize(), TPZMatrix< TVar >::Rows(), and pzgeom::TPZGeoBlend< TGeo >::TransfBetweenNeigh().

Referenced by pzgeom::TPZGeoBlend< TGeo >::TypeName().

◆ Neighbour()

template<class TGeo >
TPZGeoElSide pzgeom::TPZGeoBlend< TGeo >::Neighbour ( int  side,
TPZGeoMesh gmesh 
) const
inline

Definition at line 95 of file tpzgeoblend.h.

References DebugStop, and pzgeom::TPZGeoBlend< TGeo >::fNeighbours.

◆ Print()

template<class TGeo >
void pzgeom::TPZGeoBlend< TGeo >::Print ( std::ostream &  out = std::cout) const

Print all relevant data of the element to cout.

Definition at line 925 of file tpzgeoblend.cpp.

Referenced by pzgeom::TPZGeoBlend< TGeo >::TypeName().

◆ Read()

template<class TGeo >
void pzgeom::TPZGeoBlend< TGeo >::Read ( TPZStream buf,
void *  context 
)
inlineoverride

◆ ResetBlendConnectivity()

template<class TGeo >
bool pzgeom::TPZGeoBlend< TGeo >::ResetBlendConnectivity ( const int64_t &  side,
const int64_t &  index 
)

Definition at line 48 of file tpzgeoblend.cpp.

Referenced by pzgeom::TPZGeoBlend< TGeo >::Write().

◆ SetNeighbourInfo()

template<class TGeo >
void pzgeom::TPZGeoBlend< TGeo >::SetNeighbourInfo ( int  side,
TPZGeoElSide neigh,
TPZTransform<> &  trans 
)
override

◆ TransfBetweenNeigh()

template<class TGeo >
template<class T >
void pzgeom::TPZGeoBlend< TGeo >::TransfBetweenNeigh ( int  side,
TPZTransform< T > &  tr 
) const
inline

◆ TypeName()

template<class TGeo >
static std::string pzgeom::TPZGeoBlend< TGeo >::TypeName ( )
inlinestatic

◆ Write()

template<class TGeo >
void pzgeom::TPZGeoBlend< TGeo >::Write ( TPZStream buf,
int  withclassid 
) const
inlineoverride

◆ X()

template<class TGeo >
template<class T >
void pzgeom::TPZGeoBlend< TGeo >::X ( TPZFMatrix< REAL > &  cornerco,
TPZVec< T > &  par,
TPZVec< T > &  result 
) const

Get the coordinates of the point at geometric elements from coordinates of the parametric point at the master element.

The non-linear mapping is calculated from deviations of the linear mapping. The linear mapping of an element (or of any of its side) can be calculated with the barycentric coordinates of the nodes contained in it

Now, the deviation for any non-linearity of the sides' mappings must be taken into account.

Calculates the linear mapping of the side sideIndex, and the projected point on sideIndex

Calculates the non-linear mapping of the side sideIndex

Definition at line 486 of file tpzgeoblend.cpp.

References DebugStop, TPZGeoElSide::Dimension(), TPZGeoElSide::Exists(), TPZVec< T >::Fill(), TPZGeoEl::Id(), LOGPZ_DEBUG, MElementType_Name(), MElementType_NNodes(), TPZGeoEl::Mesh(), TPZVec< T >::NElements(), TPZVec< T >::Resize(), TPZFMatrix< TVar >::Resize(), and TPZVec< T >::size().

Referenced by pzgeom::TPZGeoBlend< TGeo >::TypeName().

Member Data Documentation

◆ fGeoEl

template<class TGeo >
TPZGeoEl* pzgeom::TPZGeoBlend< TGeo >::fGeoEl
protected

Vector of indexes of the neighbours.

Definition at line 176 of file tpzgeoblend.h.

◆ fNeighbours

template<class TGeo >
TPZGeoElSideIndex pzgeom::TPZGeoBlend< TGeo >::fNeighbours[1+TGeo::NSides - TGeo::NNodes]
protected

◆ fTrans

template<class TGeo >
TPZTransform pzgeom::TPZGeoBlend< TGeo >::fTrans[1+TGeo::NSides - TGeo::NNodes]
protected

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