Seismo-VLAB  1.3
An Open-Source Finite Element Software for Meso-Scale Simulations
Elastic1DFiber.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] Bathe, K. Jurgen, "Finite Element Procedures", Chapter 4: pages 194,
25 // Table 4.3, Prentice-Hall, 1996.
26 //
27 // Description:
31 //------------------------------------------------------------------------------
32 
33 #ifndef _ELASTIC1DFIBER_HPP_
34 #define _ELASTIC1DFIBER_HPP_
35 
36 #include "Material.hpp"
37 
45 class Elastic1DFiber : public Material {
46 
47  public:
52  Elastic1DFiber(const double E, const double nu, const double rho = 0.0);
53 
56 
57  //Clone the 'Elastic1DFiber' material.
60  std::unique_ptr<Material> CopyMaterial();
61 
65  double GetDensity() const;
66 
70  double GetPoissonRatio() const;
71 
74  double GetBulkModulus() const;
75 
78  double GetShearModulus() const;
79 
83  double GetElasticityModulus() const;
84 
87  double GetEnergy() const;
88 
91  Eigen::MatrixXd GetDamping() const;
92 
97  Eigen::VectorXd GetStrain() const;
98 
103  Eigen::VectorXd GetStress() const;
104 
108  Eigen::VectorXd GetStrainRate() const;
109 
114  Eigen::VectorXd GetTotalStress() const;
115 
120  Eigen::MatrixXd GetTangentStiffness() const;
121 
125  Eigen::MatrixXd GetInitialTangentStiffness() const;
126 
129  void CommitState();
130 
133  void ReverseState();
134 
137  void InitialState();
138 
143  void UpdateState(const Eigen::VectorXd strain, const unsigned int cond=0);
144 
145  private:
147  double E;
148 
150  double nu;
151 
153  double Rho;
154 
156  Eigen::VectorXd oldStrain;
157 
159  Eigen::VectorXd newStrain;
160 };
161 
162 #endif
void ReverseState()
Reverse the material states to previous converged state.
double GetPoissonRatio() const
Returns the Poisson&#39;s ratio.
void UpdateState(const Eigen::VectorXd strain, const unsigned int cond=0)
Update the material state for this iteration.
double GetBulkModulus() const
Access bulk modulus.
double GetShearModulus() const
Returns linear shear modulus.
~Elastic1DFiber()
Destroys this Elastic1DFiber material.
double Rho
Material density.
Definition: Elastic1DFiber.hpp:153
Eigen::VectorXd oldStrain
Updated Strain vector.
Definition: Elastic1DFiber.hpp:156
Class for creating an uniaxial linear elastic material compatible with fiber section.
Definition: Elastic1DFiber.hpp:45
This file contains the abstract "Material object" declarations, which computes the strain...
Eigen::VectorXd GetStress() const
Returns the material stress.
void CommitState()
Perform converged material state update.
std::unique_ptr< Material > CopyMaterial()
double E
Modulus of elasticity.
Definition: Elastic1DFiber.hpp:147
double nu
Modulus of elasticity.
Definition: Elastic1DFiber.hpp:150
Eigen::VectorXd GetTotalStress() const
Computes the material total stress.
double GetElasticityModulus() const
Access modulus of elasticity.
Eigen::VectorXd GetStrain() const
Returns the material strain.
Eigen::MatrixXd GetInitialTangentStiffness() const
Returns the initial material stiffness.
Virtual class for creating a material object.
Definition: Material.hpp:45
Eigen::VectorXd newStrain
Commited Strain vector.
Definition: Elastic1DFiber.hpp:159
Elastic1DFiber(const double E, const double nu, const double rho=0.0)
Creates a Elastic1DFiber material to be specified at a Gauss-point in an Element. ...
double GetDensity() const
Access material density.
double GetEnergy() const
Access the material&#39;s energy at current strain.
Eigen::VectorXd GetStrainRate() const
Returns the material strain rate.
Eigen::MatrixXd GetTangentStiffness() const
Returns the material stiffness.
Eigen::MatrixXd GetDamping() const
Returns the material viscous damping.
void InitialState()
Brings the material states to its initial state in the element.