Seismo-VLAB  1.3
An Open-Source Finite Element Software for Meso-Scale Simulations
Viscous1DLinear.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]
25 //
26 // Description:
29 //------------------------------------------------------------------------------
30 
31 #ifndef _VISCOUS1DLINEAR_HPP_
32 #define _VISCOUS1DLINEAR_HPP_
33 
34 #include <string>
35 #include <memory>
36 #include <Eigen/Dense>
37 
38 #include "Material.hpp"
39 
47 class Viscous1DLinear : public Material{
48 
49  public:
53  Viscous1DLinear(const double eta);
54 
57 
58  //Clone the 'Viscous1DLinear' material.
61  std::unique_ptr<Material> CopyMaterial();
62 
65  double GetDensity() const;
66 
69  double GetPoissonRatio() const;
70 
73  double GetBulkModulus() const;
74 
77  double GetShearModulus() const;
78 
81  double GetElasticityModulus() const;
82 
85  double GetEnergy() const;
86 
90  Eigen::MatrixXd GetDamping() const;
91 
95  Eigen::VectorXd GetStrain() const;
96 
100  Eigen::VectorXd GetStress() const;
101 
106  Eigen::VectorXd GetStrainRate() const;
107 
111  Eigen::VectorXd GetTotalStress() const;
112 
116  Eigen::MatrixXd GetTangentStiffness() const;
117 
121  Eigen::MatrixXd GetInitialTangentStiffness() const;
122 
125  void CommitState();
126 
129  void ReverseState();
130 
133  void InitialState();
134 
139  void UpdateState(const Eigen::VectorXd strain, const unsigned int cond);
140 
141  private:
143  double eta;
144 
146  Eigen::VectorXd StrainRate;
147 
149  Eigen::VectorXd Stress;
150 
152  Eigen::MatrixXd Damping;
153 };
154 
155 #endif
Eigen::MatrixXd Damping
The material damping matrix.
Definition: Viscous1DLinear.hpp:152
double GetShearModulus() const
Access shear modulus.
Eigen::MatrixXd GetTangentStiffness() const
Returns the material stiffness.
void ReverseState()
Reverse the material states to previous converged state.
double GetEnergy() const
Access the material&#39;s energy at current strain.
~Viscous1DLinear()
Destroys this Viscous1DLinear material.
void UpdateState(const Eigen::VectorXd strain, const unsigned int cond)
Update the material state for this iteration.
Eigen::VectorXd GetStrain() const
Returns the material strain.
Eigen::VectorXd GetStress() const
Returns the material stress.
This file contains the abstract "Material object" declarations, which computes the strain...
Eigen::VectorXd GetStrainRate() const
Returns the material strain rate.
double eta
The material viscosity.
Definition: Viscous1DLinear.hpp:143
Eigen::VectorXd Stress
The material stress vector.
Definition: Viscous1DLinear.hpp:149
Eigen::MatrixXd GetDamping() const
Returns the material viscous damping.
double GetDensity() const
Access material density.
double GetPoissonRatio() const
Returns the Poisson&#39;s ratio.
void InitialState()
Brings the material states to its initial state in the element.
Eigen::VectorXd StrainRate
The material strain-rate vector.
Definition: Viscous1DLinear.hpp:146
Class for creating an uniaxial viscous material in for one-dimensional elements.
Definition: Viscous1DLinear.hpp:47
Eigen::MatrixXd GetInitialTangentStiffness() const
Returns the initial material stiffness.
void CommitState()
Perform converged material state update.
Viscous1DLinear(const double eta)
Creates a Viscous1DLinear material to be specified at a Gauss-point in an Element.
Virtual class for creating a material object.
Definition: Material.hpp:45
std::unique_ptr< Material > CopyMaterial()
double GetBulkModulus() const
Access bulk modulus.
Eigen::VectorXd GetTotalStress() const
Computes the material total stress.
double GetElasticityModulus() const
Access modulus of elasticity.