NeoPZ
TPZGeoCube.cpp
Go to the documentation of this file.
1 
6 #include "TPZGeoCube.h"
7 #include "pzgeoel.h"
8 #include "pzshapecube.h"
9 #include "pzquad.h"
10 #include "tpzgeoelrefpattern.h"
11 
12 #include "pzlog.h"
13 
14 #ifdef LOG4CXX
15 static LoggerPtr logger = Logger::getLogger("pz.geom.tpzgeocube");
16 #endif
17 
18 using namespace pzshape;
19 using namespace std;
20 
21 namespace pzgeom {
22  const double tol = pzgeom_TPZNodeRep_tol;
23 
24 
25 
27  /* @param gmesh mesh in which the element should be inserted
28  @param matid material id of the element
29  @param lowercorner (in/out) on input lower corner o the cube where the element should be created, on exit position of the next cube
30  @param size (in) size of space where the element should be created
31  */
32  void TPZGeoCube::InsertExampleElement(TPZGeoMesh &gmesh, int matid, TPZVec<REAL> &lowercorner, TPZVec<REAL> &size) {
33  TPZManVector<REAL, 3> co(3), shift(3), scale(3);
34  TPZManVector<int64_t, 3> nodeindexes(8);
35  for (int i = 0; i < 3; i++) {
36  scale[i] = size[i] / 3.;
37  shift[i] = 1. / 2. + lowercorner[i];
38  }
39 
40  for (int i = 0; i < NCornerNodes; i++) {
41  ParametricDomainNodeCoord(i, co);
42  for (int j = 0; j < 3; j++) {
43  co[j] = shift[j] + scale[j] * co[j] + (rand() * 0.2 / RAND_MAX) - 0.1;
44  }
45  nodeindexes[i] = gmesh.NodeVec().AllocateNewElement();
46  gmesh.NodeVec()[nodeindexes[i]].Initialize(co, gmesh);
47  }
48  int64_t index;
49  gmesh.CreateGeoElement(ECube, nodeindexes, matid, index);
50  }
51 
52 
53 
54 
55  int TPZGeoCube::ClassId() const {
56  return Hash("TPZGeoCube") ^ TPZNodeRep<8, pztopology::TPZCube>::ClassId() << 1;
57  }
58 
59  void TPZGeoCube::Read(TPZStream &buf, void *context) {
61  }
62 
63  void TPZGeoCube::Write(TPZStream &buf, int withclassid) const {
65  }
66 
67 
68 };
int AllocateNewElement()
Makes more room for new elements.
Definition: pzadmchunk.h:184
Contains the TPZInt1d, TPZIntTriang, TPZIntQuad, TPZIntCube3D, TPZIntTetra3D, TPZIntPyram3D and TPZIn...
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.
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...
Definition: pzgmesh.cpp:1296
groups all classes dedicated to the computation of shape functions
Definition: pzshapeextend.h:16
Contains TPZShapeCube class which implements the shape functions of a hexaedral element.
static const double tol
Definition: pzgeoprism.cpp:23
const double pzgeom_TPZNodeRep_tol
Initializing tolerance to TPZNodeRep.
Definition: pznoderep.h:32
TPZAdmChunkVector< TPZGeoNode > & NodeVec()
Definition: pzgmesh.h:140
Contains declaration of TPZGeoElRefPattern class which implements a generic geometric element which i...
REAL co[8][3]
Coordinates of the eight nodes.
Implements ... Geometry Topology.
Definition: pznoderep.h:40
Contains the TPZGeoCube class which implements the geometry of hexahedra element. ...
int32_t Hash(std::string str)
Definition: TPZHash.cpp:10
This class implements a geometric mesh for the pz environment. Geometry.
Definition: pzgmesh.h:48
Definition: pzeltype.h:61
Defines the interface for saving and reading data. Persistency.
Definition: TPZStream.h:50
Groups all classes which model the geometry.
Definition: pzgeopoint.cpp:18