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