NeoPZ
pzquad.cpp
Go to the documentation of this file.
1 
6 #include "pzquad.h"
7 #include "tpzintrulet.h"
8 #include "tpzintrulet3d.h"
9 #include "tpzintrulep3d.h"
10 #include "tpzintrulelist.h"
11 #include "pzmanvector.h"
12 #include "pzerror.h"
13 
14 #include <math.h>
15 #include <stdlib.h>
16 
17 #ifdef VC
18 #include <algorithm>
19 #endif
20 
21 #include "pzlog.h"
22 #ifdef LOG4CXX
23 static LoggerPtr logger(Logger::getLogger("pz.integral.pzquad"));
24 #endif
25 
26 using namespace std;
27 
31 #ifdef VC
33 #else
34  return fmaxl(TPZIntRuleT::NRULESTRIANGLE_ORDER, fmaxl(TPZIntRuleT3D::NRULESTETRAHEDRA_ORDER,TPZIntRuleP3D::NRULESPYRAMID_ORDER));
35 #endif
36 }
37 
38 void TPZIntPoints::Print(std::ostream &out) const {
39  int np = NPoints();
40  std::string namerule;
41  Name(namerule);
42  TPZVec<int> order(3,0);
43  GetOrder(order);
44  out << "Cubature rule (" << namerule << ") " << np << " : Order ( ";
45  for(int i=0;i<Dimension();i++) out << order[i] << " ";
46  out << ") \nNumber of points " << NPoints() << std::endl;
47  int ip;
48  TPZVec<REAL> pos(Dimension());
49  REAL w;
50  for(ip=0; ip<np; ip++) {
51  Point(ip,pos,w);
52  out << "ip " << ip << " pos " << pos << " w " << w << std::endl;
53  }
54 }
55 
56 //***** number of integration rules in PZINTVEC
57 
59  if(fIntP->Type() == 1)
62 }
63 
65  if(fIntKsi->Type() == 1 || fIntEta->Type() == 1)
68 }
69 
71  if(fIntKsi->Type() == 1 || fIntEta->Type() == 1 || fIntZeta->Type() == 1)
74 }
75 
78 }
81 }
84 }
87 }
88 
89 //**************************************
90 TPZInt1d::TPZInt1d(int OrdX,int type) {
91  fIntP = TPZIntRuleList::gIntRuleList.GetRule(OrdX,type);
92  fOrdKsi = fIntP->Order();
93 }
94 
95 int TPZInt1d::NPoints() const {
96  if(fIntP) return fIntP->NInt();
97  PZError << "Null Pointer passed to method TPZInt1d::TPZInt1d(TPZGaussRule *)\n";
98  return 0;
99 }
100 
101 void TPZInt1d::Point(int ip, TPZVec<REAL> &pos, REAL &w) const {
102  if((fIntP) && ((ip >= 0) && (ip < NPoints()))){
103  pos[0] = fIntP->Loc(ip);
104  w = fIntP->W(ip);
105  return;
106  }
107  if(!fIntP)
108  PZError << "Null Pointer passed to method " << "TPZInt1d::TPZInt1d(TPZGaussRule *)\n";
109  if((ip < 0) || (ip >= NPoints()))
110  PZError << "ip = " << ip << ", Out of Range: 0 -> " << NPoints() << std::endl;
111 }
112 
113 void TPZInt1d::SetOrder(TPZVec<int> &ord,int type){
114  if(ord.NElements() < 1 || ord[0] < 0) {
115  std::cout << "TPZINt1d::SetOrder: NULL number of integration points specified\n";
116  return;
117  }
118  if(ord[0] > GetRealMaxOrder())
119  ord[0] = GetRealMaxOrder();
120  fOrdKsi = ord[0];
121  fIntP = TPZIntRuleList::gIntRuleList.GetRule(fOrdKsi,type);
122  fOrdKsi = fIntP->Order();
123 }
124 
126  ord[0] = fOrdKsi;
127 }
128 
129 //**************************************
130 TPZIntQuad::TPZIntQuad(int OrdK, int OrdE){
131  fIntKsi = TPZIntRuleList::gIntRuleList.GetRule(OrdK);
132  fIntEta = TPZIntRuleList::gIntRuleList.GetRule(OrdE);
133  fOrdKsi = fIntKsi->Order();
134  fOrdEta = fIntEta->Order();
135 }
136 
137 //**************************************
139  fIntKsi = TPZIntRuleList::gIntRuleList.GetRule(OrdK);
140  fIntEta = TPZIntRuleList::gIntRuleList.GetRule(OrdK);
141  fOrdKsi = fIntKsi->Order();
142  fOrdEta = fIntEta->Order();
143 }
144 
145 int TPZIntQuad::NPoints() const {
146  if (!fIntKsi || !fIntEta){
147  PZError << "Null Pointer passed to method TPZInt1d::TPZInt1d(TPZGaussRule *)\n";
148  return 0;
149  }
150  return (fIntKsi->NInt() * fIntEta->NInt());
151 }
152 
153 void TPZIntQuad::Point(int ip, TPZVec<REAL> &pos, REAL &w) const {
154 
155 #ifdef PZDEBUG
156  if(pos.size() == 1 || pos.size() > 3 )
157  {
158  DebugStop();
159  }
160 #endif
161  if((fIntEta) && (fIntKsi) && ((ip >= 0) && (ip < NPoints()))){
162  int ik, ie;
163  ik = ip/fIntEta->NInt();
164  ie = ip - (ip/fIntEta->NInt())*(fIntEta->NInt());
165  pos[0] = fIntKsi->Loc(ik);
166  pos[1] = fIntEta->Loc(ie);
167  w = fIntKsi->W(ik)*fIntEta->W(ie);
168  return;
169  }
170  if(!fIntKsi || !fIntEta)
171  PZError << "Null Pointer passed to method " << "TPZInt1d::TPZInt1d(TPZGaussRule *)\n";
172  if((ip < 0) || (ip >= NPoints()))
173  PZError << "ip = " << ip << ", Out of Range: 0 -> " << NPoints() << std::endl;
174 }
175 
176 void TPZIntQuad::SetOrder(TPZVec<int> &ord,int type) {
177  int prevtype = fIntKsi->Type();
178  if (fOrdKsi != ord[0] || type != prevtype) {
179  fOrdKsi = ord[0];
180  fIntKsi = TPZIntRuleList::gIntRuleList.GetRule(fOrdKsi,type);
181 // fOrdKsi = fIntKsi->Order();
182  }
183  prevtype = fIntEta->Type();
184  if (fOrdEta != ord[1] || prevtype != type) {
185  fOrdEta = ord[1];
186  fIntEta = TPZIntRuleList::gIntRuleList.GetRule(fOrdEta,type);
187 // fOrdEta = fIntEta->Order();
188  }
189 }
190 
192  ord[0] = fOrdKsi;
193  ord[1] = fOrdEta;
194 }
195 
196 //**************************************
198  fIntKsi = TPZIntRuleList::gIntRuleList.GetRuleT(OrdK);
199  fOrdKsi = fIntKsi->Order();
200 }
201 
203 #ifdef PZDEBUG
204  if (!fIntKsi){
205  PZError << "Null Pointer passed to method TPZIntTriang::NPoints()\n";
206  DebugStop();
207  return 0;
208  }
209 #endif
210  return fIntKsi->NInt();
211 }
212 
213 void TPZIntTriang::Point(int ip, TPZVec<REAL> &pos, REAL &w) const {
214  if((fIntKsi) && ((ip >= 0) && (ip < NPoints()))){
215  fIntKsi->Loc(ip, pos);
216  w = fIntKsi->W(ip);
217  return;
218  }
219  if(!fIntKsi)
220  PZError << "Null Pointer passed to method " << "TPZIntTriang::Point(..)\n";
221  if((ip < 0) || (ip >= NPoints()))
222  PZError << "ip = " << ip << ", Out of Range: 0 -> " << NPoints() << std::endl;
223 }
224 
225 void TPZIntTriang::SetOrder(TPZVec<int> &ord,int type) {
226 #ifdef PZDEBUG
227  if (type != 0) {
228  DebugStop();
229  }
230 #endif
231  fOrdKsi = ord[0];
232  if(ord[1] > ord[0]) fOrdKsi = ord[1];
233  if(ord[0] < 0 || ord[0] > TPZIntRuleT::NRULESTRIANGLE_ORDER || ord[1] < 0 || ord[1] > TPZIntRuleT::NRULESTRIANGLE_ORDER)
234  {
235 #ifdef PZDEBUG
236 #ifdef LOG4CXX
237  LOGPZ_WARN(logger,"Integration rule for triangle - Order is bigger than NRULESTRIANGLE_ORDER (Max)");
238 #endif
239 #endif
240 
241  fOrdKsi = TPZIntRuleT::NRULESTRIANGLE_ORDER;//havendo erro assume a maxima ordem
242  }
243  fIntKsi = TPZIntRuleList::gIntRuleList.GetRuleT(fOrdKsi);
244  fOrdKsi = fIntKsi->Order();
245 }
246 
248  ord[0] = fOrdKsi;
249  ord[1] = ord[0];
250 }
251 
252 //##############################################################################
253 TPZIntCube3D::TPZIntCube3D(int OrdK, int OrdE, int OrdZ) {
254  fIntKsi = TPZIntRuleList::gIntRuleList.GetRule(OrdK);
255  fIntEta = TPZIntRuleList::gIntRuleList.GetRule(OrdE);
256  fIntZeta = TPZIntRuleList::gIntRuleList.GetRule(OrdZ);
257  fOrdKsi = fIntKsi->Order();
258  fOrdEta = fIntEta->Order();
259  fOrdZeta = fIntZeta->Order();
260 }
261 
263  if (!fIntKsi || !fIntEta|| !fIntZeta){
264  PZError << "Null Pointer passed to method TPZIntCube3D::NPoints()\n";
265  return 0;
266  }
267  return (fIntKsi->NInt() * fIntEta->NInt() * fIntZeta->NInt());
268 }
269 
270 void TPZIntCube3D::Point(int ip, TPZVec<REAL> &pos, REAL &w) const {
271  if((fIntZeta) && (fIntEta) && (fIntKsi) && ((ip >= 0) && (ip < NPoints()))){
272  int ik, ie , iz;
273  ik = ip % fIntKsi->NInt();
274  ie = (ip % (fIntKsi->NInt()*fIntEta->NInt()))/fIntKsi->NInt();
275  iz = ip/(fIntKsi->NInt()*fIntEta->NInt());
276 
277  pos[0] = fIntKsi->Loc(ik);
278  pos[1] = fIntEta->Loc(ie);
279  pos[2] = fIntZeta->Loc(iz);
280  w = fIntKsi->W(ik)*fIntEta->W(ie)*fIntZeta->W(iz);
281  return;
282  }
283  if(!fIntKsi || !fIntEta || !fIntZeta)
284  PZError << "Null Pointer passed to method " << "TPZIntCube3D::Point(..)\n";
285  if((ip < 0) || (ip >= NPoints()))
286  PZError << "ip = " << ip << ", Out of Range: 0 -> " << NPoints() << std::endl;
287 }
288 
289 void TPZIntCube3D::SetOrder(TPZVec<int> &ord,int type) {
290  fOrdKsi = ord[0];
291  fOrdEta = ord[1];
292  fOrdZeta = ord[2];
293  fIntKsi = TPZIntRuleList::gIntRuleList.GetRule(fOrdKsi,type);
294  fIntEta = TPZIntRuleList::gIntRuleList.GetRule(fOrdEta,type);
295  fIntZeta = TPZIntRuleList::gIntRuleList.GetRule(fOrdZeta,type);
296  fOrdKsi = fIntKsi->Order();
297  fOrdEta = fIntEta->Order();
298  fOrdZeta = fIntZeta->Order();
299 }
300 
302  ord[0] = fOrdKsi;
303  ord[1] = fOrdEta;
304  ord[2] = fOrdZeta;
305 }
306 
307 //##############################################################################
310  fOrdKsi = fIntKsi->Order();
311 }
312 
314  if (!fIntKsi){
315  PZError << "Null Pointer passed to method TPZIntTetra3D::NPoints()\n";
316  return 0;
317  }
318  return fIntKsi->NInt();
319 }
320 
321 void TPZIntTetra3D::Point(int ip, TPZVec<REAL> &pos, REAL &w) const {
322  if((fIntKsi) && ((ip >= 0) && (ip < NPoints()))) {
323  fIntKsi->Loc(ip, pos);
324  w = fIntKsi->W(ip);
325  return;
326  }
327  if(!fIntKsi)
328  PZError << "Null Pointer passed to method " << "TPZIntTetra3D::Point(..)\n";
329  if((ip < 0) || (ip >= NPoints()))
330  PZError << "ip = " << ip << ", Out of Range: 0 -> " << NPoints() << std::endl;
331 }
332 
334  fOrdKsi = (ord[1] > ord[0]) ? ord[1] : ord[0];
335  fOrdKsi = (fOrdKsi > ord[2]) ? fOrdKsi : ord[2];
337 #ifdef PZDEBUG
338 #ifdef LOG4CXX
339  if(logger->isWarnEnabled())
340  {
341  std::stringstream sout;
342  sout << "Integration rule for tetrahedra - Order is bigger than NRULESTETRAHEDRA_ORDER (Max)";
343  sout << " fOrdKsi " << fOrdKsi << " TPZIntRuleT3D::NRULESTETRAHEDRA_ORDER " << TPZIntRuleT3D::NRULESTETRAHEDRA_ORDER;
344  LOGPZ_WARN(logger,sout.str())
345  }
346 #endif
347 #endif
349  }
350  fIntKsi = TPZIntRuleList::gIntRuleList.GetRuleT3D(fOrdKsi);
351  fOrdKsi = fIntKsi->Order();
352 }
353 
355  ord[0] = fOrdKsi;
356  ord[1] = ord[0];
357  ord[2] = ord[0];
358 }
359 
360 //##############################################################################
363  fOrdKsi = fIntKsi->Order();
364 }
365 
367  if(!fIntKsi) {
368  PZError << "Null Pointer passed to method TPZIntPyram3D::NPoints()\n";
369  return 0;
370  }
371  return fIntKsi->NInt();
372 }
373 
374 void TPZIntPyram3D::Point(int ip, TPZVec<REAL> &pos, REAL &w) const {
375  if((fIntKsi) && ((ip >= 0) && (ip < NPoints()))) {
376  fIntKsi->Loc(ip, pos);
377  w = fIntKsi->W(ip);
378  return;
379  }
380  if(!fIntKsi)
381  PZError << "Null Pointer passed to method " << "TPZIntPyram3D::Point(..)\n";
382  if((ip < 0) || (ip >= NPoints()))
383  PZError << "ip = " << ip << ", Out of Range: 0 -> " << NPoints() << std::endl;
384 }
385 
387  fOrdKsi = (ord[1] > ord[0]) ? ord[1] : ord[0];
388  fOrdKsi = (fOrdKsi > ord[2]) ? fOrdKsi : ord[2];
389  if(fOrdKsi > TPZIntRuleP3D::NRULESPYRAMID_ORDER) {
390 #ifdef PZDEBUG
391 #ifdef LOG4CXX
392  LOGPZ_WARN(logger,"Integration rule for pyramid - Order is bigger than NRULESPYRAMID_ORDER (Max)");
393 #endif
394 #endif
396  }
397  fIntKsi = TPZIntRuleList::gIntRuleList.GetRuleP3D(fOrdKsi);
398  fOrdKsi = fIntKsi->Order();
399 }
400 
402  ord[0] = fOrdKsi;
403  ord[1] = ord[0];
404  ord[2] = ord[0];
405 }
406 
407 //##############################################################################
408 TPZIntPrism3D::TPZIntPrism3D(int OrdK,int OrdL) : fIntRule1D(OrdK), fIntTriang(OrdL) {
409  TPZManVector<int,2> ord1d(1),ordt(2);
410  fIntRule1D.GetOrder(ord1d);
411  fIntTriang.GetOrder(ordt);
412  fOrdKsi = ord1d[0];
413  fOrdKti = ordt[0];
414 }
415 
417 }
418 
420  return (fIntRule1D.NPoints()*fIntTriang.NPoints());
421 }
422 
423 void TPZIntPrism3D::Point(int ip, TPZVec<REAL> &pos, REAL &w) const {
424  if((ip >= 0) && (ip < NPoints())) {
425  REAL v;
426  TPZVec<REAL> ps(2);
427  fIntTriang.Point(ip % fIntTriang.NPoints(), ps, v);
428  pos[0] = ps[0]; pos[1] = ps[1];
429  fIntRule1D.Point(ip / fIntTriang.NPoints(), ps, w);
430  pos[2] = ps[0];
431  w *= v;
432  return;
433  }
434  if((ip < 0) || (ip >= NPoints()))
435  PZError << "ip = " << ip << ", Out of Range: 0 -> " << NPoints() << std::endl;
436 }
437 
438 void TPZIntPrism3D::SetOrder(TPZVec<int> &ord,int type) {
439  fOrdKsi = ord[0]; //ordem na reta : zeta
440  fOrdKti = (ord[1] > ord[2]) ? ord[1] : ord[2]; //ordem no plano XY
441  TPZManVector<int,2> prc1(1),prc2(2);
442  prc1[0] = ord[0];
443  prc2[0] = ord[1];
444  prc2[1] = ord[2];
445  fIntRule1D.SetOrder(prc1,type);
446  fIntTriang.SetOrder(prc2);
447  fIntRule1D.GetOrder(prc1);
448  fIntTriang.GetOrder(prc2);
449  fOrdKsi = prc1[0];
450  fOrdKti = prc2[0];
451 }
452 
454  ord[0] = fOrdKsi;
455  ord[1] = fOrdKti;
456  ord[2] = ord[1];
457 }
virtual void GetOrder(TPZVec< int > &ord) const
Gets the order of the integration rule for each dimension of the master element.
Definition: pzquad.cpp:247
TPZIntTetra3D(int OrdK=2)
Definition: pzquad.cpp:308
virtual void Point(int ip, TPZVec< REAL > &pos, REAL &w) const
Returns i-th point at master element and related weight.
Definition: pzquad.cpp:101
Contains the TPZInt1d, TPZIntTriang, TPZIntQuad, TPZIntCube3D, TPZIntTetra3D, TPZIntPyram3D and TPZIn...
TPZIntRuleP3D * GetRuleP3D(int order)
Returns a pointer to an integration rule for a pyramid.
Contains definitions to LOGPZ_DEBUG, LOGPZ_INFO, LOGPZ_WARN, LOGPZ_ERROR and LOGPZ_FATAL, and the implementation of the inline InitializePZLOG(string) function using log4cxx library or not. It must to be called out of "#ifdef LOG4CXX" scope.
Implements a vector class which allows to use external storage provided by the user. Utility.
Definition: pzquad.h:16
virtual void SetOrder(TPZVec< int > &ord, int type=0)
Sets the order of the cubature rule.
Definition: pzquad.cpp:333
Contains the TPZIntRuleT class which defines integration rule for triangles based on Linbo Zhang&#39;s pa...
TPZInt1d(int OrdK=0, int type=0)
Definition: pzquad.cpp:90
virtual int GetMaxOrder() const
Returns the minimum order to integrate polinomials exactly for all implemented cubature rules...
Definition: pzquad.cpp:79
virtual int NPoints() const
Returns number of points for the cubature rule related.
Definition: pzquad.cpp:145
Defines PZError.
virtual void GetOrder(TPZVec< int > &ord) const
Gets the order of the integration rule for each dimension of the master element.
Definition: pzquad.cpp:401
virtual void Point(int ip, TPZVec< REAL > &pos, REAL &w) const
Returns i-th point at master element and related weight.
Definition: pzquad.cpp:213
TPZIntCube3D(int OrdK=2, int OrdE=2, int OrdZ=2)
Constructor with three one dimensional rules.
Definition: pzquad.cpp:253
int fOrdKti
Definition: pzquad.h:418
TPZIntTriang(int OrdK=2)
Definition: pzquad.cpp:197
virtual void Point(int ip, TPZVec< REAL > &pos, REAL &w) const
Returns i-th point at master element and related weight.
Definition: pzquad.cpp:321
#define LOGPZ_WARN(A, B)
Define log for warnings.
Definition: pzlog.h:91
virtual void Print(std::ostream &out) const
Prints information of the cubature rule.
Definition: pzquad.cpp:38
virtual int NPoints() const
Returns number of points for the cubature rule related.
Definition: pzquad.cpp:366
virtual int GetMaxOrder() const
Returns the minimum order to integrate polinomials exactly for all implemented cubature rules...
Definition: pzquad.cpp:85
virtual int NPoints() const
Returns number of points for the cubature rule related.
Definition: pzquad.cpp:202
virtual void SetOrder(TPZVec< int > &ord, int type=0)
Sets the order of the cubature rule.
Definition: pzquad.cpp:386
virtual int GetRealMaxOrder() const
Definition: pzquad.cpp:58
TPZGaussRule * GetRule(int order, int type=0)
Returns a pointer to an gaussian integration rule with numint points. This method computes the number...
virtual void GetOrder(TPZVec< int > &ord) const
Gets the order of the integration rule for each dimension of the master element.
Definition: pzquad.cpp:354
virtual void GetOrder(TPZVec< int > &ord) const
Gets the order of the integration rule for each dimension of the master element.
Definition: pzquad.cpp:301
virtual int GetRealMaxOrder() const
Definition: pzquad.cpp:64
TPZIntPrism3D(int OrdK=2, int OrdL=2)
Constructor with orders for a one dimensional rule and a cubature rule for triangle.
Definition: pzquad.cpp:408
int64_t size() const
Returns the number of elements of the vector.
Definition: pzvec.h:196
TPZIntPyram3D(int OrdK=2)
Definition: pzquad.cpp:361
int NPoints() const
Returns number of points for the cubature rule related.
Definition: pzquad.cpp:419
TPZIntTriang fIntTriang
Definition: pzquad.h:420
void SetOrder(TPZVec< int > &ord, int type=0)
Sets the order of the cubature rule.
Definition: pzquad.cpp:438
#define DebugStop()
Returns a message to user put a breakpoint in.
Definition: pzerror.h:20
int Order()
return the order of the polynomial order that can be integrated
Definition: tpzintrulep3d.h:75
virtual int NPoints() const
Returns number of points for the cubature rule related.
Definition: pzquad.cpp:262
Free store vector implementation.
virtual int NPoints() const
Returns number of points for the cubature rule related.
Definition: pzquad.cpp:95
virtual void GetOrder(TPZVec< int > &ord) const
Return the order of the integration rule.
Definition: pzquad.cpp:191
virtual void Point(int ip, TPZVec< REAL > &pos, REAL &w) const
Returns i-th point at master element and related weight.
Definition: pzquad.cpp:153
Contains the TPZIntRuleP3D class which defines the integration rule for pyramid.
static TPZIntRuleList gIntRuleList
Static variable with list of all integration rules.
void GetOrder(TPZVec< int > &ord) const
Gets the order of the integration rule for each dimension of the master element.
Definition: pzquad.cpp:453
int Type()
Returns the gaussian quadrature type (Legendre, Lobatto, Jacobi)
Definition: tpzgaussrule.h:73
void Point(int ip, TPZVec< REAL > &pos, REAL &w) const
Returns i-th point at master element and related weight.
Definition: pzquad.cpp:423
virtual void GetOrder(TPZVec< int > &ord) const
Gets the order of the integration rule for each dimension of the master element.
Definition: pzquad.cpp:125
virtual void SetOrder(TPZVec< int > &ord, int type=0)
Set the order and the type of integration rule :
Definition: pzquad.cpp:176
Contains the TPZIntRuleList class which creates instances of all integration rules for rapid selectio...
virtual int GetMaxOrder() const
Returns the minimum order to integrate polinomials exactly for all implemented cubature rules...
Definition: pzquad.cpp:30
virtual ~TPZIntPrism3D()
Destructor.
Definition: pzquad.cpp:416
virtual int NPoints() const
Returns number of points for the cubature rule related.
Definition: pzquad.cpp:313
virtual int GetMaxOrder() const
Returns the minimum order to integrate polinomials exactly for all implemented cubature rules...
Definition: pzquad.cpp:82
int Order() const
Order associated with the integration rule.
Definition: tpzintrulet.h:84
virtual int GetRealMaxOrder() const
Definition: pzquad.cpp:70
Contains the TPZIntRuleT3D class which defines integration rule for tetrahedra.
int fOrdKsi
Definition: pzquad.h:418
int64_t NElements() const
Returns the number of elements of the vector.
Definition: pzvec.h:190
virtual void SetOrder(TPZVec< int > &ord, int type=0)
Sets the order of the cubature rule.
Definition: pzquad.cpp:289
TPZIntQuad(int OrdK, int OrdE)
Constructor with two one dimensional rules.
Definition: pzquad.cpp:130
virtual int GetMaxOrder() const
Returns the minimum order to integrate polinomials exactly for all implemented cubature rules...
Definition: pzquad.cpp:76
TPZIntRuleT * GetRuleT(int order)
Returns a pointer to an integration rule for a triangle.
int Order()
return the order of the integration rule
Definition: tpzgaussrule.h:86
virtual void SetOrder(TPZVec< int > &ord, int type=0)
Sets the order of the cubature rule.
Definition: pzquad.cpp:225
TPZInt1d fIntRule1D
Definition: pzquad.h:419
virtual void Point(int ip, TPZVec< REAL > &pos, REAL &w) const
Returns i-th point at master element and related weight.
Definition: pzquad.cpp:374
TPZIntRuleT3D * GetRuleT3D(int order)
Returns a pointer to an integration rule for a tetrahedra.
#define PZError
Defines the output device to error messages and the DebugStop() function.
Definition: pzerror.h:15
virtual void SetOrder(TPZVec< int > &ord, int type=0)
Sets the order of the cubature rule.
Definition: pzquad.cpp:113
virtual void Point(int ip, TPZVec< REAL > &pos, REAL &w) const
Returns i-th point at master element and related weight.
Definition: pzquad.cpp:270