dynLattice
Loading...
Searching...
No Matches
ElastoPlasticRodMaterial.h
Go to the documentation of this file.
1
7#pragma once
9#include <jem/numeric/algebra/utilities.h>
10#include <jive/util/FuncUtils.h>
11
12// Forward declarations
13class MaterialFactory;
14
15using jem::idx_t;
16using jem::numeric::Function;
17using jive::Ref;
18using jive::String;
19using jive::util::FuncUtils;
20
24{
25 public:
28 static const char *TYPE_NAME;
29 static const char *YIELD_PROP;
30 static const char *YIELD_DERIV_PROP;
31 static const char *YIELD_TYPE_PROP;
32 static const char *YIELD_STRENGTH_PROP;
33 static const char *YIELD_EXPONENT_PROP;
34 static const char *ISO_HARD_PROP;
35 static const char *KIN_HARD_PROP;
37
44
46
52 ElastoPlasticRodMaterial(const String &name,
53 const Properties &conf,
54 const Properties &props,
55 const Properties &globdat);
56
63 static Ref<Material> makeNew(const String &name, const Properties &conf,
64 const Properties &props, const Properties &globdat);
65
67 static void declare();
68
74 virtual void configure(const Properties &props, const Properties &globdat) override;
75
76 virtual void getConfig(const Properties &conf, const Properties &globdat) const override;
77
81 virtual void getHardVals(const Vector &hardVals, const Vector &hardParams) const;
82
85 virtual void getStress(const Vector &stress, const Vector &strain) override;
86
95 virtual void getStress(const Vector &stress, const Vector &strain, const idx_t &ielem, const idx_t &ip, const bool inelastic = true) override;
96
97 virtual void applyDeform() override;
98
99 virtual void rejectDeform() override;
100
101 virtual void getTable(XTable &strain_table, const Vector &weights, const String &name, const IdxVector &items) const override;
102
103 virtual double getDissipatedEnergy(const idx_t &ielem, const idx_t &ip) const override;
104
105 virtual double getHardeningPotential(const idx_t &ielem, const idx_t &ip) const override;
106
107 virtual double getPotentialEnergy(const idx_t &ielem, const idx_t &ip) const override;
108
109 protected:
112
115 double getYield_(const Vector &args) const;
116
120 void getYieldGrad_(const Vector &grad, const Vector &args) const;
121
125 double getSuperEllipse_(const Vector &args) const;
126
128 void getSuperEllipseGrad_(const Vector &grad, const Vector &args) const;
129
130 protected:
133 Ref<Function> yieldCond_;
134 FuncUtils::FuncArray yieldDeriv_;
135 idx_t maxIter_;
136 double precision_;
138 bool isoHard_;
139 bool kinHard_;
143
146 idx_t dofCount_;
147 idx_t argCount_;
149
152 Matrix materialH_;
153
156
159
161
168 Vector hardParams_;
169 Vector hardStress_;
171 Vector yieldArgs_;
172 Vector yieldGrad_;
174
176 Matrix energyDiss_;
179};
Linear elastic rod material implementation with cross-sectional properties.
Linear elastic rod material with configurable cross-sectional properties.
Definition ElasticRodMaterial.h:21
Elasto-plastic rod material implementing yield conditions with isotropic and kinematic hardening.
Definition ElastoPlasticRodMaterial.h:24
bool isoHard_
Isotropic hardening stress is a yield function argument.
Definition ElastoPlasticRodMaterial.h:138
Cubix oldHardParams_
Hardening parameters from last converged step.
Definition ElastoPlasticRodMaterial.h:154
static Ref< Material > makeNew(const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
Factory method for plastic material creation.
Definition ElastoPlasticRodMaterial.cpp:515
virtual void getStress(const Vector &stress, const Vector &strain) override
Elastic stress computation based on elastic rod material model.
Definition ElastoPlasticRodMaterial.cpp:338
virtual double getPotentialEnergy(const idx_t &ielem, const idx_t &ip) const override
Get the potential energy at a specific integration point.
Definition ElastoPlasticRodMaterial.cpp:503
Vector hardStress_
Hardening stresses.
Definition ElastoPlasticRodMaterial.h:169
YieldType yieldType_
Selected yield condition implementation.
Definition ElastoPlasticRodMaterial.h:137
idx_t dofCount_
Degrees of freedom in stress/strain vectors.
Definition ElastoPlasticRodMaterial.h:146
Vector yieldStrength_
Strengths c_i of the super-ellipse yield condition.
Definition ElastoPlasticRodMaterial.h:140
Matrix currDeltaFlow_
Current plastic flow increment.
Definition ElastoPlasticRodMaterial.h:175
static const char * YIELD_PROP
Yield condition function.
Definition ElastoPlasticRodMaterial.h:29
virtual void getHardVals(const Vector &hardVals, const Vector &hardParams) const
Get hardening values from hardening parameters.
Definition ElastoPlasticRodMaterial.cpp:331
void getSuperEllipseGrad_(const Vector &grad, const Vector &args) const
Gradient of the super-ellipse yield condition (zero stress derivative for |s_i| < EPS)
Definition ElastoPlasticRodMaterial.cpp:311
Vector yieldArgs_
Arguments of the yield condition.
Definition ElastoPlasticRodMaterial.h:171
Vector hardParams_
Hardening parameter iterate.
Definition ElastoPlasticRodMaterial.h:168
virtual void getConfig(const Properties &conf, const Properties &globdat) const override
Retrieve current material configuration.
Definition ElastoPlasticRodMaterial.cpp:202
virtual void applyDeform() override
Apply computed deformation to the material state.
Definition ElastoPlasticRodMaterial.cpp:408
Matrix energyHardPot_
Hardening potential energy storage.
Definition ElastoPlasticRodMaterial.h:177
Vector elasticStrain_
Elastic strain.
Definition ElastoPlasticRodMaterial.h:170
idx_t argCount_
Total arguments to yield condition.
Definition ElastoPlasticRodMaterial.h:147
static const char * YIELD_EXPONENT_PROP
Exponents p_i of the super-ellipse yield condition.
Definition ElastoPlasticRodMaterial.h:33
Ref< Function > yieldCond_
Yield condition function.
Definition ElastoPlasticRodMaterial.h:133
double precision_
Convergence tolerance for stress update.
Definition ElastoPlasticRodMaterial.h:136
static const char * KIN_HARD_PROP
Kinematic hardening parameters.
Definition ElastoPlasticRodMaterial.h:35
Vector plastStrain_
Plastic strain iterate.
Definition ElastoPlasticRodMaterial.h:167
static const char * ISO_HARD_PROP
Isotropic hardening parameters.
Definition ElastoPlasticRodMaterial.h:34
Cubix currPlastStrains_
Current plastic strains.
Definition ElastoPlasticRodMaterial.h:158
virtual double getHardeningPotential(const idx_t &ielem, const idx_t &ip) const override
Get the hardening potential energy at a specific integration point.
Definition ElastoPlasticRodMaterial.cpp:508
idx_t maxIter_
Max iterations for stress update.
Definition ElastoPlasticRodMaterial.h:135
double getYield_(const Vector &args) const
Value of the yield condition.
Definition ElastoPlasticRodMaterial.cpp:250
Cubix oldPlastStrains_
Plastic strains from last converged step.
Definition ElastoPlasticRodMaterial.h:157
virtual void rejectDeform() override
Reject the current deformation and revert to previous state.
Definition ElastoPlasticRodMaterial.cpp:443
Matrix materialH_
Hardening matrix.
Definition ElastoPlasticRodMaterial.h:152
Cubix currHardParams_
Current hardening parameters.
Definition ElastoPlasticRodMaterial.h:155
static const char * YIELD_DERIV_PROP
Yield condition derivatives.
Definition ElastoPlasticRodMaterial.h:30
double getSuperEllipse_(const Vector &args) const
Super-ellipse yield condition f = sum_i |s_i/(c_i-h_i)|^p_i - (1+h_0)
Definition ElastoPlasticRodMaterial.cpp:291
static const char * TYPE_NAME
Definition ElastoPlasticRodMaterial.h:28
Matrix energyDiss_
Dissipated energy storage.
Definition ElastoPlasticRodMaterial.h:176
virtual void configure(const Properties &props, const Properties &globdat) override
Configure plasticity parameters and yield conditions.
Definition ElastoPlasticRodMaterial.cpp:59
Vector yieldExponent_
Exponents p_i of the super-ellipse yield condition.
Definition ElastoPlasticRodMaterial.h:141
Vector yieldGrad_
Gradient of the yield condition.
Definition ElastoPlasticRodMaterial.h:172
~ElastoPlasticRodMaterial()
Destroy the elasto-plastic rod material.
Definition ElastoPlasticRodMaterial.cpp:55
virtual void getTable(XTable &strain_table, const Vector &weights, const String &name, const IdxVector &items) const override
Populate strain table with material-specific data.
Definition ElastoPlasticRodMaterial.cpp:452
static const char * YIELD_TYPE_PROP
Yield condition type (see YieldType)
Definition ElastoPlasticRodMaterial.h:31
FuncUtils::FuncArray yieldDeriv_
Derivatives of yield condition.
Definition ElastoPlasticRodMaterial.h:134
virtual double getDissipatedEnergy(const idx_t &ielem, const idx_t &ip) const override
Get the dissipated energy at a specific integration point.
Definition ElastoPlasticRodMaterial.cpp:498
bool kinHard_
Kinematic hardening stresses are yield function arguments.
Definition ElastoPlasticRodMaterial.h:139
Cubix oldStresses_
Elastic stresses from last converged step (set in applyDeform)
Definition ElastoPlasticRodMaterial.h:160
static const char * YIELD_STRENGTH_PROP
Strengths c_i of the super-ellipse yield condition.
Definition ElastoPlasticRodMaterial.h:32
static void declare()
Register plastic material type with factory.
Definition ElastoPlasticRodMaterial.cpp:522
void getYieldGrad_(const Vector &grad, const Vector &args) const
Gradient of the yield condition with respect to args.
Definition ElastoPlasticRodMaterial.cpp:263
YieldType
Yield condition implementations, selected by the property yieldType
Definition ElastoPlasticRodMaterial.h:40
@ SUPER_ELLIPSE
"SuperEllipse": native Lamé curve, see getSuperEllipse_
Definition ElastoPlasticRodMaterial.h:42
@ EXPRESSION
"Expression": interpreted function yieldCond (default)
Definition ElastoPlasticRodMaterial.h:41
Factory for dynamic material creation and registration.
Definition MaterialFactory.h:33