NeoPZ
TPZMulticamadaOrtho.h
Go to the documentation of this file.
1 
6 #ifndef MULTICAMADAORTH
7 #define MULTICAMADAORTH
8 
9 #include <iostream>
10 #include "pzvec.h"
11 #include "pzstack.h"
12 #include "TPZPlacaOrthotropic.h"
13 #include "tpzautopointer.h"
14 
15 class TPZGeoMesh;
16 class TPZCompMesh;
18 class TPZMatOrthotropic;
19 class TPZAnalysis;
20 class TPZMaterial;
21 
29 
36 
38  REAL fDx,fDy;
40  int64_t fNelx, fNely;
41  REAL fZMin, fZMax;
42 
43  REAL fMX[3],fMY[3],fMXY[3],fQX[3],fQY[3],fNX[3],fNY[3],fNXY[3];
44  REAL fdMXdX[3],fdMXdY[3],fdMYdX[3],fdMYdY[3],fdMXYdX[3],fdMXYdY[3],
45  fdQXdX[3],fdQXdY[3],fdQYdX[3],fdQYdY[3],fdNXdX[3],fdNXdY[3],fdNYdX[3],fdNYdY[3],fdNXYdX[3],fdNXYdY[3];
48 
53  REAL fCorrect;
54 
55 public:
57  TPZMulticamadaOrthotropic(REAL z,REAL dx,REAL dy, int64_t nelx, int64_t nely, REAL Correct = 1.0);
60 
62  void AddPlacaOrtho(TPZMaterial * material, REAL height);
64  void GenerateMesh();
65 
66  void Print(std::ostream &out = std::cout);
67  /*criando método para retornar a altura da multicamada*/
68  REAL Height();
69  /*criando método para retornar fPlacaOrth*/
71  /*criando método para contar quant de placas*/
72  int NPlacas();
78 
80  void Tensor(TPZVec<REAL> &x, int placa, TPZFMatrix<REAL> &tensor);
82  void ComputeCenterForces();
83 
84  void ComputeSolution(std::ostream &out = std::cout,int print = 0);
85 
86  void ComputeSolution(TPZMaterial *mat,std::ofstream &out,int64_t numiter);
87 
93  void SetMX(REAL MX) {
94  fMX[0] = MX;
95  fMX[2] = MX;
96  }
97 
98  void SetNX(REAL NX) {
99  fNX[0] = NX;
100  fNX[2] = NX;
101  }
102 
103  void SetNY(REAL NY) {
104  fNY[0] = NY;
105  fNY[2] = NY;
106  }
107 
108  void SetMY(REAL MX) {
109  fMY[0] = MX;
110  fMY[2] = MX;
111  }
112 
113  void SetNXY(REAL NX) {
114  fNXY[0] = NX;
115  fNXY[2] = NX;
116  }
117 
118  void SetMXY(REAL MXY) {
119  fMXY[0] = MXY;
120  fMXY[2] = MXY;
121  }
122 
123  void SetQX(REAL QX) {
124  fQX[0] = QX;
125  fQX[2] = QX;
126  fdMXdX[0] = QX;
127  fdMXdX[2] = QX;
128  if(QX != 0.) fLinearX = 1;
129  else fLinearX = 0;
130  }
131 
132  void SetQY(REAL QY) {
133  fQY[0] = QY;
134  fQY[2] = QY;
135  fdMYdY[0] = QY;
136  fdMYdY[2] = QY;
137  if(QY != 0.) fLinearY = 1;
138  else fLinearY = 0;
139 
140  }
141 
145 
147 
148  void SetCorrect(REAL Correct){ fCorrect = Correct;}
149 
150  REAL CorrectFactor(){return fCorrect;}
151 
152  void PrintTensors(std::ostream &out);
153 
154  void PrintTensors(std::ostream &out,TPZFMatrix<REAL> &tensorin,TPZFMatrix<REAL> &tensorout);
155 
156  void PrintCenterForces(std::ostream &out);
157 };
158 
159 #endif
void AddPlacaOrtho(TPZMaterial *material, REAL height)
Adds shells.
void Print(std::ostream &out=std::cout)
Gerencia um conjunto de placas dispostas em forma multicamada.
Templated vector implementation.
TPZMulticamadaOrthotropic(REAL z, REAL dx, REAL dy, int64_t nelx, int64_t nely, REAL Correct=1.0)
Construtor.
void Tensor(TPZVec< REAL > &x, int placa, TPZFMatrix< REAL > &tensor)
Tensor which needs to be applied at the given coordinate.
void AnalyticTensor(TPZVec< REAL > &co, TPZFMatrix< REAL > &tensor)
Compute a tension state corresponding to the difference between the target state and tension state l...
TPZManVector< REAL, 3 > fDiry
This abstract class defines the behaviour which each derived class needs to implement.
Definition: TPZMaterial.h:39
Implements a orthotropic material.
Implements the sequence of actions to perform a finite element analysis. Analysis.
Definition: pzanalysis.h:32
expr_ dx(i) *cos(expr_.val())
int64_t fNelx
Number of elementos at x and y axes : fNelx, fNely.
REAL fCorrect
Relaxation factor to correct resulting forces.
void PrintCenterForces(std::ostream &out)
Contains the TPZPlacaOrthotropic class.
Contains declaration of the TPZAutoPointer class which has Increment and Decrement actions are mutexe...
REAL co[8][3]
Coordinates of the eight nodes.
void PrintTensors(std::ostream &out)
A simple stack.
TPZVec< TPZPlacaOrthotropic > & RPlacaOrtho()
TPZCompMesh * fCompMesh
Computational mesh to calculations.
TPZStack< TPZPlacaOrthotropic > fPlacaOrth
Shells vector.
void GenerateMesh()
Creates a computational mesh to all the shells.
This class implements a geometric mesh for the pz environment. Geometry.
Definition: pzgmesh.h:48
TPZManVector< REAL, 3 > fDirx
Implements computational mesh. Computational Mesh.
Definition: pzcmesh.h:47
TPZGeoMesh * fGeoMesh
Geometric mesh with shells.
void ComputeCenterForces()
Computes the global efforts of the finite element solution.
O objeto desta classe representa uma placa do objeto multicamada.
REAL fDx
Dimension of the shells (must to be constant for all shells)
void ComputeSolution(std::ostream &out=std::cout, int print=0)