Seismo-VLAB  1.3
An Open-Source Finite Element Software for Meso-Scale Simulations
Plastic3DBA Class Reference

Class for creating an triaxial plastic bounding surface material for three-dimensional elements. More...

#include <Plastic3DBA.hpp>

Inheritance diagram for Plastic3DBA:
Collaboration diagram for Plastic3DBA:

Public Member Functions

 Plastic3DBA (const double K, const double G, const double rho, const double H0, const double h, const double m, const double Su, const double beta)
 Creates a Plastic3DBA material to be specified at a Gauss-point in an Element. More...
 
 ~Plastic3DBA ()
 Destroys this Plastic3DBA material. More...
 
std::unique_ptr< MaterialCopyMaterial ()
 
double GetDensity () const
 Access material density. More...
 
double GetPoissonRatio () const
 Returns the Poisson's ratio. More...
 
double GetBulkModulus () const
 Access bulk modulus. More...
 
double GetShearModulus () const
 Access shear modulus. More...
 
double GetElasticityModulus () const
 Access modulus of elasticity. More...
 
double GetEnergy () const
 Access the material's energy at current strain. More...
 
Eigen::MatrixXd GetDamping () const
 Returns the material viscous damping. More...
 
Eigen::VectorXd GetStrain () const
 Returns the material strain. More...
 
Eigen::VectorXd GetStress () const
 Returns the material stress. More...
 
Eigen::VectorXd GetStrainRate () const
 Returns the material strain rate. More...
 
Eigen::VectorXd GetTotalStress () const
 Computes the material total stress. More...
 
Eigen::MatrixXd GetTangentStiffness () const
 Returns the material stiffness. More...
 
Eigen::MatrixXd GetInitialTangentStiffness () const
 Returns the initial material stiffness. More...
 
void CommitState ()
 Perform converged material state update. More...
 
void ReverseState ()
 Reverse the material states to previous converged state. More...
 
void InitialState ()
 Brings the material states to its initial state in the element. More...
 
void UpdateState (const Eigen::VectorXd strain, const unsigned int cond)
 Update the material state for this iteration. More...
 
- Public Member Functions inherited from Material
 Material (std::string name, bool model)
 Creates a Material to be specified at a Gauss-point in an Element. More...
 
virtual ~Material ()=0
 Destroys this Material object. More...
 
std::string GetName ()
 Gets material information. More...
 
bool IsViscous ()
 Gets material stress model. More...
 

Protected Member Functions

Eigen::VectorXd ComputeIdentityVector () const
 Constructs a Second Order Identity Tensor. More...
 
Eigen::MatrixXd ComputeDeviatoricTensor () const
 Constructs deviatoric tensor. More...
 
Eigen::MatrixXd ComputeIdentityTensor () const
 Constructs fourth-rank identity tensor. More...
 
Eigen::MatrixXd ComputeIdentityOperator () const
 Constructs fourth-rank symmetric identity operator. More...
 
double ComputeTensorTrace (const Eigen::VectorXd &T)
 Computes the trace of a tensor of second-rank. More...
 
double ComputeTensorNorm (const Eigen::VectorXd &T)
 Computes the norm of a tensor of second-rank. More...
 
double ComputeInnerProduct (const Eigen::VectorXd &V1, const Eigen::VectorXd &V2)
 Compute inner product of two tensor of first-rank. More...
 
Eigen::VectorXd ComputeHardening (Eigen::VectorXd const &DeviatoricIncrStrain, const Eigen::VectorXd &DeviatoricStress)
 Compute hardening using the Newton-Rhapson method. More...
 
Eigen::VectorXd ComputeHardeningBisection (Eigen::VectorXd const &DeviatoricIncrStrain, const Eigen::VectorXd &DeviatoricStress)
 Compute hardening using the bi-section method. More...
 

Private Attributes

double K
 Bulk modulus. More...
 
double G
 Shear modulus. More...
 
double Rho
 Material density. More...
 
double H0
 Bounding surface hardening. More...
 
double h
 Exponential hardening parameter. More...
 
double m
 Exponential hardening parameter. More...
 
double Su
 Undrained soil strength. More...
 
double R
 Bounding surface radius. More...
 
double beta
 The integration factor. More...
 
double psi
 Internal hardening parameters. More...
 
double kappa
 Internal hardening parameters. More...
 
double psi_n
 Internal hardening parameter at time n. More...
 
double kappa_n
 Internal hardening parameter at time n. More...
 
Eigen::VectorXd Strain
 Strain vector. More...
 
Eigen::VectorXd Strain_n
 Strain at time n. More...
 
Eigen::VectorXd Stress
 Trial stress vector. More...
 
Eigen::VectorXd Stress_n
 Stress vector at time n. More...
 
Eigen::VectorXd DeviatoricStress0
 Stress tensor at F0. More...
 
Eigen::VectorXd DeviatoricStress0_n
 Stress tensor at F0 at time n. More...
 
Eigen::MatrixXd TangentStiffness
 Consistent tangent stiffness. More...
 
Eigen::MatrixXd TangentStiffness_n
 Consistent tangent stiffness at time n. More...
 
int FirstLoadFlag
 First loading flag. More...
 
int FirstLoadFlag_n
 First loading flag at time n. More...
 
int rootFlag
 Flag to control the linear system solution. More...
 
int rootFlag_n
 Flag to control the linear system solution at time n. More...
 
double Hn
 The hardening function. More...
 

Detailed Description

Class for creating an triaxial plastic bounding surface material for three-dimensional elements.

See also
Material.hpp

Constructor & Destructor Documentation

◆ Plastic3DBA()

Plastic3DBA::Plastic3DBA ( const double  K,
const double  G,
const double  rho,
const double  H0,
const double  h,
const double  m,
const double  Su,
const double  beta 
)

Creates a Plastic3DBA material to be specified at a Gauss-point in an Element.

Parameters
KThe material bulk modulus.
GThe material shear modulus.
rhoThe material density.
H0The bounding surface hardening.
hThe hardening parameter.
mThe exponential hardening parameter.
SuUndrained soil strength.
betaThe integration factor.
See also
Plastic3DBA::K, Plastic3DBA::G, Plastic3DBA::Rho, Plastic3DBA::H0, Plastic3DBA::h, Plastic3DBA::m, Plastic3DBA::Su, Plastic3DBA::R, Plastic3DBA::beta.

◆ ~Plastic3DBA()

Plastic3DBA::~Plastic3DBA ( )

Destroys this Plastic3DBA material.

Member Function Documentation

◆ CommitState()

void Plastic3DBA::CommitState ( )
virtual

Perform converged material state update.

Note
This function sets the trail stress and strain as converged.
See also
Plastic3DBA::Strain_n, Plastic3DBA::Stress_n.

Implements Material.

◆ ComputeDeviatoricTensor()

Eigen::MatrixXd Plastic3DBA::ComputeDeviatoricTensor ( ) const
protected

Constructs deviatoric tensor.

Returns
The deviatoric tensor.

◆ ComputeHardening()

Eigen::VectorXd Plastic3DBA::ComputeHardening ( Eigen::VectorXd const &  DeviatoricIncrStrain,
const Eigen::VectorXd &  DeviatoricStress 
)
protected

Compute hardening using the Newton-Rhapson method.

Parameters
DeviatoricIncrStrainThe deviatoric incremental strain.
DeviatoricStressThe deviatoric stress.
Returns
Vector that contains kappa and psi using Newton-Rhapson method.

◆ ComputeHardeningBisection()

Eigen::VectorXd Plastic3DBA::ComputeHardeningBisection ( Eigen::VectorXd const &  DeviatoricIncrStrain,
const Eigen::VectorXd &  DeviatoricStress 
)
protected

Compute hardening using the bi-section method.

Parameters
DeviatoricIncrStrainThe deviatoric incremental strain.
DeviatoricStressThe deviatoric stress.
Returns
Vector that contains kappa and psi using bisection method.

◆ ComputeIdentityOperator()

Eigen::MatrixXd Plastic3DBA::ComputeIdentityOperator ( ) const
protected

Constructs fourth-rank symmetric identity operator.

Returns
A rank-four tensor.

◆ ComputeIdentityTensor()

Eigen::MatrixXd Plastic3DBA::ComputeIdentityTensor ( ) const
protected

Constructs fourth-rank identity tensor.

Returns
A rank-four tensor.

◆ ComputeIdentityVector()

Eigen::VectorXd Plastic3DBA::ComputeIdentityVector ( ) const
protected

Constructs a Second Order Identity Tensor.

Returns
The identity second-rank tensor.

◆ ComputeInnerProduct()

double Plastic3DBA::ComputeInnerProduct ( const Eigen::VectorXd &  V1,
const Eigen::VectorXd &  V2 
)
protected

Compute inner product of two tensor of first-rank.

Parameters
V1A first-rank tensor.
V2A first-rank tensor.
Returns
An scalar with the inner product.

◆ ComputeTensorNorm()

double Plastic3DBA::ComputeTensorNorm ( const Eigen::VectorXd &  T)
protected

Computes the norm of a tensor of second-rank.

Parameters
TA second-rank tensor.
Returns
An scalar with the norm.

◆ ComputeTensorTrace()

double Plastic3DBA::ComputeTensorTrace ( const Eigen::VectorXd &  T)
protected

Computes the trace of a tensor of second-rank.

Parameters
TA second-rank tensor.
Returns
An scalar with the trace.

◆ CopyMaterial()

std::unique_ptr<Material> Plastic3DBA::CopyMaterial ( )
virtual
Returns
A Material pointer to the Plastic3DBA derived class.
See also
Material, Plastic3DBA.

Implements Material.

◆ GetBulkModulus()

double Plastic3DBA::GetBulkModulus ( ) const
virtual

Access bulk modulus.

Returns
The material bulk's modulus.
See also
Plastic3DBA::K.

Implements Material.

◆ GetDamping()

Eigen::MatrixXd Plastic3DBA::GetDamping ( ) const
virtual

Returns the material viscous damping.

Returns
Vector with the material damping components.

Implements Material.

◆ GetDensity()

double Plastic3DBA::GetDensity ( ) const
virtual

Access material density.

Returns
The material density value.
See also
Plastic3DBA::Rho.

Implements Material.

◆ GetElasticityModulus()

double Plastic3DBA::GetElasticityModulus ( ) const
virtual

Access modulus of elasticity.

Returns
The material Elasticity's modulus.

Implements Material.

◆ GetEnergy()

double Plastic3DBA::GetEnergy ( ) const
virtual

Access the material's energy at current strain.

Returns
Scalar with the material energy value.

Implements Material.

◆ GetInitialTangentStiffness()

Eigen::MatrixXd Plastic3DBA::GetInitialTangentStiffness ( ) const
virtual

Returns the initial material stiffness.

Returns
Matrix with the initial material tangent stiffness matrix.
Note
The initial tangent stiffness matrix is computed when the strain vector is zero.

Implements Material.

◆ GetPoissonRatio()

double Plastic3DBA::GetPoissonRatio ( ) const
virtual

Returns the Poisson's ratio.

Returns
The material poisson's ratio.

Implements Material.

◆ GetShearModulus()

double Plastic3DBA::GetShearModulus ( ) const
virtual

Access shear modulus.

Returns
The material shear's modulus.
See also
Plastic3DBA::G.

Implements Material.

◆ GetStrain()

Eigen::VectorXd Plastic3DBA::GetStrain ( ) const
virtual

Returns the material strain.

Returns
Vector with the material strain components.
Note
The strain can be revisited in Plastic3DBA.
See also
Plastic3DBA::Strain.

Implements Material.

◆ GetStrainRate()

Eigen::VectorXd Plastic3DBA::GetStrainRate ( ) const
virtual

Returns the material strain rate.

Returns
Vector with the material strain-rate components.
Note
The strain can be revisited in Plastic3DBA.

Implements Material.

◆ GetStress()

Eigen::VectorXd Plastic3DBA::GetStress ( ) const
virtual

Returns the material stress.

Returns
Vector with the material stress components.
Note
The strain can be revisited in Plastic3DBA.
See also
Plastic3DBA::Stress.

Implements Material.

◆ GetTangentStiffness()

Eigen::MatrixXd Plastic3DBA::GetTangentStiffness ( ) const
virtual

Returns the material stiffness.

Returns
Matrix with the material consistent tangent stiffness matrix.
Note
The stiffness matrix can be revisited in Plastic3DBA.
See also
Plastic3DBA::TangentStiffness.

Implements Material.

◆ GetTotalStress()

Eigen::VectorXd Plastic3DBA::GetTotalStress ( ) const
virtual

Computes the material total stress.

Returns
Vector with the material total stress components.
See also
Plastic3DBA::Stress.

Implements Material.

◆ InitialState()

void Plastic3DBA::InitialState ( )
virtual

Brings the material states to its initial state in the element.

Note
This funtion returns the material states to the beginning.

Implements Material.

◆ ReverseState()

void Plastic3DBA::ReverseState ( )
virtual

Reverse the material states to previous converged state.

Note
This funtion returns the material states to previous converged states.

Implements Material.

◆ UpdateState()

void Plastic3DBA::UpdateState ( const Eigen::VectorXd  strain,
const unsigned int  cond 
)
virtual

Update the material state for this iteration.

Parameters
strainVector with the strain components at this Gauss-point.
condIf the the elastic/plastic material components will be updated.
Note
This function computes the strain and tanget stiffness matrix once the trial strain converged.

Implements Material.

Member Data Documentation

◆ beta

double Plastic3DBA::beta
private

The integration factor.

◆ DeviatoricStress0

Eigen::VectorXd Plastic3DBA::DeviatoricStress0
private

Stress tensor at F0.

◆ DeviatoricStress0_n

Eigen::VectorXd Plastic3DBA::DeviatoricStress0_n
private

Stress tensor at F0 at time n.

◆ FirstLoadFlag

int Plastic3DBA::FirstLoadFlag
private

First loading flag.

◆ FirstLoadFlag_n

int Plastic3DBA::FirstLoadFlag_n
private

First loading flag at time n.

◆ G

double Plastic3DBA::G
private

Shear modulus.

◆ h

double Plastic3DBA::h
private

Exponential hardening parameter.

◆ H0

double Plastic3DBA::H0
private

Bounding surface hardening.

◆ Hn

double Plastic3DBA::Hn
private

The hardening function.

◆ K

double Plastic3DBA::K
private

Bulk modulus.

◆ kappa

double Plastic3DBA::kappa
private

Internal hardening parameters.

◆ kappa_n

double Plastic3DBA::kappa_n
private

Internal hardening parameter at time n.

◆ m

double Plastic3DBA::m
private

Exponential hardening parameter.

◆ psi

double Plastic3DBA::psi
private

Internal hardening parameters.

◆ psi_n

double Plastic3DBA::psi_n
private

Internal hardening parameter at time n.

◆ R

double Plastic3DBA::R
private

Bounding surface radius.

◆ Rho

double Plastic3DBA::Rho
private

Material density.

◆ rootFlag

int Plastic3DBA::rootFlag
private

Flag to control the linear system solution.

◆ rootFlag_n

int Plastic3DBA::rootFlag_n
private

Flag to control the linear system solution at time n.

◆ Strain

Eigen::VectorXd Plastic3DBA::Strain
private

Strain vector.

◆ Strain_n

Eigen::VectorXd Plastic3DBA::Strain_n
private

Strain at time n.

◆ Stress

Eigen::VectorXd Plastic3DBA::Stress
private

Trial stress vector.

◆ Stress_n

Eigen::VectorXd Plastic3DBA::Stress_n
private

Stress vector at time n.

◆ Su

double Plastic3DBA::Su
private

Undrained soil strength.

◆ TangentStiffness

Eigen::MatrixXd Plastic3DBA::TangentStiffness
private

Consistent tangent stiffness.

◆ TangentStiffness_n

Eigen::MatrixXd Plastic3DBA::TangentStiffness_n
private

Consistent tangent stiffness at time n.