xc
MD_EL.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 //================================================================================
29 # COPYRIGHT (C): :-)) #
30 # PROJECT: Object Oriented Finite Element Program #
31 # PURPOSE: General platform for elaso-plastic constitutive model #
32 # implementation #
33 # CLASS: MDEvolutionLaw (evolution law for Manzari-Dafalias Model) #
34 # #
35 # VERSION: #
36 # LANGUAGE: C++.ver >= 2.0 ( Borland C++ ver=3.00, SUN C++ ver=2.1 ) #
37 # TARGET OS: DOS || UNIX || . . . #
38 # DESIGNER(S): Boris Jeremic, Zhaohui Yang #
39 # PROGRAMMER(S): Boris Jeremic, Zhaohui Yang #
40 # #
41 # #
42 # DATE: 08-03-2000 #
43 # UPDATE HISTORY: #
44 # #
45 # #
46 # #
47 # #
48 # SHORT EXPLANATION: The goal is to create a platform for efficient and easy #
49 # implemetation of any elasto-plastic constitutive model! #
50 # #
51 //================================================================================
52 */
53 
54 #ifndef MD_EL_H
55 #define MD_EL_H
56 
57 #include <cmath>
58 #include "EL.h"
59 
60 namespace XC {
62 //
64 class MDEvolutionLaw : public EvolutionLaw
65  {
66  // private to define the evolution law for Manzari-Dafalias critical state model
67  public:
68 
69  //Critical state parameters
70  double Mc;
71  double Me;
72  double Lambda; // slope of e vs. ln p
73  double ec_ref;// critical void ratio at reference mean effective stress p
74  double p_ref; // critical void ratio at reference mean effective stress p
75 
76  // surface evolution parameters
77  double kc_b; // b stands for bounding surface, c compression
78  double kc_d; // d stands for dilatancy surface, c compression
79  double ke_b; // d stands for bounding surface, e compression
80  double ke_d; // d stands for dilatancy surface, e compression
81 
82  // Parameters to calculate plastic modulus
83  //double h; // Could be calculated using ho and b_ij * n_ij
84  double ho;
85  double Cm;
86  double eo; // initial void ratio
87 
88  //Dilatancy parameter
89  //double D; //Moved to EPS's second scalar var
90  double Ao;
91 
92  //Parameters to define the evolution of Fabric Tensor
93  double Fmax;
94  double Cf;
95  double a; //exponent for elastic modulus evolution
96 
97  public:
98  //MDEvolutionLaw( ); // default constructor---no parameters
99 
100  MDEvolutionLaw( double Mcd = 1.14, // default constructor
101  double Med = 1.14,
102  double Lamdad = 0.025,
103  double ec_refd = 0.8,
104  double p_refd = 100, //kPa
105  double kc_bd = 3.975,
106  double kc_dd = 4.200,
107  double ke_bd = 2.000,
108  double ke_dd = 0.070,
109  double hod = 1200.0, // old 1200
110  double Cmd = 0.0, // old 0.0
111  //double eod = 0.65,
112  double Aod = 2.64, //old 2.64
113  double Fmaxd = 100,
114  double Cfd = 100,
115  double ad = 0.6) :
116  Mc (Mcd), Me(Med), Lambda(Lamdad), ec_ref(ec_refd), p_ref(p_refd),
117  kc_b(kc_bd), kc_d(kc_dd), ke_b(ke_bd), ke_d(ke_dd), ho(hod), Cm(Cmd),
118  Ao(Aod), Fmax(Fmaxd), Cf(Cfd), a(ad), eo(0.0) {}
119 
120  MDEvolutionLaw(const MDEvolutionLaw &MDE ); // Copy constructor
121 
122  MDEvolutionLaw *newObj(); //create a colne of itself
123 
124  void InitVars(EPState *EPS); // Initialize all hardening vars called only once
125  // after material point is formed!
126 
127  void setInitD(EPState *EPS); // set initial D once current stress hits the y.s.
128 
129  double getKp( EPState *EPS, double dummy ); // calculating Kp
130 
131  void UpdateAllVars( EPState *EPS, double dlamda ); // Evolve all vars
132  //void UpdateAllTensorVar( EPState *EPS, double dlamda ); // Evolve all tensor vars
133 
134  void print();
135 
136  // some accessor functions
137  double getMc() const;
138  double getMe() const;
139  double getLambda() const;
140  double getec_ref() const;
141  double getp_ref() const;
142 
143  double getkc_b() const;
144  double getkc_d() const;
145  double getke_b() const;
146  double getke_d() const;
147  //double geth() const; // Could be calculated using ho and b_ij * n_ij
148  double getho() const;
149  double getCm() const;
150  double geteo() const;
151  void seteo( double eod);
152 
153  //Dilatancy parameter
154  double getAo() const;
155 
156  double getFmax() const;
157  double getCf() const;
158  double geta() const;
159 
160 
161  //================================================================================
162  // Overloaded Insertion Operator Zhaohui Added Aug. 13, 2000
163  // prints Manzari-Dafalia EvolutionLaw's contents
164  //================================================================================
165  friend std::ostream& operator<<(std::ostream &, const MDEvolutionLaw &);
166  double g_A(double theta, double e); // Interpolation function by Agyris
167  double g_WW(double theta, double e); // Interpolation function by Willan-Warkne
168 
169 
170  };
171 
172 std::ostream& operator<<(std::ostream &os, const MDEvolutionLaw & MDEL);
173 
174 } // end of XC namespace
175 
176 
177 #endif
178 
179 // test
180 
181 
182 
183 
??.
Definition: MD_EL.h:64
3
Definition: EPState.h:73
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:34