XC Open source finite element analysis program
BarSlipMaterial.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.2 $
48 // $Date: 2004/10/06 19:21:12 $
49 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/BarSlipMaterial.h,v $
50 
51 
52 // Written: NM (nmitra@u.washington.edu)
53 // Created: January 2002
54 // Updated: September 2004
55 //
56 // Description: This file contains the class defination for
57 // bar-slip material. The file generates the 4 point envelope for both positive
58 // and negative loading and is basically a wrapper for the Pinching4 material at it's outset.
59 // Updates: new damage analysis and user interface.
60 
61 
62 #ifndef BarSlipMaterial_h
63 #define BarSlipMaterial_h
64 
65 #include <material/uniaxial/UniaxialMaterial.h>
66 //#include <material/uniaxial/Pinching4Material.h>
67 #include <cmath>
68 #include <utility/matrix/Matrix.h>
69 #include <utility/matrix/Vector.h>
70 #include <utility/handler/FileStream.h>
71 
72 namespace XC {
74 //
79  {
80  private:
81  int tagMat;
82  // bond strength flag
83  int bsflag; // 1 --- weak or 0 --- strong bond strength
84 
85  // unit used
86  int unit; // 1 --- mpa or 2 --- psi (the coefficients of shear stress will change accordingly)
87 
88  // type of j to be used for beam top barslip it is "1" or it is "0" for beam bottom bar slip or column
89  int type;
90 
91  int damage; // type of damage in the material;
92 
93  // dimensions
94  double width; // width of the member
95  double depth; // depth of the member
96 
97  // material used at onset
98 // Pinching4Material* material;
99  Vector envlpPosStress; Vector envlpPosStrain;
100  Vector envlpNegStress; Vector envlpNegStrain;
101 
102 
103  // concrete properties
104  double fc; // compressive strength of concrete
105 
106  // steel properties
107  double fy; // yeild strength of steel
108  double Es; // modulus of elasticity of steel
109  double fu; // ultimate strength of steel
110  double Eh; // modulus of hardening of steel
111  double db; // reinforcing steel bar diameter
112  int nbars; // no of reinforcing bars
113 
114  // anchorage length
115  double ld; // anchorage length of the reinforcing steel
116 
117  // bond strengths
118  double tauET; // bond strength of steel that is elastic and carries tensile load
119  double tauYT; // bond strength of steel that has yeilded in tension
120  double tauEC; // bond strength of steel that is elastic and carries compression load
121  double tauYC; // bond strength of steel that has yeilded in compression
122  double tauR; // residual bond strength of steel
123 
124  // unloading-reloading parameters
125  double rDispP; double rForceP; double uForceP;
126  double rDispN; double rForceN; double uForceN;
127 
128  // Damage parameters
129  double gammaK1; double gammaK2; double gammaK3; double gammaK4; double gammaKLimit;
130  double gammaD1; double gammaD2; double gammaD3; double gammaD4; double gammaDLimit;
131  double gammaF1; double gammaF2; double gammaF3; double gammaF4; double gammaFLimit;
132  double gammaE;
133 
134 
135  // positive and negative envelopes
136  Matrix eP;
137  Matrix eN;
138 
139  //**************************************************************************
140  // Trial Set varables
141  double Tstrain; double Ttangent; double Tstress;
142 
143  // Converged Material History parameters
144  int Cstate;
145  double Cstrain;
146  double Cstress;
147  double CstrainRate;
148  double lowCstateStrain;
149  double lowCstateStress;
150  double hghCstateStrain;
151  double hghCstateStress;
152  double CminStrainDmnd;
153  double CmaxStrainDmnd;
154  double Cenergy;
155  double CgammaK;
156  double CgammaD;
157  double CgammaF;
158  double gammaKUsed;
159  double gammaFUsed;
160 
161  // Trial Material History Parameters
162  int Tstate;
163  double dstrain;
164  double TstrainRate;
165  double lowTstateStrain;
166  double lowTstateStress;
167  double hghTstateStrain;
168  double hghTstateStress;
169  double TminStrainDmnd;
170  double TmaxStrainDmnd;
171  double Tenergy;
172  double TgammaK;
173  double TgammaD;
174  double TgammaF;
175 
176  // strength and stiffness parameters;
177  double kElasticPos;
178  double kElasticNeg;
179  double kElasticPosDamgd;
180  double kElasticNegDamgd;
181  double uMaxDamgd;
182  double uMinDamgd;
183 
184  Vector envlpPosDamgdStress; Vector envlpNegDamgdStress;
185 
186  double kunload;
187  Vector state3Stress; Vector state3Strain; Vector state4Stress; Vector state4Strain;
188  double elasticStrainEnergy;
189  double energyCapacity;
190 //****************************************************************
191 
192  void getBondStrength(void);
193  void getBarSlipEnvelope(void);
194  void createMaterial(void);
195 
196  void SetEnvelope(void);
197  void getstate(double, double);
198  double posEnvlpStress(double);
199  double posEnvlpTangent(double);
200  double negEnvlpStress(double);
201  double negEnvlpTangent(double);
202 
203  void getState3(Vector& , Vector& , double);
204  void getState4(Vector& , Vector& , double);
205  double Envlp3Tangent(Vector , Vector , double);
206  double Envlp3Stress(Vector , Vector , double);
207  double Envlp4Tangent(Vector , Vector , double);
208  double Envlp4Stress(Vector , Vector , double);
209 
210  void updateDmg(double);
211 
212 //FileStream* fn;
213 //FileStream* fg;
214  public :
215  BarSlipMaterial(int tag,
216  double fc, double fy, double Es, double fu,
217  double Eh, double db, double ld, int nbars, double width, double depth,
218  int bsflag, int type);
219 
220  BarSlipMaterial(int tag,
221  double fc, double fy, double Es, double fu,
222  double Eh, double db, double ld, int nbars, double width, double depth,
223  int bsflag, int type, int damage, int unit);
224 
225  BarSlipMaterial(int tag);
226  BarSlipMaterial();
227 
228  int setTrialStrain(double strain, double strainRate = 0.0);
229  double getStrain(void) const;
230  double getStress(void) const;
231  double getTangent(void) const;
232  double getInitialTangent(void) const;
233 
234  int commitState(void);
235  int revertToLastCommit(void);
236  int revertToStart(void);
237 
238  UniaxialMaterial *getCopy(void) const;
239 
240  int sendSelf(CommParameters &);
241  int recvSelf(const CommParameters &);
242 
243  void Print(std::ostream &s, int flag = 0);
244  };
245 } // end of XC namespace
246 #endif
Definition: Vector.h:82
The file generates the 4 point envelope for both positive and negative loading and is basically a wra...
Definition: BarSlipMaterial.h:78
UniaxialMaterial * getCopy(void) const
Virtual constructor.
Definition: BarSlipMaterial.cpp:532
void Print(std::ostream &s, int flag=0)
Imprime el objeto.
Definition: BarSlipMaterial.cpp:621
Definition: Matrix.h:82
Communication parameters between processes.
Definition: CommParameters.h:65
================================================================================
Definition: ContinuaReprComponent.h:34
Base class for uniaxial materials.
Definition: UniaxialMaterial.h:88