dynLattice
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
ElastoPlasticRodMaterial Class Reference

Elasto-plastic rod material implementing yield conditions with isotropic and kinematic hardening. More...

#include "ElastoPlasticRodMaterial.h"

Inheritance diagram for ElastoPlasticRodMaterial:
Inheritance graph
[legend]
Collaboration diagram for ElastoPlasticRodMaterial:
Collaboration graph
[legend]

Public Member Functions

 ElastoPlasticRodMaterial (const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
 Constructor with plasticity configuration.
 
virtual void configure (const Properties &props, const Properties &globdat) override
 Configure plasticity parameters and yield conditions.
 
virtual void getConfig (const Properties &conf, const Properties &globdat) const override
 Retrieve current material configuration.
 
virtual void getHardVals (const Vector &hardVals, const Vector &hardParams) const
 Get hardening values from hardening parameters.
 
virtual void getStress (const Vector &stress, const Vector &strain) override
 Elastic stress computation based on elastic rod material model.
 
virtual void getStress (const Vector &stress, const Vector &strain, const idx_t &ielem, const idx_t &ip, const bool inelastic=true) override
 Plastic stress computation using convex cutting plane algorithm.
 
virtual void applyDeform () override
 Apply computed deformation to the material state.
 
virtual void rejectDeform () override
 Reject the current deformation and revert to previous state.
 
virtual void getTable (const String &name, XTable &strain_table, const IdxVector &items, const Vector &weights) const override
 Populate strain table with material-specific data.
 
virtual double getDissipatedEnergy (const idx_t &ielem, const idx_t &ip) const override
 Get the dissipated energy at a specific integration point.
 
virtual double getHardeningPotential (const idx_t &ielem, const idx_t &ip) const override
 Get the hardening potential energy at a specific integration point.
 
virtual double getPotentialEnergy (const idx_t &ielem, const idx_t &ip) const override
 Get the potential energy at a specific integration point.
 
- Public Member Functions inherited from ElasticRodMaterial
 ElasticRodMaterial (const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
 Constructor with configuration and global data.
 
virtual Matrix getMaterialStiff () const override
 Get the material stiffness matrix.
 
virtual Matrix getMaterialStiff (const idx_t &ielem, const idx_t &ip) const override
 Get the material stiffness matrix for specific element and integration point.
 
virtual Matrix getMaterialMass () const override
 Get the material mass matrix per unit length.
 
virtual Matrix getMaterialMass (const idx_t &ielem, const idx_t &ip) const override
 Get the material mass matrix for specific element and integration point.
 
virtual Matrix getLumpedMass (const double l) const override
 Get the lumped mass matrix for a given element length.
 
virtual Matrix getLumpedMass (const double l, const idx_t &ielem) const override
 Get the lumped mass matrix for specific element and length.
 
- Public Member Functions inherited from Material
 Material (const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
 Constructs a new Material object.
 
virtual String getContext () const override
 Get the context string for error reporting and debugging.
 

Static Public Member Functions

static Ref< Material > makeNew (const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
 Factory method for plastic material creation.
 
static void declare ()
 Register plastic material type with factory.
 
- Static Public Member Functions inherited from ElasticRodMaterial
static Ref< Material > makeNew (const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
 Factory method for material creation.
 
static void declare ()
 Register material type with factory.
 

Static Public Attributes

Plasticity property identifiers
static const char * TYPE_NAME = "ElastoPlasticRod"
 
static const char * YIELD_PROP = "yieldCond"
 Yield condition function.
 
static const char * YIELD_DERIV_PROP = "yieldDeriv"
 Yield condition derivatives.
 
static const char * ISO_HARD_PROP = "isotropicCoefficient"
 Isotropic hardening parameters.
 
static const char * KIN_HARD_PROP = "kinematicTensor"
 Kinematic hardening parameters.
 
- Static Public Attributes inherited from ElasticRodMaterial
static const char * TYPE_NAME = "ElasticRod"
 
static const char * STIFF_PREFIX = "C_"
 Prefix for direct stiffness-matrix input.
 
static const char * YOUNGS_MODULUS = "young"
 Young's modulus property key.
 
static const char * SHEAR_MODULUS = "shear_modulus"
 Shear modulus property key.
 
static const char * POISSON_RATIO = "poisson_ratio"
 Poisson's ratio property key.
 
static const char * AREA = "area"
 Cross-sectional area property key.
 
static const char * DENSITY = "density"
 Material density property key.
 
static const char * AREA_MOMENT = "area_moment"
 Area moment of inertia property key.
 
static const char * SHEAR_FACTOR = "shear_correction"
 Shear correction factor property key.
 
static const char * POLAR_MOMENT = "polar_moment"
 Polar moment of inertia property key.
 
static const char * CROSS_SECTION = "cross_section"
 Cross-section type property key (e.g., "square", "circle" "rectangle")
 
static const char * RADIUS = "radius"
 Radius for circular sections property key.
 
static const char * SIDE_LENGTH = "side_length"
 Side lengths for rectangular sections property key.
 
static const char * N_ELEM = "elemCount"
 Number of elements property key.
 
static const char * EDGE_FACTOR = "edge_factor"
 Edge factor for lattice materials property key.
 
static const char * EDGE_ELEMS = "edge_elements"
 Number of edge elements property key.
 
- Static Public Attributes inherited from Material
static const char * VERBOSITY_PROP = "verbosity"
 Property name for verbosity level control.
 

Protected Member Functions

 ~ElastoPlasticRodMaterial ()
 
- Protected Member Functions inherited from ElasticRodMaterial
 ~ElasticRodMaterial ()
 
void calcMaterialStiff_ ()
 Calculate material stiffness matrix.
 
void calcMaterialMass_ ()
 Calculate material mass matrix.
 
- Protected Member Functions inherited from Material
virtual ~Material ()
 Destroy the Material object.
 

Protected Attributes

Plasticity algorithm components
Ref< Function > yieldCond_
 Yield condition function.
 
FuncUtils::FuncArray yieldDeriv_
 Derivatives of yield condition.
 
idx_t maxIter_
 Max iterations for stress update.
 
double precision_
 Convergence tolerance for stress update.
 
Function argument organization
idx_t dofCount_
 Degrees of freedom in stress/strain vectors.
 
idx_t argCount_
 Total arguments to yield condition.
 
Hardening and plastic state
Matrix materialH_
 Hardening matrix.
 
Cubix oldHardParams_
 Hardening parameters from last converged step.
 
Cubix currHardParams_
 Current hardening parameters.
 
Cubix oldPlastStrains_
 Plastic strains from last converged step.
 
Cubix currPlastStrains_
 Current plastic strains.
 
Matrix currDeltaFlow_
 Current plastic flow increment.
 
Matrix energyDiss_
 Dissipated energy storage.
 
Matrix energyHardPot_
 Hardening potential energy storage.
 
- Protected Attributes inherited from ElasticRodMaterial
double young_
 Young's modulus.
 
double shearMod_
 Shear modulus.
 
double shearParam_
 Shear parameter.
 
double edgeFact_
 Edge factor for lattice materials.
 
idx_t edgeElems_
 Number of edge elements.
 
idx_t nElem_
 Total number of elements.
 
double area_
 Cross-sectional area.
 
Vector areaMoment_
 Area moments of inertia.
 
double polarMoment_
 Polar moment of inertia.
 
String crossSection_
 Cross-section type identifier.
 
double radius_
 Radius for circular sections.
 
Vector sideLength_
 Side lengths for rectangular sections.
 
double density_
 Material density.
 
Matrix materialK_
 Material stiffness matrix.
 
Matrix materialM_
 Material mass matrix.
 
Cubix oldStrains_
 Strains from last converged step.
 
Cubix currStrains_
 Strains from current iteration.
 
Matrix energyPot_
 Potential energy storage.
 
String rodName_
 Material instance name.
 
- Protected Attributes inherited from Material
idx_t verbosity_
 Verbosity level for material output and debugging.
 

Detailed Description

See also
Corresponding Paper

Constructor & Destructor Documentation

◆ ElastoPlasticRodMaterial()

ElastoPlasticRodMaterial::ElastoPlasticRodMaterial ( const String &  name,
const Properties &  conf,
const Properties &  props,
const Properties &  globdat 
)

◆ ~ElastoPlasticRodMaterial()

ElastoPlasticRodMaterial::~ElastoPlasticRodMaterial ( )
protected

Member Function Documentation

◆ applyDeform()

void ElastoPlasticRodMaterial::applyDeform ( )
overridevirtual

This method commits the current deformation state to the material's internal variables. It's typically called at the end of a successful load step to update the material's permanent state.

Reimplemented from ElasticRodMaterial.

◆ configure()

void ElastoPlasticRodMaterial::configure ( const Properties &  props,
const Properties &  globdat 
)
overridevirtual
Parameters
propsProperties containing configuration parameters
globdatGlobal data container with simulation context
Exceptions
jem::util::PropertyExceptionif yield function is not provided

Reimplemented from ElasticRodMaterial.

◆ declare()

void ElastoPlasticRodMaterial::declare ( )
static

◆ getConfig()

void ElastoPlasticRodMaterial::getConfig ( const Properties &  conf,
const Properties &  globdat 
) const
overridevirtual
Parameters
confProperties object to store configuration in
globdatGlobal data container with simulation context

Reimplemented from ElasticRodMaterial.

◆ getDissipatedEnergy()

double ElastoPlasticRodMaterial::getDissipatedEnergy ( const idx_t &  ielem,
const idx_t &  ip 
) const
overridevirtual

Computes the energy dissipated through inelastic processes at the specified element and integration point location.

Parameters
ielemElement index
ipIntegration point index within the element
Returns
Total dissipated energy at the specified location

Reimplemented from ElasticRodMaterial.

◆ getHardeningPotential()

double ElastoPlasticRodMaterial::getHardeningPotential ( const idx_t &  ielem,
const idx_t &  ip 
) const
overridevirtual

Computes the energy stored in hardening variables for plasticity models. This represents the energy associated with the evolution of the yield surface.

Parameters
ielemElement index
ipIntegration point index within the element
Returns
Hardening potential energy at the specified location

Reimplemented from ElasticRodMaterial.

◆ getHardVals()

void ElastoPlasticRodMaterial::getHardVals ( const Vector &  hardVals,
const Vector &  hardParams 
) const
virtual

◆ getPotentialEnergy()

double ElastoPlasticRodMaterial::getPotentialEnergy ( const idx_t &  ielem,
const idx_t &  ip 
) const
overridevirtual

Computes the stored elastic energy at the specified element and integration point location.

Parameters
ielemElement index
ipIntegration point index within the element
Returns
Elastic potential energy at the specified location
Note
0 for purely elastic materials

Reimplemented from ElasticRodMaterial.

◆ getStress() [1/2]

void ElastoPlasticRodMaterial::getStress ( const Vector &  stress,
const Vector &  strain 
)
overridevirtual
Exceptions
jem::Exceptionas this method should not be called directly for elasto-plastic materials

Reimplemented from ElasticRodMaterial.

◆ getStress() [2/2]

void ElastoPlasticRodMaterial::getStress ( const Vector &  stress,
const Vector &  strain,
const idx_t &  ielem,
const idx_t &  ip,
const bool  inelastic = true 
)
overridevirtual

Implements iterative return mapping with yield condition evaluation

Parameters
stressCalculated stress vector (output)
strainInput strain vector
ielemElement index
ipIntegration point index
inelasticWhether to compute the inelastic stress update
See also
Computational Inelasticity Box 3.6

Reimplemented from ElasticRodMaterial.

◆ getTable()

void ElastoPlasticRodMaterial::getTable ( const String &  name,
XTable &  strain_table,
const IdxVector &  items,
const Vector &  weights 
) const
overridevirtual

This method fills an XTable with strain-related data for output or post-processing purposes. The specific data depends on the material type.

Parameters
nameName identifier for the table data
strain_tableOutput table to populate with strain data
itemsIndex vector specifying which items to include
weightsWeight vector for data averaging or integration

Reimplemented from ElasticRodMaterial.

◆ makeNew()

Ref< Material > ElastoPlasticRodMaterial::makeNew ( const String &  name,
const Properties &  conf,
const Properties &  props,
const Properties &  globdat 
)
static

◆ rejectDeform()

void ElastoPlasticRodMaterial::rejectDeform ( )
overridevirtual

This method reverts the material to its state before the current load step. It's called when a load step fails to converge or needs to be repeated.

Reimplemented from ElasticRodMaterial.

Member Data Documentation

◆ argCount_

idx_t ElastoPlasticRodMaterial::argCount_
protected

◆ currDeltaFlow_

Matrix ElastoPlasticRodMaterial::currDeltaFlow_
protected

◆ currHardParams_

Cubix ElastoPlasticRodMaterial::currHardParams_
protected

◆ currPlastStrains_

Cubix ElastoPlasticRodMaterial::currPlastStrains_
protected

◆ dofCount_

idx_t ElastoPlasticRodMaterial::dofCount_
protected

◆ energyDiss_

Matrix ElastoPlasticRodMaterial::energyDiss_
protected

◆ energyHardPot_

Matrix ElastoPlasticRodMaterial::energyHardPot_
protected

◆ ISO_HARD_PROP

const char * ElastoPlasticRodMaterial::ISO_HARD_PROP = "isotropicCoefficient"
static

◆ KIN_HARD_PROP

const char * ElastoPlasticRodMaterial::KIN_HARD_PROP = "kinematicTensor"
static

◆ materialH_

Matrix ElastoPlasticRodMaterial::materialH_
protected

◆ maxIter_

idx_t ElastoPlasticRodMaterial::maxIter_
protected

◆ oldHardParams_

Cubix ElastoPlasticRodMaterial::oldHardParams_
protected

◆ oldPlastStrains_

Cubix ElastoPlasticRodMaterial::oldPlastStrains_
protected

◆ precision_

double ElastoPlasticRodMaterial::precision_
protected

◆ TYPE_NAME

const char * ElastoPlasticRodMaterial::TYPE_NAME = "ElastoPlasticRod"
static

◆ YIELD_DERIV_PROP

const char * ElastoPlasticRodMaterial::YIELD_DERIV_PROP = "yieldDeriv"
static

◆ YIELD_PROP

const char * ElastoPlasticRodMaterial::YIELD_PROP = "yieldCond"
static

◆ yieldCond_

Ref<Function> ElastoPlasticRodMaterial::yieldCond_
protected

◆ yieldDeriv_

FuncUtils::FuncArray ElastoPlasticRodMaterial::yieldDeriv_
protected