Seismo-VLAB  1.3
An Open-Source Finite Element Software for Meso-Scale Simulations
Elastic2DPlaneStress.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:
31 //------------------------------------------------------------------------------
32 
33 #ifndef _ELASTIC2DPLANESTRESS_HPP_
34 #define _ELASTIC2DPLANESTRESS_HPP_
35 
36 #include <string>
37 #include <memory>
38 #include <Eigen/Dense>
39 
40 #include "Material.hpp"
41 
50 
51  public:
57  Elastic2DPlaneStress(const double E, const double nu, const double rho = 0.0);
58 
61 
62  //Clone the 'Elastic2DPlaneStress' 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
Eigen::VectorXd GetTotalStress() const
Computes the material total stress.
Eigen::VectorXd Strain
Strain vector.
Definition: Elastic2DPlaneStress.hpp:154
This file contains the abstract "Material object" declarations, which computes the strain...
double GetEnergy() const
Access the material&#39;s energy at current strain.
double GetShearModulus() const
Access shear modulus.
double GetPoissonRatio() const
Returns the Poisson&#39;s ratio.
Elastic2DPlaneStress(const double E, const double nu, const double rho=0.0)
Creates a Elastic2DPlaneStress material to be specified at a Gauss-point in an Element.
~Elastic2DPlaneStress()
Destroys this Elastic2DPlaneStress material.
Eigen::VectorXd GetStrainRate() const
Returns the material strain rate.
Eigen::VectorXd GetStress() const
Returns the material stress.
Eigen::MatrixXd TangentStiffness
Tangent stiffness matrix.
Definition: Elastic2DPlaneStress.hpp:160
Eigen::MatrixXd GetInitialTangentStiffness() const
Returns the initial material stiffness.
Class for creating a biaxial isotropic linear elastic material in plane stress conditions for two-dim...
Definition: Elastic2DPlaneStress.hpp:49
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.
Eigen::MatrixXd GetDamping() const
Returns the material viscous damping.
double nu
Poisson&#39;s ratio.
Definition: Elastic2DPlaneStress.hpp:148
double GetBulkModulus() const
Access bulk modulus.
Virtual class for creating a material object.
Definition: Material.hpp:45
Eigen::VectorXd newStrain
Commited Strain vector.
Definition: Elastic2DPlaneStress.hpp:157
std::unique_ptr< Material > CopyMaterial()
Clone the selected material.
void CommitState()
Perform converged material state update.
double Rho
Material density.
Definition: Elastic2DPlaneStress.hpp:151
Eigen::VectorXd GetStrain() const
Returns the material strain.
double GetDensity() const
Access material density.
double E
Modulus of elasticity.
Definition: Elastic2DPlaneStress.hpp:145
double GetElasticityModulus() const
Access modulus of elasticity.
Eigen::MatrixXd GetTangentStiffness() const
Returns the material stiffness.
void ReverseState()
Reverse the material states to previous converged state.