XC Open source finite element analysis program
EL_NLEijMD.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 // |
34 // CLASS: EvolutionLaw_NL_EijMD (nonlinear tensorial Evolution law) |
35 // |
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-13-2000 |
45 // UPDATE HISTORY: |
46 // |
47 // |
48 // |
49 // |
50 //================================================================================
51 
52 #ifndef EL_NL_EIJMD_H
53 #define EL_NL_EIJMD_H
54 
55 #include "material/nD/Template3Dep/EL_T.h"
56 #include "utility/matrix/nDarray/stresst.h"
57 
58 
59 namespace XC {
60 
62 //
65  {
66  // Private vars to define the MD evolution law
67  private:
68  // the exponential in G = Go (P/P_at)^a and K = Ko (P/P_at)^a
69  double eo; //Initial void ratio
70  double a;
71 
72  //Critical state parameters
73  double Mc;
74  double Me;
75  double Lambda; // slope of e vs. ln p
76  double ec_ref; // critical void ratio at reference mean effective stress p
77  double p_ref; // critical void ratio at reference mean effective stress p
78 
79  //surface evolution parameters
80  double kc_b; // b stands for bounding surface
81  double kc_d; // d stands for dilatancy surface
82  double ke_b; // e extension
83  double ke_d; // c compression
84 
85  //Hardening parameters
86  //double h; // Being calculated using ho and b_ij * n_ij
87  double ho;
88  double Cm;
89  //double e; // current void ratio ...Moved to EPState Joey 02-12-03
90 
91  //Dilatancy parameter
92  double D; //also copied to EPS's second scalar var(no direct contribution to hardening)
93  double Ao;
94 
95  //Get rid of the fabric tensor
96  //Fabric parameters
97  stresstensor F; //Fabric tensor which will evolve like alpha_{ij}
98  double Fmax;
99  double Cf;
100 
101  public:
102  //EvolutionLaw_L_EijMD( ); // default constructor---no parameters
103 
104  // default constructor
106  double eod ,
107  double ad ,
108  double Mcd ,//1.14,
109  double Med ,//1.14,
110  double Lambdad ,
111  double ec_refd ,
112  double p_refd ,
113  double kc_bd ,
114  double kc_dd ,
115  double ke_bd ,
116  double ke_dd ,
117  double hod ,
118  double Cmd ,
119  double Aod ,
120  double Fmaxd ,
121  double Cfd );
122  //double ed = 0.85,
123 
124  // Copy constructor
126 
127  //create a clone of itself
128  //EvolutionLaw_T *newObj();
129  EvolutionLaw_T *newObj();
130 
131  //double h( EPState *EPS, double norm_dQods); // Evaluating hardening function h
132  BJtensor h_t( EPState *EPS, PotentialSurface *PS); // Evaluating hardening function h
133 
134  //Overwrite updateEeDm
135  //Updating E, e and D value according to current mean effective stress p and elastic strain
136  int updateEeDm(EPState *EPS, double st_vol, double dLamda);
137 
138  //void UpdateVar( EPState *EPS, double dlamda ); // Evolve corresponding var linearly using de_eq_p
139  //Moved to CDriver.cpp
140 
141  void print();
142  //g++ complaining if don't have this line
143  virtual ~EvolutionLaw_NL_EijMD() {}
144 
145  private:
146  // some accessor functions
147 
148  // set D once current stress hits the y.s. or
149  // Set D value according to current EPState
150  //void setD(EPState *EPS);
151 
152  double geta() const;
153  double getMc() const;
154  double getMe() const;
155  double getLambda() const;
156  double getec_ref() const;
157  double getp_ref() const;
158 
159  double getkc_b() const;
160  double getkc_d() const;
161  double getke_b() const;
162  double getke_d() const;
163  double getho() const;
164  double getCm() const;
165  double geteo() const;
166  //double gete() const;
167 
168  //Dilatancy parameter
169  double getAo() const;
170  double getD() const;
171 
172  double getFmax() const;
173  const stresstensor &getF(void) const;
174  double getCf() const;
175 
176  // Interpolation function by Agyris
177  double g_A(double theta, double e);
178 
179  // Interpolation function by Willan-Warkne
180  double g_WW(double theta, double e);
181 
182  //================================================================================
183  // Overloaded Insertion Operator Zhaohui Added Aug. 13, 2000
184  // prints Linear EvolutionLaw's contents
185  //================================================================================
186  friend std::ostream& operator<< (std::ostream& os, const EvolutionLaw_NL_EijMD & MDEL);
187  //friend ostream& operator<< (ostream& os, const EvolutionLaw_NL_EijMD & MDEL);
188 
189 
190 };
191 } // end of XC namespace
192 
193 
194 #endif
195 
196 
197 
198 
Definition: BJtensor.h:110
??.
Definition: EL_NLEijMD.h:64
??.
Definition: EL_T.h:69
Definition: stresst.h:68
3
Definition: EPState.h:73
The goal is to create a platform for efficient and easy implemetation of any elasto-plastic constitut...
Definition: PS.h:71
================================================================================
Definition: ContinuaReprComponent.h:34