NeoPZ
pzreducedspace.cpp
Go to the documentation of this file.
1 //
2 // pzreducedspace.cpp
3 // PZ
4 //
5 // Created by Philippe Devloo on 7/30/12.
6 // Copyright (c) 2012 __MyCompanyName__. All rights reserved.
7 //
8 
9 #include <iostream>
10 #include "pzreducedspace.h"
11 #include "tpzcompmeshreferred.h"
12 #include "pzmultiphysicselement.h"
13 #include "TPZMaterial.h"
14 #include "pzelmat.h"
15 #include "pzlog.h"
16 
17 #ifdef LOG4CXX
18 static LoggerPtr logger(Logger::getLogger("pz.mesh.TPZInterpolationSpace"));
19 #endif
20 
24 {
25 
26 }
27 
30 {
31 
32 }
33 
36 TPZInterpolationSpace(mesh,copy)
37 {
38 
39 }
40 
42 TPZReducedSpace::TPZReducedSpace(TPZCompMesh &mesh, const TPZReducedSpace &copy, std::map<int64_t,int64_t> &gl2lcElMap) : TPZRegisterClassId(&TPZReducedSpace::ClassId),
43 TPZInterpolationSpace(mesh,copy,gl2lcElMap)
44 {
45 
46 }
47 
50 TPZInterpolationSpace(mesh,copy,index)
51 {
52 
53 }
54 
63 TPZInterpolationSpace(mesh,gel,index)
64 {
65 
66 }
67 
70 {
71  TPZConnect &c = Connect(0);
72  return c.NShape();
73 }
74 
76 int TPZReducedSpace::NConnectShapeF(int inod, int order) const
77 {
78 #ifdef PZDEBUG
79  if (inod != 0) {
80  DebugStop();
81  }
82 #endif
83  TPZConnect &c = Connect(0);
84  return c.NShape();
85 }
86 
89 {
91  return intel->MaxOrder();
92 }
93 
105 {
106  DebugStop();
107 }
108 
120 {
121 #ifdef STATE_COMPLEX
122  DebugStop();
123 #else
125  TPZSolVec sol;
126  TPZGradSolVec dsol;
127  intel->ComputeSolution(qsi, sol, dsol, axes);
128  int nsol = sol.size();
129  int nstate = sol[0].size();
130  int dim = axes.Rows();
131  phi.Resize(nsol,nstate);
132  dphix.Resize(nsol,nstate*dim);
133  for (int isol =0; isol<nsol; isol++) {
134  for (int istate=0; istate<nstate; istate++) {
135  phi(isol,istate) = sol[isol][istate];
136  for (int id=0; id<dim; id++) {
137  dphix(isol,id+istate*dim) = dsol[isol](id,istate);
138  }
139  }
140  }
141 #endif
142 }
143 
144 
146 {
147 #ifdef STATE_COMPLEX
148  DebugStop();
149 #else
151 
152  intel->ComputeSolution(qsi, data.sol, data.dsol, data.axes);
153  int64_t nsol = data.sol.size();
154  int nstate = data.sol[0].size();
155  int dim = data.axes.Rows();
156  data.phi.Resize(nsol,nstate);
157  data.dphix.Resize(nsol,nstate*dim);
158  for (int64_t isol =0; isol<nsol; isol++) {
159  for (int istate=0; istate<nstate; istate++) {
160  data.phi(isol,istate) = data.sol[isol][istate];
161  for (int id=0; id<dim; id++) {
162  data.dphix(isol,id+istate*dim) = data.dsol[isol](id,istate);
163  }
164  }
165  }
166 #endif
167 }
168 
169 
171  ShapeX(qsi,data);
172 }
173 
175  ComputeSolution(qsi, data.phi, data.dphix, data.axes,data.sol,data.dsol);
176 }
177 
183 {
185  TPZMaterial *mat = Material();
186  mat->FillDataRequirements(data);
187 }
188 
191  TPZVec<REAL> &qsi)
192 {
193  data.intGlobPtIndex = -1;
194  ShapeX(qsi, data.phi, data.dphix, data.axes);
195 
196  if (data.fNeedsSol) {
197  ComputeSolution(qsi, data.phi, data.dphix, data.axes, data.sol, data.dsol);
198  }
199  if (data.fNeedsHSize){
200  data.HSize = 2.*this->InnerRadius();
201  }//fNeedHSize
202 
203  if(data.fNeedsNormal){
204  this->ComputeNormal(data);
205  }
206  data.x.Resize(3., 0.);
207  Reference()->X(qsi, data.x);
208 
209  int dim = Reference()->Dimension();
210  data.jacobian.Resize(dim,dim);
211  data.jacinv.Resize(dim,dim);
212  Reference()->Jacobian(qsi, data.jacobian, data.axes, data.detjac, data.jacinv);
213 }
214 
215 
218 {
219  TPZMaterial *mat = this->Material();
220  const int numdof = 1;
221  const int ncon = this->NConnects();
222 #ifdef PZDEBUG
223  if (ncon != 1) {
224  DebugStop();
225  }
226 #endif
227  const int nshape = this->NShapeF();
228  const int numeq = nshape*numdof;
229  const int numloadcases = mat->NumLoadCases();
230  ek.fMat.Redim(numeq,numeq);
231  ef.fMat.Redim(numeq,numloadcases);
232  ek.fBlock.SetNBlocks(ncon);
233  ef.fBlock.SetNBlocks(ncon);
234 
235  int i;
236  for(i=0; i<ncon; i++){
237  unsigned int nshape = Connect(i).NShape();
238  ek.fBlock.Set(i,nshape*numdof);
239  ef.fBlock.Set(i,nshape*numdof);
240  }
241  ek.fConnect.Resize(ncon);
242  ef.fConnect.Resize(ncon);
243  for(i=0; i<ncon; i++){
244  (ef.fConnect)[i] = ConnectIndex(i);
245  (ek.fConnect)[i] = ConnectIndex(i);
246  }
247 
248 }
249 
252 {
253  TPZMaterial *mat = this->Material();
254  const int numdof = 1;
255  const int ncon = this->NConnects();
256 #ifdef PZDEBUG
257  if (ncon != 1) {
258  DebugStop();
259  }
260 #endif
261  const int nshape = this->NShapeF();
262  const int numeq = nshape*numdof;
263  const int numloadcases = mat->NumLoadCases();
264  ef.fMat.Redim(numeq,numloadcases);
265  ef.fBlock.SetNBlocks(ncon);
266 
267  int i;
268  for(i=0; i<ncon; i++){
269  unsigned int nshape = Connect(i).NShape();
270  ef.fBlock.Set(i,nshape*numdof);
271  }
272  ef.fConnect.Resize(ncon);
273  for(i=0; i<ncon; i++){
274  (ef.fConnect)[i] = ConnectIndex(i);
275  }
276 }
277 
279 void TPZReducedSpace::Write(TPZStream &buf, int withclassid) const
280 {
281  TPZInterpolationSpace::Write(buf, withclassid);
282 }
283 
285 void TPZReducedSpace::Read(TPZStream &buf, void *context)
286 {
287  TPZInterpolationSpace::Read(buf, context);
288 }
289 
291 {
292  TPZCompMesh *cmesh = Mesh();
293  TPZCompMeshReferred *cmeshref = dynamic_cast<TPZCompMeshReferred *>(cmesh);
294 
295 #ifdef PZDEBUG
296  if (!cmeshref) {
297  DebugStop();
298  }
299 #endif
300 
301  TPZCompEl *cel = cmeshref->ReferredEl(Index());
302 
303 #ifdef PZDEBUG
304  if (!cel) {
305  DebugStop();
306  }
307 #endif
308 
309  TPZInterpolationSpace *intel = dynamic_cast<TPZInterpolationSpace *>(cel);
310 
311 
312  TPZMultiphysicsElement * mf_cel = dynamic_cast<TPZMultiphysicsElement *>(cel);
313 
314 #ifdef PZDEBUG
315  if (!intel && !mf_cel) {
316  DebugStop();
317  }
318 #endif
319 
320  if (intel) {
321  return intel;
322  }
323 
324  TPZInterpolationSpace * intel_mf = dynamic_cast<TPZInterpolationSpace * >(mf_cel->Element(0)); //@omar:: garbage solution
325  if(intel_mf){
326  return intel_mf;
327  }
328 
329  return intel;
330 }
331 
342  const TPZFMatrix<REAL> &axes, TPZSolVec &sol, TPZGradSolVec &dsol)
343 {
344  const int dim = axes.Rows();//this->Reference()->Dimension();
345  const int nstate = this->Material()->NStateVariables() + 1;
346 
347 #ifdef PZDEBUG
348  const int ncon = this->NConnects();
349  if (ncon != 1) {
350  DebugStop();
351  }
352 #endif
353 
354 // TPZInterpolationSpace *intel = ReferredIntel();
355 // TPZSolVec sol_t;
356 // TPZGradSolVec dsol_t;
357 // TPZFMatrix<REAL> axes_t = axes;
358 // intel->ComputeSolution(qsi, sol_t, dsol_t, axes_t);
359 
360  int nsol = phi.Rows();//sol_t.size();
361 // int numdof = sol_t[0].size();
362 // int dim = axes_t.Rows();
363 
364  TPZFMatrix<STATE> &MeshSol = Mesh()->Solution();
365  int64_t numbersol = MeshSol.Cols();
366  int64_t numberdof = MeshSol.Rows();
367  sol.Resize(numbersol);
368  dsol.Resize(numbersol);
369 
370  for (int64_t is=0 ; is<numbersol; is++) {
371  sol[is].Resize(nstate);
372  sol[is].Fill(0.);
373  dsol[is].Redim(nstate, nstate*dim);
374  dsol[is].Zero();
375  }
376 
377  TPZBlock<STATE> &block = Mesh()->Block();
378  TPZConnect *df = &this->Connect(0);
379  int64_t dfseq = df->SequenceNumber();
380  int dfvar = block.Size(dfseq);
381  int64_t pos = block.Position(dfseq);
382 
383 #ifdef PZDEBUG
384  {
385  if(nsol * nstate != dfvar)
386  {
387  DebugStop();
388  }
389 
390  }
391 
392 
393 #endif
394 
395  for(int ib=0; ib < nsol; ib++) {
396 
397  for (int64_t is=0; is<numbersol; is++) {
398 
399  for(int64_t iv = 0; iv < nstate; iv++){
400  sol[is][iv%nstate] += (STATE)phi(ib,iv)*MeshSol(pos+ib*nstate+iv,is);
401 
402  for(int64_t id = 0; id < dim; id++){
403  dsol[is](iv%nstate,id) += (STATE)dphix(ib,id+iv*dim)*MeshSol(pos+ib*nstate+iv,is);
404  }
405  }
406  }
407  }
408 
409 }
410 
411 static TPZCompEl * CreateReducedElement(TPZGeoEl *gel,TPZCompMesh &mesh,int64_t &index)
412 {
413  return new TPZReducedSpace(mesh,gel,index);
414 }
415 
417 {
419  functions[EPoint] = CreateReducedElement;
420  functions[EOned] = CreateReducedElement;
422  functions[ETriangle] = CreateReducedElement;
423  functions[EPrisma] = CreateReducedElement;
424  functions[ETetraedro] = CreateReducedElement;
425  functions[EPiramide] = CreateReducedElement;
426  functions[ECube] = CreateReducedElement;
427  cmesh->ApproxSpace().SetCreateFunctions(functions);
428 }
429 
431  return new TPZReducedSpace(mesh, *this);
432 }
433 
434 TPZCompEl * TPZReducedSpace::ClonePatchEl (TPZCompMesh &mesh, std::map< int64_t, int64_t > &gl2lcConMap, std::map< int64_t, int64_t > &gl2lcElMap) const {
435  return new TPZReducedSpace(mesh,*this,gl2lcElMap);
436 }
437 
438 #include "pzgraphel.h"
439 #include "pzgraphelq2dd.h"
440 #include "pzgraphelq3dd.h"
441 #include "pzgraphel1d.h"
442 #include "pzgraphel1dd.h"
443 #include "pztrigraphd.h"
444 #include "pztrigraph.h"
445 #include "tpzgraphelt2dmapped.h"
446 #include "tpzgraphelprismmapped.h"
447 #include "tpzgraphelpyramidmapped.h"
448 #include "tpzgraphelt3d.h"
449 #include "pzgraphel.h"
450 #include "pzgraphmesh.h"
451 
452 
454  TPZGeoEl *ref = Reference();
455  int matid = Material()->Id();
456  int nsides = ref->NSides();
457  bool to_postpro = grmesh.Material_Is_PostProcessed(matid);
458  if(dimension == 2 && to_postpro){
459  if(nsides == 9){
460  new TPZGraphElQ2dd(this,&grmesh);
461  return;
462  }
463  if(nsides == 7){
464  new TPZGraphElT2dMapped(this,&grmesh);
465  return;
466  }
467  }//2d
468 
469  if(dimension == 3 && to_postpro){
470  if(nsides == 27){
471  new TPZGraphElQ3dd(this,&grmesh);
472  return;
473  }//cube
474  if(nsides == 21){
475  new TPZGraphElPrismMapped(this,&grmesh);
476  return;
477  }//prism
478  if(nsides == 15){
479  new TPZGraphElT3d(this,&grmesh);
480  return;
481  }//tetra
482  if(nsides == 19){
483  new TPZGraphElPyramidMapped(this,&grmesh);
484  return;
485  }//pyram
486  }//3d
487 
488  if(dimension == 1 && to_postpro){
489  new TPZGraphEl1dd(this,&grmesh);
490  }//1d
491 }
492 
494  return Hash("TPZReducedSpace") ^ TPZInterpolationSpace::ClassId() << 1;
495 }
bool Material_Is_PostProcessed(int matid)
Return a directive if the material id is being postprocessed.
Represents a graphical mesh used for post processing purposes. Post processing.
Definition: pzgraphmesh.h:34
virtual int ClassId() const override
Define the class id associated with the class.
Contains the TPZGraphElTd class which implements the graphical discontinuous triangular element...
int Position(const int block_diagonal) const
Returns the position of first element block dependent on matrix diagonal.
Definition: pzblock.h:177
virtual int NConnectShapeF(int inod, int order) const override
Returns the number of shapefunctions associated with a connect.
int Set(const int index, const int dim, const int pos=-1)
Modifies existing block dimensions or creates a new block with given index.
Definition: pzblock.cpp:104
Represents a set of shape functions associated with a computational element/side. Computational Eleme...
Definition: pzconnect.h:30
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.
TPZManVector< REAL, 3 > x
value of the coordinate at the integration point
To export a graphical one dimensional discontinuous element. Post processing.
Definition: pzgraphel1dd.h:22
virtual void ShapeX(TPZVec< REAL > &qsi, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphix, TPZFMatrix< REAL > &axes)
Computes the shape function set at the point x.
TPZCompEl * ReferredEl(int64_t index)
TPZInterpolationSpace * ReferredIntel() const
virtual TPZCompEl * Element(int64_t elindex)=0
clarg::argInt dimension("-d", "Matrices dimension M x M", 1000)
TPZStack< int64_t > fConnect
Vector of pointers to TPZConnect objects.
Definition: pzelmat.h:39
TPZFNMatrix< 1000, STATE > fMat
Pointer to a blocked matrix object.
Definition: pzelmat.h:41
void CreateGraphicalElement(TPZGraphMesh &grafgrid, int dimension) override
Creates corresponding graphical element(s) if the dimension matches graphical elements are used to ge...
To export a graphical two-dimensional discontinuous element. Post processing.
Definition: pzgraphelq2dd.h:16
To export a graphical three dimensional discontinuous element. Post processing.
Definition: pzgraphelq3dd.h:20
void SetCreateFunctions(TPZVec< TCreateFunction > &createfuncs)
Set custom function pointers.
Contains the TPZGraphEl class which implements the graphical one-, two- and three-dimensional element...
virtual int NStateVariables() const =0
Returns the number of state variables associated with the material.
TPZGradSolVec dsol
vector of the derivatives of the solution at the integration point
MShapeFunctionType fShapeType
Contains the declaration of the TPZMultiphysicsElement class. This class is abstract.
TPZFNMatrix< 9, REAL > jacinv
value of the inverse of the jacobian at the integration point
Implements the graphical element for a pyramid using a map to the cube element. Post processing...
virtual int NSides() const =0
Returns the number of connectivities of the element.
virtual int MaxOrder() override
Returns the max order of interpolation.
TPZBlock< STATE > fBlock
Block structure associated with fMat.
Definition: pzelmat.h:43
Contains the TPZGraphEl1d class which implements the graphical one dimensional element.
virtual TPZCompEl * ClonePatchEl(TPZCompMesh &mesh, std::map< int64_t, int64_t > &gl2lcConMap, std::map< int64_t, int64_t > &gl2lcElMap) const override
Method for creating a copy of the element in a patch mesh.
TPZReducedSpace()
Default constructor.
virtual void Resize(const int64_t newsize, const T &object)
Resizes the vector object.
Definition: pzmanvector.h:426
TPZFNMatrix< 9, REAL > jacobian
value of the jacobian at the integration point
virtual void Read(TPZStream &buf, void *context) override
Reads the element data from a stream.
TPZFNMatrix< 220, REAL > phi
vector of shapefunctions (format is dependent on the value of shapetype)
virtual int NShapeF() const override
It returns the shapes number of the element.
void InitializeElementMatrix(TPZElementMatrix &ek, TPZElementMatrix &ef) override
Initialize element matrix in which is computed CalcStiff.
void Write(TPZStream &buf, int withclassid) const override
Save the element data to a stream.
virtual void ComputeRequiredData(TPZMaterialData &data, TPZVec< REAL > &qsi) override
Compute and fill data with requested attributes.
TPZFNMatrix< 660, REAL > dphix
values of the derivative of the shape functions
This abstract class defines the behaviour which each derived class needs to implement.
Definition: TPZMaterial.h:39
Contains declaration of TPZElementMatrix struct which associates an element matrix with the coeficien...
int ClassId() const override
Define the class id associated with the class.
virtual TPZMaterial * Material() const
Identify the material object associated with the element.
Definition: pzcompel.cpp:959
Implements a graphical element for a triangle mapped into de quadrilateral element. Post processing.
int64_t size() const
Returns the number of elements of the vector.
Definition: pzvec.h:196
TPZCreateApproximationSpace & ApproxSpace()
Definition: pzcmesh.h:498
int64_t SequenceNumber() const
Returns the Sequence number of the connect object.
Definition: pzconnect.h:158
static TPZCompEl * CreateReducedElement(TPZGeoEl *gel, TPZCompMesh &mesh, int64_t &index)
void Read(TPZStream &buf, void *context) override
Read the element data from a stream.
Contains the TPZGraphElT3d class which implements the graphical representation of a tetrahedra elemen...
Implements the graphical element for a prism using a degenerated cube element. Post processing...
Defines the behaviour of all geometric elements. GeometryTPZGeoEl is the common denominator for all g...
Definition: pzgeoel.h:43
Contains the TPZGraphElQ2dd class which implements the graphical two-dimensional discontinuous elemen...
Implements the graphical representation of a tetrahedra element. Post processing. ...
Definition: tpzgraphelt3d.h:16
Contains declaration of TPZCompMeshReferred class which implements the structure to allow one mesh to...
virtual void FillDataRequirements(TPZMaterialData &data)
Fill material data parameter with necessary requirements for the.
Definition: TPZMaterial.cpp:81
virtual void ComputeSolution(TPZVec< REAL > &qsi, TPZMaterialData &data) override
#define DebugStop()
Returns a message to user put a breakpoint in.
Definition: pzerror.h:20
Contains the TPZGraphElPrismMapped class which implements the graphical element for a prism using a d...
TPZCompMesh * Mesh() const
Return a pointer to the grid of the element.
Definition: pzcompel.cpp:288
virtual ~TPZReducedSpace()
Default destructor.
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
Implements the structure to allow one mesh to refer to the solution of another. Geometry.
unsigned int NShape() const
Definition: pzconnect.h:151
int64_t Rows() const
Returns number of rows.
Definition: pzmatrix.h:803
Contains the TPZGraphElT class which implements the graphical triangular element. ...
TPZFNMatrix< 9, REAL > axes
axes indicating the directions of the derivatives of the shapefunctions
const TPZBlock< STATE > & Block() const
Access the block structure of the solution vector.
Definition: pzcmesh.h:213
Contains the TPZGraphMesh class which represents a graphical mesh used for post processing purposes...
Contains the TPZGraphElPyramidMapped class which implements the graphical element for a pyramid using...
int64_t Index() const
Returns element index of the mesh fELementVec list.
Definition: pzcompel.h:821
REAL HSize
measure of the size of the element
virtual int64_t ConnectIndex(int i) const override
Returns the index of the ith connectivity of the element.
int intGlobPtIndex
global point index
int SetNBlocks(const int num_of_blocks)
Sets number of blocks on diagonal matrix.
Definition: pzblock.cpp:91
virtual void ComputeSolution(TPZVec< REAL > &qsi, TPZMaterialData &data)
Definition: pzcompel.h:462
int Redim(const int64_t newRows, const int64_t newCols) override
Redimension a matrix and ZERO your elements.
Definition: pzfmatrix.h:616
virtual TPZConnect & Connect(int i) const
Returns a pointer to the ith node.
Definition: pzcompel.cpp:298
int32_t Hash(std::string str)
Definition: TPZHash.cpp:10
This class associates an element matrix with the coeficients of its contribution in the global stiffn...
Definition: pzelmat.h:30
Implements the interfaces for TPZCompElDisc, TPZInterfaceElement and TPZInterpolatedElement. Computational element.
virtual void Write(TPZStream &buf, int withclassid) const override
Saves the element data to a stream.
virtual int Dimension() const =0
Returns the dimension of the element.
TPZGeoEl * Reference() const
Return a pointer to the corresponding geometric element if such exists, return 0 otherwise.
Definition: pzcompel.cpp:1137
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...
virtual void ComputeShape(TPZVec< REAL > &qsi, TPZMaterialData &data) override
Compute shape functions based on master element in the classical FEM manne.
Implements computational mesh. Computational Mesh.
Definition: pzcmesh.h:47
int Size(const int block_diagonal) const
Returns block dimension.
Definition: pzblock.h:171
Definition: pzeltype.h:61
Contains the TPZGraphElT2dMapped class which implements a graphical element for a triangle mapped int...
int NumLoadCases()
returns the number of load cases for this material object
Definition: TPZMaterial.h:186
int Id() const
Definition: TPZMaterial.h:170
void Fill(const T &copy, const int64_t from=0, const int64_t numelem=-1)
Will fill the elements of the vector with a copy object.
Definition: pzvec.h:460
int64_t Cols() const
Returns number of cols.
Definition: pzmatrix.h:809
virtual int MaxOrder()
Returns the max order of interpolation.
int Resize(const int64_t newRows, const int64_t wCols) override
Redimension a matrix, but maintain your elements.
Definition: pzfmatrix.cpp:1016
virtual void ComputeNormal(TPZMaterialData &data)
Computes the proper normal vector towards the neighbour element.
Defines the interface for saving and reading data. Persistency.
Definition: TPZStream.h:50
virtual TPZCompEl * Clone(TPZCompMesh &mesh) const override
Method for creating a copy of the element.
Contains the TPZGraphEl1dd class which implements the graphical one dimensional discontinuous element...
Contains the declaration of the Reduced Space class.
virtual REAL InnerRadius()
Returns the inner radius value.
virtual int NConnects() const override
Returns the number of nodes of the element.
Definition: pzeltype.h:55
static void SetAllCreateFunctionsReducedSpace(TPZCompMesh *cmesh)
Defines the interface of a computational element. Computational Element.
Definition: pzcompel.h:59
TPZSolVec sol
vector of the solutions at the integration point
virtual void Shape(TPZVec< REAL > &qsi, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi) override
Computes the shape function set at the point x.
Contains the TPZGraphElQ3dd class which implements the graphical three dimensional discontinuous elem...
TPZFMatrix< STATE > & Solution()
Access the solution vector.
Definition: pzcmesh.h:219
REAL detjac
determinant of the jacobian
virtual void InitMaterialData(TPZMaterialData &data) override
Initialize a material data and its attributes based on element dimension, number of state variables a...