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