chrono::fea::ChPlasticityKirchhoff Class Referenceabstract

Description

Base interface for plasticity of thin shells (Kirchoff-Love shell theory, without shear effects) to be used in a ChMaterialShellKirchhoff.

Children classes must implement the ComputeStressWithReturnMapping to compute effective stress and strain given a tentative strain that might violate the yeld function. Inherited materials do not define any thickness, which should be a property of the element or its layer(s) using this material.

#include <ChMaterialShellKirchhoff.h>

Collaboration diagram for chrono::fea::ChPlasticityKirchhoff:

Public Member Functions

virtual bool ComputeStressWithReturnMapping (ChVector<> &n, ChVector<> &m, ChShellKirchhoffInternalData &data_new, const ChVector<> &eps_trial, const ChVector<> &kur_trial, const ChShellKirchhoffInternalData &data, const double z_inf, const double z_sup, const double angle)=0
 Given a trial strain, it computes the effective stress and strain by clamping against the yeld surface. More...
 
virtual void ComputeStiffnessMatrixElastoplastic (ChMatrixRef K, const ChVector<> &eps, const ChVector<> &kur, const ChShellKirchhoffInternalData &data, const double z_inf, const double z_sup, const double angle)
 Compute the 12x12 tangent material stiffness matrix [Km] = dσ/dε, given actual internal data and deformation and curvature (if needed). More...
 
virtual void CreatePlasticityData (int numpoints, std::vector< std::unique_ptr< ChShellKirchhoffInternalData >> &plastic_data)
 

Public Attributes

ChMaterialShellKirchhoffsection
 
double nr_yeld_tolerance
 
int nr_yeld_maxiters
 

Member Function Documentation

◆ ComputeStiffnessMatrixElastoplastic()

void chrono::fea::ChPlasticityKirchhoff::ComputeStiffnessMatrixElastoplastic ( ChMatrixRef  K,
const ChVector<> &  eps,
const ChVector<> &  kur,
const ChShellKirchhoffInternalData data,
const double  z_inf,
const double  z_sup,
const double  angle 
)
virtual

Compute the 12x12 tangent material stiffness matrix [Km] = dσ/dε, given actual internal data and deformation and curvature (if needed).

If in plastic regime, uses elastoplastic matrix, otherwise uses elastic. This must be overridden by subclasses if an analytical solution is known (preferred for high performance), otherwise the base behaviour here is to compute [Km] by numerical differentiation calling ComputeStressWithReturnMapping() multiple times.

Parameters
K12x12 material elastoplastic stiffness matrix values here
epsstrains e_11, e_22, e_12
kurcurvature k_11, k_22, k_12
dataupdated material internal variables, at this point including {p_strain_e, p_strain_k, p_strain_acc}
z_inflayer lower z value (along thickness coord)
z_suplayer upper z value (along thickness coord)
anglelayer angle respect to x (if needed)

◆ ComputeStressWithReturnMapping()

virtual bool chrono::fea::ChPlasticityKirchhoff::ComputeStressWithReturnMapping ( ChVector<> &  n,
ChVector<> &  m,
ChShellKirchhoffInternalData data_new,
const ChVector<> &  eps_trial,
const ChVector<> &  kur_trial,
const ChShellKirchhoffInternalData data,
const double  z_inf,
const double  z_sup,
const double  angle 
)
pure virtual

Given a trial strain, it computes the effective stress and strain by clamping against the yeld surface.

An implicit return mapping integration step is computed automatically per each call of this function. Note: for the elastic part, it must use the elasticity model in this->section->elasticity. If not beyond yeld, simply: elastic strain = tot strain - plastic strain If it is beyond yeld: elastic strain is computed by fully implicit strain integration with return mapping, and plastic strains in "data_new" are updated. Returns true if it had to do return mapping, false if it was in elastic regime This MUST be implemented by subclasses.

Parameters
nforces n_11, n_22, n_12 (per unit length)
mtorques m_11, m_22, m_12 (per unit length)
data_newupdated material internal variables, at this point, including {p_strain_e, p_strain_k, p_strain_acc}
eps_trialtrial strains e_11, e_22, e_12
kur_trialtrial curvature k_11, k_22, k_12
datatrial material internal variables, at this point, including {p_strain_e, p_strain_k, p_strain_acc}
z_inflayer lower z value (along thickness coord)
z_suplayer upper z value (along thickness coord)
anglelayer angle respect to x (if needed)

The documentation for this class was generated from the following files:
  • /builds/uwsbel/chrono/src/chrono/fea/ChMaterialShellKirchhoff.h
  • /builds/uwsbel/chrono/src/chrono/fea/ChMaterialShellKirchhoff.cpp