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

Class for creating a biaxial plastic bounding surface material for two-dimensional elements. More...

#include <PlasticPlaneStrainBA.hpp>

Inheritance diagram for PlasticPlaneStrainBA:
Collaboration diagram for PlasticPlaneStrainBA:

Public Member Functions

 PlasticPlaneStrainBA (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 PlasticPlaneStrainBA material to be specified at a Gauss-point in an Element. More...
 
 ~PlasticPlaneStrainBA ()
 Destroys this PlasticPlaneStrainBA 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 (const Eigen::VectorXd &_DeviatoricIncrStrain, const Eigen::VectorXd &_DeviatoricStress)
 Compute hardening using the Newton-Rhapson method. More...
 
Eigen::VectorXd ComputeHardeningBisection (const Eigen::VectorXd &_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
 integration factor. More...
 
double psi
 Internal hardening parameter. More...
 
double kappa
 Internal hardening parameter. 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 a biaxial plastic bounding surface material for two-dimensional elements.

See also
Material.hpp

Constructor & Destructor Documentation

◆ PlasticPlaneStrainBA()

PlasticPlaneStrainBA::PlasticPlaneStrainBA ( 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 PlasticPlaneStrainBA 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
PlasticPlaneStrainBA::K, PlasticPlaneStrainBA::G, PlasticPlaneStrainBA::Rho, PlasticPlaneStrainBA::H0, PlasticPlaneStrainBA::h, PlasticPlaneStrainBA::m, PlasticPlaneStrainBA::Su, PlasticPlaneStrainBA::R, PlasticPlaneStrainBA::beta.

◆ ~PlasticPlaneStrainBA()

PlasticPlaneStrainBA::~PlasticPlaneStrainBA ( )

Destroys this PlasticPlaneStrainBA material.

Member Function Documentation

◆ CommitState()

void PlasticPlaneStrainBA::CommitState ( )
virtual

Perform converged material state update.

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

Implements Material.

◆ ComputeDeviatoricTensor()

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

Constructs deviatoric tensor.

Returns
The deviatoric tensor.

◆ ComputeHardening()

Eigen::VectorXd PlasticPlaneStrainBA::ComputeHardening ( const Eigen::VectorXd &  _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 PlasticPlaneStrainBA::ComputeHardeningBisection ( const Eigen::VectorXd &  _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 PlasticPlaneStrainBA::ComputeIdentityOperator ( ) const
protected

Constructs fourth-rank symmetric identity operator.

Returns
A rank-four tensor.

◆ ComputeIdentityTensor()

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

Constructs fourth-rank identity tensor.

Returns
A rank-four tensor.

◆ ComputeIdentityVector()

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

Constructs a Second Order Identity Tensor.

Returns
The identity second-rank tensor.

◆ ComputeInnerProduct()

double PlasticPlaneStrainBA::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 PlasticPlaneStrainBA::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 PlasticPlaneStrainBA::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> PlasticPlaneStrainBA::CopyMaterial ( )
virtual
Returns
A Material pointer to the PlasticPlaneStrainBA derived class.
See also
Material, PlasticPlaneStrainBA.

Implements Material.

◆ GetBulkModulus()

double PlasticPlaneStrainBA::GetBulkModulus ( ) const
virtual

Access bulk modulus.

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

Implements Material.

◆ GetDamping()

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

Returns the material viscous damping.

Returns
Vector with the material damping components.

Implements Material.

◆ GetDensity()

double PlasticPlaneStrainBA::GetDensity ( ) const
virtual

Access material density.

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

Implements Material.

◆ GetElasticityModulus()

double PlasticPlaneStrainBA::GetElasticityModulus ( ) const
virtual

Access modulus of elasticity.

Returns
The material Elasticity's modulus.

Implements Material.

◆ GetEnergy()

double PlasticPlaneStrainBA::GetEnergy ( ) const
virtual

Access the material's energy at current strain.

Returns
Scalar with the material energy value.

Implements Material.

◆ GetInitialTangentStiffness()

Eigen::MatrixXd PlasticPlaneStrainBA::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 PlasticPlaneStrainBA::GetPoissonRatio ( ) const
virtual

Returns the Poisson's ratio.

Returns
The material poisson's ratio.

Implements Material.

◆ GetShearModulus()

double PlasticPlaneStrainBA::GetShearModulus ( ) const
virtual

Access shear modulus.

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

Implements Material.

◆ GetStrain()

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

Returns the material strain.

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

Implements Material.

◆ GetStrainRate()

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

Returns the material strain rate.

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

Implements Material.

◆ GetStress()

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

Returns the material stress.

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

Implements Material.

◆ GetTangentStiffness()

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

Returns the material stiffness.

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

Implements Material.

◆ GetTotalStress()

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

Computes the material total stress.

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

Implements Material.

◆ InitialState()

void PlasticPlaneStrainBA::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 PlasticPlaneStrainBA::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 PlasticPlaneStrainBA::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 PlasticPlaneStrainBA::beta
private

integration factor.

◆ DeviatoricStress0

Eigen::VectorXd PlasticPlaneStrainBA::DeviatoricStress0
private

Stress tensor at F0.

◆ DeviatoricStress0_n

Eigen::VectorXd PlasticPlaneStrainBA::DeviatoricStress0_n
private

Stress tensor at F0 at time n.

◆ FirstLoadFlag

int PlasticPlaneStrainBA::FirstLoadFlag
private

First loading flag.

◆ FirstLoadFlag_n

int PlasticPlaneStrainBA::FirstLoadFlag_n
private

First loading flag at time n.

◆ G

double PlasticPlaneStrainBA::G
private

Shear modulus.

◆ h

double PlasticPlaneStrainBA::h
private

exponential hardening parameter.

◆ H0

double PlasticPlaneStrainBA::H0
private

Bounding surface hardening.

◆ Hn

double PlasticPlaneStrainBA::Hn
private

The hardening function.

◆ K

double PlasticPlaneStrainBA::K
private

Bulk modulus.

◆ kappa

double PlasticPlaneStrainBA::kappa
private

Internal hardening parameter.

◆ kappa_n

double PlasticPlaneStrainBA::kappa_n
private

Internal hardening parameter at time n.

◆ m

double PlasticPlaneStrainBA::m
private

Exponential hardening parameter.

◆ psi

double PlasticPlaneStrainBA::psi
private

Internal hardening parameter.

◆ psi_n

double PlasticPlaneStrainBA::psi_n
private

Internal hardening parameter at time n.

◆ R

double PlasticPlaneStrainBA::R
private

Bounding surface radius.

◆ Rho

double PlasticPlaneStrainBA::Rho
private

Material density.

◆ rootFlag

int PlasticPlaneStrainBA::rootFlag
private

Flag to control the linear system solution.

◆ rootFlag_n

int PlasticPlaneStrainBA::rootFlag_n
private

Flag to control the linear system solution at time n.

◆ Strain

Eigen::VectorXd PlasticPlaneStrainBA::Strain
private

Strain vector.

◆ Strain_n

Eigen::VectorXd PlasticPlaneStrainBA::Strain_n
private

Strain at time n.

◆ Stress

Eigen::VectorXd PlasticPlaneStrainBA::Stress
private

Trial stress vector.

◆ Stress_n

Eigen::VectorXd PlasticPlaneStrainBA::Stress_n
private

Stress vector at time n.

◆ Su

double PlasticPlaneStrainBA::Su
private

Undrained soil strength.

◆ TangentStiffness

Eigen::MatrixXd PlasticPlaneStrainBA::TangentStiffness
private

Consistent tangent stiffness.

◆ TangentStiffness_n

Eigen::MatrixXd PlasticPlaneStrainBA::TangentStiffness_n
private

Consistent tangent stiffness at time n.