xc
EvolutionLaw_NLEeq.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 //================================================================================
30 // COPYRIGHT (C): :-)) |
31 // PROJECT: Object Oriented Finite Element Program |
32 // PURPOSE: General platform for elaso-plastic constitutive model |
33 // implementation |
34 // |
35 // CLASS: NonLinear EvolutionLaw (on plastic equivalent strain) |
36 // |
37 // VERSION: |
38 // LANGUAGE: C++.ver >= 2.0 ( Borland C++ ver=3.00, SUN C++ ver=2.1 ) |
39 // TARGET OS: DOS || UNIX || . . . |
40 // DESIGNER(S): Boris Jeremic, Zhaohui Yang |
41 // PROGRAMMER(S): Boris Jeremic, Zhaohui Yang |
42 // |
43 // |
44 // DATE: 09-02-2000 |
45 // UPDATE HISTORY: |
46 // |
47 // |
48 // |
49 // |
50 // SHORT EXPLANATION: This is a nonlinear evolution law for the evoltion of a |
51 // scalar variable k which depends on plastic equi. strain |
52 // i.e. dk = f( de_eq_p ) |
53 // |
54 //================================================================================
55 
56 #ifndef EvolutionLaw_NLEeq_H
57 #define EvolutionLaw_NLEeq_H
58 
59 #include <cmath>
60 #include "material/nD/template_3d_ep/EvolutionLaw_S.h"
61 
62 namespace XC {
71  {
72  // Private vars to define the evolution law
73  //Coefficients to define the nonlinear hardening rule of a scalar var eta
74  double eeqEtaPeak, etaResidual, etaStart, etaPeak, e, d;
75 
76  public:
77  // default constructor
78  EvolutionLaw_NL_Eeq( double eeqEtaPeakd = 0.003,
79  double etaResiduald = .2,
80  double etaStartd = 0.3,
81  double etaPeakd = 0.5,
82  double ed = 0.5,
83  double dd = 500.0) :
84  eeqEtaPeak(eeqEtaPeakd), etaResidual(etaResiduald),
85  etaStart(etaStartd), etaPeak(etaPeakd), e(ed), d(dd) {}
86 
87  EvolutionLaw_NL_Eeq(const EvolutionLaw_NL_Eeq &NLEL ); // Copy constructor
88 
89  EvolutionLaw_S *getCopy(void) const; // create a clone of itself
90 
91  //void InitVars(EPState *EPS); // Initialize all hardening vars called only once
92  // // after material point is formed if necessary.
93 
94  //void setInitD(EPState *EPS); // set initial D once current stress hits the y.s.
95  // // was primarily for Manzari-Dafalias model
96 
97  //double h( EPState *EPS, double d ); // Evaluating hardening function h
98  double h_s( EPState *EPS, PotentialSurface *PS); // Evaluating hardening function h
99 
100  //void UpdateVar( EPState *EPS, double dlamda ); // Evolve corresponding var linearly using de_eq_p
101 
102  virtual void print(std::ostream &) const;
103 
104  // some accessor functions
105  // some accessor functions
106  double geteeqEtaPeak() const;
107  double getetaResidual() const;
108  double getetaStart() const;
109  double getetaPeak() const;
110  double gete() const;
111  double getd() const;
112 
113  };
114 
115 } // end of XC namespace
116 
117 
118 #endif
119 
120 
121 
122 
Definition: PotentialSurface.h:76
Non linear evolution law (on plastic equivalent strain).
Definition: EvolutionLaw_NLEeq.h:70
virtual void print(std::ostream &) const
Print vars defined in NLinear Evolution Law.
Definition: EvolutionLaw_NLEeq.cpp:206
Base class for scalar evolution laws.
Definition: EvolutionLaw_S.h:70
Base class for all elasto-plastic states.
Definition: EPState.h:151
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
EvolutionLaw_S * getCopy(void) const
Virtual constructor.
Definition: EvolutionLaw_NLEeq.cpp:78