XC Open source finite element analysis program
ReinforcingSteel.h
1 //----------------------------------------------------------------------------
2 // XC program; finite element analysis code
3 // for structural analysis and design.
4 //
5 // Copyright (C) Luis Claudio Pérez Tato
6 //
7 // This program derives from OpenSees <http://opensees.berkeley.edu>
8 // developed by the «Pacific earthquake engineering research center».
9 //
10 // Except for the restrictions that may arise from the copyright
11 // of the original program (see copyright_opensees.txt)
12 // XC is free software: you can redistribute it and/or modify
13 // it under the terms of the GNU General Public License as published by
14 // the Free Software Foundation, either version 3 of the License, or
15 // (at your option) any later version.
16 //
17 // This software is distributed in the hope that it will be useful, but
18 // WITHOUT ANY WARRANTY; without even the implied warranty of
19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 // GNU General Public License for more details.
21 //
22 //
23 // You should have received a copy of the GNU General Public License
24 // along with this program.
25 // If not, see <http://www.gnu.org/licenses/>.
26 //----------------------------------------------------------------------------
27 /* ****************************************************************** **
28 ** OpenSees - Open System for Earthquake Engineering Simulation **
29 ** Pacific Earthquake Engineering Research Center **
30 ** **
31 ** **
32 ** (C) Copyright 1999, The Regents of the University of California **
33 ** All Rights Reserved. **
34 ** **
35 ** Commercial use of this program without express permission of the **
36 ** University of California, Berkeley, is strictly prohibited. See **
37 ** file 'COPYRIGHT' in main directory for information on usage and **
38 ** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. **
39 ** **
40 ** Developed by: **
41 ** Frank McKenna (fmckenna@ce.berkeley.edu) **
42 ** Gregory L. Fenves (fenves@ce.berkeley.edu) **
43 ** Filip C. Filippou (filippou@ce.berkeley.edu) **
44 ** **
45 ** ****************************************************************** */
46 
47 // $Revision: 1.3 $
48 // $Date: 2006/01/19 19:19:12 $
49 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/ReinforcingSteel.h,v $
50 
51 /* ****************************************************************** **
52 ** THIS FILE WAS DEVELOPED AT UC DAVIS **
53 ** **
54 ** Programmed by: Jon Mohle (jfmohle@ucdavis.edu) **
55 ** Supervisor: Sashi Kunnath (skkunnath@ucdavis.edu) **
56 ** **
57 ********************************************************************* */
58 // Written: Jon Mohle
59 // Created: October 2003
60 // Updated: September 2005
61 // Description: This file contains the class definition for
62 // ReinforcingSteel.
63 
64 #ifndef ReinforcingSteel_h
65 #define ReinforcingSteel_h
66 #define HelpDebugMat //Debugging info, JFM
67 
68 #include "UniaxialMaterial.h"
69 #include "UniaxialStateVars.h"
70 #include <vector>
71 
72 namespace XC {
74 //
77  {
78  private:
79  static const int LastRule_RS=20; // must be divisable by 4!!!!!!!!!!!
80  static const int vSize= LastRule_RS/2+1;
81 
82  #ifdef HelpDebugMat
83  static int classCount;
84  int thisClassNumber;
85  int thisClassCommit;
86  int thisClassStep;
87  #endif
88 
89  double ZeroTol;
90  double reduction;
91  double fsu_fraction;
92  double beta;
93  mutable int theBarFailed;
94 
95  // natural stress-strain variables
96  double p;
97  double Esp; // natural Elastic Modulus
98  double eshp; // natural Hardening Strain
99  double fshp; // natural Hardening Stress
100  double Eshp; // natural Hardening Modulus
101  double esup; // natural Strain at Peak Stress
102  double fsup; // natural Peak Stress
103  double Esup; // natural peak stress Modulus
104  double Eypp; // natural Yield Plateu Modulus
105  double fint; // natural Stress yield plateu intersect
106  double eyp; // natural strain at yield
107  double fyp; // natural yield stress
108 
109  double esh; // engineering hardening strain (user input)
110  double Esh; // engineering hardening slope (user input)
111 
112  double eshpa; // Curve smoothing Parameters (at SH transition)
113  double Eshpb; // These are used to eliminate a sudden discontinuity in stiffness
114 
115  double a1; // Linear Hardening Constant (with relation to accumulated plastic strain)
116  double hardLim;
117 
118  double THardFact;
119  double CHardFact;
120 
121  // Strength degradation parameters
122  std::vector<double> T_ePlastic;
123  std::vector<double> C_ePlastic;
124  //double Nbf; // Cyclic Backbone factor used correct backbone proporsional to return strain
125  double TFatDamage;
126  double CFatDamage;
127  double LDratio;
128  double Fat1;
129  double Fat2;
130  double Deg1;
131  int BuckleModel;
132  mutable double BackStress;
133 
134  // Menegotto-Pinto Calibration Constants
135  double RC1;
136  double RC2;
137  double RC3;
138 
139  // Menegotto-Pinto Equation paramenters
140  double TR;
141  double Tfch;
142  double TQ;
143  double TEsec;
144  double Tea;
145  double Tfa;
146  double TEa;
147  double Teb;
148  double Tfb;
149  double TEb;
150 
151  double re;
152  double rE1;
153  double rE2;
154 
155  // Converged Menegotto-Pinto Equation paramenters
156  std::vector<double> CR;
157  std::vector<double> Cfch;
158  std::vector<double> CQ;
159  std::vector<double> CEsec;
160  std::vector<double> Cea;
161  std::vector<double> Cfa;
162  std::vector<double> CEa;
163  std::vector<double> Ceb;
164  std::vector<double> Cfb;
165  std::vector<double> CEb;
166 
167  // Trial History Variables
168  mutable int TBranchNum;
169  int TBranchMem;
170  double Teo_p;
171  double Teo_n;
172  double Temax;
173  double Temin;
174  double TeAbsMax;
175  double TeAbsMin;
176  double TeCumPlastic;
177 
178  // Converged History Variables
179  int CBranchNum;
180  double Ceo_p;
181  double Ceo_n;
182  double Cemax;
183  double Cemin;
184  double CeAbsMax;
185  double CeAbsMin;
186  double CeCumPlastic;
187 
188  // Trial State Variables
189  UniaxialStateVars trial;
190 
191  // Converged History Variables
192  UniaxialStateVars converged;
193 
194  // Private Functions
195  //int static inline Sign(double x);
196  double Backbone_f(double ess) const;
197  double Backbone_fNat(double essp) const;
198  double Backbone_E(double ess) const;
199  double Buckled_stress_Dhakal(double ess, double fss) const;
200  double Buckled_stress_Gomes(double ess, double fss) const;
201  double Buckled_mod_Gomes(double ess, double fss, double Ess) const;
202  double Buckled_mod_Dhakal(double ess, double fss, double Ess) const;
203 
204  double inline MP_f(double e) const;
205  double inline MP_E(double e) const;
206  int SetMP(void);
207  double MPfunc(double a);
208  void inline SetTRp(void);
209  void inline SetTRn(void);
210  void inline SetTRp1(void);
211  void inline SetTRn1(void);
212  void SetPastCurve(int branch);
213 
214  int BranchDriver(int res);
215  int Rule1(int res);
216  int Rule2(int res);
217  int Rule3(int res);
218  int Rule4(int res);
219  int Rule5(int res);
220  int Rule6(int res);
221  int Rule7(int res);
222  int Rule8(int res);
223  int Rule9(int res);
224  int Rule10(int res);
225  int Rule11(int res);
226  int Rule12(int res);
227 
228  double inline damage(double ehalfPlastic);
229  double inline getPlasticStrain(double ehalf, double stressAmp);
230  double scalefactor(void) const;
231  double inline ReturnSlope(double dea);
232  void updateHardeningLoaction(double PlasticStrain);
233  void updateHardeningLoactionParams(void);
234  protected:
235  int sendData(CommParameters &cp);
236  int recvData(const CommParameters &cp);
237  public:
238  ReinforcingSteel(int tag, double fyield, double fultimate, double youngs, double youngs_hard,
239  double estrainhard, double eultimate, int buckModel, double slenderness, double alpha, double r,
240  double gama, double Fatigue1, double Fatigue2, double Degrade1, double RC1, double RC2, double RC3, double A1, double HardLim);
241  ReinforcingSteel(int tag);
242 
243  int setTrialStrain(double strain, double strainRate = 0.0);
244  double getStrain(void) const;
245  double getStress(void) const;
246  double getTangent(void) const;
247  double getInitialTangent(void) const;
248 
249  int commitState(void);
250  int revertToLastCommit(void);
251  int revertToStart(void);
252 
253  UniaxialMaterial *getCopy(void) const;
254 
255  int sendSelf(CommParameters &);
256  int recvSelf(const CommParameters &);
257 
258  void Print(std::ostream &s, int flag =0);
259  };
260 } // end of XC namespace
261 
262 #endif
263 
int recvSelf(const CommParameters &)
Receives object through the channel being passed as parameter.
Definition: ReinforcingSteel.cpp:527
int sendData(CommParameters &cp)
Send object members through the channel being passed as parameter.
Definition: ReinforcingSteel.cpp:400
UniaxialStateVars stores values for material strain, stress and stiffness.
Definition: UniaxialStateVars.h:38
UniaxialMaterial * getCopy(void) const
Virtual constructor.
Definition: ReinforcingSteel.cpp:396
int recvData(const CommParameters &cp)
Send object members through the channel being passed as parameter.
Definition: ReinforcingSteel.cpp:457
??.
Definition: ReinforcingSteel.h:76
int sendSelf(CommParameters &)
Sends object through the channel being passed as parameter.
Definition: ReinforcingSteel.cpp:513
void Print(std::ostream &s, int flag=0)
Imprime el objeto.
Definition: ReinforcingSteel.cpp:546
Communication parameters between processes.
Definition: CommParameters.h:65
================================================================================
Definition: ContinuaReprComponent.h:34
Base class for uniaxial materials.
Definition: UniaxialMaterial.h:88