NeoPZ
tpzmathtools.cpp
Go to the documentation of this file.
1 
5 #include "tpzmathtools.h"
6 #include "tpzintpoints.h"
7 
8 #include <cmath>
9 using namespace std;
10 
12 {
13 }
14 
15 
17 {
18 }
19 
22 {
23  TPZVec< REAL > OutReal(3,0.);
24  if(Object.Dimension() == 1)
25  {
26  TPZFMatrix<REAL> jacobian(1,1);
27  TPZFMatrix<REAL> Axes(1,3);
28  REAL detJacobian;
29  TPZFMatrix<REAL> InvJac(1,1);
30  TPZVec< REAL > QsiEtaIni(1);
31  QsiEtaIni[0] = StartPoint[0];
32  const double deltaQsi = 0.01;
33  double alpha;
34 
35  std::cout << "\ninitial Qsi = " << QsiEtaIni[0] << "\n";
36  std::cout << "deltaQsi = const = " << deltaQsi << "\n\n";
37 
38  TPZVec< REAL > OutAprox(3);
39  TPZFMatrix<REAL> error(11,1,0.);
40  double dX, dY, dZ;
41 
42  Object.Jacobian(QsiEtaIni,jacobian,Axes,detJacobian,InvJac);
43 
44  for(int i = 0; i < 11; i++)
45  {
46  alpha = i/10.;
47  //aproximate compute
48  Object.X(QsiEtaIni,OutReal);
49  // std::cout << "\nalpha = " << alpha << std::endl;
50  // std::cout << "f(x) : x = " << OutReal[0] << " | y = " << OutReal[1] << " | z = " << OutReal[2] << "\n";
51 
52  dX = alpha*( jacobian.GetVal(0,0)*deltaQsi )*Axes(0,0);
53  OutAprox[0] = OutReal[0] + dX;
54 
55  dY = alpha*( jacobian.GetVal(0,0)*deltaQsi )*Axes(0,1);
56  OutAprox[1] = OutReal[1] + dY;
57 
58  dZ = alpha*( jacobian.GetVal(0,0)*deltaQsi )*Axes(0,2);
59  OutAprox[2] = OutReal[2] + dZ;
60 
61  //real compute
62  StartPoint[0] = QsiEtaIni[0] + alpha*deltaQsi;
63  Object.X(StartPoint,OutReal);//for real compute
64 
65  // std::cout << "alpha.(axes.J).dx : x = " << dX << " | y = " << dY << " | z = " << dZ << "\n";
66  // std::cout << "f(x) + alpha.(axes.J).dx : x = " << OutAprox[0] << " | y = " << OutAprox[1] << " | z = " << OutAprox[2] << "\n";
67  // std::cout << "f(x + alpha.dx) : x = " << OutReal[0] << " | y = " << OutReal[1] << " | z = " << OutReal[2] << "\n";
68  // std::cout << "--------------------------------------------------------------------\n";
69 
70  OutReal[0] -= OutAprox[0];
71  OutReal[1] -= OutAprox[1];
72  OutReal[2] -= OutAprox[2];
73 
74  double XDiffNorm = sqrt(OutReal[0]*OutReal[0] + OutReal[1]*OutReal[1] + OutReal[2]*OutReal[2]);
75  error(int(i),0) = XDiffNorm;
76  }
77 
78  // std::cout << "ERROR Vector:\n"; error.Print();
79 
80  std::cout << "Convergence Order:\n";
81  for(int j = 2; j < 11; j++)
82  {
83  std::cout << ( log(error(1,0)) - log(error(j,0)) )/( log(0.1)-log(j/10.) ) << "\n";
84  }
85  std::cout << "\nIf another kind of results are needed, edit the TPZMathTools Class on source code!\n";
86  return;
87  }
88 
89  if(Object.Dimension() == 2)
90  {
91  TPZFMatrix<REAL> jacobian(2,2);
92  TPZFMatrix<REAL> Axes(2,3);
93  REAL detJacobian;
94  TPZFMatrix<REAL> InvJac(2,2);
95  TPZVec< REAL > QsiEtaIni(2);
96  QsiEtaIni[0] = StartPoint[0];
97  QsiEtaIni[1] = StartPoint[1];
98  const double deltaQsi = 0.01;
99  const double deltaEta = 0.01;
100  double alpha;
101 
102  std::cout << "\ninitial Qsi = " << QsiEtaIni[0] << " | initial Eta = " << QsiEtaIni[1] << "\n";
103  std::cout << "deltaQsi = const = " << deltaQsi << " | deltaEta = const = " << deltaEta << "\n\n";
104 
105  TPZVec< REAL > OutAprox(3);
106  TPZFMatrix<REAL> error(11,1,0.);
107  double dX, dY, dZ;
108 
109  Object.Jacobian(QsiEtaIni,jacobian,Axes,detJacobian,InvJac);
110 
111  for(int i = 0; i <= 10; i++)
112  {
113  alpha = i/10.;
114  Object.X(QsiEtaIni,OutReal);//for aproximate compute
115  // std::cout << "\nalpha = " << alpha << std::endl;
116  // std::cout << "f(x) : x = " << OutReal[0] << " | y = " << OutReal[1] << " | z = " << OutReal[2] << "\n";
117 
118  dX = alpha*( jacobian.GetVal(0,0)*deltaQsi + jacobian.GetVal(0,1)*deltaEta )*Axes(0,0) + alpha*( jacobian.GetVal(1,0)*deltaQsi + jacobian.GetVal(1,1)*deltaEta )*Axes(1,0);
119  OutAprox[0] = OutReal[0] + dX;
120 
121  dY = alpha*( jacobian.GetVal(0,0)*deltaQsi + jacobian.GetVal(0,1)*deltaEta )*Axes(0,1) + alpha*( jacobian.GetVal(1,0)*deltaQsi + jacobian.GetVal(1,1)*deltaEta )*Axes(1,1);
122  OutAprox[1] = OutReal[1] + dY;
123 
124  dZ = alpha*( jacobian.GetVal(0,0)*deltaQsi + jacobian.GetVal(0,1)*deltaEta )*Axes(0,2) + alpha*( jacobian.GetVal(1,0)*deltaQsi + jacobian.GetVal(1,1)*deltaEta )*Axes(1,2);
125  OutAprox[2] = OutReal[2] + dZ;
126 
127  StartPoint[0] = QsiEtaIni[0] + alpha*deltaQsi;
128  StartPoint[1] = QsiEtaIni[1] + alpha*deltaEta;
129  Object.X(StartPoint,OutReal);//for real compute
130 
131  // std::cout << "alpha.(axes.J).dx : x = " << dX << " | y = " << dY << " | z = " << dZ << "\n";
132  // std::cout << "f(x) + alpha.(axes.J).dx : x = " << OutAprox[0] << " | y = " << OutAprox[1] << " | z = " << OutAprox[2] << "\n";
133  // std::cout << "f(x + alpha.dx) : x = " << OutReal[0] << " | y = " << OutReal[1] << " | z = " << OutReal[2] << "\n";
134  // std::cout << "--------------------------------------------------------------------\n";
135 
136  OutReal[0] -= OutAprox[0];
137  OutReal[1] -= OutAprox[1];
138  OutReal[2] -= OutAprox[2];
139 
140  double XDiffNorm = sqrt(OutReal[0]*OutReal[0] + OutReal[1]*OutReal[1] + OutReal[2]*OutReal[2]);
141  error(int(i),0) = XDiffNorm;
142  }
143 
144  // std::cout << "ERROR Vector:\n"; error.Print();
145 
146  std::cout << "Convergence Order:\n";
147  for(int j = 2; j < 11; j++)
148  {
149  std::cout << ( log(error(1,0)) - log(error(j,0)) )/( log(0.1)-log(j/10.) ) << "\n";
150  }
151  std::cout << "\nIf another kind of results are needed, edit the TPZMathTools Class on source code!\n";
152  return;
153  }
154 
155  if(Object.Dimension() == 3)
156  {
157  TPZFMatrix<REAL> jacobian(3,3);
158  TPZFMatrix<REAL> Axes(3,3);
159  REAL detJacobian;
160  TPZFMatrix<REAL> InvJac(3,3);
161  TPZVec< REAL > QsiEtaIni(3);
162  QsiEtaIni[0] = StartPoint[0];
163  QsiEtaIni[1] = StartPoint[1];
164  QsiEtaIni[2] = StartPoint[2];
165  const double deltaQsi = 0.01;
166  const double deltaEta = 0.01;
167  const double deltaZeta = 0.01;
168  double alpha;
169 
170  std::cout << "\ninitial Qsi = " << QsiEtaIni[0] << " | initial Eta = " << QsiEtaIni[1] << " | initial Zeta = " << QsiEtaIni[2] <<"\n";
171  std::cout << "deltaQsi = const = " << deltaQsi << " | deltaEta = const = " << deltaEta << " | deltaZeta = const = " << deltaZeta <<"\n\n";
172 
173  TPZVec< REAL > OutAprox(3);
174  TPZFMatrix<REAL> error(11,1,0.);
175  double dX, dY, dZ;
176 
177  Object.Jacobian(QsiEtaIni,jacobian,Axes,detJacobian,InvJac);
178 
179  for(int i = 0; i <= 10; i++)
180  {
181  alpha = i/10.;
182  Object.X(QsiEtaIni,OutReal);//for aproximate compute
183  // std::cout << "\nalpha = " << alpha << std::endl;
184  // std::cout << "f(x) : x = " << OutReal[0] << " | y = " << OutReal[1] << " | z = " << OutReal[2] << "\n";
185 
186  dX = alpha*( jacobian.GetVal(0,0)*deltaQsi + jacobian.GetVal(0,1)*deltaEta + jacobian.GetVal(0,2)*deltaZeta)*Axes(0,0) + alpha*( jacobian.GetVal(1,0)*deltaQsi + jacobian.GetVal(1,1)*deltaEta + jacobian.GetVal(1,2)*deltaZeta)*Axes(1,0) + alpha*( jacobian.GetVal(2,0)*deltaQsi + jacobian.GetVal(2,1)*deltaEta + jacobian.GetVal(2,2)*deltaZeta)*Axes(2,0);
187  OutAprox[0] = OutReal[0] + dX;
188 
189  dY = alpha*( jacobian.GetVal(0,0)*deltaQsi + jacobian.GetVal(0,1)*deltaEta + jacobian.GetVal(0,2)*deltaZeta)*Axes(0,1) + alpha*( jacobian.GetVal(1,0)*deltaQsi + jacobian.GetVal(1,1)*deltaEta + jacobian.GetVal(1,2)*deltaZeta)*Axes(1,1) + alpha*( jacobian.GetVal(2,0)*deltaQsi + jacobian.GetVal(2,1)*deltaEta + jacobian.GetVal(2,2)*deltaZeta)*Axes(2,1);
190  OutAprox[1] = OutReal[1] + dY;
191 
192  dZ = alpha*( jacobian.GetVal(0,0)*deltaQsi + jacobian.GetVal(0,1)*deltaEta + jacobian.GetVal(0,2)*deltaZeta)*Axes(0,2) + alpha*( jacobian.GetVal(1,0)*deltaQsi + jacobian.GetVal(1,1)*deltaEta + jacobian.GetVal(1,2)*deltaZeta)*Axes(1,2) + alpha*( jacobian.GetVal(2,0)*deltaQsi + jacobian.GetVal(2,1)*deltaEta + jacobian.GetVal(2,2)*deltaZeta)*Axes(2,2);
193  OutAprox[2] = OutReal[2] + dZ;
194 
195  StartPoint[0] = QsiEtaIni[0] + alpha*deltaQsi;
196  StartPoint[1] = QsiEtaIni[1] + alpha*deltaEta;
197  StartPoint[2] = QsiEtaIni[2] + alpha*deltaZeta;
198 
199  Object.X(StartPoint,OutReal);//for real compute
200 
201  // std::cout << "alpha.(axes.J).dx : x = " << dX << " | y = " << dY << " | z = " << dZ << "\n";
202  // std::cout << "f(x) + alpha.(axes.J).dx : x = " << OutAprox[0] << " | y = " << OutAprox[1] << " | z = " << OutAprox[2] << "\n";
203  // std::cout << "f(x + alpha.dx) : x = " << OutReal[0] << " | y = " << OutReal[1] << " | z = " << OutReal[2] << "\n";
204  // std::cout << "--------------------------------------------------------------------\n";
205 
206  OutReal[0] -= OutAprox[0];
207  OutReal[1] -= OutAprox[1];
208  OutReal[2] -= OutAprox[2];
209 
210  double XDiffNorm = sqrt(OutReal[0]*OutReal[0] + OutReal[1]*OutReal[1] + OutReal[2]*OutReal[2]);
211  error(int(i),0) = XDiffNorm;
212  }
213 
214  // std::cout << "ERROR Vector:\n"; error.Print();
215 
216  std::cout << "Convergence Order:\n";
217  for(int j = 2; j < 11; j++)
218  {
219  std::cout << ( log(error(1,0)) - log(error(j,0)) )/( log(0.1)-log(j/10.) ) << "\n";
220  }
221  std::cout << "\nIf another kind of results are needed, edit the TPZMathTools Class on source code!\n";
222  return;
223  }
224  else
225  {
226  std::cout << "Element don't fit in an option of Convergence Analys!\nSee TPZMathTools Class...\n";
227  return;
228  }
229 }
230 
233 {
234  TPZVec< REAL > OutReal(3,0.);
235  if(Object.Dimension() == 1)
236  {
237  TPZFMatrix<REAL> jacobian(1,1);
238  TPZFMatrix<REAL> Axes(1,3);
239  REAL detJacobian;
240  TPZFMatrix<REAL> InvJac(1,1);
241  TPZVec< REAL > QsiEtaIni(1);
242  QsiEtaIni[0] = StartPoint[0];
243  const double deltaQsi = 0.01;
244  double alpha;
245 
246  std::cout << "\ninitial Qsi = " << QsiEtaIni[0] << "\n";
247  std::cout << "deltaQsi = const = " << deltaQsi << "\n\n";
248 
249  TPZVec< REAL > OutAprox(3);
250  TPZFMatrix<REAL> error(11,1,0.);
251  double dX, dY, dZ;
252 
253  Object.Jacobian(QsiEtaIni,jacobian,Axes,detJacobian,InvJac);
254 
255  for(int i = 0; i < 11; i++)
256  {
257  alpha = i/10.;
258  Object.X(QsiEtaIni,OutReal);//for aproximate compute
259  // std::cout << "\nalpha = " << alpha << std::endl;
260  // std::cout << "f(x) : x = " << OutReal[0] << " | y = " << OutReal[1] << " | z = " << OutReal[2] << "\n";
261 
262  dX = alpha*( jacobian.GetVal(0,0)*deltaQsi )*Axes(0,0);
263  OutAprox[0] = OutReal[0] + dX;
264 
265  dY = alpha*( jacobian.GetVal(0,0)*deltaQsi )*Axes(0,1);
266  OutAprox[1] = OutReal[1] + dY;
267 
268  dZ = alpha*( jacobian.GetVal(0,0)*deltaQsi )*Axes(0,2);
269  OutAprox[2] = OutReal[2] + dZ;
270 
271  StartPoint[0] = QsiEtaIni[0] + alpha*deltaQsi;
272 
273  Object.X(StartPoint,OutReal);//for real compute
274 
275  // std::cout << "alpha.(axes.J).dx : x = " << dX << " | y = " << dY << " | z = " << dZ << "\n";
276  // std::cout << "f(x) + alpha.(axes.J).dx : x = " << OutAprox[0] << " | y = " << OutAprox[1] << " | z = " << OutAprox[2] << "\n";
277  // std::cout << "f(x + alpha.dx) : x = " << OutReal[0] << " | y = " << OutReal[1] << " | z = " << OutReal[2] << "\n";
278  // std::cout << "--------------------------------------------------------------------\n";
279 
280  OutReal[0] -= OutAprox[0];
281  OutReal[1] -= OutAprox[1];
282  OutReal[2] -= OutAprox[2];
283 
284  double XDiffNorm = sqrt(OutReal[0]*OutReal[0] + OutReal[1]*OutReal[1] + OutReal[2]*OutReal[2]);
285  error(int(i),0) = XDiffNorm;
286  }
287 
288  // std::cout << "ERROR Vector:\n"; error.Print();
289 
290  std::cout << "Convergence Order:\n";
291  for(int j = 2; j < 11; j++)
292  {
293  std::cout << ( log(error(1,0)) - log(error(j,0)) )/( log(0.1)-log(j/10.) ) << "\n";
294  }
295  std::cout << "\nIf another kind of results are needed, edit the TPZMathTools Class on source code!\n";
296  return;
297  }
298 
299  if(Object.Dimension() == 2)
300  {
301  TPZFMatrix<REAL> jacobian(2,2);
302  TPZFMatrix<REAL> Axes(2,3);
303  REAL detJacobian;
304  TPZFMatrix<REAL> InvJac(2,2);
305  TPZVec< REAL > QsiEtaIni(2);
306  QsiEtaIni[0] = StartPoint[0];
307  QsiEtaIni[1] = StartPoint[1];
308  const double deltaQsi = 0.01;
309  const double deltaEta = 0.01;
310  double alpha;
311 
312  std::cout << "\ninitial Qsi = " << QsiEtaIni[0] << " | initial Eta = " << QsiEtaIni[1] << "\n";
313  std::cout << "deltaQsi = const = " << deltaQsi << " | deltaEta = const = " << deltaEta << "\n\n";
314 
315  TPZVec< REAL > OutAprox(3);
316  TPZFMatrix<REAL> error(11,1,0.);
317  double dX, dY, dZ;
318 
319  Object.Jacobian(QsiEtaIni,jacobian,Axes,detJacobian,InvJac);
320 
321  for(int i = 0; i <= 10; i++)
322  {
323  alpha = i/10.;
324  Object.X(QsiEtaIni,OutReal);//for aproximate compute
325  // std::cout << "\nalpha = " << alpha << std::endl;
326  // std::cout << "f(x) : x = " << OutReal[0] << " | y = " << OutReal[1] << " | z = " << OutReal[2] << "\n";
327 
328  dX = alpha*( jacobian.GetVal(0,0)*deltaQsi + jacobian.GetVal(0,1)*deltaEta )*Axes(0,0) + alpha*( jacobian.GetVal(1,0)*deltaQsi + jacobian.GetVal(1,1)*deltaEta )*Axes(1,0);
329  OutAprox[0] = OutReal[0] + dX;
330 
331  dY = alpha*( jacobian.GetVal(0,0)*deltaQsi + jacobian.GetVal(0,1)*deltaEta )*Axes(0,1) + alpha*( jacobian.GetVal(1,0)*deltaQsi + jacobian.GetVal(1,1)*deltaEta )*Axes(1,1);
332  OutAprox[1] = OutReal[1] + dY;
333 
334  dZ = alpha*( jacobian.GetVal(0,0)*deltaQsi + jacobian.GetVal(0,1)*deltaEta )*Axes(0,2) + alpha*( jacobian.GetVal(1,0)*deltaQsi + jacobian.GetVal(1,1)*deltaEta )*Axes(1,2);
335  OutAprox[2] = OutReal[2] + dZ;
336 
337  StartPoint[0] = QsiEtaIni[0] + alpha*deltaQsi;
338  StartPoint[1] = QsiEtaIni[1] + alpha*deltaEta;
339  Object.X(StartPoint,OutReal);//for real compute
340 
341  // std::cout << "alpha.(axes.J).dx : x = " << dX << " | y = " << dY << " | z = " << dZ << "\n";
342  // std::cout << "f(x) + alpha.(axes.J).dx : x = " << OutAprox[0] << " | y = " << OutAprox[1] << " | z = " << OutAprox[2] << "\n";
343  // std::cout << "f(x + alpha.dx) : x = " << OutReal[0] << " | y = " << OutReal[1] << " | z = " << OutReal[2] << "\n";
344  // std::cout << "--------------------------------------------------------------------\n";
345 
346  OutReal[0] -= OutAprox[0];
347  OutReal[1] -= OutAprox[1];
348  OutReal[2] -= OutAprox[2];
349 
350  double XDiffNorm = sqrt(OutReal[0]*OutReal[0] + OutReal[1]*OutReal[1] + OutReal[2]*OutReal[2]);
351  error(int(i),0) = XDiffNorm;
352  }
353 
354  // std::cout << "ERROR Vector:\n"; error.Print();
355 
356  std::cout << "Convergence Order:\n";
357  for(int j = 2; j < 11; j++)
358  {
359  std::cout << ( log(error(1,0)) - log(error(j,0)) )/( log(0.1)-log(j/10.) ) << "\n";
360  }
361  std::cout << "\nIf another kind of results are needed, edit the TPZMathTools Class on source code!\n";
362  return;
363  }
364 
365  else
366  {
367  std::cout << "Element don't fit in an option of Convergence Analys!\nSee TPZMathTools Class...\n";
368  return;
369  }
370 
371 }
372 
373 void TPZMathTools::Function(const TPZVec<REAL> &x, REAL &fx)
374 {
375  REAL temp = 1./pow(x[0]*x[0]+x[1]*x[1],(REAL).5);// (1/r)
376  REAL ang = atan(x[1]/x[0]);
377  // fx = temp*cos(ang*0./2.);
378  // fx = temp*cos(ang*1./2.);
379  // fx = temp*cos(ang*2./2.);
380  fx = temp*cos(ang*3./2.);
381 }
382 
383 REAL TPZMathTools::IntegrateFunction(void (func)(const TPZVec<REAL> &coord, REAL &result), TPZGeoEl *Geo)
384 // REAL TPZMathTools::IntegrateFunction(TPZGeoEl *Geo)
385 {
386  int dim = Geo->Dimension();
387  TPZManVector<REAL,3> qsi(dim,0.), x(3,0.);
388  TPZFNMatrix<9> jacobian, axes(3,3), jacinv;
389  REAL detjac, weight, fval;
390 
391  TPZIntPoints *intrule = Geo->CreateSideIntegrationRule(Geo->NSides()-1, 2);
392  TPZManVector<int,3> order(dim,intrule->GetMaxOrder());
393  intrule->SetOrder(order);
394 
395  REAL Result = 0.;
396  int intrulepoints = intrule->NPoints();
397  for(int int_ind = 0; int_ind < intrulepoints; int_ind++)
398  {
399  intrule->Point(int_ind,qsi,weight);
400  Geo->X(qsi, x);
401  Geo->Jacobian(qsi, jacobian, axes, detjac , jacinv);
402  // this->Function(x, fval);
403  func(x,fval);
404  Result += fval * weight * fabs(detjac);
405  }//loop over integratin points
406 
407  delete intrule;
408  return Result;
409 
410 }//method
411 
expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ fabs
Definition: tfadfunc.h:140
virtual int NPoints() const =0
Returns number of points for the cubature rule related.
Contains the TPZMathTools class.
Utility class which represents an element with its side. The Geometric approximation classes Geometry...
Definition: pzgeoelside.h:83
void JacobianConv(TPZGeoEl &Object, TPZVec< REAL > StartPoint)
static void Function(const TPZVec< REAL > &x, REAL &fx)
Type in Function method (.cpp arquive) the function to be integrated.
virtual int NSides() const =0
Returns the number of connectivities of the element.
REAL IntegrateFunction(void(func)(const TPZVec< REAL > &coord, REAL &result), TPZGeoEl *Geo)
Abstract class defining integration rules. Numerical Integration.
Definition: tpzintpoints.h:19
void error(char *string)
Definition: testShape.cc:7
virtual TPZIntPoints * CreateSideIntegrationRule(int side, int order)=0
Creates an integration rule for the topology of the corresponding side and able to integrate a polyno...
Defines the behaviour of all geometric elements. GeometryTPZGeoEl is the common denominator for all g...
Definition: pzgeoel.h:43
virtual void SetOrder(TPZVec< int > &ord, int type=0)=0
Sets the order of the cubature rule.
void X(TPZVec< REAL > &loc, TPZVec< REAL > &result) const
X coordinate of a point loc of the side.
void Jacobian(TPZVec< REAL > &qsi, TPZFMatrix< REAL > &jac, TPZFMatrix< REAL > &axes, REAL &detjac, TPZFMatrix< REAL > &jacinv) const
Compute a decomposition of the gradient of the mapping function, as a rotation matrix (Jacobian) and ...
Definition: pzgeoel.cpp:1144
expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ sqrt
Definition: tfadfunc.h:120
TPZFlopCounter pow(const TPZFlopCounter &orig, const TPZFlopCounter &xp)
Returns the power and increments the counter of the power.
Definition: pzreal.h:487
virtual int Dimension() const =0
Returns the dimension of the element.
expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ log
Definition: tfadfunc.h:130
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...
expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ atan
Definition: tfadfunc.h:85
virtual int GetMaxOrder() const
Returns the minimum order to integrate polinomials exactly for all implemented cubature rules...
Definition: pzquad.cpp:30
int Dimension() const
the dimension associated with the element/side
void Jacobian(TPZVec< REAL > &param, TPZFMatrix< REAL > &jacobian, TPZFMatrix< REAL > &axes, REAL &detjac, TPZFMatrix< REAL > &jacinv) const
Jacobian associated with the side of the element.
Contains the TPZIntPoints class which defines integration rules.
TPZFlopCounter cos(const TPZFlopCounter &orig)
Returns the cosine in radians and increments the counter of the Cosine.
Definition: pzreal.h:514
const TVar & GetVal(const int64_t row, const int64_t col) const override
Get values without bounds checking This method is faster than "Get" if DEBUG is defined.
Definition: pzfmatrix.h:566
virtual void Point(int i, TPZVec< REAL > &pos, REAL &w) const =0
Returns i-th point at master element and related weight.