102 const int64_t &midSideIndex) :
103 fSideNodes(sideNodes), fSideSons(sideSons) {}
180 static std::map<MElementType, std::list<TPZRefPatternPermute> >
fPermutations;
305 void PrintMore(std::ostream &out = std::cout)
const;
307 void ShortPrint(std::ostream &out = std::cout)
const;
312 void Print(std::ostream &out = std::cout)
const;
314 void PrintVTK(std::ofstream &file,
bool matColor =
false)
const;
421 return (fId != fNonInitializedId);
431 int nSides = el->
NSides();
432 fSideRefPattern[nSides - 1] = id;
436 return (fName != fNonInitializedName);
443 void SetName(std::string name){
void PermuteMesh(const TPZPermutation &permute)
Copy the mesh structure applying the permutation on the nodenumbers of the first element.
TPZVec< TPZVec< std::pair< int, TPZTransform< REAL > > > > fSubElSideInfo
Data structure with sub element info.
bool CheckSideConsistency(const int fatherSide) const
TPZVec< TPZGeoElSide > fSideSons
a vector of TPZGeoElSide relative to its sons
TPZVec< int > fSideRefPattern
Refinement for elements associated with a certain side of the current element. Usually, this is used for boundary/interface elements.
TPZRefPatternPermute & operator=(const TPZRefPatternPermute ©)
Contains declaration of TPZGeoElSide class which represents an element and its side, and TPZGeoElSideIndex class which represents an TPZGeoElSide index.
TPZRefPatternPermute()
Default constructor.
void ExportPattern(std::ostream &out) const
void ReadAndCreateRefinementPattern(std::istream &file)
static const int fNonInitializedId
Id for identifying a non initialized pattern.
TPZRefPatternPermute(const TPZRefPatternPermute ©)
Copy constructor.
bool IsFatherNeighbour(TPZGeoElSide fatherSide, TPZGeoEl *son) const
Verifies the neighbouring relationship between a son and a father's side.
TPZTransform fTransform
Transformation to the nodes.
TPZTransform ComputeParamTransform(TPZGeoEl *geoElFrom, TPZGeoEl *geoElTo, int sideFrom, int sideTo)
Templated vector implementation.
TPZGeoEl * Element(int iel)
It returns the element number iel from the stack of elements of the geometric mesh.
Contains declaration of the TPZPermutation class which generates all permutations of n values...
void SetId(int id)
Set the id of the refinement pattern.
void InsertPermuted()
Generate all permuted partitions and insert them in the mesh.
int operator==(const TPZAutoPointer< TPZRefPattern > compare) const
Utility class which represents an element with its side. The Geometric approximation classes Geometry...
TPZAutoPointer< TPZRefPattern > FindRefPattern(TPZTransform<> &trans)
This class implements a simple vector storage scheme for a templated class T. Utility.
virtual int NSides() const =0
Returns the number of connectivities of the element.
TPZTransform Transform(int subElSide, int sub)
It returns the TPZTransform associated with a certain sub-element's side to the father's coordinates...
void SetRefPatternMeshToMasterDomain()
Sets the RefPatternMesh in (x,y,z)_coordinates to (qsi,eta,zeta)_coordinates, always respecting the R...
void InternalNodesIndexes(int side, TPZVec< TPZGeoElSideIndex > &nodeIndexes)
TPZGeoMesh fRefPatternMesh
Geometric mesh which defines the topology of the current refinement pattern.
void CreateMidSideNodes(TPZGeoEl *gel, int side, TPZVec< int64_t > &newnodeindexes)
This method is used to create / identify the midside nodes for element elindex in its division proces...
Data structure for storage of refinement information for a father's side.
int SidePartition(TPZVec< TPZGeoElSide > &gelvec, int side)
It returns a stack from sub-elements and its sides. This stack partitions side of the element father...
TPZAutoPointer< TPZRefPattern > SideRefPattern(int side)
SPZFatherSideInfo()=default
void CreateNewNodes(TPZGeoEl *gel, TPZVec< int64_t > &newnodeindexes)
This method is used to create / identify the nodes of the refined elements.
void PrintVTK(std::ofstream &file, bool matColor=false) const
bool CheckSideAndSubElConsistency(const int fatherSide, const int subEl) const
Contains declaration of TPZMesh class which defines a geometrical mesh and contains a corresponding l...
void InternalSidesIndexes(int side, TPZVec< TPZGeoElSideIndex > &sideIndexes)
Fill a vector with TPZGeoElSideIndex_s with respect to internal subelements of a given side...
friend class TPZRefPatternDataBase
Defines the behaviour of all geometric elements. GeometryTPZGeoEl is the common denominator for all g...
int Id() const
Return the id of the refinement pattern.
virtual ~TPZRefPattern()=default
int FatherSide(int side, int sub) const
Returns the father side associated with a given side of a certain sub element.
int FindSubEl(TPZGeoEl *) const
void BuildSideMesh(int side, TPZGeoMesh &SideRefPatternMesh)
Build a geometric mesh associated with the side of the refinement pattern.
int fNSubEl
Number of subelements. Must be available before the mesh is generated.
virtual MElementType Type() const =0
Returns the element type acording to pzeltype.h.
Auxiliar structure to permute nodes.
void SideNodes(int fatherSide, TPZVec< int > &vecNodes)
It returns a TPZVec containing the nodes contained in a given father's side.
void Read(TPZStream &buf, void *context)
void SideSubGeoElSide(int fatherSide, int subElPos, TPZGeoElSide &subGeoEl) const
Gives information about the ith subelement contained in a given father's side.
static std::map< MElementType, std::list< TPZRefPatternPermute > > fPermutations
Map of all valid permutations.
SPZFatherSideInfo(const TPZVec< int > &sideNodes, const TPZVec< TPZGeoElSide > &sideSons, const int64_t &midSideIndex)
int NSideNodes(int fatherSide) const
Returns the number of internal nodes of side.
TPZVec< SPZFatherSideInfo > fFatherSideInfo
Data structure for storage of refinement information for each father's side fFatherSideInfo[i] will ...
std::string Name()
Returns the refinement pattern identifier.
int NSideSubGeoElSides(int fatherSide) const
Returns the number of TPZGeoElSides associated with a father's side.
int fId
id of the refinement pattern
Defines the topology of the current refinement pattern to a mesh. Refine.
TPZVec< int > fSideNodes
a vector of nodes contained in the i-th side
This class implements a geometric mesh for the pz environment. Geometry.
MElementType
Define the element types.
TPZGeoMesh & RefPatternMesh()
void Print(std::ostream &out=std::cout) const
Prints the useful information of a Refinement Pattern in a ostream file.
void SetName(std::string name)
Sets the name associated with the refinement pattern.
void PrintMore(std::ostream &out=std::cout) const
static const std::string fNonInitializedName
Name for identifying a non initialized pattern.
void ComputeTransforms()
Calculates the transforms between the parametric coordinates of the sides of the son to the father's ...
void Write(TPZStream &buf, int withclassid) const
TPZVec< int > fPermutedRefPatterns
Vector containing refinement patterns for each permutation of the master element. ...
void GeneratePermutations(TPZGeoEl *gel)
Automatically generate all permuted numberings for the father element of RefPatternMesh.
Defines the interface for saving and reading data. Persistency.
void WritePattern(std::ofstream &out) const
~SPZFatherSideInfo()=default
void GenerateSideRefPatterns()
Generate the refinement patterns associated with the sides of the father element. ...
This class defines the interface to save and restore objects from TPZStream objects. Persistency.
void ShortPrint(std::ostream &out=std::cout) const
This class generates all permutations of n values. Utility.
friend class TPZRefPatternTools
void ComputePartition()
It computers the partition of the sides of the father element using the sides of the children...
void CreateRefinementPattern()
TPZPermutation fPermute
permutation of the nodes
TPZAdmChunkVector< TPZGeoEl * > & ElementVec()
Methods for handling pzlists.
int ClassId() const override
Define the class id associated with the class.
int NNodes() const
Returns the number of nodes of the mesh.