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