NeoPZ
pzpostprocanalysis.cpp
Go to the documentation of this file.
1 //$Id: pzpostprocanalysis.cpp,v 1.10 2010-11-23 18:58:35 diogo Exp $
2 #include "pzanalysis.h"
3 #include "pzpostprocanalysis.h"
4 #include "pzpostprocmat.h"
5 #include "pzcompelpostproc.h"
6 #include "pzcmesh.h"
7 #include "pzgmesh.h"
8 #include "pzvec.h"
9 #include "tpzautopointer.h"
10 #include "tpzcompmeshreferred.h"
11 #include "pzstring.h"
12 //#include "pzelastoplasticanalysis.h"
13 #include "pzcreateapproxspace.h"
14 #include "pzmultiphysicselement.h"
15 
16 #include <map>
17 #include <set>
18 #include <stdio.h>
19 #include "pzlog.h"
20 
21 #include "pzintel.h"
22 
23 #include "pzrefpoint.h"
24 #include "pzgeopoint.h"
25 #include "pzshapepoint.h"
26 #include "tpzpoint.h"
27 
28 #include "pzshapelinear.h"
29 #include "TPZGeoLinear.h"
30 #include "TPZRefLinear.h"
31 #include "tpzline.h"
32 
33 #include "pzshapetriang.h"
34 #include "pzreftriangle.h"
35 #include "pzgeotriangle.h"
36 #include "tpztriangle.h"
37 
38 #include "pzrefquad.h"
39 #include "pzshapequad.h"
40 #include "pzgeoquad.h"
41 #include "tpzquadrilateral.h"
42 
43 #include "pzshapeprism.h"
44 #include "pzrefprism.h"
45 #include "pzgeoprism.h"
46 #include "tpzprism.h"
47 
48 #include "pzshapetetra.h"
49 #include "pzreftetrahedra.h"
50 #include "pzgeotetrahedra.h"
51 #include "tpztetrahedron.h"
52 
53 #include "pzshapepiram.h"
54 #include "pzrefpyram.h"
55 #include "pzgeopyramid.h"
56 #include "tpzpyramid.h"
57 
58 #include "TPZGeoCube.h"
59 #include "pzshapecube.h"
60 #include "TPZRefCube.h"
61 #include "tpzcube.h"
62 #include "pzelctemp.h"
63 
64 #ifdef LOG4CXX
65 static LoggerPtr PPAnalysisLogger(Logger::getLogger("pz.analysis.postproc"));
66 #endif
67 
68 using namespace std;
69 
71 fpMainMesh(NULL)
72 {
73 }
74 
76 TPZAnalysis(), fpMainMesh(pRef)
77 {
78 
79  SetCompMesh(pRef);
80 
81 }
82 
84 TPZAnalysis(copy), fpMainMesh(0)
85 {
86 
87 }
88 
90 {
91  SetCompMesh(0);
92  return *this;
93 }
94 
96 {
97  if (fCompMesh) {
98  delete fCompMesh;
99  }
100 
101 }
102 
104 void TPZPostProcAnalysis::SetCompMesh(TPZCompMesh *pRef, bool mustOptimizeBandwidth)
105 {
106  // the postprocess mesh already exists, do nothing
107  if (fpMainMesh == pRef) {
108  return;
109  }
110 
111  if (fCompMesh) {
112  delete fCompMesh;
113  fCompMesh = 0;
115  }
116 
117  fpMainMesh = pRef;
118 
119  if (!pRef) {
120  return;
121  }
122 
123  TPZCompMesh* pcMainMesh = fpMainMesh;
124 
125  TPZGeoMesh * pgmesh = pcMainMesh->Reference();
126 
127  TPZCompMeshReferred * pcPostProcMesh = new TPZCompMeshReferred(pgmesh);
128 
129  fCompMesh = pcPostProcMesh;
130 
132 
133 }
134 
135 
137 {
138 
139  int nMat, matNumber;
140  TPZCompMesh * pcMainMesh = fpMainMesh;
141 
142  TPZCompMeshReferred * pcPostProcMesh = dynamic_cast<TPZCompMeshReferred *>(this->Mesh());
143 
144  if (!pcPostProcMesh) {
145  DebugStop();
146  }
147 
148  if (pcPostProcMesh->ReferredMesh() == pcMainMesh) {
149  return;
150  }
151  nMat = matIds.NElements();
152  for(int i = 0; i < nMat; i++)
153  {
154  TPZMaterial * pmat = pcMainMesh->FindMaterial(matIds[i]);
155  if(!pmat)
156  {
157  PZError << "Error at " << __PRETTY_FUNCTION__ << " TPZPostProcAnalysis::SetPostProcessVariables() material Id " << matIds[i] << " not found in original mesh!\n";
158  continue;
159  }
160 
161  TPZPostProcMat * pPostProcMat = new TPZPostProcMat(matIds[i]);
162 
163  pPostProcMat->SetPostProcessVarIndexList(varNames,pmat);
164 
165  matNumber = pcPostProcMesh->InsertMaterialObject(pPostProcMat);
166 
167  }
168 
169  AutoBuildDisc();
170 
171  pcPostProcMesh->LoadReferred(pcMainMesh);
172 
173  pcPostProcMesh->ExpandSolution();
174 }
175 
177 {
179  int64_t i, nelem = elvec.NElements();
180  int neltocreate = 0;
181  int64_t index;
182 
183  // build a data structure indicating which geometric elements will be post processed
185  std::map<TPZGeoEl *,TPZCompEl *> geltocreate;
186  TPZCompMeshReferred * pcPostProcMesh = dynamic_cast<TPZCompMeshReferred *>(this->Mesh());
187  for (i=0; i<nelem; i++) {
188  TPZGeoEl * gel = elvec[i];
189  if (!gel) {
190  continue;
191  }
192 
193  if (gel->HasSubElement()) {
194  continue;
195  }
196 
197  TPZMaterial * mat = pcPostProcMesh->FindMaterial(gel->MaterialId());
198  if(!mat)
199  {
200  continue;
201  }
202 
203  if (gel->Reference()) {
204  geltocreate[elvec[i]] = gel->Reference();
205  }
206  }
207  Mesh()->Reference()->ResetReference();
208  Mesh()->LoadReferences();
209  neltocreate = geltocreate.size();
210 
211  std::set<int> matnotfound;
212  int nbl = Mesh()->Block().NBlocks();
213  if(neltocreate > nbl) Mesh()->Block().SetNBlocks(neltocreate);
214  Mesh()->Block().SetNBlocks(nbl);
215 
216  std::map<TPZGeoEl *, TPZCompEl *>::iterator it;
217  for (it=geltocreate.begin(); it!= geltocreate.end(); it++)
218  {
219  TPZGeoEl *gel = it->first;
220  if(!gel) continue;
221  int matid = gel->MaterialId();
222  TPZMaterial * mat = Mesh()->FindMaterial(matid);
223  if(!mat)
224  {
225  matnotfound.insert(matid);
226  continue;
227  }
228  int printing = 0;
229  if (printing) {
230  gel->Print(cout);
231  }
232 
233  Mesh()->CreateCompEl(gel,index);
234  TPZCompEl *cel = Mesh()->ElementVec()[index];
235  TPZCompEl *celref = it->second;
236  int nc = cel->NConnects();
237  int ncref = celref->NConnects();
238  TPZInterpolationSpace *celspace = dynamic_cast<TPZInterpolationSpace *>(cel);
239  TPZInterpolationSpace *celrefspace = dynamic_cast<TPZInterpolationSpace *>(celref);
240  int porder;
241  if (!celrefspace) {
242  TPZMultiphysicsElement *celrefmf = dynamic_cast<TPZMultiphysicsElement *>(celref);
243  if (celrefmf){
244  celrefspace = dynamic_cast<TPZInterpolationSpace *>(celrefmf->Element(0));
245  } else {
246  DebugStop();
247  }
248  }
249 
250  if (celrefspace) {
251  porder = celrefspace->GetPreferredOrder();
252  } else {
253  DebugStop();
254  }
255 
256  celspace->SetPreferredOrder(porder);
257  for (int ic=0; ic<nc; ic++) {
258  cel->Connect(ic).SetOrder(porder,cel->ConnectIndex(ic));
259  int nshape = celspace->NConnectShapeF(ic,porder);
260  cel->Connect(ic).SetNShape(nshape);
261  }
262 
263  TPZIntPoints &intrule = celspace->GetIntegrationRule();
264  const TPZIntPoints &intruleref = celref->GetIntegrationRule();
265  TPZIntPoints * cloned_rule = intruleref.Clone();
266  cel->SetIntegrationRule(cloned_rule);
267 
268 #ifdef PZDEBUG
269  if (cel->GetIntegrationRule().NPoints() != intruleref.NPoints()) {
270  DebugStop();
271  }
272 #endif
273  gel->ResetReference();
274 
275  }
276 
277  // we changed the properties of the connects
278  // now synchronize the connect properties with the block sizes
279  int64_t nc= Mesh()->NConnects();
280  for (int64_t ic=0; ic<nc; ic++) {
281  TPZConnect &c = Mesh()->ConnectVec()[ic];
282  int blsize = c.NShape()*c.NState();
283  int64_t seqnum = c.SequenceNumber();
284  Mesh()->Block().Set(seqnum, blsize);
285  }
286  Mesh()->InitializeBlock();
287 #ifdef LOG4CXX
288  if(PPAnalysisLogger->isDebugEnabled())
289  {
290  std::stringstream sout;
291  Mesh()->Print(sout);
292  LOGPZ_DEBUG(PPAnalysisLogger, sout.str())
293  }
294 #endif
295 
296 #ifdef PZDEBUG
297  if(matnotfound.size())
298  {
299  std::cout << "Post-processing mesh was created without these materials: ";
300  std::set<int>::iterator it;
301  for(it = matnotfound.begin(); it!= matnotfound.end(); it++)
302  {
303  std::cout << *it << " ";
304  }
305  std::cout << std::endl;
306  }
307 #endif
308 
309 }
310 
312 {
313  PZError << "Error at " << __PRETTY_FUNCTION__ << " TPZPostProcAnalysis::Assemble() should never be called\n";
314 }
315 
317  PZError << "Error at " << __PRETTY_FUNCTION__ << " TPZPostProcAnalysis::Solve() should never be called\n";
318 }
319 
321 {
322 
323 
325  fSolution = Rhs();
327 
328  TPZCompMeshReferred *compref = dynamic_cast<TPZCompMeshReferred *>(Mesh());
329  if (!compref) {
330  DebugStop();
331  }
332  TPZCompMesh *solmesh = fpMainMesh;
333  int64_t numelsol = solmesh->ElementSolution().Cols();
334  int64_t nelem = compref->NElements();
335  compref->ElementSolution().Redim(nelem, numelsol);
336  if (numelsol)
337  {
338  for (int64_t el=0; el<nelem; el++) {
339  TPZCompEl *cel = compref->ReferredEl(el);
340  if (!cel) {
341  continue;
342  }
343  int64_t index = cel->Index();
344  for (int64_t isol=0; isol<numelsol; isol++) {
345  compref->ElementSolution()(el,isol) = solmesh->ElementSolution()(index,isol);
346  }
347  }
348  }
349 }
350 
351 
353 {
354 
356 
365  cmesh->ApproxSpace().SetCreateFunctions(functions);
366 }
367 
368 using namespace pzshape;
369 
379 
389 
391  if(!gel->Reference() && gel->NumInterfaces() == 0)
392  return new TPZCompElPostProc< TPZIntelGen<TPZShapePoint> >(mesh,gel,index);
393  return NULL;
394 }
396  if(!gel->Reference() && gel->NumInterfaces() == 0)
397  return new TPZCompElPostProc<TPZIntelGen<TPZShapeLinear> >(mesh,gel,index);
398  return NULL;
399 }
401  if(!gel->Reference() && gel->NumInterfaces() == 0)
402  return new TPZCompElPostProc<TPZIntelGen<TPZShapeQuad> >(mesh,gel,index);
403  return NULL;
404 }
406  if(!gel->Reference() && gel->NumInterfaces() == 0)
407  return new TPZCompElPostProc<TPZIntelGen<TPZShapeTriang> >(mesh,gel,index);
408  return NULL;
409 }
411  if(!gel->Reference() && gel->NumInterfaces() == 0)
412  return new TPZCompElPostProc<TPZIntelGen<TPZShapeCube> >(mesh,gel,index);
413  return NULL;
414 }
416  if(!gel->Reference() && gel->NumInterfaces() == 0)
417  return new TPZCompElPostProc< TPZIntelGen<TPZShapePrism> >(mesh,gel,index);
418  return NULL;
419 }
421  if(!gel->Reference() && gel->NumInterfaces() == 0)
422  return new TPZCompElPostProc<TPZIntelGen<TPZShapePiram> >(mesh,gel,index);
423  return NULL;
424 }
426  if(!gel->Reference() && gel->NumInterfaces() == 0)
427  return new TPZCompElPostProc<TPZIntelGen<TPZShapeTetra> >(mesh,gel,index);
428  return NULL;
429 }
430 
431 
433 {
434  return new TPZCompElPostProc< TPZCompElDisc > (mesh,gel,index);
435 }
436 
439  return Hash("TPZPostProcAnalysis") ^ TPZAnalysis::ClassId() << 1;
440 }
442 void TPZPostProcAnalysis::Write(TPZStream &buf, int withclassid) const
443 {
444  TPZAnalysis::Write(buf, withclassid);
446 }
447 
449 void TPZPostProcAnalysis::Read(TPZStream &buf, void *context)
450 {
451  TPZAnalysis::Read(buf, context);
453 }
454 
int64_t NElements() const
Number of computational elements allocated.
Definition: pzcmesh.h:169
TPZFMatrix< STATE > & ElementSolution()
Access method for the element solution vectors.
Definition: pzcmesh.h:225
TPZGeoMesh * Reference() const
Returns a pointer to the geometrical mesh associated.
Definition: pzcmesh.h:209
Contains TPZShapeTetra class which implements the shape functions of a tetrahedral element...
Contains TPZAnalysis class which implements the sequence of actions to perform a finite element analy...
Contains declaration of TPZIntelGen class which implements a generic computational element...
virtual int NPoints() const =0
Returns number of points for the cubature rule related.
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.
Implements a vector class which allows to use external storage provided by the user. Utility.
Definition: pzquad.h:16
int MaterialId() const
Returns the material index of the element.
Definition: pzgeoel.h:250
TPZFMatrix< STATE > fSolution
Solution vector.
Definition: pzanalysis.h:50
TPZCompEl * ReferredEl(int64_t index)
virtual void Solve() override
void SetOrder(int order, int64_t index)
Set the order of the shapefunction associated with the connect.
Definition: pzconnect.h:168
virtual TPZCompEl * Element(int64_t elindex)=0
virtual int NConnectShapeF(int icon, int order) const =0
Returns the number of shapefunctions associated with a connect.
TPZCompMesh * fpMainMesh
void SetPostProcessVarIndexList(TPZVec< std::string > &varIndexNames, TPZMaterial *pRefMat)
Informs the vector with all the variable indexes requested for post processing and the reference to t...
void LoadReferred(TPZCompMesh *mesh)
Templated vector implementation.
int ClassId() const override
Define the class id associated with the class.
void TransferSolution()
groups all classes dedicated to the computation of shape functions
Definition: pzshapeextend.h:16
TPZCompMesh * fCompMesh
Computational mesh.
Definition: pzanalysis.h:44
static TPZCompEl * CreatePyramEl(TPZGeoEl *gel, TPZCompMesh &mesh, int64_t &index)
Contains the TPZPoint class which defines the topology of a point.
Contains the TPZRefQuad class which implements the uniform refinement of a geometric quadrilateral el...
void Read(TPZStream &buf, void *context) override
Read the element data from a stream.
TPZCompMesh * Mesh() const
Returns the pointer to the computational mesh.
Definition: pzanalysis.h:180
void SetCreateFunctions(TPZVec< TCreateFunction > &createfuncs)
Set custom function pointers.
Contains the declaration of the TPZMultiphysicsElement class. This class is abstract.
int64_t NElements() const
Access method to query the number of elements of the vector.
Implements a chunk vector with free store administration. Utility.
Definition: TPZStream.h:39
virtual const TPZIntPoints & GetIntegrationRule() const override=0
Returns a reference to an integration rule suitable for integrating the interior of the element...
void Write(TPZStream &buf, int withclassid) const override
Save the element data to a stream.
static TPZSavable * GetInstance(const int64_t &objId)
void LoadReferences()
Map this grid in the geometric grid.
Definition: pzcmesh.cpp:482
void SetPostProcessVariables(TPZVec< int > &matIds, TPZVec< std::string > &varNames)
Contains the TPZTriangle class which defines the topology of a triangle.
Contains TPZShapeLinear class which implements the shape functions of a linear one-dimensional elemen...
Contains the TPZRefPyramid class which implements the uniform refinement of a geometric hexahedral el...
Contains the TPZTetrahedron class which defines the topology of the tetrahedron element.
Abstract class defining integration rules. Numerical Integration.
Definition: tpzintpoints.h:19
void CleanUp()
deletes all data structures
Definition: pzanalysis.cpp:171
This abstract class defines the behaviour which each derived class needs to implement.
Definition: TPZMaterial.h:39
Contains TPZShapeCube class which implements the shape functions of a hexaedral element.
String implementation.
TPZCompEl * CreateCompEl(TPZGeoEl *gel, int64_t &index)
Create a computational element based on the geometric element.
Definition: pzcmesh.h:462
static TPZCompEl * CreatePostProcDisc(TPZGeoEl *gel, TPZCompMesh &mesh, int64_t &index)
Contains the TPZRefPrism class which implements the uniform refinement of a geometric prism element...
static TPZCompEl * CreateCubeEl(TPZGeoEl *gel, TPZCompMesh &mesh, int64_t &index)
TPZCreateApproximationSpace & ApproxSpace()
Definition: pzcmesh.h:498
Contains declaration of TPZMesh class which defines a geometrical mesh and contains a corresponding l...
int64_t SequenceNumber() const
Returns the Sequence number of the connect object.
Definition: pzconnect.h:158
Implements the sequence of actions to perform a finite element analysis. Analysis.
Definition: pzanalysis.h:32
virtual void LoadSolution()
Load the solution into the computable grid.
Definition: pzanalysis.cpp:441
void AutoBuildDisc()
Defines the behaviour of all geometric elements. GeometryTPZGeoEl is the common denominator for all g...
Definition: pzgeoel.h:43
Contains declaration of TPZCompMeshReferred class which implements the structure to allow one mesh to...
static TPZCompEl * CreateTriangleEl(TPZGeoEl *gel, TPZCompMesh &mesh, int64_t &index)
Contains the TPZGeoTetrahedra class which implements the geometry of a tetrahedral element...
virtual void SetIntegrationRule(TPZIntPoints *intrule)
Method to set a dynamically allocated integration rule.
Definition: pzcompel.cpp:1116
#define DebugStop()
Returns a message to user put a breakpoint in.
Definition: pzerror.h:20
virtual void ExpandSolution()
Adapt the solution vector to new block dimensions.
Definition: pzcmesh.cpp:396
#define LOGPZ_DEBUG(A, B)
Define log for debug info.
Definition: pzlog.h:87
Contains the TPZQuadrilateral class which defines the topology of a quadrilateral element...
int NumInterfaces()
Returns number of TPZInterfaceElement pointing to this.
Definition: pzgeoel.h:94
TPZMaterial * FindMaterial(int id)
Find the material with identity id.
Definition: pzcmesh.cpp:297
TPZCompEl * Reference() const
Return a pointer to the element referenced by the geometric element.
Definition: pzgeoel.h:750
Implements the structure to allow one mesh to refer to the solution of another. Geometry.
unsigned int NShape() const
Definition: pzconnect.h:151
void SetNShape(int nshape)
Set the number of shape functions associated with the connect.
Definition: pzconnect.h:205
virtual void Assemble() override
const TPZBlock< STATE > & Block() const
Access the block structure of the solution vector.
Definition: pzcmesh.h:213
Contains declaration of the TPZAutoPointer class which has Increment and Decrement actions are mutexe...
static TPZCompEl * CreateTetraEl(TPZGeoEl *gel, TPZCompMesh &mesh, int64_t &index)
int64_t NConnects() const
Number of connects allocated including free nodes.
Definition: pzcmesh.h:163
TPZAdmChunkVector< TPZConnect > & ConnectVec()
Return a reference to the connect pointers vector.
Definition: pzcmesh.h:198
int64_t Index() const
Returns element index of the mesh fELementVec list.
Definition: pzcompel.h:821
Contains TPZShapePoint class which implements the shape function associated with a point...
int SetNBlocks(const int num_of_blocks)
Sets number of blocks on diagonal matrix.
Definition: pzblock.cpp:91
Contains declaration of TPZCompMesh class which is a repository for computational elements...
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
Contains the TPZGeoCube class which implements the geometry of hexahedra element. ...
Contains the TPZPyramid class which defines the topology of a pyramid element.
unsigned char NState() const
Number of state variables associated with the connect.
Definition: pzconnect.h:146
virtual int GetPreferredOrder()
Returns the prefered order for the element.
int32_t Hash(std::string str)
Definition: TPZHash.cpp:10
Contains the TPZGeoPoint class which implements the geometry of a point element or 0-D element...
virtual int64_t ConnectIndex(int i) const =0
Returns the index of the ith connectivity of the element.
virtual int HasSubElement() const =0
Return 1 if the element has subelements.
This class implements the TPZCompEl structure to enable copying the solution of the referred compEl a...
Contains TPZShapePrism class which implements the shape functions of a prism element.
Implements the interfaces for TPZCompElDisc, TPZInterfaceElement and TPZInterpolatedElement. Computational element.
int NBlocks() const
Returns number of blocks on diagonal.
Definition: pzblock.h:165
virtual int NConnects() const =0
Returns the number of nodes of the element.
virtual void SetPreferredOrder(int order)=0
Defines the desired order for entire element.
Contains the TPZRefTriangle class which implements the uniform refinement of a geometric triangular e...
void Read(TPZStream &buf, void *context) override
read objects from the stream
int InsertMaterialObject(TPZMaterial *mat)
Insert a material object in the datastructure.
Definition: pzcmesh.cpp:287
Contains the TPZRefTetrahedra class which implements the uniform refinement of a geometric tetrahedra...
int ClassId() const override
Returns the unique identifier for reading/writing objects to streams.
virtual void AssembleResidual()
Assemble the load vector.
Definition: pzanalysis.cpp:288
TPZCompMesh * ReferredMesh() const
This class implements a geometric mesh for the pz environment. Geometry.
Definition: pzgmesh.h:48
void ResetReference()
Reset the element referenced by the geometric element to NULL.
Definition: pzgeoel.h:431
Implements computational mesh. Computational Mesh.
Definition: pzcmesh.h:47
Contains the functions to create different computational elements (one- two- three-dimensional).
virtual ~TPZPostProcAnalysis()
TPZAdmChunkVector< TPZCompEl * > & ElementVec()
Returns a reference to the element pointers vector.
Definition: pzcmesh.h:183
Definition: pzeltype.h:61
TPZPostProcAnalysis & operator=(const TPZPostProcAnalysis &copy)
Contains declaration of TPZInterpolatedElement class which implements computational element of the in...
Contains the TPZRefLinear class which implements the uniform refinement of a geometric linear element...
int64_t Cols() const
Returns number of cols.
Definition: pzmatrix.h:809
Contains TPZShapePiram class which implements the shape functions of a pyramid element.
Contains the TPZGeoPyramid class which implements the geometry of pyramid element.
Defines the interface for saving and reading data. Persistency.
Definition: TPZStream.h:50
int64_t NElements() const
Returns the number of elements of the vector.
Definition: pzvec.h:190
virtual const TPZIntPoints & GetIntegrationRule() const
Definition: pzcompel.h:609
static TPZCompEl * CreateLinearEl(TPZGeoEl *gel, TPZCompMesh &mesh, int64_t &index)
TPZFMatrix< STATE > & Rhs()
Returns the load vector.
Definition: pzanalysis.h:174
virtual TPZIntPoints * Clone() const =0
Make a clone of the related cubature rule.
Contains the TPZGeoPrism class which implements the geometry of a prism element.
clarg::argInt porder("-porder", "polinomial order", 1)
Contains the TPZCube class which defines the topology of the hexahedron element.
Contains the TPZLine class which defines the topology of a line element.
void InitializeBlock()
Resequence the block object, remove unconnected connect objects and reset the dimension of the soluti...
Definition: pzcmesh.cpp:391
Contains the declaration of TPZCompElPostProc class.
void SetCompMesh(TPZCompMesh *pRef, bool mustOptimizeBandwidth=false) override
Set the computational mesh we are going to post process.
static TPZCompEl * CreatePointEl(TPZGeoEl *gel, TPZCompMesh &mesh, int64_t &index)
Definition: pzeltype.h:55
static TPZCompEl * CreateQuadEl(TPZGeoEl *gel, TPZCompMesh &mesh, int64_t &index)
virtual void Print(std::ostream &out=std::cout)
Print all relevant data of the element to cout.
Definition: pzgeoel.cpp:238
void ResetReference()
Resets all load references in elements and nodes.
Definition: pzgmesh.cpp:197
Contains the TPZPrism class which defines the topology of a Prism.
Defines the interface of a computational element. Computational Element.
Definition: pzcompel.h:59
Contains TPZShapeQuad class which implements the shape functions of a quadrilateral element...
Contains the TPZRefCube class which implements the uniform refinement of a geometric hexahedral eleme...
Definition: pzpostprocmat.h:51
Contains the TPZRefPoint class which implements the uniform refinement of a geometric point element...
static TPZCompEl * CreatePrismEl(TPZGeoEl *gel, TPZCompMesh &mesh, int64_t &index)
static void WritePointer(const TPZSavable *obj, TPZStream *stream)
Contains TPZShapeTriang class which implements the shape functions of a triangular element...
TPZPostProcAnalysis()
Implements an interface to register a class id and a restore function. Persistence.
Definition: TPZSavable.h:150
#define PZError
Defines the output device to error messages and the DebugStop() function.
Definition: pzerror.h:15
virtual void Print(std::ostream &out=std::cout) const
Prints mesh data.
Definition: pzcmesh.cpp:236
TPZAdmChunkVector< TPZGeoEl * > & ElementVec()
Methods for handling pzlists.
Definition: pzgmesh.h:138
void Write(TPZStream &buf, int withclassid) const override
Writes this object to the TPZStream buffer. Include the classid if withclassid = true.
Implements a generic computational element. Computational Element.
Definition: pzelctemp.h:20
static void SetAllCreateFunctionsPostProc(TPZCompMesh *cmesh)