6 #ifndef PZGEOELREFLESS_H 7 #define PZGEOELREFLESS_H 17 template<
class T,
int N>
40 virtual int ClassId()
const override;
71 std::map<int64_t,int64_t> & gl2lcNdMap,
72 std::map<int64_t,int64_t> & gl2lcElMap);
75 std::map<int64_t,int64_t> & gl2lcElMap)
const override 90 virtual void Write(
TPZStream &str,
int withclassid)
const override;
94 fGeo.Initialize(
this);
111 if (fNeighbours[side] < 0 || fNeighbours[side] >= this->
Mesh()->NElements()) {
121 if (fNeighbours[side] < 0 || fNeighbours[side] >= this->
Mesh()->NElements()) {
128 virtual int64_t
NodeIndex(
int node)
const override;
153 fNeighbours[side]=neighbour;
156 virtual void Print(std::ostream &out)
override 165 out <<
"Geo Element - fId " <<
fId <<
"\t Type " << fGeo.TypeName() <<
"\t";
168 out << std::endl <<
"\t";
172 virtual int64_t
SideNodeIndex(
int side,
int node)
const override;
201 return TGeo::Type(side);
207 return fGeo.TypeName();
211 virtual int NNodes()
const override;
217 virtual int NSides()
const override;
232 virtual int NSideNodes(
int side)
const override;
264 int64_t& index)
override;
267 virtual void SetNodeIndex(
int i,int64_t nodeindex)
override;
343 Geom().SetNeighbourInfo(side,neigh,trans);
349 Geom().RandomPoint(pt);
375 const bool result =
fGeo.IsInParametricDomain(pt,tol);
382 const int side = ::ProjectInParametricDomain<TGeo>(pt, ptInDomain);
389 const int side = ::ProjectBissectionInParametricDomain<TGeo>(pt, ptInDomain);
virtual ~TPZGeoElRefLess()
virtual void SetNeighbour(int side, const TPZGeoElSide &neighbour) override
Fill in the data structure for the neighbouring information.
virtual TPZGeoEl * CreateGeoElement(MElementType type, TPZVec< int64_t > &nodeindexes, int matid, int64_t &index) override
Creates a geometric element according to the type of the father element.
virtual void SetNeighbourInfo(int side, TPZGeoElSide &neigh, TPZTransform<> &trans) override
virtual int NSubElements() const override
Returns the number of subelements of the element independent of the fact hether the element has alrea...
virtual int64_t NodeIndex(int node) const override
Returns the index of the ith node the index is the location of the node in the nodevector of the mesh...
virtual void Read(TPZStream &str, void *context) override
read objects from the stream
bool ResetBlendConnectivity(const int64_t &side, const int64_t &index) override
TPZGeoNode * NodePtr(int i) const
Returns a pointer to the ith node of the element.
Contains declaration of TPZGeoElSide class which represents an element and its side, and TPZGeoElSideIndex class which represents an TPZGeoElSide index.
virtual TPZTransform SideToSideTransform(int sidefrom, int sideto) override
compute the transformation between the master element space of one side of an element to the master e...
virtual void Initialize() override
virtual void Print(std::ostream &out) override
Print all relevant data of the element to cout.
virtual int NSideNodes(int side) const override
Returns the number of nodes for a particular side.
clarg::argBool bc("-bc", "binary checkpoints", false)
virtual void RandomPoint(TPZVec< REAL > &pt) override
Generates a random point in the master domain.
virtual void PrintTopologicalInfo(std::ostream &out) override
Prints topological information of: TGeo (TPZGeoCube, TPZGeoPrism, TPZGeoQuad, ...) ...
virtual void AllHigherDimensionSides(int side, int targetdimension, TPZStack< TPZGeoElSide > &elsides) override
TPZGeoElSideIndex fNeighbours[TGeo::NSides]
virtual int HasSubElement() const override
Returns 1 if the element has subelements along side.
virtual int ProjectInParametricDomain(TPZVec< REAL > &qsi, TPZVec< REAL > &qsiInDomain) override
Ortogonal projection from given qsi to a qsiInDomain (all in the element parametric domain) ...
virtual TPZTransform GetTransform(int side, int son) override
Utility class which represents an element with its side. The Geometric approximation classes Geometry...
Implements the mapping between the master element and deformed element. Geometry. ...
TPZGeoMesh * Mesh() const
Returns the mesh to which the element belongs.
virtual void LowerDimensionSides(int side, TPZStack< int > &smallsides) const override
virtual REAL RefElVolume() override
Volume of the master element.
Abstract class defining integration rules. Numerical Integration.
int64_t ElementIndex() const
Utility class which represents an element index with its side. Geometry.
virtual void HDivPermutation(int side, TPZVec< int > &permutegather) override
Compute the permutation for an HDiv side.
virtual int FatherSide(int side, int son) override
virtual TPZTransform BuildTransform2(int side, TPZGeoEl *father, TPZTransform<> &t) override
int64_t fId
Traditional element number or element id.
virtual TPZGeoEl * Clone(TPZGeoMesh &dest) const override
int ClassId() const override
Define the class id associated with the class.
virtual void ResetSubElements() override
Reset all subelements to NULL.
virtual void CenterPoint(int side, TPZVec< REAL > &masscent) const override
It returns the coordinates of the center of the side of the element.
virtual int NSides() const override
Returns the number of connectivities of the element.
virtual void SetSideDefined(int side) override
Flags the side as defined, this means no neighbouring element was found.
virtual int NSideSubElements(int side) const override
Returns the number of subelements of the same dimension of the element at the side.
virtual void GetSubElements2(int side, TPZStack< TPZGeoElSide > &subel) const override
This method will return a partition of the side of the current element as the union of sub elements/...
virtual bool IsGeoBlendEl() const override
TPZGeoElRefLess()
Contains the implementation of the TPZGeoElRefLess methods.
Defines the behaviour of all geometric elements. GeometryTPZGeoEl is the common denominator for all g...
virtual int Dimension() const override
Returns the dimension of the element.
virtual int SideNodeLocIndex(int side, int node) const override
Returns the local index of a node on a side.
#define DebugStop()
Returns a message to user put a breakpoint in.
virtual int64_t SideNodeIndex(int side, int node) const override
Returns the index of the nodenum node of side.
virtual void X(TPZVec< REAL > &coordinate, TPZVec< REAL > &result) const override
Returns the coordinate in real space of the point coordinate in the master element space...
virtual int SideDimension(int side) const override
Return the dimension of side.
virtual void SetSubElement(int id, TPZGeoEl *el) override
Sets the subelement of index i.
virtual TPZGeoElSide Neighbour(int side) override
Returns a pointer to the neighbour and the neighbourside along side of the current element...
void CornerCoordinates(TPZFMatrix< REAL > &coord) const
Gets the corner node coordinates in coord.
virtual int NNodes() const override
Returns the number of nodes of the element.
virtual MElementType Type() const override
Returns the type of the element acording to the definition in pzeltype.h.
virtual int SideNodeLocId(int side, int node) const
Returns the local node number of the node "node" along side "side".
virtual int NCornerNodes() const override
Returns the number of corner nodes of the element.
virtual TPZIntPoints * CreateSideIntegrationRule(int side, int order) override
Creates an integration rule for the topology of the corresponding side and able to integrate a polyno...
void GetPermutation(const int &i, TPZVec< int > &permutation) const override
virtual void GradX(TPZVec< REAL > &coordinate, TPZFMatrix< REAL > &gradx) const override
Return the gradient of the transformation at the point.
virtual int ClassId() const override
Define the class id associated with the class.
int32_t Hash(std::string str)
TPZGeoEl * ClonePatchEl(TPZGeoMesh &destmesh, std::map< int64_t, int64_t > &gl2lcNdMap, std::map< int64_t, int64_t > &gl2lcElMap) const override
Creates a clone of this element into a new patch mesh.
virtual bool IsInParametricDomain(const TPZVec< REAL > &pt, REAL tol=1e-6) override
Verifies if the parametric point pt is in the element parametric domain.
virtual bool IsLinearMapping() const
virtual int64_t NeighbourIndex(int side) const override
Returns the neighbour index for a given side.
virtual void HDivDirections(TPZVec< REAL > &pt, TPZFMatrix< REAL > &directions, int ConstrainedFace=-1) override
virtual void HDivDirectionsMaster(TPZFMatrix< REAL > &directions) override
virtual int ProjectBissectionInParametricDomain(TPZVec< REAL > &qsi, TPZVec< REAL > &qsiInDomain) override
Projection from given qsi to a qsiInDomain (in the element boundary) using bissection method from giv...
static int main_refless()
virtual void BuildTransform(int side, TPZGeoEl *father, TPZTransform<> &t)
Accumulates the transformation of the jacobian which maps the current master element space into the s...
virtual MElementType Type(int side) const override
Returns the type of the element acording to the definition in pzeltype.h.
virtual TPZGeoEl * CreateBCGeoBlendEl(int side, int bc)
Method which creates a blend geometrical boundary condition element based on the current geometric el...
This class implements a geometric mesh for the pz environment. Geometry.
MElementType
Define the element types.
This class implements a stack object. Utility.
virtual TPZGeoElSide HigherDimensionSides(int side, int targetdimension)
virtual void Divide(TPZVec< TPZGeoEl * > &pv) override
Divides the element and puts the resulting elements in the vector.
Implements computational mesh. Computational Mesh.
virtual TPZGeoEl * SubElement(int is) const override
Returns a pointer to the subelement is.
int Id() const
Returns the identity of the current node.
Defines the interface for saving and reading data. Persistency.
virtual void Print(std::ostream &out=std::cout)
Print all relevant data of the element to cout.
Defines the interface of a computational element. Computational Element.
virtual TPZGeoEl * CreateBCGeoEl(int side, int bc) override
Method which creates a computational boundary condition element based on the current geometric elemen...
virtual void MidSideNodeIndex(int side, int64_t &index) const override
Returns the midside node index along a side of the element.
virtual void Write(TPZStream &str, int withclassid) const override
Writes this object to the TPZStream buffer. Include the classid if withclassid = true.
virtual int SideIsUndefined(int side) override
Returns 1 if the side has not been defined by buildconnectivity.
virtual std::string TypeName() const override
Returns the type of the element as a string.
virtual int NPermutations() const override
virtual void SetNodeIndex(int i, int64_t nodeindex) override
Initializes the node i of the element.
virtual TPZGeoElSide Father2(int side) const override
Returns the father/side of the father which contains the side of the sub element. ...