Seismo-VLAB  1.3
An Open-Source Finite Element Software for Meso-Scale Simulations
Plastic1DGap.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:
30 //------------------------------------------------------------------------------
31 
32 #ifndef _PLASTIC1DGAP_HPP_
33 #define _PLASTIC1DGAP_HPP_
34 
35 #include "Material.hpp"
36 
44 class Plastic1DGap : public Material {
45 
46  public:
54  Plastic1DGap(double E, double fy, double gap, double eta, bool behavior=false);
55 
57  ~Plastic1DGap();
58 
59  //Clone the 'Plastic1DGap' material.
62  std::unique_ptr<Material> CopyMaterial();
63 
66  double GetDensity() const;
67 
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 fy;
151 
153  double Gap;
154 
156  double Ratio;
157 
160 
163 
165  bool Behavior;
166 
167  //The strain variable
168  double oldStrain;
169 
170  //The commited strain variable
171  double newStrain;
172 };
173 
174 #endif
double GetEnergy() const
Access the material&#39;s energy at current strain.
Eigen::VectorXd GetStress() const
Returns the material stress.
~Plastic1DGap()
Destroys this Plastic1DGap material.
Eigen::VectorXd GetTotalStress() const
Computes the material total stress.
double GetBulkModulus() const
Access bulk modulus.
void CommitState()
Perform converged material state update.
Eigen::VectorXd GetStrain() const
Returns the material strain.
Eigen::MatrixXd GetDamping() const
Returns the material viscous damping.
This file contains the abstract "Material object" declarations, which computes the strain...
double GetDensity() const
Access material density.
void UpdateState(const Eigen::VectorXd strain, const unsigned int cond=0)
Update the material state for this iteration.
void ReverseState()
Reverse the material states to previous converged state.
double GetShearModulus() const
Returns linear shear modulus.
void InitialState()
Brings the material states to its initial state in the element.
double minYieldStrain
The minimum negative strain.
Definition: Plastic1DGap.hpp:162
Eigen::MatrixXd GetInitialTangentStiffness() const
Returns the initial material stiffness.
double Ratio
The post-yield stiffness ratio.
Definition: Plastic1DGap.hpp:156
double oldStrain
Definition: Plastic1DGap.hpp:168
double GetPoissonRatio() const
Returns the Poisson&#39;s ratio.
std::unique_ptr< Material > CopyMaterial()
Virtual class for creating a material object.
Definition: Material.hpp:45
double Gap
The separation from which the material start reacting.
Definition: Plastic1DGap.hpp:153
Eigen::VectorXd GetStrainRate() const
Returns the material strain rate.
Plastic1DGap(double E, double fy, double gap, double eta, bool behavior=false)
Creates a Plastic1DGap material to be specified at a Gauss-point in an Element.
double fy
The yield stress.
Definition: Plastic1DGap.hpp:150
bool Behavior
The material behavior (true: Tension, false: Compression)
Definition: Plastic1DGap.hpp:165
double GetElasticityModulus() const
Access modulus of elasticity.
Eigen::MatrixXd GetTangentStiffness() const
Returns the material stiffness.
double maxYieldStrain
The maximum positive strain.
Definition: Plastic1DGap.hpp:159
double newStrain
Definition: Plastic1DGap.hpp:171
Class for creating an uniaxial plastic gap material compatible with zero-length element.
Definition: Plastic1DGap.hpp:44
double E
The elastic moduli.
Definition: Plastic1DGap.hpp:147