32 {{2,3},{0,4},{1,5},{0,6},{1,6},{2,6},{3,6}}
54 {{1,1,0},{2,3,1},{4,3,4},{-1},{-1},{-1}},
55 {{0,3,2},{2,2,1},{5,3,5},{-1},{-1},{-1}},
56 {{0,0,2},{1,3,0},{3,3,3},{-1},{-1},{-1}},
57 {{0,1,2},{1,2,0},{2,0,1},{3,2,3},{4,0,4},{5,1,5}}
72 {{0.,0.},{0.,0.},{0.,0.}},
73 {{0.,0.},{0.,0.},{0.,0.}},
74 {{0.,0.},{0.,0.},{0.,0.}},
75 {{.5,0.},{0.,0.},{-.5,0.}},
76 {{-.25,.25},{0.,0.},{.25,.25}},
77 {{.5,0.},{0.,0.},{.5,0.}},
78 {{.5,0.},{0.,.5},{0.,0.}}},
80 {{0.,0.},{0.,0.},{0.,0.}},
81 {{0.,0.},{0.,0.},{0.,1.}},
82 {{0.,0.},{0.,0.},{0.,0.}},
83 {{.5,0.},{0.,0.},{.5,0.}},
84 {{.5,0.},{0.,0.},{-.5,0.}},
85 {{0.,-.25},{0.,0.},{.5,.25}},
86 {{.5,0.},{0.,.5},{.5,0.}}},
88 {{0.,0.},{0.,0.},{0.,0.}},
89 {{0.,0.},{0.,0.},{0.,0.}},
90 {{0.,0.},{0.,0.},{0.,1.}},
91 {{.25,0.},{0.,0.},{.25,.5}},
92 {{.5,0.},{0.,0.},{.5,0.}},
93 {{.5,0.},{0.,0.},{-.5,0.}},
94 {{.5,0.},{0.,.5},{0.,.5}}},
96 {{0.,0.},{0.,0.},{0.,0.}},
97 {{0.,0.},{0.,0.},{0.,0.}},
98 {{0.,0.},{0.,0.},{0.,0.}},
99 {{-.25,0.},{0.,0.},{.25,.5}},
100 {{.25,-.25},{0.,0.},{.25,.25}},
101 {{0.,.25},{0.,0.},{.5,.25}},
102 {{-.5,0.},{0.,-.5},{.5,.5}}}
117 for(i=0;i<NSubEl;i++) SubElVec[i] = geo->
SubElement(i);
126 NewMidSideNode(geo,sub,index);
130 for(i=0;i<NSubEl;i++) {
139 for(sub=0;sub<NSubEl;sub++) {
141 SubElVec[sub]->SetFather(geo);
142 SubElVec[sub]->SetFatherIndex(geo->
Index());
144 for(i=0;i<NSubEl;i++) {
146 if(InNeigh[i][j][0]<0)
continue;
153 void TPZRefTriangle::NewMidSideNode(
TPZGeoEl *gel,
int side,int64_t &index) {
155 MidSideNodeIndex(gel,side,index);
159 while(gelside.
Element() != gel) {
161 if(index!=-1)
return;
173 par[0] = MidCoord[side][0];
174 par[1] = MidCoord[side][1];
181 void TPZRefTriangle::MidSideNodeIndex(
const TPZGeoEl *gel,
int side,int64_t &index) {
184 PZError <<
"TPZRefTriangle::MidSideNodeIndex. Bad parameter side = " << side << endl;
189 index = (gel)->NodeIndex(side);
197 index=(gel->
SubElement(MidSideNodes[side][0]))->NodeIndex(MidSideNodes[side][1]);
204 PZError <<
"TPZRefTriangle::GetSubelements2 called with error arguments\n";
207 int nsub = NSideSubElements(side);
208 for(
int i=0;i<
nsub;i++)
212 int TPZRefTriangle::NSideSubElements(
int side) {
214 PZError <<
"TPZRefTriangle::NSideSubelements2 called with error arguments\n";
217 return nsubeldata[side];
222 PZError <<
"TPZRefTriangle::GetTransform side out of range or father null\n";
226 int fatherside = FatherSide(side,whichsubel);
230 for(i=0; i<largedim; i++) {
231 for(j=0; j<smalldim; j++) {
232 trans.
Mult()(i,j) = buildt[whichsubel][side][j][i];
234 trans.
Sum() (i,0) = buildt[whichsubel][side][2][i];
239 int TPZRefTriangle::FatherSide(
int side,
int whichsubel){
241 PZError <<
"TPZRefTriangle::Father2 called error" << endl;
244 return fatherside[whichsubel][side];
247 int TPZRefTriangle::ClassId()
const{
248 return Hash(
"TPZRefTriangle");
static int InNeigh[4][NumInNeigh][3]
int AllocateNewElement()
Makes more room for new elements.
Contains declaration of TPZGeoElSide class which represents an element and its side, and TPZGeoElSideIndex class which represents an TPZGeoElSide index.
int MaterialId() const
Returns the material index of the element.
virtual void SetNeighbour(int side, const TPZGeoElSide &neighbour)=0
Fill in the data structure for the neighbouring information.
clarg::argInt nsub("-nsub", "number of substructs", 4)
static int CornerSons[4][3]
groups all classes dedicated to the computation of shape functions
static REAL buildt[4][7][3][2]
Utility class which represents an element with its side. The Geometric approximation classes Geometry...
This class implements a simple vector storage scheme for a templated class T. Utility.
TPZGeoElSide Neighbour() const
TPZGeoMesh * Mesh() const
Returns the mesh to which the element belongs.
virtual int64_t NodeIndex(int i) const =0
Returns the index of the ith node the index is the location of the node in the nodevector of the mesh...
static int fatherside[TPZRefTriangle::NSubEl][TPZShapeTriang::NSides]
virtual TPZGeoEl * SubElement(int is) const =0
Returns a pointer to the subelement is.
static REAL MidCoord[3][2]
virtual void Resize(const int64_t newsize, const T &object)
Resizes the vector object reallocating the necessary storage, copying the existing objects to the new...
Contains declaration of TPZMesh class which defines a geometrical mesh and contains a corresponding l...
void Push(const T object)
Pushes a copy of the object on the stack.
Defines the behaviour of all geometric elements. GeometryTPZGeoEl is the common denominator for all g...
int64_t Index() const
Returns the index of the element within the element vector of the mesh.
static int SideDimension(int side)
Returns the dimension of the side.
TPZAdmChunkVector< TPZGeoNode > & NodeVec()
static int subeldata[7][7][2]
virtual TPZGeoEl * CreateGeoElement(MElementType type, TPZVec< int64_t > &nodeindexes, int matid, int64_t &index)=0
Creates a geometric element according to the type of the father element.
Groups all classes which model the h refinement These classes are used as template arguments of...
virtual TPZGeoElSide Neighbour(int side)=0
Returns a pointer to the neighbour and the neighbourside along side of the current element...
int32_t Hash(std::string str)
virtual void SetSubElement(int i, TPZGeoEl *gel)=0
Sets the subelement of index i.
virtual int HasSubElement() const =0
Return 1 if the element has subelements.
TPZGeoEl * Element() const
Contains the TPZRefTriangle class which implements the uniform refinement of a geometric triangular e...
virtual void X(TPZVec< REAL > &qsi, TPZVec< REAL > &result) const =0
Return the coordinate in real space of the point coordinate in the master element space...
This class implements a stack object. Utility.
static int MidSideNodes[3][2]
Contains declaration of TPZGeoElement class which implements a generic geometric element with a unifo...
virtual void SetSubElementConnectivities()
Initializes the external connectivities of the subelements.
Contains TPZShapeTriang class which implements the shape functions of a triangular element...
#define PZError
Defines the output device to error messages and the DebugStop() function.
virtual void MidSideNodeIndex(int side, int64_t &index) const =0
Returns the midside node index along a side of the element.