Seismo-VLAB  1.3
An Open-Source Finite Element Software for Meso-Scale Simulations
Elastic1DLinear.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:
30 //------------------------------------------------------------------------------
31 
32 #ifndef _ELASTIC1DLINEAR_HPP_
33 #define _ELASTIC1DLINEAR_HPP_
34 
35 #include <string>
36 #include <memory>
37 #include <Eigen/Dense>
38 
39 #include "Material.hpp"
40 
48 class Elastic1DLinear : public Material{
49 
50  public:
56  Elastic1DLinear(const double E, const double nu = 0, const double rho = 0.0);
57 
60 
61  //Clone the 'Elastic1DLinear' material.
64  std::unique_ptr<Material> CopyMaterial();
65 
69  double GetDensity() const;
70 
74  double GetPoissonRatio() const;
75 
78  double GetBulkModulus() const;
79 
82  double GetShearModulus() const;
83 
87  double GetElasticityModulus() const;
88 
91  double GetEnergy() const;
92 
95  Eigen::MatrixXd GetDamping() const;
96 
101  Eigen::VectorXd GetStrain() const;
102 
107  Eigen::VectorXd GetStress() const;
108 
112  Eigen::VectorXd GetStrainRate() const;
113 
118  Eigen::VectorXd GetTotalStress() const;
119 
124  Eigen::MatrixXd GetTangentStiffness() const;
125 
129  Eigen::MatrixXd GetInitialTangentStiffness() const;
130 
133  void CommitState();
134 
137  void ReverseState();
138 
141  void InitialState();
142 
147  void UpdateState(const Eigen::VectorXd strain, const unsigned int cond);
148 
149  private:
151  double E;
152 
154  double nu;
155 
157  double Rho;
158 
160  Eigen::VectorXd Strain;
161 
163  Eigen::VectorXd newStrain;
164 
166  Eigen::MatrixXd TangentStiffness;
167 };
168 
169 #endif
void CommitState()
Perform converged material state update.
double GetElasticityModulus() const
Access modulus of elasticity.
double nu
Poisson&#39;s ratio.
Definition: Elastic1DLinear.hpp:154
double GetPoissonRatio() const
Returns the Poisson&#39;s ratio.
Class for creating an uniaxial isotropic linear elastic material for one-dimensional elements...
Definition: Elastic1DLinear.hpp:48
std::unique_ptr< Material > CopyMaterial()
double Rho
Material density.
Definition: Elastic1DLinear.hpp:157
This file contains the abstract "Material object" declarations, which computes the strain...
double GetBulkModulus() const
Access bulk modulus.
Eigen::VectorXd GetStrainRate() const
Returns the material strain rate.
void ReverseState()
Reverse the material states to previous converged state.
double GetEnergy() const
Access the material&#39;s energy at current strain.
Eigen::MatrixXd GetInitialTangentStiffness() const
Returns the initial material stiffness.
void InitialState()
Brings the material states to its initial state in the element.
Eigen::VectorXd newStrain
Commited Strain vector.
Definition: Elastic1DLinear.hpp:163
Eigen::VectorXd Strain
Strain vector.
Definition: Elastic1DLinear.hpp:160
Eigen::MatrixXd GetTangentStiffness() const
Returns the material stiffness.
void UpdateState(const Eigen::VectorXd strain, const unsigned int cond)
Update the material state for this iteration.
double GetDensity() const
Access material density.
~Elastic1DLinear()
Destroys this Elastic1DLinear material.
Eigen::MatrixXd TangentStiffness
Tangent stiffness matrix.
Definition: Elastic1DLinear.hpp:166
Virtual class for creating a material object.
Definition: Material.hpp:45
Eigen::VectorXd GetStress() const
Returns the material stress.
Eigen::VectorXd GetTotalStress() const
Computes the material total stress.
double E
Modulus of elasticity.
Definition: Elastic1DLinear.hpp:151
Elastic1DLinear(const double E, const double nu=0, const double rho=0.0)
Creates a Elastic1DLinear material to be specified at a Gauss-point in an Element.
double GetShearModulus() const
Access shear modulus.
Eigen::VectorXd GetStrain() const
Returns the material strain.
Eigen::MatrixXd GetDamping() const
Returns the material viscous damping.