Seismo-VLAB  1.3
An Open-Source Finite Element Software for Meso-Scale Simulations
Elastic2DPlaneStrain.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] Finite Element Procedures, Bathe, K.J., Chapter 4: pages 194, Table 4.3,
25 // Prentice-Hall, 1996.
26 //
27 // Description:
29 //defines a biaxial isotropic linear elastic material in plane strain conditions
31 //------------------------------------------------------------------------------
32 
33 #ifndef _ELASTIC2DPLANESTRAIN_HPP_
34 #define _ELASTIC2DPLANESTRAIN_HPP_
35 
36 #include <string>
37 #include <memory>
38 #include <Eigen/Dense>
39 
40 #include "Material.hpp"
41 
50 
51  public:
57  Elastic2DPlaneStrain(const double E, const double nu, const double rho = 0.0);
58 
61 
62  //Clone the 'Elastic2DPlaneStrain' material.
63  std::unique_ptr<Material> CopyMaterial();
64 
68  double GetDensity() const;
69 
73  double GetPoissonRatio() const;
74 
77  double GetBulkModulus() const;
78 
81  double GetShearModulus() const;
82 
86  double GetElasticityModulus() const;
87 
90  double GetEnergy() const;
91 
94  Eigen::MatrixXd GetDamping() const;
95 
99  Eigen::VectorXd GetStrain() const;
100 
104  Eigen::VectorXd GetStress() const;
105 
109  Eigen::VectorXd GetStrainRate() const;
110 
113  Eigen::VectorXd GetTotalStress() const;
114 
118  Eigen::MatrixXd GetTangentStiffness() const;
119 
123  Eigen::MatrixXd GetInitialTangentStiffness() const;
124 
127  void CommitState();
128 
131  void ReverseState();
132 
135  void InitialState();
136 
141  void UpdateState(const Eigen::VectorXd strain, const unsigned int cond);
142 
143  private:
145  double E;
146 
148  double nu;
149 
151  double Rho;
152 
154  Eigen::VectorXd Strain;
155 
157  Eigen::VectorXd newStrain;
158 
160  Eigen::MatrixXd TangentStiffness;
161 };
162 
163 #endif
double nu
Poisson&#39;s ratio.
Definition: Elastic2DPlaneStrain.hpp:148
void InitialState()
Brings the material states to its initial state in the element.
Eigen::MatrixXd GetTangentStiffness() const
Returns the material stiffness.
Eigen::VectorXd GetStrain() const
Returns the material strain.
std::unique_ptr< Material > CopyMaterial()
Clone the selected material.
double GetPoissonRatio() const
Returns the Poisson&#39;s ratio.
This file contains the abstract "Material object" declarations, which computes the strain...
Eigen::VectorXd GetTotalStress() const
Computes the material total stress.
Eigen::MatrixXd GetInitialTangentStiffness() const
Returns the initial material stiffness.
Eigen::MatrixXd GetDamping() const
Returns the material viscous damping.
Eigen::VectorXd Strain
Strain vector.
Definition: Elastic2DPlaneStrain.hpp:154
Elastic2DPlaneStrain(const double E, const double nu, const double rho=0.0)
Creates a Elastic2DPlaneStrain material to be specified at a Gauss-point in an Element.
~Elastic2DPlaneStrain()
Destroys this Elastic2DPlaneStrain material.
Eigen::VectorXd GetStrainRate() const
Returns the material strain rate.
double Rho
Material density.
Definition: Elastic2DPlaneStrain.hpp:151
double GetElasticityModulus() const
Access modulus of elasticity.
double GetDensity() const
Access material density.
Class for creating a biaxial isotropic linear elastic material in plane strain conditions for two-dim...
Definition: Elastic2DPlaneStrain.hpp:49
Eigen::MatrixXd TangentStiffness
Tangent stiffness matrix.
Definition: Elastic2DPlaneStrain.hpp:160
Eigen::VectorXd GetStress() const
Returns the material stress.
Eigen::VectorXd newStrain
Commited Strain vector.
Definition: Elastic2DPlaneStrain.hpp:157
void CommitState()
Perform converged material state update.
double GetBulkModulus() const
Access bulk modulus.
Virtual class for creating a material object.
Definition: Material.hpp:45
void UpdateState(const Eigen::VectorXd strain, const unsigned int cond)
Update the material state for this iteration.
double GetShearModulus() const
Access shear modulus.
void ReverseState()
Reverse the material states to previous converged state.
double GetEnergy() const
Access the material&#39;s energy at current strain.
double E
Modulus of elasticity.
Definition: Elastic2DPlaneStrain.hpp:145