30 {{0,2},{0,5},{0,6},{2,4},{2,7},{0,8},{1,8},{2,8},{3,8}}
58 {{1,1,0},{2,1,3},{3,3,0},{5,1,7},{6,3,4}},
59 {{0,0,1},{2,2,1},{3,2,0},{6,2,4},{7,0,5}},
60 {{0,3,1},{1,1,2},{3,3,2},{4,1,6},{7,3,5}},
61 {{0,0,3},{1,0,2},{2,2,3},{4,0,6},{5,2,7}}
76 {{{0.,0.},{0.,0.},{-1.,-1.}},
77 {{0.,0.},{0.,0.},{0.,0.}},
78 {{0.,0.},{0.,0.},{0.,0.}},
79 {{0.,0.},{0.,0.},{0.,0.}},
80 {{.5,0.},{0.,0.},{-.5,0.}},
81 {{0.,.5},{0.,0.},{0.,-.5}},
82 {{-.5,0.},{0.,0.},{-.5,0.}},
83 {{.5,0.},{0.,0.},{.5,0.}},
84 {{.5,0.},{0.,.5},{-.5,-.5}}},
86 {{{0.,0.},{0.,0.},{0.,0.}},
87 {{0.,0.},{0.,0.},{1.,-1.}},
88 {{0.,0.},{0.,0.},{0.,0.}},
89 {{0.,0.},{0.,0.},{0.,0.}},
90 {{.5,0.},{0.,0.},{.5,0.}},
91 {{.5,0.},{0.,0.},{-.5,0.}},
92 {{-.5,0.},{0.,0.},{.5,0.}},
93 {{0.,-.5},{0.,0.},{0.,-.5}},
94 {{.5,0},{0.,.5},{.5,-.5}}},
96 {{{0.,0.},{0.,0.},{0.,0.}},
97 {{0.,0.},{0.,0.},{0.,0.}},
98 {{0.,0.},{0.,0.},{1.,1.}},
99 {{0.,0.},{0.,0.},{0.,0.}},
100 {{.5,0.},{0.,0.},{.5,0.}},
101 {{.5,0.},{0.,0.},{.5,0.}},
102 {{.5,0.},{0.,0.},{-.5,0.}},
103 {{0.,-.5},{0.,0.},{0.,.5}},
104 {{.5,0.},{0.,.5},{.5,.5}}},
106 {{{0.,0.},{0.,0.},{0.,0.}},
107 {{0.,0.},{0.,0.},{0.,0.}},
108 {{0.,0.},{0.,0.},{0.,0.}},
109 {{0.,0.},{0.,0.},{-1.,1.}},
110 {{.5,0.},{0.,0.},{-.5,0.}},
111 {{0.,.5},{0.,0.},{0.,.5}},
112 {{.5,0.},{0.,0.},{.5,0.}},
113 {{.5,0.},{0.,0.},{-.5,0.}},
114 {{.5,0.},{0.,.5},{-.5,.5}}}
130 for(i=0;i<NSubEl;i++) SubElVec[i] = geo->
SubElement(i);
139 NewMidSideNode(geo,sub,index);
152 for(sub=0;sub<NSubEl;sub++) {
154 SubElVec[sub]->SetFather(geo);
155 SubElVec[sub]->SetFatherIndex(geo->
Index());
157 for(i=0;i<NSubEl;i++) {
166 void TPZRefQuad::NewMidSideNode(
TPZGeoEl *gel,
int side,int64_t &index) {
168 MidSideNodeIndex(gel,side,index);
172 while(gelside.
Element() != gel) {
174 if(index!=-1)
return;
186 par[0] = MidCoord[side][0];
187 par[1] = MidCoord[side][1];
194 void TPZRefQuad::MidSideNodeIndex(
const TPZGeoEl *gel,
int side,int64_t &index) {
197 PZError <<
"TPZRefQuad::MidSideNodeIndex. Bad parameter side = " << side << endl;
202 index = (gel)->NodeIndex(side);
210 index=(gel->
SubElement(MidSideNodes[side][0]))->NodeIndex(MidSideNodes[side][1]);
218 PZError <<
"TPZRefQuad::GetSubelements called with error arguments\n";
221 int nsub = NSideSubElements(side);
222 for(
int i=0;i<
nsub;i++)
226 int TPZRefQuad::NSideSubElements(
int side) {
228 PZError <<
"TPZRefQuad::NSideSubelements called with error arguments\n";
231 return nsubeldata[side];
237 PZError <<
"TPZRefQuad::GetTransform side out of range or father null\n";
241 int fatherside = FatherSide(side,whichsubel);
245 for(i=0; i<largedim; i++) {
246 for(j=0; j<smalldim; j++) {
247 trans.
Mult()(i,j) = buildt[whichsubel][side][j][i];
249 trans.
Sum() (i,0) = buildt[whichsubel][side][2][i];
254 int TPZRefQuad::FatherSide(
int side,
int whichsubel){
257 PZError <<
"TPZRefQuad::Father2 called error" << endl;
260 return fatherside[whichsubel][side];
263 int TPZRefQuad::ClassId()
const{
264 return Hash(
"TPZRefQuad");
static int InNeigh[4][NumInNeigh][3]
static int subeldata[9][9][2]
int AllocateNewElement()
Makes more room for new elements.
static int fatherside[TPZRefQuad::NSubEl][TPZShapeQuad::NSides]
int MaterialId() const
Returns the material index of the element.
virtual TPZGeoEl * CreateGeoElement(MElementType type, TPZVec< int64_t > &cornerindexes, int matid, int64_t &index, int reftype=1)
Generic method for creating a geometric element. Putting this method centrally facilitates the modifi...
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)
groups all classes dedicated to the computation of shape functions
Contains the TPZRefQuad class which implements the uniform refinement of a geometric quadrilateral el...
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 REAL buildt[4][9][3][2]
virtual TPZGeoEl * SubElement(int is) const =0
Returns a pointer to the subelement is.
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 CornerSons[4][4]
TPZAdmChunkVector< TPZGeoNode > & NodeVec()
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
static REAL MidCoord[5][2]
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 SideDimension(int side)
returns the dimension of the side
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 TPZShapeQuad class which implements the shape functions of a quadrilateral 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.
static int MidSideNodes[5][2]