Subversion Repositories OpenSees

Rev

Rev 4143 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4143 Rev 4158
Line 1... Line -...
1
#ifndef RAFourSteelPCPlaneStress_h
-
 
2
#define RAFourSteelPCPlaneStress_h
-
 
3
-
 
4
// File: RAFourSteelPCPlaneStress.h
-
 
5
//
-
 
6
// Written: ALaskar
-
 
7
// Created: 2007.09
-
 
8
//
-
 
9
// Description: This file contains the class definition for 
-
 
10
// RAFourSteelPCPlaneStress material. 
-
 
11
// RC material will contain steel in four directions
-
 
12
// For Detailed explanation of the model, please refer to the book
-
 
13
// entitled "Unified Theory of Concrete Structures,"
-
 
14
// by Thomas T.C. Hsu and Y.L. Mo, John Wiley & Sons, April 2010.
-
 
15
-
 
16
-
 
17
#include <NDMaterial.h>
-
 
18
#include <UniaxialMaterial.h>
-
 
19
-
 
20
#include <Matrix.h>
-
 
21
#include <Vector.h>
-
 
22
#include <ID.h>
-
 
23
#include <Tensor.h>
-
 
24
-
 
25
class RAFourSteelPCPlaneStress : public NDMaterial
-
 
26
{
-
 
27
  public:
-
 
28
  RAFourSteelPCPlaneStress ( int      tag,
-
 
29
                             double   RHO,
-
 
30
                             UniaxialMaterial *t1,
-
 
31
                             UniaxialMaterial *t2,
-
 
32
                             UniaxialMaterial *s1,
-
 
33
                             UniaxialMaterial *s2,
-
 
34
                             UniaxialMaterial *c1,
-
 
35
                             UniaxialMaterial *c2,
-
 
36
                             double   ANGLE1,
-
 
37
                             double   ANGLE2,
-
 
38
                             double   ANGLE3,
-
 
39
                             double   ANGLE4,
-
 
40
                             double   ROU1,
-
 
41
                             double   ROU2,
-
 
42
                             double   ROU3,
-
 
43
                             double   ROU4,
-
 
44
                             double     PSTRAIN1,
-
 
45
                             double     PSTRAIN2,
-
 
46
                             double   FPC,
-
 
47
                             double   FY1,
-
 
48
                             double     FY2,
-
 
49
                             double   E,
-
 
50
                             double   EPSC0);                                    
-
 
51
  RAFourSteelPCPlaneStress();
-
 
52
  ~RAFourSteelPCPlaneStress();                           
-
 
53
 
-
 
54
  double getRho(void);
-
 
55
 
-
 
56
  int setTrialStrain(const Vector &v); // the one is used
-
 
57
  int setTrialStrain(const Vector &v, const Vector &r);
-
 
58
  int setTrialStrainIncr(const Vector &v);
-
 
59
  int setTrialStrainIncr(const Vector &v, const Vector &r);
-
 
60
  const Matrix &getTangent(void);
-
 
61
  const Matrix &getInitialTangent(void) {return this->getTangent();};
-
 
62
 
-
 
63
  const Vector &getStress(void);
-
 
64
  const Vector &getStrain(void);
-
 
65
 
-
 
66
  const Vector &getCommittedStress(void);
-
 
67
  const Vector &getCommittedStrain(void);    
-
 
68
 
-
 
69
  int commitState(void);
-
 
70
  int revertToLastCommit(void);
-
 
71
  int revertToStart(void);
-
 
72
 
-
 
73
  NDMaterial *getCopy(void);
-
 
74
  NDMaterial *getCopy(const char *type);
-
 
75
 
-
 
76
  void Print(OPS_Stream &s, int flag = 0);
-
 
77
  int sendSelf(int commitTag, Channel &theChannel);
-
 
78
  int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
-
 
79
 
-
 
80
  const char *getType(void) const { return "PlaneStress"; };
-
 
81
  int getOrder(void) const { return 3;};
-
 
82
 
-
 
83
 protected:
-
 
84
 
-
 
85
 private:
-
 
86
 
-
 
87
  double   rho;
-
 
88
  UniaxialMaterial **theMaterial; // pointer of the materials 
-
 
89
  Response **theResponses;
-
 
90
-
 
91
  double   angle1;    // angel of the first steel layer to x coordinate 
-
 
92
  double   angle2;    // angel of the second steel layer to x coordinate
-
 
93
  double   angle3;    // angel of the third steel layer to x coordinate 
-
 
94
  double   angle4;    // angel of the forth steel layer to x coordinate
-
 
95
 
-
 
96
  double   rou1;      // steel ratio of the first steel layer
-
 
97
  double   rou2;      // steel ratio of the second steel layer
-
 
98
  double   rou3;      // steel ratio of the third steel layer
-
 
99
  double   rou4;      // steel ratio of the forth steel layer
-
 
100
 
-
 
101
  double        pstrain1;       // prestressing strain in first tendon layer
-
 
102
  double        pstrain2;       // prestressing strain in second tendon layer
-
 
103
 
-
 
104
  double   fpc;       // compressive strength of the concrete
-
 
105
  double   fy1;       // yield stress of the bare tendons
-
 
106
  double         fy2;           // yield stress of the bare steel bars
-
 
107
  double   E0;        // young's modulus of the steel
-
 
108
  double   epsc0;     // compressive strain of the concrete
-
 
109
 
-
 
110
  double   Tstress[3];  // Trial stresses
-
 
111
  double   lastStress[3];  // Last committed stresses, added for x, k
-
 
112
 
-
 
113
  int      steelStatus;  // check if steel yield, 0 not yield, 1 yield
-
 
114
  int      dirStatus;    // check if principle direction has exceed 90 degree, 1 yes, 0 no
-
 
115
 
-
 
116
  double   citaStrain;      // principle strain direction
-
 
117
  double   citaStress;     // principle stress direction
-
 
118
  double   miu12;        // Hsu/Zhu ratio
-
 
119
  double   miu21;        // Hsu/Zhu ratio
-
 
120
  double   G12;
-
 
121
 
-
 
122
 
-
 
123
  // for damgage factor D=1-0.4*epslonC'/epslon0; epslon0=0.002
-
 
124
 
-
 
125
  // Trial values
-
 
126
  int TOneReverseStatus;         // Trial reverse status for concrete One, 1 reverse, 0 no
-
 
127
  double TOneNowMaxComStrain;
-
 
128
  double TOneLastMaxComStrain;
-
 
129
 
-
 
130
  int TTwoReverseStatus;         // Trial reverse status for concrete Two, 1 reverse, 0 no
-
 
131
  double TTwoNowMaxComStrain;
-
 
132
  double TTwoLastMaxComStrain;
-
 
133
 
-
 
134
  // Converged values
-
 
135
  int COneReverseStatus;         // Converged reverse status for concrete One, 1 reverse, 0 no
-
 
136
  double COneNowMaxComStrain;
-
 
137
  double COneLastMaxComStrain;
-
 
138
 
-
 
139
  int CTwoReverseStatus;         // Converged reverse status for concrete Two, 1 reverse, 0 no
-
 
140
  double CTwoNowMaxComStrain;
-
 
141
  double CTwoLastMaxComStrain;
-
 
142
 
-
 
143
  double DDOne; // damage factor for concrete One
-
 
144
  double DDTwo; // damage factor for concrete Two
-
 
145
 
-
 
146
  double tt1;
-
 
147
  double tt2;
-
 
148
  double xxx;
-
 
149
  double kkk;
-
 
150
 
-
 
151
  double beta1;
-
 
152
  double beta2;
-
 
153
 
-
 
154
  Vector strain_vec;
-
 
155
  Vector stress_vec;   
-
 
156
  Matrix tangent_matrix;
-
 
157
 
-
 
158
  int determineTrialStress(void);
-
 
159
 
-
 
160
};
-
 
161
-
 
162
#endif
-
 
-
 
1
#ifndef RAFourSteelPCPlaneStress_h
-
 
2
#define RAFourSteelPCPlaneStress_h
-
 
3
-
 
4
// File: RAFourSteelPCPlaneStress.h
-
 
5
//
-
 
6
// Written: ALaskar
-
 
7
// Created: 2007.09
-
 
8
//
-
 
9
// Description: This file contains the class definition for 
-
 
10
// RAFourSteelPCPlaneStress material. 
-
 
11
// RC material will contain steel in four directions
-
 
12
// For Detailed explanation of the model, please refer to the book
-
 
13
// entitled "Unified Theory of Concrete Structures,"
-
 
14
// by Thomas T.C. Hsu and Y.L. Mo, John Wiley & Sons, April 2010.
-
 
15
-
 
16
-
 
17
#include <NDMaterial.h>
-
 
18
#include <UniaxialMaterial.h>
-
 
19
-
 
20
#include <Matrix.h>
-
 
21
#include <Vector.h>
-
 
22
#include <ID.h>
-
 
23
#include <Tensor.h>
-
 
24
-
 
25
class RAFourSteelPCPlaneStress : public NDMaterial
-
 
26
{
-
 
27
  public:
-
 
28
  RAFourSteelPCPlaneStress ( int      tag,
-
 
29
                             double   RHO,
-
 
30
                             UniaxialMaterial *t1,
-
 
31
                             UniaxialMaterial *t2,
-
 
32
                             UniaxialMaterial *s1,
-
 
33
                             UniaxialMaterial *s2,
-
 
34
                             UniaxialMaterial *c1,
-
 
35
                             UniaxialMaterial *c2,
-
 
36
                             double   ANGLE1,
-
 
37
                             double   ANGLE2,
-
 
38
                             double   ANGLE3,
-
 
39
                             double   ANGLE4,
-
 
40
                             double   ROU1,
-
 
41
                             double   ROU2,
-
 
42
                             double   ROU3,
-
 
43
                             double   ROU4,
-
 
44
                             double     PSTRAIN1,
-
 
45
                             double     PSTRAIN2,
-
 
46
                             double   FPC,
-
 
47
                             double   FY1,
-
 
48
                             double     FY2,
-
 
49
                             double   E,
-
 
50
                             double   EPSC0);                                    
-
 
51
  RAFourSteelPCPlaneStress();
-
 
52
  ~RAFourSteelPCPlaneStress();                           
-
 
53
 
-
 
54
  double getRho(void);
-
 
55
 
-
 
56
  int setTrialStrain(const Vector &v); // the one is used
-
 
57
  int setTrialStrain(const Vector &v, const Vector &r);
-
 
58
  int setTrialStrainIncr(const Vector &v);
-
 
59
  int setTrialStrainIncr(const Vector &v, const Vector &r);
-
 
60
  const Matrix &getTangent(void);
-
 
61
  const Matrix &getInitialTangent(void) {return this->getTangent();};
-
 
62
 
-
 
63
  const Vector &getStress(void);
-
 
64
  const Vector &getStrain(void);
-
 
65
 
-
 
66
  const Vector &getCommittedStress(void);
-
 
67
  const Vector &getCommittedStrain(void);    
-
 
68
 
-
 
69
  int commitState(void);
-
 
70
  int revertToLastCommit(void);
-
 
71
  int revertToStart(void);
-
 
72
 
-
 
73
  NDMaterial *getCopy(void);
-
 
74
  NDMaterial *getCopy(const char *type);
-
 
75
 
-
 
76
  void Print(OPS_Stream &s, int flag = 0);
-
 
77
  int sendSelf(int commitTag, Channel &theChannel);
-
 
78
  int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
-
 
79
 
-
 
80
  const char *getType(void) const { return "PlaneStress"; };
-
 
81
  int getOrder(void) const { return 3;};
-
 
82
 
-
 
83
 protected:
-
 
84
 
-
 
85
 private:
-
 
86
 
-
 
87
  double   rho;
-
 
88
  UniaxialMaterial **theMaterial; // pointer of the materials 
-
 
89
  Response **theResponses;
-
 
90
-
 
91
  double   angle1;    // angel of the first steel layer to x coordinate 
-
 
92
  double   angle2;    // angel of the second steel layer to x coordinate
-
 
93
  double   angle3;    // angel of the third steel layer to x coordinate 
-
 
94
  double   angle4;    // angel of the forth steel layer to x coordinate
-
 
95
 
-
 
96
  double   rou1;      // steel ratio of the first steel layer
-
 
97
  double   rou2;      // steel ratio of the second steel layer
-
 
98
  double   rou3;      // steel ratio of the third steel layer
-
 
99
  double   rou4;      // steel ratio of the forth steel layer
-
 
100
 
-
 
101
  double        pstrain1;       // prestressing strain in first tendon layer
-
 
102
  double        pstrain2;       // prestressing strain in second tendon layer
-
 
103
 
-
 
104
  double   fpc;       // compressive strength of the concrete
-
 
105
  double   fy1;       // yield stress of the bare tendons
-
 
106
  double         fy2;           // yield stress of the bare steel bars
-
 
107
  double   E0;        // young's modulus of the steel
-
 
108
  double   epsc0;     // compressive strain of the concrete
-
 
109
 
-
 
110
  double   Tstress[3];  // Trial stresses
-
 
111
  double   lastStress[3];  // Last committed stresses, added for x, k
-
 
112
 
-
 
113
  int      steelStatus;  // check if steel yield, 0 not yield, 1 yield
-
 
114
  int      dirStatus;    // check if principle direction has exceed 90 degree, 1 yes, 0 no
-
 
115
 
-
 
116
  double   citaStrain;      // principle strain direction
-
 
117
  double   citaStress;     // principle stress direction
-
 
118
  double   miu12;        // Hsu/Zhu ratio
-
 
119
  double   miu21;        // Hsu/Zhu ratio
-
 
120
  double   G12;
-
 
121
 
-
 
122
 
-
 
123
  // for damgage factor D=1-0.4*epslonC'/epslon0; epslon0=0.002
-
 
124
 
-
 
125
  // Trial values
-
 
126
  int TOneReverseStatus;         // Trial reverse status for concrete One, 1 reverse, 0 no
-
 
127
  double TOneNowMaxComStrain;
-
 
128
  double TOneLastMaxComStrain;
-
 
129
 
-
 
130
  int TTwoReverseStatus;         // Trial reverse status for concrete Two, 1 reverse, 0 no
-
 
131
  double TTwoNowMaxComStrain;
-
 
132
  double TTwoLastMaxComStrain;
-
 
133
 
-
 
134
  // Converged values
-
 
135
  int COneReverseStatus;         // Converged reverse status for concrete One, 1 reverse, 0 no
-
 
136
  double COneNowMaxComStrain;
-
 
137
  double COneLastMaxComStrain;
-
 
138
 
-
 
139
  int CTwoReverseStatus;         // Converged reverse status for concrete Two, 1 reverse, 0 no
-
 
140
  double CTwoNowMaxComStrain;
-
 
141
  double CTwoLastMaxComStrain;
-
 
142
 
-
 
143
  double DDOne; // damage factor for concrete One
-
 
144
  double DDTwo; // damage factor for concrete Two
-
 
145
 
-
 
146
  double tt1;
-
 
147
  double tt2;
-
 
148
  double xxx;
-
 
149
  double kkk;
-
 
150
 
-
 
151
  double beta1;
-
 
152
  double beta2;
-
 
153
 
-
 
154
  Vector strain_vec;
-
 
155
  Vector stress_vec;   
-
 
156
  Matrix tangent_matrix;
-
 
157
 
-
 
158
  int determineTrialStress(void);
-
 
159
 
-
 
160
};
-
 
161
-
 
162
#endif