NeoPZ
|
Implements a blending map from curved boundaries to the interior of the element. Geometry. More...
#include <tpzgeoblend.h>
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 | |
TPZGeoEl * | fGeoEl |
Vector of indexes of the neighbours. More... | |
TPZGeoElSideIndex | fNeighbours [1+TGeo::NSides - TGeo::NNodes] |
TPZTransform | fTrans [1+TGeo::NSides - TGeo::NNodes] |
Implements a blending map from curved boundaries to the interior of the element. Geometry.
Definition at line 27 of file tpzgeoblend.h.
typedef TGeo::Top pzgeom::TPZGeoBlend< TGeo >::Top |
Definition at line 38 of file tpzgeoblend.h.
|
inline |
Constructor with list of nodes.
Definition at line 40 of file tpzgeoblend.h.
|
inline |
Empty constructor.
Definition at line 45 of file tpzgeoblend.h.
|
inline |
Constructor with node map.
Definition at line 50 of file tpzgeoblend.h.
|
inline |
Copy constructor.
Definition at line 56 of file tpzgeoblend.h.
References pzgeom::TPZGeoBlend< TGeo >::fNeighbours, and pzgeom::TPZGeoBlend< TGeo >::fTrans.
|
inline |
Copy constructor.
Definition at line 64 of file tpzgeoblend.h.
References pzgeom::TPZGeoBlend< TGeo >::fNeighbours, and pzgeom::TPZGeoBlend< TGeo >::fTrans.
|
override |
Definition at line 252 of file tpzgeoblend.h.
References Hash().
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().
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().
|
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().
|
inline |
Definition at line 35 of file tpzgeoblend.h.
bool pzgeom::TPZGeoBlend< TGeo >::IsLinearMapping | ( | int | side | ) | const |
Definition at line 20 of file tpzgeoblend.cpp.
References DebugStop, and TPZVec< T >::NElements().
void pzgeom::TPZGeoBlend< TGeo >::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.
Definition at line 733 of file tpzgeoblend.cpp.
References TPZMatrix< TVar >::Cols(), TPZGeoElSide::Dimension(), TPZGeoElSide::Exists(), TPZFMatrix< TVar >::GramSchmidt(), IsZero(), LOGPZ_DEBUG, LOGPZ_ERROR, TPZGeoEl::Mesh(), TPZMatrix< TVar >::Multiply(), TPZVec< T >::NElements(), TPZVec< T >::Print(), TPZMatrix< TVar >::Print(), TPZFMatrix< TVar >::Resize(), TPZMatrix< TVar >::Rows(), Shape(), TPZFMatrix< TVar >::Transpose(), TPZFMatrix< TVar >::Zero(), and ZeroTolerance().
Referenced by pzgeom::TPZGeoBlend< TGeo >::TypeName().
|
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().
|
inline |
Definition at line 95 of file tpzgeoblend.h.
References DebugStop, and pzgeom::TPZGeoBlend< TGeo >::fNeighbours.
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().
|
inlineoverride |
Definition at line 71 of file tpzgeoblend.h.
References pzgeom::TPZGeoBlend< TGeo >::fNeighbours, pzgeom::TPZGeoBlend< TGeo >::fTrans, TPZGeoElSideIndex::Read(), and TPZTransform< T >::Read().
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().
|
override |
Definition at line 57 of file tpzgeoblend.cpp.
References TPZGeoElSide::Element(), LOGPZ_WARN, and TPZGeoEl::Print().
Referenced by pzgeom::TPZGeoBlend< TGeo >::Write().
|
inline |
Definition at line 103 of file tpzgeoblend.h.
References TPZTransform< T >::CopyFrom(), and pzgeom::TPZGeoBlend< TGeo >::fTrans.
Referenced by pzgeom::TPZGeoBlend< TGeo >::MapToNeighSide().
|
inlinestatic |
Returns the type name of the element.
Definition at line 108 of file tpzgeoblend.h.
References cornerco, pzgeom::TPZGeoBlend< TGeo >::GradX(), pzgeom::TPZGeoBlend< TGeo >::Initialize(), pzgeom::TPZGeoBlend< TGeo >::InsertExampleElement(), pzgeom::TPZGeoBlend< TGeo >::Jacobian(), pzgeom::TPZGeoBlend< TGeo >::MapToNeighSide(), pzgeom::TPZGeoBlend< TGeo >::Print(), and pzgeom::TPZGeoBlend< TGeo >::X().
|
inlineoverride |
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().
|
protected |
Vector of indexes of the neighbours.
Definition at line 176 of file tpzgeoblend.h.
|
protected |
Definition at line 177 of file tpzgeoblend.h.
Referenced by pzgeom::TPZGeoBlend< TGeo >::Neighbour(), pzgeom::TPZGeoBlend< TGeo >::Read(), pzgeom::TPZGeoBlend< TGeo >::TPZGeoBlend(), and pzgeom::TPZGeoBlend< TGeo >::Write().
|
protected |
Definition at line 178 of file tpzgeoblend.h.
Referenced by pzgeom::TPZGeoBlend< TGeo >::Read(), pzgeom::TPZGeoBlend< TGeo >::TPZGeoBlend(), pzgeom::TPZGeoBlend< TGeo >::TransfBetweenNeigh(), and pzgeom::TPZGeoBlend< TGeo >::Write().