xc
EvolutionLaw_NLEp.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: EvolutionLaw_L_Ep (linear scalar Evolution law) |
36 // |
37 // |
38 // VERSION: |
39 // LANGUAGE: C++.ver >= 2.0 ( Borland C++ ver=3.00, SUN C++ ver=2.1 ) |
40 // TARGET OS: DOS || UNIX || . . . |
41 // DESIGNER(S): Boris Jeremic, Zhaohui Yang |
42 // PROGRAMMER(S): Boris Jeremic, Zhaohui Yang |
43 // |
44 // |
45 // DATE: Mar. 28, 01 |
46 // UPDATE HISTORY: |
47 // |
48 // |
49 // |
50 // |
51 // SHORT EXPLANATION: This is a nonlinear evolution law for the evoltion of a |
52 // scalar variable po which depends on plastic volumetric |
53 // strain i.e. dpo = (1+eo)po/(lamda-kappa)*de_p |
54 // |
55 //================================================================================
56 
57 #ifndef EvolutionLaw_NLEp_H
58 #define EvolutionLaw_NLEp_H
59 
60 #include <cmath>
61 #include "material/nD/template_3d_ep/EvolutionLaw_S.h"
62 
63 namespace XC {
72  {
73  // Private vars to define the evolution law
74  private:
75  double eo;
76  double lambda; //<! coefficient to define the linear hardening rule of a scalar hardening var.
77  double kappa;
78 
79  public:
80  //EvolutionLaw_NL_Ep( ); // default constructor---no parameters
81 
82  EvolutionLaw_NL_Ep( double eod = 0.85, double lambdad = 0.19, double kappad = 0.06);
83 
84  EvolutionLaw_NL_Ep(const EvolutionLaw_NL_Ep &LEL ); // Copy constructor
85 
86  EvolutionLaw_S *getCopy(void) const; //create a clone of itself
87 
88  //void InitVars(EPState *EPS); // Initialize all hardening vars called only once
89  // // after material point is formed if necessary.
90 
91  //void setInitD(EPState *EPS); // set initial D once current stress hits the y.s.
92  // // was primarily for Manzari-Dafalias model
93 
94  //double h( EPState *EPS, double norm_dQods); // Evaluating hardening function h
95  double h_s( EPState *EPS, PotentialSurface *PS); // Evaluating hardening function h
96 
97  //void UpdateVar( EPState *EPS, double dlamda ); // Evolve corresponding var linearly using de_eq_p
98  //Moved to CDriver.cpp
99 
100  virtual void print(std::ostream &) const;
101 
102  // some accessor functions
103  double geteo(void) const;
104  void seteo(const double &);
105 
106  double getlambda(void) const;
107  void setlambda(const double &);
108 
109  double getkappa(void) const;
110  void setkappa(const double &);
111 
112  //================================================================================
113  // Overloaded Insertion Operator Zhaohui Added Aug. 13, 2000
114  // prints Linear EvolutionLaw's contents
115  //================================================================================
116  friend std::ostream& operator<<(std::ostream &, const EvolutionLaw_NL_Ep &);
117  };
118 std::ostream& operator<<(std::ostream &, const EvolutionLaw_NL_Ep &);
119 } // end of XC namespace
120 
121 
122 #endif
123 
124 
125 
126 
Linear scalar evolution law.
Definition: EvolutionLaw_NLEp.h:71
void seteo(const double &)
Set void ratio.
Definition: EvolutionLaw_NLEp.cpp:160
Definition: PotentialSurface.h:76
double getlambda(void) const
Return value of lambda.
Definition: EvolutionLaw_NLEp.cpp:164
double getkappa(void) const
Return value of kappa.
Definition: EvolutionLaw_NLEp.cpp:172
Base class for scalar evolution laws.
Definition: EvolutionLaw_S.h:70
Base class for all elasto-plastic states.
Definition: EPState.h:151
void setlambda(const double &)
Set value of lambda.
Definition: EvolutionLaw_NLEp.cpp:168
virtual void print(std::ostream &) const
Print vars defined in Linear Evolution Law.
Definition: EvolutionLaw_NLEp.cpp:141
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
void setkappa(const double &)
Set value of kappa.
Definition: EvolutionLaw_NLEp.cpp:176
EvolutionLaw_S * getCopy(void) const
Virtual constructor.
Definition: EvolutionLaw_NLEp.cpp:81
double geteo(void) const
Return value of void ratio.
Definition: EvolutionLaw_NLEp.cpp:156