XC Open source finite element analysis program
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 
117 inline std::ostream &operator<<(std::ostream &os,const Conc02HistoryVars &hv)
118  {
119  hv.Print(os);
120  return os;
121  }
122 
124 //
127 class Concrete02: public RawConcrete
128  {
129  private:
130 
131  // matpar : Concrete FIXED PROPERTIES
132  double fpcu;
133  double rat;
134  double ft;
135  double Ets;
136 
137  // hstvP : Concrete HISTORY VARIABLES last committed step
138  Conc02HistoryVars hstvP;
139  // hstv : Concrete HISTORY VARIABLES current step
140  Conc02HistoryVars hstv;
141 
142  void Tens_Envlp(double epsc, double &sigc, double &Ect);
143  void Compr_Envlp(double epsc, double &sigc, double &Ect);
144  protected:
145  int sendData(CommParameters &);
146  int recvData(const CommParameters &);
147  void setup_parameters(void);
148  public:
149  Concrete02(int tag, double _fpc, double _epsc0, double _fpcu,
150  double _epscu, double _rat, double _ft, double _Ets);
151  Concrete02(int tag= 0);
152 
153  void setFpcu(const double &);
154  double getFpcu(void) const;
155  void setFt(const double &);
156  double getFt(void) const;
157  void setEts(const double &);
158  double getEts(void) const;
159  void setLambda(const double &);
160  double getLambda(void) const;
161 
162  inline double getInitialTangent(void) const
163  { return 2.0*fpc/epsc0; }
164  UniaxialMaterial *getCopy(void) const;
165 
166  int setTrialStrain(double strain, double strainRate = 0.0);
167  inline double getStrain(void) const
168  { return hstv.getStrain(); }
169  inline double getStress(void) const
170  { return hstv.getStress(); }
171  inline double getTangent(void) const
172  { return hstv.getTangent(); }
173 
174  int commitState(void);
175  int revertToLastCommit(void);
176  int revertToStart(void);
177 
178  int sendSelf(CommParameters &);
179  int recvSelf(const CommParameters &);
180 
181  void Print(std::ostream &s, int flag =0);
182  };
183 } // end of XC namespace
184 
185 
186 #endif
187 
double eps
strain
Definition: Concrete02.h:80
Base class for concrete materials.
Definition: RawConcrete.h:41
Uniaxial model for concrete with tensile strength and tension softenint. Reference: Mohd Hisham Mohd ...
Definition: Concrete02.h:127
Concrete02 history variables.
Definition: Concrete02.h:76
double dept
hstP(2)
Definition: Concrete02.h:79
double e
stiffness modulus
Definition: Concrete02.h:82
double sig
stress
Definition: Concrete02.h:81
double ecmin
hstP(1)
Definition: Concrete02.h:78
Communication parameters between processes.
Definition: CommParameters.h:65
================================================================================
Definition: ContinuaReprComponent.h:34
Base class for uniaxial materials.
Definition: UniaxialMaterial.h:88