Subversion Repositories OpenSees

Rev

Rev 4143 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4158 fmk 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