Seismo-VLAB  1.3
An Open-Source Finite Element Software for Meso-Scale Simulations
PlasticPlaneStrainJ2.hpp
Go to the documentation of this file.
1 //==============================================================================
2 //
3 // Seismo Virtual Laboratory
4 // Module for Serial and Parallel Analysis of seismic
5 // wave propagation and soil-structure interaction simulation
6 // Copyright (C) 2018-2021, The California Institute of Technology
7 // All Rights Reserved.
8 //
9 // Commercial use of this program without express permission of the California
10 // Institute of Technology, is strictly prohibited. See file "COPYRIGHT" in
11 // main directory for information on usage and redistribution, and for a
12 // DISCLAIMER OF ALL WARRANTIES.
13 //
14 //==============================================================================
15 //
16 // Written by:
17 // Danilo S. Kusanovic (dkusanov@caltech.edu)
18 // Elnaz E. Seylabi (elnaze@unr.edu)
19 //
20 // Supervised by:
21 // Domniki M. Asimaki (domniki@caltech.edu)
22 //
23 // References :
24 // [1] J.C. Simo, T.J.R. Hughes, Computational Inelasticity, Springer, 1997, pp.124
25 // [2] R.I. Borja, Plasticity Modeling & Computation, Springer, 2013, pp. 47
26 //
27 // Description:
30 //------------------------------------------------------------------------------
31 
32 #ifndef _PLASTICPLANESTRAINJ2_HPP_
33 #define _PLASTICPLANESTRAINJ2_HPP_
34 
35 #include <string>
36 #include <memory>
37 #include <Eigen/Dense>
38 
39 #include "Material.hpp"
40 
49 
50  public:
59  PlasticPlaneStrainJ2(const double K, const double G, const double rho, const double Hbar, const double beta, const double SigmaY);
60 
63 
64  //Clone the 'PlasticPlaneStrainJ2' material.
67  std::unique_ptr<Material> CopyMaterial();
68 
72  double GetDensity() const;
73 
76  double GetPoissonRatio() const;
77 
81  double GetBulkModulus() const;
82 
86  double GetShearModulus() const;
87 
90  double GetElasticityModulus() const;
91 
94  double GetEnergy() const;
95 
98  Eigen::MatrixXd GetDamping() const;
99 
104  Eigen::VectorXd GetStrain() const;
105 
110  Eigen::VectorXd GetStress() const;
111 
115  Eigen::VectorXd GetStrainRate() const;
116 
120  Eigen::VectorXd GetTotalStress() const;
121 
126  Eigen::MatrixXd GetTangentStiffness() const;
127 
131  Eigen::MatrixXd GetInitialTangentStiffness() const;
132 
135  void CommitState();
136 
139  void ReverseState();
140 
143  void InitialState();
144 
149  void UpdateState(const Eigen::VectorXd strain, const unsigned int cond);
150 
151  protected:
154  Eigen::VectorXd ComputeIdentityVector() const;
155 
158  Eigen::MatrixXd ComputeDeviatoricTensor() const;
159 
162  Eigen::MatrixXd ComputeIdentityTensor() const;
163 
166  Eigen::MatrixXd ComputeIdentityOperator() const;
167 
171  double ComputeTensorTrace(const Eigen::VectorXd &T);
172 
176  double ComputeTensorNorm(const Eigen::VectorXd &T);
177 
178  private:
180  double K;
181 
183  double G;
184 
186  double Rho;
187 
189  double H;
190 
192  double beta;
193 
195  double SigmaY;
196 
198  double alpha;
199 
201  double alpha_n;
202 
204  Eigen::VectorXd Strain;
205 
207  Eigen::VectorXd Stress;
208 
210  Eigen::VectorXd BackStress;
211 
213  Eigen::VectorXd PlasticStrain;
214 
216  Eigen::MatrixXd TangentStiffness;
217 
219  Eigen::VectorXd BackStress_n;
220 
222  Eigen::VectorXd PlasticStrain_n;
223 
225  Eigen::VectorXd Strain_n;
226 
228  Eigen::VectorXd Stress_n;
229 
231  Eigen::MatrixXd TangentStiffness_n;
232 };
233 
234 #endif
Eigen::VectorXd GetTotalStress() const
Computes the material total stress.
double GetElasticityModulus() const
Access modulus of elasticity.
Eigen::VectorXd PlasticStrain
Trial Plastic strain.
Definition: PlasticPlaneStrainJ2.hpp:213
Eigen::VectorXd BackStress
Trial Back stress.
Definition: PlasticPlaneStrainJ2.hpp:210
PlasticPlaneStrainJ2(const double K, const double G, const double rho, const double Hbar, const double beta, const double SigmaY)
Creates a PlasticPlaneStrainJ2 material to be specified at a Gauss-point in an Element.
double GetShearModulus() const
Access shear modulus.
Eigen::VectorXd PlasticStrain_n
Plastic strain at time n.
Definition: PlasticPlaneStrainJ2.hpp:222
double G
Shear modulus.
Definition: PlasticPlaneStrainJ2.hpp:183
double beta
The linear hardening parameter.
Definition: PlasticPlaneStrainJ2.hpp:192
double K
Bulk modulus.
Definition: PlasticPlaneStrainJ2.hpp:180
Eigen::MatrixXd ComputeIdentityTensor() const
Constructs fourth-rank identity tensor.
double ComputeTensorNorm(const Eigen::VectorXd &T)
Computes the norm of a tensor of second-rank.
Eigen::MatrixXd TangentStiffness
Trial Consistent tangent stiffness.
Definition: PlasticPlaneStrainJ2.hpp:216
Eigen::VectorXd ComputeIdentityVector() const
Constructs a Second Order Identity Tensor.
This file contains the abstract "Material object" declarations, which computes the strain...
double ComputeTensorTrace(const Eigen::VectorXd &T)
Computes the trace of a tensor of second-rank.
Eigen::MatrixXd ComputeDeviatoricTensor() const
Constructs deviatoric tensor.
double SigmaY
Yield stress.
Definition: PlasticPlaneStrainJ2.hpp:195
double GetEnergy() const
Access the material&#39;s energy at current strain.
Eigen::VectorXd Stress_n
Stress vector at time n.
Definition: PlasticPlaneStrainJ2.hpp:228
Eigen::MatrixXd GetInitialTangentStiffness() const
Returns the initial material stiffness.
Class for creating a biaxial plastic J2 material for two-dimensional elements.
Definition: PlasticPlaneStrainJ2.hpp:48
Eigen::VectorXd Strain_n
Strain at time n.
Definition: PlasticPlaneStrainJ2.hpp:225
Eigen::MatrixXd GetDamping() const
Returns the material viscous damping.
double GetPoissonRatio() const
Returns the Poisson&#39;s ratio.
double GetDensity() const
Access material density.
double alpha
Internal hardening variable.
Definition: PlasticPlaneStrainJ2.hpp:198
Eigen::VectorXd BackStress_n
Back stress at time n.
Definition: PlasticPlaneStrainJ2.hpp:219
double alpha_n
Internal hardening variable at time n.
Definition: PlasticPlaneStrainJ2.hpp:201
Eigen::VectorXd GetStrainRate() const
Returns the material strain rate.
Eigen::MatrixXd ComputeIdentityOperator() const
Constructs fourth-rank symmetric identity operator.
Eigen::VectorXd Strain
Trial Strain vector.
Definition: PlasticPlaneStrainJ2.hpp:204
Virtual class for creating a material object.
Definition: Material.hpp:45
~PlasticPlaneStrainJ2()
Destroys this PlasticPlaneStrainJ2 material.
Eigen::MatrixXd TangentStiffness_n
Consistent tangent stiffness at time n.
Definition: PlasticPlaneStrainJ2.hpp:231
Eigen::MatrixXd GetTangentStiffness() const
Returns the material stiffness.
Eigen::VectorXd GetStrain() const
Returns the material strain.
Eigen::VectorXd GetStress() const
Returns the material stress.
double GetBulkModulus() const
Access bulk modulus.
std::unique_ptr< Material > CopyMaterial()
double H
Kinematic hardening modulus.
Definition: PlasticPlaneStrainJ2.hpp:189
void ReverseState()
Reverse the material states to previous converged state.
Eigen::VectorXd Stress
Trial Stress vector.
Definition: PlasticPlaneStrainJ2.hpp:207
void CommitState()
Perform converged material state update.
double Rho
Material density.
Definition: PlasticPlaneStrainJ2.hpp:186
void InitialState()
Brings the material states to its initial state in the element.
void UpdateState(const Eigen::VectorXd strain, const unsigned int cond)
Update the material state for this iteration.