Seismo-VLAB  1.3
An Open-Source Finite Element Software for Meso-Scale Simulations
Concrete1DFiber.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] Mohd Hisham Mohd Yassin, "Nonlinear Analysis of Prestressed Concrete
25 // Structures under Monotonic and Cycling Loads", PhD dissertation,
26 // University of California, Berkeley, 1994.
27 //
28 // Description:
32 //------------------------------------------------------------------------------
33 
34 #ifndef _CONCRETE1DFIBER_HPP_
35 #define _CONCRETE1DFIBER_HPP_
36 
37 #include "Material.hpp"
38 
46 class Concrete1DFiber : public Material {
47 
48  public:
60  Concrete1DFiber(double fc, double ecc, double fcu, double ecu, double ratio, double ft=0.0, double Et=0.0, double nu= 0.25, double rho=0.0);
61 
64 
65  //Clone the 'Concrete1DFiber' material.
68  std::unique_ptr<Material> CopyMaterial();
69 
73  double GetDensity() const;
74 
78  double GetPoissonRatio() const;
79 
82  double GetBulkModulus() const;
83 
86  double GetShearModulus() const;
87 
91  double GetElasticityModulus() const;
92 
95  double GetEnergy() const;
96 
99  Eigen::MatrixXd GetDamping() const;
100 
105  Eigen::VectorXd GetStrain() const;
106 
111  Eigen::VectorXd GetStress() const;
112 
116  Eigen::VectorXd GetStrainRate() const;
117 
122  Eigen::VectorXd GetTotalStress() const;
123 
128  Eigen::MatrixXd GetTangentStiffness() const;
129 
133  Eigen::MatrixXd GetInitialTangentStiffness() const;
134 
137  void CommitState();
138 
141  void ReverseState();
142 
145  void InitialState();
146 
151  void UpdateState(const Eigen::VectorXd strain, const unsigned int cond=0);
152 
153  private:
154  //Concrete properties:
155  double nu;
156  double Et;
157  double fc;
158  double ft;
159  double fcu;
160  double ecu;
161  double ecc;
162  double Rho;
163  double lambda;
164 
165  //Concrete Commited history variables:
166  double newStrain;
167  double newStress;
169  double newMinStrain;
170  double newMaxStrain;
171 
172  //Concrete Updated history variables:
173  double oldStrain;
174  double oldStress;
176  double oldMinStrain;
177  double oldMaxStrain;
178 
179  //Envelope stress functions:
180  void Tensile_Envelope(double eccn, double &fccn, double &Etn);
181  void Compressive_Envelope(double eccn, double &fccn, double &Ecn);
182 };
183 
184 #endif
double newMinStrain
Definition: Concrete1DFiber.hpp:169
double newStrain
Definition: Concrete1DFiber.hpp:166
void ReverseState()
Reverse the material states to previous converged state.
std::unique_ptr< Material > CopyMaterial()
double ecu
Definition: Concrete1DFiber.hpp:160
This file contains the abstract "Material object" declarations, which computes the strain...
Eigen::MatrixXd GetTangentStiffness() const
Returns the material stiffness.
Eigen::VectorXd GetStrainRate() const
Returns the material strain rate.
double lambda
Definition: Concrete1DFiber.hpp:163
void Tensile_Envelope(double eccn, double &fccn, double &Etn)
double GetElasticityModulus() const
Access modulus of elasticity.
double newMaxStrain
Definition: Concrete1DFiber.hpp:170
double fcu
Definition: Concrete1DFiber.hpp:159
void Compressive_Envelope(double eccn, double &fccn, double &Ecn)
Eigen::VectorXd GetStress() const
Returns the material stress.
double GetBulkModulus() const
Access bulk modulus.
Eigen::VectorXd GetStrain() const
Returns the material strain.
void CommitState()
Perform converged material state update.
double oldMaxStrain
Definition: Concrete1DFiber.hpp:177
double newTangentStiffness
Definition: Concrete1DFiber.hpp:168
double GetDensity() const
Access material density.
Eigen::VectorXd GetTotalStress() const
Computes the material total stress.
double GetPoissonRatio() const
Returns the Poisson&#39;s ratio.
double newStress
Definition: Concrete1DFiber.hpp:167
Eigen::MatrixXd GetDamping() const
Returns the material viscous damping.
double GetEnergy() const
Access the material&#39;s energy at current strain.
double fc
Definition: Concrete1DFiber.hpp:157
double GetShearModulus() const
Returns linear shear modulus.
double nu
Definition: Concrete1DFiber.hpp:155
Virtual class for creating a material object.
Definition: Material.hpp:45
double oldMinStrain
Definition: Concrete1DFiber.hpp:176
double oldStrain
Definition: Concrete1DFiber.hpp:173
Concrete1DFiber(double fc, double ecc, double fcu, double ecu, double ratio, double ft=0.0, double Et=0.0, double nu=0.25, double rho=0.0)
Creates a Concrete1DFiber material to be specified at a Gauss-point in an Element.
Eigen::MatrixXd GetInitialTangentStiffness() const
Returns the initial material stiffness.
double oldStress
Definition: Concrete1DFiber.hpp:174
Class for creating an uniaxial concrete material compatible with fiber section.
Definition: Concrete1DFiber.hpp:46
double oldTangentStiffness
Definition: Concrete1DFiber.hpp:175
void InitialState()
Brings the material states to its initial state in the element.
void UpdateState(const Eigen::VectorXd strain, const unsigned int cond=0)
Update the material state for this iteration.
double Et
Definition: Concrete1DFiber.hpp:156
double ecc
Definition: Concrete1DFiber.hpp:161
double Rho
Definition: Concrete1DFiber.hpp:162
double ft
Definition: Concrete1DFiber.hpp:158
~Concrete1DFiber()
Destroys this Concrete1DFiber material.