Yield surfaces
Overview
NEML YieldSurfaces provide the interface

A hardening interface provides the map between the “strain-like” history
variables
and the “stress-like” history variables
.
NEML uses this interface both as a yield surface in rate independent models
and as a flow surface for rate dependent plasticity.
While not required, the existing yield surfaces including
kinematic hardening expect to receive a
vector unrolling the isotropic hardening stress
followed by a Mandel vector describing the total backstress
(i.e.
has length
).
For pure isotropic hardening
consists of only
the isotropic hardening stress (i.e.
has length
).
Warning
YieldSurfaces have no knowledge of the hardening model.
They expect to recieve an unrolled vector of the appropriate
length.
The only check the implementation can do is to make sure
that HardeningRule provides the correct length of the
vector.
It currently cannot check on the order of the provided “stress-like”
history variables.
For convenience NEML provides a template class that automatically
converts a yield surface with isotropic and kinematic hardening to a
corresponding yield surface that only has isotropic hardening.
Supposing ExampleSurfaceIsoKin correctly implements combined isotropic and
kinematic hardening then defining a class ExampleSurfaceIso that
inherits from IsoFunction with template arguments
<ExampleSurfaceIsoKin, Arg A, Arg B, ...> where the arguments are
the arguments required to initialize ExampleSurfaceIsoKin will automatically
provide the isotropic-only version of the surface.
Implementations
Class description
-
class YieldSurface : public neml::NEMLObject
Base class for generic yield surfaces.
Subclassed by neml::IsoFunction< IsoKinJ2I1 >, neml::IsoFunction< IsoKinJ2 >, neml::IsoFunction< BT >, neml::IsoKinJ2, neml::IsoKinJ2I1
Public Functions
-
YieldSurface(ParameterSet ¶ms)
-
virtual size_t nhist() const = 0
Indicates how many history variables the model expects to get.
-
virtual void f(const double *const s, const double *const q, double T, double &fv) const = 0
Yield function.
-
virtual void df_ds(const double *const s, const double *const q, double T, double *const df) const = 0
Gradient wrt stress.
-
virtual void df_dq(const double *const s, const double *const q, double T, double *const df) const = 0
Gradient wrt history.
-
virtual void df_dsds(const double *const s, const double *const q, double T, double *const ddf) const = 0
Hessian dsds.
-
virtual void df_dqdq(const double *const s, const double *const q, double T, double *const ddf) const = 0
Hessian dqdq.
-
virtual void df_dsdq(const double *const s, const double *const q, double T, double *const ddf) const = 0
Hessian dsdq.
-
virtual void df_dqds(const double *const s, const double *const q, double T, double *const ddf) const = 0
Hessian dqds.
-
YieldSurface(ParameterSet ¶ms)