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 #include "material/uniaxial/concrete/ConcreteHistoryVars.h"
72 
73 namespace XC {
74 
76 //
79 class Concrete02: public RawConcrete
80  {
81  protected:
82 
83  // matpar : Concrete FIXED PROPERTIES
84  double fpcu;
85  double rat;
86  double ft;
87  double Ets;
88 
89  // hstvP : Concrete HISTORY VARIABLES last committed step
91  // hstv : Concrete HISTORY VARIABLES current step
93 
94  void Tens_Envlp(double epsc, double &sigc, double &Ect);
95  virtual void Compr_Envlp(double epsc, double &sigc, double &Ect);
96  protected:
97  int sendData(Communicator &);
98  int recvData(const Communicator &);
99  void setup_parameters(void);
100 
101  Concrete02(int tag, int classTag);
102  Concrete02(int tag, int classTag, double _fpc, double _epsc0,
103  double _fpcu,double _epscu, double _rat, double _ft,
104  double _Ets);
105  public:
106  Concrete02(int tag= 0);
107  Concrete02(int tag, double _fpc, double _epsc0, double _fpcu,
108  double _epscu, double _rat, double _ft, double _Ets);
109  UniaxialMaterial *getCopy(void) const;
110 
111  void setFpcu(const double &);
112  double getFpcu(void) const;
113  void setFt(const double &);
114  double getFt(void) const;
115  void setEts(const double &);
116  double getEts(void) const;
117  void setLambda(const double &);
118  double getLambda(void) const;
119 
120  inline double getInitialTangent(void) const
121  { return 2.0*fpc/epsc0; }
122 
123  int setTrialStrain(double strain, double strainRate = 0.0);
124  inline double getStrain(void) const
125  { return hstv.getStrain(); }
126  inline double getStress(void) const
127  { return hstv.getStress(); }
128  inline double getTangent(void) const
129  { return hstv.getTangent(); }
130 
131  int commitState(void);
132  int revertToLastCommit(void);
133  int revertToStart(void);
134 
135  int sendSelf(Communicator &);
136  int recvSelf(const Communicator &);
137 
138  void Print(std::ostream &s, int flag =0) const;
139  };
140 } // end of XC namespace
141 
142 
143 #endif
144 
double getLambda(void) const
Returns concrete tensile strength.
Definition: Concrete02.cpp:189
int sendData(Communicator &)
Send object members through the communicator argument.
Definition: Concrete02.cpp:310
Concrete02(int tag, int classTag)
Default constructor.
Definition: Concrete02.cpp:87
int revertToStart(void)
Revert the material to its initial state.
Definition: Concrete02.cpp:302
double fpc
Compression strength.
Definition: RawConcrete.h:45
Communication parameters between processes.
Definition: Communicator.h:66
UniaxialMaterial * getCopy(void) const
Virtual constructor.
Definition: Concrete02.cpp:130
Concrete history variables.
Definition: ConcreteHistoryVars.h:39
Base class for uniaxial materials.
Definition: UniaxialMaterial.h:93
void setEts(const double &)
Set the tension softening stiffness (absolute value) (slope of the linear tension softening branch)...
Definition: Concrete02.cpp:168
double getStress(void) const
Return the current value of stress.
Definition: Concrete02.h:126
void setLambda(const double &)
ratio between unloading slope at epscu and initial slope
Definition: Concrete02.cpp:185
double ft
concrete tensile strength.
Definition: Concrete02.h:86
double getTangent(void) const
Return the current value of the tangent for the trial strain.
Definition: Concrete02.h:128
double fpcu
stress at ultimate (crushing) strain.
Definition: Concrete02.h:84
Base class for concrete materials.
Definition: RawConcrete.h:42
void Print(std::ostream &s, int flag=0) const
Print stuff.
Definition: Concrete02.cpp:365
void setFt(const double &)
Assigns concrete tensile strength.
Definition: Concrete02.cpp:151
double getFpcu(void) const
Returns concrete compressive strength.
Definition: Concrete02.cpp:147
double rat
ratio between unloading slope at epscu and original slope.
Definition: Concrete02.h:85
double getEts(void) const
Returns the tension softening stiffness (absolute value) (slope of the linear tension softening branc...
Definition: Concrete02.cpp:181
void Tens_Envlp(double epsc, double &sigc, double &Ect)
Monotonic envelope of concrete in tension (positive envelope).
Definition: Concrete02.cpp:374
ConcreteHistoryVars hstv
= values at current step (trial values)
Definition: Concrete02.h:92
double getFt(void) const
Returns concrete tensile strength.
Definition: Concrete02.cpp:164
int sendSelf(Communicator &)
Send the object.
Definition: Concrete02.cpp:331
int commitState(void)
Commit the state of the material.
Definition: Concrete02.cpp:289
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
int setTrialStrain(double strain, double strainRate=0.0)
Sets the value of the trial strain.
Definition: Concrete02.cpp:193
double epsc0
Strain when compression strength is reached.
Definition: RawConcrete.h:46
int recvSelf(const Communicator &)
Receive the object.
Definition: Concrete02.cpp:345
Uniaxial model for concrete with tensile strength and tension softenint.
Definition: Concrete02.h:79
ConcreteHistoryVars hstvP
= values at previous converged step
Definition: Concrete02.h:90
int recvData(const Communicator &)
Receives object members through the communicator argument.
Definition: Concrete02.cpp:321
double Ets
tension stiffening slope.
Definition: Concrete02.h:87
void setFpcu(const double &)
Assigns concrete compressive strength.
Definition: Concrete02.cpp:134