xc
Concrete02.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: 2006/08/03 23:42:19 $
49 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/Concrete02.h,v $
50 
51 // Written: fmk
52 // Created: 03/06
53 //
54 // Description: This file contains the class definition for
55 // Concrete02. Concrete02 is based on an f2c of the FEDEAS material
56 // Concr2.f which is:
57 /*-----------------------------------------------------------------------
58 ! concrete model with damage modulus
59 ! by MOHD YASSIN (1993)
60 ! adapted to FEDEAS material library
61 ! by D. Sze and Filip C. Filippou in 1994
62 -----------------------------------------------------------------------*/
63 
64 
65 
66 #ifndef Concrete02_h
67 #define Concrete02_h
68 
69 #include <material/uniaxial/concrete/RawConcrete.h>
70 
71 namespace XC {
72 
74 //
77  {
78  double ecmin;
79  double dept;
80  double eps;
81  double sig;
82  double e;
83  inline Conc02HistoryVars(void)
84  : ecmin(0.0), dept(0.0), eps(0.0), sig(0.0), e(0.0) {}
85  inline void setup_parameters(const double &initialTangent)
86  {
87  e= initialTangent;
88  eps= 0.0;
89  sig= 0.0;
90  }
91  inline double getStrain(void) const
92  { return eps; }
93  inline double getStress(void) const
94  { return sig; }
95  inline double getTangent(void) const
96  { return e; }
97  void cutStress(const double &sigmin,const double &sigmax,const double &er)
98  {
99  if(sig <= sigmin)
100  {
101  sig= sigmin;
102  e= er;
103  }
104  else if(sig >= sigmax)
105  {
106  sig= sigmax;
107  e= 0.5 * er;
108  }
109  }
110  void Print(std::ostream &os) const
111  {
112  os << "Concrete02:(strain, stress, tangent) " << eps
113  << ", " << sig << ", " << e << std::endl;
114  }
115  };
116 
118 inline std::ostream &operator<<(std::ostream &os,const Conc02HistoryVars &hv)
119  {
120  hv.Print(os);
121  return os;
122  }
123 
125 //
128 class Concrete02: public RawConcrete
129  {
130  private:
131 
132  // matpar : Concrete FIXED PROPERTIES
133  double fpcu;
134  double rat;
135  double ft;
136  double Ets;
137 
138  // hstvP : Concrete HISTORY VARIABLES last committed step
139  Conc02HistoryVars hstvP;
140  // hstv : Concrete HISTORY VARIABLES current step
141  Conc02HistoryVars hstv;
142 
143  void Tens_Envlp(double epsc, double &sigc, double &Ect);
144  void Compr_Envlp(double epsc, double &sigc, double &Ect);
145  protected:
146  int sendData(CommParameters &);
147  int recvData(const CommParameters &);
148  void setup_parameters(void);
149  public:
150  Concrete02(int tag, double _fpc, double _epsc0, double _fpcu,
151  double _epscu, double _rat, double _ft, double _Ets);
152  Concrete02(int tag= 0);
153 
154  void setFpcu(const double &);
155  double getFpcu(void) const;
156  void setFt(const double &);
157  double getFt(void) const;
158  void setEts(const double &);
159  double getEts(void) const;
160  void setLambda(const double &);
161  double getLambda(void) const;
162 
163  inline double getInitialTangent(void) const
164  { return 2.0*fpc/epsc0; }
165  UniaxialMaterial *getCopy(void) const;
166 
167  int setTrialStrain(double strain, double strainRate = 0.0);
168  inline double getStrain(void) const
169  { return hstv.getStrain(); }
170  inline double getStress(void) const
171  { return hstv.getStress(); }
172  inline double getTangent(void) const
173  { return hstv.getTangent(); }
174 
175  int commitState(void);
176  int revertToLastCommit(void);
177  int revertToStart(void);
178 
179  int sendSelf(CommParameters &);
180  int recvSelf(const CommParameters &);
181 
182  void Print(std::ostream &s, int flag =0);
183  };
184 } // end of XC namespace
185 
186 
187 #endif
188 
double dept
hstP(2)
Definition: Concrete02.h:79
Base class for uniaxial materials.
Definition: UniaxialMaterial.h:92
double getStress(void) const
Return the current value of stress.
Definition: Concrete02.h:170
double e
stiffness modulus
Definition: Concrete02.h:82
Concrete02 history variables.
Definition: Concrete02.h:76
double eps
strain
Definition: Concrete02.h:80
double getTangent(void) const
Return the current value of the tangent for the trial strain.
Definition: Concrete02.h:172
Base class for concrete materials.
Definition: RawConcrete.h:41
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:34
double sig
stress
Definition: Concrete02.h:81
Communication parameters between processes.
Definition: CommParameters.h:65
Uniaxial model for concrete with tensile strength and tension softenint.
Definition: Concrete02.h:128
double ecmin
hstP(1)
Definition: Concrete02.h:78