Seismo-VLAB  1.3
An Open-Source Finite Element Software for Meso-Scale Simulations
Material.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 _MATERIAL_HPP_
32 #define _MATERIAL_HPP_
33 
34 #include <string>
35 #include <memory>
36 #include <Eigen/Dense>
37 
45 class Material{
46 
47  public:
52  Material(std::string name, bool model);
53 
55  virtual ~Material() = 0;
56 
60  virtual std::unique_ptr<Material> CopyMaterial() = 0;
61 
64  virtual double GetDensity() const = 0;
65 
68  virtual double GetPoissonRatio() const = 0;
69 
72  virtual double GetBulkModulus() const = 0;
73 
76  virtual double GetShearModulus() const = 0;
77 
80  virtual double GetElasticityModulus() const = 0;
81 
84  virtual double GetEnergy() const = 0;
85 
88  virtual Eigen::MatrixXd GetDamping() const = 0;
89 
92  virtual Eigen::VectorXd GetStrain() const = 0;
93 
96  virtual Eigen::VectorXd GetStress() const = 0;
97 
100  virtual Eigen::VectorXd GetStrainRate() const = 0;
101 
104  virtual Eigen::VectorXd GetTotalStress() const = 0;
105 
108  virtual Eigen::MatrixXd GetTangentStiffness() const = 0;
109 
113  virtual Eigen::MatrixXd GetInitialTangentStiffness() const = 0;
114 
117  virtual void CommitState() = 0;
118 
121  virtual void ReverseState() = 0;
122 
125  virtual void InitialState() = 0;
126 
131  virtual void UpdateState(const Eigen::VectorXd strain, const unsigned int cond=0) = 0;
132 
136  std::string GetName();
137 
141  bool IsViscous();
142 
143  private:
145  std::string Name;
146 
148  bool isViscous;
149 };
150 
151 #endif
virtual double GetPoissonRatio() const =0
Returns the Poisson&#39;s ratio.
std::string Name
Material Name.
Definition: Material.hpp:145
bool isViscous
Material Stress Model.
Definition: Material.hpp:148
virtual Eigen::MatrixXd GetDamping() const =0
Returns the material viscous damping.
virtual double GetDensity() const =0
Access material density.
virtual ~Material()=0
Destroys this Material object.
virtual void UpdateState(const Eigen::VectorXd strain, const unsigned int cond=0)=0
Update the material state for this iteration.
bool IsViscous()
Gets material stress model.
virtual Eigen::VectorXd GetStress() const =0
Computes the material stress in Voight notation.
virtual double GetElasticityModulus() const =0
Access modulus of elasticity.
Material(std::string name, bool model)
Creates a Material to be specified at a Gauss-point in an Element.
virtual double GetShearModulus() const =0
Access shear modulus.
virtual void InitialState()=0
Brings the material states to its initial state in the element.
virtual Eigen::MatrixXd GetInitialTangentStiffness() const =0
Computes the initial material stiffness in Voight notation.
std::string GetName()
Gets material information.
virtual Eigen::VectorXd GetStrainRate() const =0
Computes the material strain rate in Voight notation.
virtual Eigen::VectorXd GetTotalStress() const =0
Computes the material total stress in Voight notation.
virtual double GetEnergy() const =0
Computes the material energy for a given strain.
Virtual class for creating a material object.
Definition: Material.hpp:45
virtual double GetBulkModulus() const =0
Access bulk modulus.
virtual Eigen::VectorXd GetStrain() const =0
Computes the material strain in Voight notation.
virtual Eigen::MatrixXd GetTangentStiffness() const =0
Computes the material stiffness in Voight notation.
virtual void CommitState()=0
Perform converged material state update.
virtual void ReverseState()=0
Reverse the material states to previous converged state.
virtual std::unique_ptr< Material > CopyMaterial()=0
Clone the selected material.