xc
MatPoint3D.h
1 // -*-c++-*-
2 //----------------------------------------------------------------------------
3 // XC program; finite element analysis code
4 // for structural analysis and design.
5 //
6 // Copyright (C) Luis C. Pérez Tato
7 //
8 // This program derives from OpenSees <http://opensees.berkeley.edu>
9 // developed by the «Pacific earthquake engineering research center».
10 //
11 // Except for the restrictions that may arise from the copyright
12 // of the original program (see copyright_opensees.txt)
13 // XC is free software: you can redistribute it and/or modify
14 // it under the terms of the GNU General Public License as published by
15 // the Free Software Foundation, either version 3 of the License, or
16 // (at your option) any later version.
17 //
18 // This software is distributed in the hope that it will be useful, but
19 // WITHOUT ANY WARRANTY; without even the implied warranty of
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 // GNU General Public License for more details.
22 //
23 //
24 // You should have received a copy of the GNU General Public License
25 // along with this program.
26 // If not, see <http://www.gnu.org/licenses/>.
27 //----------------------------------------------------------------------------
28 //=============================================================================
29 //
30 // COPYRIGHT (C): :-))
31 // PROJECT: Object Oriented Finite Element Program
32 // FILE: MatPoint3D.h
33 // CLASS: MatPoint3D
34 // MEMBER FUNCTIONS:
35 //
36 // MEMBER VARIABLES
37 //
38 // PURPOSE: Gauss Point
39 // RETURN:
40 // VERSION:
41 // LANGUAGE: C++.ver >= 3.0 (Borland.C++.ver=3.1||SUN.C++.ver=3.0.1)
42 // TARGET OS: DOS || UNIX || . . .
43 // DESIGNER: Boris Jeremic
44 // PROGRAMMER: Boris Jeremic
45 // DATE: 17 October 1994.
46 // UPDATE HISTORY:
47 //
48 //
49 //# Aug 2000 porting to OpenSees #
50 //=============================================================================
51 //
52 //
53 #ifndef MATPOINT3D_H
54 #define MATPOINT3D_H
55 
56 #include <string>
57 #include "domain/mesh/element/utils/gauss_models/GaussPoint.h"
58 
59 namespace XC {
60  class NDMaterial;
61  class stresstensor;
62  class straintensor;
63 
67 class MatPoint3D: public GaussPoint
68  {
69  private:
70  short int r_direction_point_number;
71  short int s_direction_point_number;
72  short int t_direction_point_number;
73 
74  public: // dobro ovo su samo ustvari pointeri pa nema ekstra kopiranja !
75 
76  // *gpEPS is used to hold all state parameters and internal vars, instead of the
77  // following stresses, strain, and internal vars __Zhaohui 09-30-2000
78 
79  //Now no EPState needed. Each MatPoint has an NDMaterial
80  //EPState *gpEPS;
81 
82  //stresstensor * p_stress;
83  //stresstensor * p_iterative_stress; // to be used for iterative nodal forces
84  //double q_ast_iterative;
85  //straintensor * p_strain;
86  //tensor * TangentE;
87 
88  //Might be ElasticIsotropic3D or Template3Dep
89  NDMaterial *matmodel;
90 
91  public:
92  //default constructor
93  MatPoint3D( short int INr_direction_point_number = 0,
94  short int INs_direction_point_number = 0,
95  short int INt_direction_point_number = 0,
96  double r_coord = 0,
97  double s_coord = 0,
98  double t_coord = 0,
99  double r_weight = 0,
100  double s_weight = 0,
101  double t_weight = 0,
102  //EPState *eps = 0,
103  NDMaterial * p_mmodel = 0
104  //stresstensor * p_INstress = 0,
105  //stresstensor * p_INiterative_stress = 0,
106  //double IN_q_ast_iterative = 0.0,
107  //straintensor * p_INstrain = 0,
108  //tensor * p_Tangent_E_tensor = 0,
109  );
110 
111  // Constructor 1
112  ~MatPoint3D(void);
113 
114  void Initialize(short int INr_direction_point_number,
115  short int INs_direction_point_number,
116  short int INt_direction_point_number,
117  double r_coord,
118  double s_coord,
119  double t_coord,
120  double r_weight,
121  double s_weight,
122  double t_weight,
123  //stresstensor * p_INstress,
124  //stresstensor * p_INiterative_stress,
125  //double IN_q_ast_iterative,
126  //straintensor * p_INstrain,
127  //tensor * p_Tangent_E_tensor,
128  //EPState * EPS,
129  NDMaterial * p_mmodel
130  );
131  public:
132  short int GP_number_r(void) const;
133  short int GP_number_s(void) const;
134  short int GP_number_t(void) const;
135 
136  MatPoint3D * GP(void);
137 
138  double r_coordinate() const;
139  double s_coordinate() const;
140  double t_coordinate() const;
141 
142  double r_weight() const;
143  double s_weight() const;
144  double t_weight() const;
145 
146  //void setEPS(EPState *eps);
147  //EPState *getEPS() const;
148  NDMaterial* getNDMat() const;
149  const std::string &getType(void) const;
150  int getTag(void) const;
151  double getrho() const;
152  const stresstensor &getStressTensor(void) const;
153  const straintensor &getStrainTensor(void) const;
154  //Added Aug. 13, 2001 Joey
155  const straintensor &getPlasticStrainTensor(void) const;
156  //Added 02-18-03 Joey
157  double getpsi() const; //state parameter
158 
159  int commitState(void) ;
160  int revertToLastCommit(void) ;
161  int revertToStart(void) ;
162 
163  void report(const std::string &msg) const;
164  void reportpqtheta(const std::string &msg) const;
165  void reportTensor(const std::string &msg) const;
166  };
167 } // end of XC namespace
168 
169 #endif
170 //
const straintensor & getStrainTensor(void) const
Returns the strain tensor.
Definition: MatPoint3D.cpp:262
double r_weight() const
r weight.
Definition: MatPoint3D.cpp:211
Stress tensor.
Definition: stresst.h:70
int revertToStart(void)
Revert the material to its initial state.
Definition: MatPoint3D.cpp:294
double s_weight() const
s weight.
Definition: MatPoint3D.cpp:215
double t_weight() const
t weight.
Definition: MatPoint3D.cpp:219
double r_coordinate() const
r coordinate.
Definition: MatPoint3D.cpp:199
3D position of Gauss points.
Definition: GaussPoint.h:38
double s_coordinate() const
s coordinate.
Definition: MatPoint3D.cpp:203
const stresstensor & getStressTensor(void) const
Returns the stress tensor.
Definition: MatPoint3D.cpp:257
Base class for 2D and 3D materials.
Definition: NDMaterial.h:101
~MatPoint3D(void)
Destructor.
Definition: MatPoint3D.cpp:106
Integration point on three-dimensional space.
Definition: MatPoint3D.h:67
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
MatPoint3D(short int INr_direction_point_number=0, short int INs_direction_point_number=0, short int INt_direction_point_number=0, double r_coord=0, double s_coord=0, double t_coord=0, double r_weight=0, double s_weight=0, double t_weight=0, NDMaterial *p_mmodel=0)
Constructor.
Definition: MatPoint3D.cpp:63
Strain tensor.
Definition: straint.h:68
double t_coordinate() const
t coordinate.
Definition: MatPoint3D.cpp:207