xc
ReinforcingSteel.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 ** OpenSees - Open System for Earthquake Engineering Simulation **
30 ** Pacific Earthquake Engineering Research Center **
31 ** **
32 ** **
33 ** (C) Copyright 1999, The Regents of the University of California **
34 ** All Rights Reserved. **
35 ** **
36 ** Commercial use of this program without express permission of the **
37 ** University of California, Berkeley, is strictly prohibited. See **
38 ** file 'COPYRIGHT' in main directory for information on usage and **
39 ** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. **
40 ** **
41 ** Developed by: **
42 ** Frank McKenna (fmckenna@ce.berkeley.edu) **
43 ** Gregory L. Fenves (fenves@ce.berkeley.edu) **
44 ** Filip C. Filippou (filippou@ce.berkeley.edu) **
45 ** **
46 ** ****************************************************************** */
47 
48 // $Revision: 1.3 $
49 // $Date: 2006/01/19 19:19:12 $
50 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/ReinforcingSteel.h,v $
51 
52 /* ****************************************************************** **
53 ** THIS FILE WAS DEVELOPED AT UC DAVIS **
54 ** **
55 ** Programmed by: Jon Mohle (jfmohle@ucdavis.edu) **
56 ** Supervisor: Sashi Kunnath (skkunnath@ucdavis.edu) **
57 ** **
58 ********************************************************************* */
59 // Written: Jon Mohle
60 // Created: October 2003
61 // Updated: September 2005
62 // Description: This file contains the class definition for
63 // ReinforcingSteel.
64 
65 #ifndef ReinforcingSteel_h
66 #define ReinforcingSteel_h
67 #define HelpDebugMat //Debugging info, JFM
68 
69 #include "UniaxialMaterial.h"
70 #include "UniaxialStateVars.h"
71 #include <vector>
72 
73 namespace XC {
75 //
81  {
82  private:
83  static const int LastRule_RS=20; // must be divisable by 4!!!!!!!!!!!
84  static const int vSize= LastRule_RS/2+1;
85 
86  #ifdef HelpDebugMat
87  static int classCount;
88  int thisClassNumber;
89  int thisClassCommit;
90  int thisClassStep;
91  #endif
92 
93  double ZeroTol;
94  double reduction;
95  double fsu_fraction;
96  double beta;
97  mutable int theBarFailed;
98 
99  // natural stress-strain variables
100  double p;
101  double Esp;
102  double eshp;
103  double fshp;
104  double Eshp;
105  double esup;
106  double fsup;
107  double Esup;
108  double Eypp;
109  double fint;
110  double eyp;
111  double fyp;
112 
113  double esh;
114  double Esh;
115 
116  double eshpa;
117  double Eshpb;
118 
119  double a1;
120  double hardLim;
121 
122  double THardFact;
123  double CHardFact;
124 
125  // Strength degradation parameters
126  std::vector<double> T_ePlastic;
127  std::vector<double> C_ePlastic;
128  //double Nbf; //!< Cyclic Backbone factor used correct backbone proporsional to return strain
129  double TFatDamage;
130  double CFatDamage;
131  double LDratio;
132  double Fat1;
133  double Fat2;
134  double Deg1;
135  int BuckleModel;
136  mutable double BackStress;
137 
138  // Menegotto-Pinto Calibration Constants
139  double RC1;
140  double RC2;
141  double RC3;
142 
143  // Menegotto-Pinto Equation parameters
144  double TR;
145  double Tfch;
146  double TQ;
147  double TEsec;
148  double Tea;
149  double Tfa;
150  double TEa;
151  double Teb;
152  double Tfb;
153  double TEb;
154 
155  double re;
156  double rE1;
157  double rE2;
158 
159  // Converged Menegotto-Pinto Equation parameters
160  std::vector<double> CR;
161  std::vector<double> Cfch;
162  std::vector<double> CQ;
163  std::vector<double> CEsec;
164  std::vector<double> Cea;
165  std::vector<double> Cfa;
166  std::vector<double> CEa;
167  std::vector<double> Ceb;
168  std::vector<double> Cfb;
169  std::vector<double> CEb;
170 
171  // Trial History Variables
172  mutable int TBranchNum;
173  int TBranchMem;
174  double Teo_p;
175  double Teo_n;
176  double Temax;
177  double Temin;
178  double TeAbsMax;
179  double TeAbsMin;
180  double TeCumPlastic;
181 
182  // Converged History Variables
183  int CBranchNum;
184  double Ceo_p;
185  double Ceo_n;
186  double Cemax;
187  double Cemin;
188  double CeAbsMax;
189  double CeAbsMin;
190  double CeCumPlastic;
191 
192  // Trial State Variables
193  UniaxialStateVars trial;
194 
195  // Converged History Variables
196  UniaxialStateVars converged;
197 
198  // Private Functions
199  //int static inline Sign(double x);
200  double Backbone_f(double ess) const;
201  double Backbone_fNat(double essp) const;
202  double Backbone_E(double ess) const;
203  double Buckled_stress_Dhakal(double ess, double fss) const;
204  double Buckled_stress_Gomes(double ess, double fss) const;
205  double Buckled_mod_Gomes(double ess, double fss, double Ess) const;
206  double Buckled_mod_Dhakal(double ess, double fss, double Ess) const;
207 
208  double inline MP_f(double e) const;
209  double inline MP_E(double e) const;
210  int SetMP(void);
211  double MPfunc(double a);
212  void inline SetTRp(void);
213  void inline SetTRn(void);
214  void inline SetTRp1(void);
215  void inline SetTRn1(void);
216  void SetPastCurve(int branch);
217 
218  int BranchDriver(int res);
219  int Rule1(int res);
220  int Rule2(int res);
221  int Rule3(int res);
222  int Rule4(int res);
223  int Rule5(int res);
224  int Rule6(int res);
225  int Rule7(int res);
226  int Rule8(int res);
227  int Rule9(int res);
228  int Rule10(int res);
229  int Rule11(int res);
230  int Rule12(int res);
231 
232  double inline damage(double ehalfPlastic);
233  double inline getPlasticStrain(double ehalf, double stressAmp);
234  double scalefactor(void) const;
235  double inline ReturnSlope(double dea);
236  void updateHardeningLoaction(double PlasticStrain);
237  void updateHardeningLoactionParams(void);
238  protected:
239  int sendData(Communicator &comm);
240  int recvData(const Communicator &comm);
241  public:
242  ReinforcingSteel(int tag, double fyield, double fultimate, double youngs, double youngs_hard,
243  double estrainhard, double eultimate, int buckModel, double slenderness, double alpha, double r,
244  double gama, double Fatigue1, double Fatigue2, double Degrade1, double RC1, double RC2, double RC3, double A1, double HardLim);
245  ReinforcingSteel(int tag);
246 
247  int setTrialStrain(double strain, double strainRate = 0.0);
248  double getStrain(void) const;
249  double getStress(void) const;
250  double getTangent(void) const;
251  double getInitialTangent(void) const;
252 
253  int commitState(void);
254  int revertToLastCommit(void);
255  int revertToStart(void);
256 
257  UniaxialMaterial *getCopy(void) const;
258 
259  int sendSelf(Communicator &);
260  int recvSelf(const Communicator &);
261 
262  void Print(std::ostream &s, int flag =0) const;
263  };
264 } // end of XC namespace
265 
266 #endif
267 
UniaxialMaterial * getCopy(void) const
Virtual constructor.
Definition: ReinforcingSteel.cpp:401
Communication parameters between processes.
Definition: Communicator.h:66
int recvSelf(const Communicator &)
Receives object through the communicator argument.
Definition: ReinforcingSteel.cpp:532
int sendSelf(Communicator &)
Sends object through the communicator argument.
Definition: ReinforcingSteel.cpp:518
Base class for uniaxial materials.
Definition: UniaxialMaterial.h:93
int recvData(const Communicator &comm)
Send object members through the communicator argument.
Definition: ReinforcingSteel.cpp:462
int revertToStart(void)
Revert the material to its initial state.
Definition: ReinforcingSteel.cpp:336
int sendData(Communicator &comm)
Send object members through the communicator argument.
Definition: ReinforcingSteel.cpp:405
double getStress(void) const
Return the current value of stress.
Definition: ReinforcingSteel.cpp:223
Reinforcing steel uniaxial material.
Definition: ReinforcingSteel.h:80
UniaxialStateVars stores values for material strain, stress and stiffness.
Definition: UniaxialStateVars.h:39
double getTangent(void) const
Return the material tangent stiffness.
Definition: ReinforcingSteel.cpp:241
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
int setTrialStrain(double strain, double strainRate=0.0)
Sets the value of the trial strain.
Definition: ReinforcingSteel.cpp:180
void Print(std::ostream &s, int flag=0) const
Print stuff.
Definition: ReinforcingSteel.cpp:551
double getInitialTangent(void) const
Return the material initial stiffness.
Definition: ReinforcingSteel.cpp:259