suanPan-manual
  • Introduction
  • Basic
    • Obtain Application
    • Configure Application
    • Perform Analysis
    • Model Syntax
    • Model Structure
    • Tweak Performance
    • Compile Application
    • Build Documentation
    • Architecture Design
    • On Clusters
  • Example
    • Developer
      • element template
      • material template
    • Solid
      • wave propagation
    • Geotechnical
      • triaxial compression of sand
      • slope analysis
    • Structural
      • Statics
        • bending of a cantilever beam
        • bifurcation of a cantilever beam
        • double-edge notched specimen
        • lees frame
        • notched beam under cyclic loading
        • rc section analysis
        • truss roof
        • uniform tension of a rubber specimen
        • thin-walled section analysis for frame structures
        • calibration of subloading surface model
      • Dynamics
        • bouncing of a ball
        • mass-spring-dashpot system
        • dynamic analysis of a portal frame
        • elemental damping
        • particle collision
        • response history analysis of an elastic coupled wall
        • multi-support excitation
        • triple pendulum
        • computing response spectrum
        • integrate with python
        • process ground motion
      • Hybrid
        • vibration of a displaced beam
      • Buckling
        • buckling analysis of a cantilever beam
      • Contact
        • contact between beam and block
        • contact in 3d space
      • Optimization
        • evolutionary structural optimization
      • Isogeometric Analysis
        • linear analysis of a single element
    • Miscellaneous
      • batch execution for automation
  • Command Collection
    • Define
      • amplitude
      • bc
      • domain
      • element
      • expression
      • file
      • generate
      • group
      • import
      • initial
      • load
      • material
      • modifier
      • node
      • recorder
      • section
    • Configure
      • analyze
      • converger
      • criterion
      • integrator
      • precheck
      • step
    • Process
      • benchmark
      • clear
      • command
      • enable
      • exit
      • materialtest
      • materialtestbyload
      • sectiontest
      • peek
      • plot
      • protect
      • pwd
      • reset
      • save
      • set
      • upsampling
      • sdof_response
      • response_spectrum
  • Amplitude
    • Amplitude
    • Special
      • NZStrongMotion
    • Universal
      • Combine
      • Constant
      • Decay
      • Linear
      • Modulated
      • Tabular
      • TabularSpline
      • Trig
  • Constraint
    • MPC
    • ParticleCollision
    • RigidWall
    • RestitutionWall
    • FixedLength
    • MaxForce
    • NodeLine
    • NodeFacet
    • Embed2D
    • Embed3D
    • LJPotential2D
    • MaximumGap2D
    • MinimumGap2D
    • MaximumGap3D
    • MinimumGap3D
  • Converger
    • Converger
    • Absolute
      • AbsDisp
      • AbsError
      • AbsIncreDisp
      • AbsIncreAcc
      • AbsIncreEnergy
      • AbsResidual
    • Other
      • FixedNumber
      • Logic
    • Relative
      • RelDisp
      • RelError
      • RelIncreDisp
      • RelIncreAcc
      • RelIncreEnergy
      • RelResidual
  • Criterion
    • Criterion
    • MaxDisplacement
    • MaxHistory
    • MaxResistance
    • MinDisplacement
    • MinResistance
    • StrainEnergyEvolution
  • Element
    • Beam
      • B21
      • B21E
      • B21H
      • B31
      • B31OS
      • EB21
      • EB31OS
      • F21
      • F21H
      • F31
      • NMB21
      • NMB21E
      • NMB31
      • MVLEM
      • Orientation
    • Cube
      • C3D20
      • C3D4
      • C3D8
      • C3D8I
      • CIN3D8
      • DC3D4
      • DC3D8
    • Membrane
      • Couple Stress
      • Phase Field
        • DCP3
        • DCP4
      • Axisymmetric
        • CAX3
        • CAX4
        • CAX8
      • Plane
        • CP3
        • CP4
        • CP4I
        • CP5
        • CP6
        • CP7
        • CP8
      • Mixed
        • PS
        • QE2
      • Drilling
        • Allman
        • GCMQ
        • GQ12
      • Infinite
        • CINP4
      • Geotechnical
        • PCPE4DC
        • PCPE4UC
        • PCPE8DC
        • PCPE8UC
      • Membrane
    • Modifier
      • Modifier
      • ElementalLee
      • ElementalNonviscous
      • LinearViscosity
    • Patch
      • Patch
      • PatchCube
      • PatchQuad
    • Plate
      • DKT3
      • DKT4
      • Mindlin
    • Shell
      • DKTS3
      • DKTS4
      • S4
      • SGCMS
      • ShellBase
    • Special
      • Contact2D
      • Contact3D
      • Damper01
      • Damper02
      • Embedded2D
      • Embedded3D
      • Joint
      • Mass
      • SingleSection
      • Spring01
      • Spring02
      • Tie
      • TranslationConnector
    • Truss
      • T2D2
      • T2D2S
      • T3D2
      • T3D2S
  • Group
    • CustomNodeGroup
    • NodeGroup
    • ElementGroup
    • GroupGroup
  • Integrator
    • Implicit
      • Linear
      • BatheTwoStep
      • GeneralizedAlpha
      • OALTS
      • GSSSS
      • Newmark
        • LeeNewmark
        • LeeElementalNewmark
        • LeeNewmarkFull
        • LeeNewmarkIterative
        • Newmark
        • RayleighNewmark
        • WilsonPenzienNewmark
        • NonviscousNewmark
    • Explicit
      • Tchamwa
      • BatheExplicit
      • GeneralizedAlphaExplicit
  • Material
    • Guide
      • Metal
      • Customisation
    • Material1D
      • Concrete
        • ConcreteCM
        • ConcreteExp
        • ConcreteTsai
        • ConcreteTable
        • ConcreteK4
      • Degradation
        • Degradation
        • CustomStrainDegradation
        • CustomStressDegradation
        • Dhakal
        • TrilinearStrainDegradation
      • Elastic
        • BilinearElastic1D
        • Elastic1D
        • AsymmElastic1D
        • MultilinearElastic1D
        • PolyElastic1D
        • NLE1D01
        • Sinh1D
        • Tanh1D
        • CustomElastic1D
      • Hysteresis
        • AFC
        • AFCN
        • BilinearOO
        • BilinearPO
        • BoucWen
        • BWBN
        • Flag
        • MPF
        • MultilinearOO
        • MultilinearPO
        • RambergOsgood
        • SimpleHysteresis
        • SlipLock
        • SteelBRB
        • Trivial
        • Gap01
      • Viscosity
        • Kelvin
        • Maxwell
        • NonlinearViscosity
        • BilinearViscosity
        • CustomViscosity
        • Viscosity01
        • Viscosity02
        • CoulombFriction
        • Nonviscous01
      • vonMises
        • Subloading1D
        • ArmstrongFrederick1D
        • AFCO1D
        • Bilinear1D
        • BilinearMises1D
        • CustomGurson1D
        • CustomMises1D
        • ExpGurson1D
        • ExpMises1D
        • Mises1D
        • Multilinear1D
        • NonlinearGurson1D
        • VAFCRP1D
    • Material2D
      • AxisymmetricElastic
      • Concrete21
      • Concrete22
      • DuncanSelig
      • Elastic2D
      • Rebar2D
    • Material3D
      • CamClay
        • BilinearCC
        • ExpCC
        • NonlinearCamClay
        • ParabolicCC
      • Concrete
        • CDP
        • CDPM2
        • Rebar3D
        • TableCDP
        • CustomCDP
      • Damage
        • IsotropicDamage
        • LinearDamage
      • DruckerPrager
        • BilinearDP
        • ExpDP
        • CustomDP
        • NonlinearDruckerPrager
      • Elastic
        • BlatzKo
        • IsotropicElastic3D
        • IsotropicNonlinearElastic3D
        • MooneyRivlin
        • NLE3D01
        • OrthotropicElastic3D
        • Yeoh
      • Hoffman
        • BilinearHoffman
        • ExpHoffman
        • CustomHoffman
        • NonlinearHill
        • NonlinearHoffman
        • TimberPD
      • Sand
        • SimpleSand
        • DafalisaManzari
      • vonMises
        • ArmstrongFrederick
        • BilinearJ2
        • BilinearPeric
        • CustomGurson
        • TableGurson
        • CustomJ2
        • ExpGurson
        • ExpJ2
        • MultilinearJ2
        • NonlinearGurson
        • NonlinearJ2
        • NonlinearPeric
        • PolyJ2
        • VAFCRP
        • Subloading
    • MaterialOS
      • ElasticOS
    • Wrapper
      • Axisymmetric
      • Laminated
      • Parallel
      • PlaneStrain
      • PlaneSymmetric
      • PlaneStress
      • Rotation2D
      • Rotation3D
      • Sequential
      • Stacked
      • Uniaxial
      • OS146
      • OS146S
      • Substepping
  • Recorder
    • Recorder
    • OutputType
  • Section
    • Code
      • EU
      • NZ
      • US
    • Section1D
      • Circle1D
      • Fibre1D
      • Rectangle1D
      • TrussSection
    • Section2D
      • Bar2D
      • Box2D
      • Circle2D
      • CircularHollow2D
      • Fibre2D
      • HSection2D
      • ISection2D
      • Rectangle2D
      • TSection2D
    • Section3D
      • Bar3D
      • Box3D
      • Circle3D
      • CircularHollow3D
      • Fibre3D
      • ISection3D
      • Rectangle3D
      • TSection3D
    • SectionOS
      • Cell3DOS
      • Fibre3DOS
    • SectionNM
      • SectionNM
      • NM2D1
      • NM2D2
      • NM2D3
      • NM2D3K
      • NM3D1
      • NM3D2
      • NM3D3
      • NM3D3K
  • Solver
    • BFGS
    • MPDC
    • Newton
    • AICN
    • Ramm
  • Step
    • Overview
    • ArcLength
    • Buckle
    • Dynamic
    • Frequency
    • Optimization
    • Static
  • Developer
    • Prerequisites
    • C Style Interface
      • material
    • CPP Style Interface
      • material
      • element
      • constraint
Powered by GitBook
On this page
  • Summary
  • Brief On Theory
  • History Layout
  • Kinematic Hardening
  • Isotropic Hardening
  • Example
Edit on GitHub
  1. Material
  2. Material3D
  3. vonMises

NonlinearJ2

PreviousNonlinearGursonNextNonlinearPeric

Last updated 3 years ago

Nonlinear General J2 Plasticity Model

Summary

This is an abstract material class thus cannot be used directly. This class defines a general plasticity model using J2 yielding criterion with associated flow rule and mixed hardening rule. The isotropic/kinematic hardening response can be customized.

To use this model, a derived class shall be defined first.

class YourJ2 final : public NonlinearJ2 {
// class definition
}

The derived class only needs to implement four pure virtual methods that define the isotropic and kinematic hardening rules.

virtual double compute_k(double) const = 0; // isotropic hardening
virtual double compute_dk(double) const = 0; // derivative isotropic
virtual double compute_h(double) const = 0; // kinematic hardening
virtual double compute_dh(double) const = 0; // derivative kinematic

All four methods take equivalent plastic strain as the input argument, on output, the corresponding quantities shall be provided.

The isotropic hardening function K(εˉp)K(\bar\varepsilon_p)K(εˉp​) defines the isotropic hardening rule, there are some requirements:

  1. K(εˉp)K(\bar\varepsilon_p)K(εˉp​) should be non-negative,

  2. K(εˉp=0)=σyK(\bar\varepsilon_p=0)=\sigma_yK(εˉp​=0)=σy​ where σy\sigma_yσy​ is the initial yielding stress.

There is no requirement for the kinematic hardening function H(εˉp)H(\bar\varepsilon_p)H(εˉp​). Both hardening rules can coexist. However, to successfully solve the trial status, there is an additional constraint that shall be applied on the model:

Otherwise, the local Newton iteration will fail.

Brief On Theory

The NonlinearJ2 abstract class defines an associative plasticity framework using the von Mises yield criterion, which is defined as follows.

History Layout

location
paramater

initial_history(0)

accumulated plastic strain

initial_history(1-6)

back stress

Kinematic Hardening

and the derivative

In this case, user shall override the corresponding two methods with such an implmentation.

double SampleJ2::compute_h(const double p_strain) const { return e_kin * p_strain; }
double SampleJ2::compute_dh(const double) const { return e_kin; }

Of course, a nonlinear relationship could also be defined.

Isotropic Hardening

double SampleJ2::compute_k(const double p_strain) const { return e_iso * p_strain + yield_stress; }
double SampleJ2::compute_dk(const double) const { return e_iso; }

Here another polynomial based isotropic hardening function is shown as an additional example. The function is defined as

To define such a hardening behavior, a vector shall be used to store all constants.

// PolyJ2.h
const vec poly_para; // poly_para is a vector stores a_i

The methods could be written as follows.

// PolyJ2.cpp
double PolyJ2::compute_k(const double p_strain) const {
 vec t_vec(poly_para.n_elem);

 t_vec(0) = 1.;
 for(uword I = 1; I < t_vec.n_elem; ++I) t_vec(I) = t_vec(I - 1) * p_strain;

 return yield_stress * dot(poly_para, t_vec);
}

double PolyJ2::compute_dk(const double p_strain) const {
 vec t_vec(poly_para.n_elem);

 t_vec(0) = 0.;
 t_vec(1) = 1.;
 for(uword I = 2; I < t_vec.n_elem; ++I) t_vec(I) = (double(I) + 1.) * pow(p_strain, double(I));

 return yield_stress * dot(poly_para, t_vec);
}

Example

A few different models are shown as examples. User can define arbitrary models.

E+H′(εˉp)+K′(εˉp)⩾0 for all εˉpE+H'(\bar\varepsilon_p)+K'(\bar\varepsilon_p)\geqslant0~\text{for all}~\bar\varepsilon_pE+H′(εˉp​)+K′(εˉp​)⩾0 for all εˉp​
F(σ,εˉp)=32(s−β(εˉp)):(s−β(εˉp))−σy(εˉp)F(\sigma,\bar\varepsilon_p)=\sqrt{\dfrac{3}{2}(s-\beta(\bar\varepsilon_p)):(s-\beta(\bar\varepsilon_p))}-\sigma_y( \bar\varepsilon_p)F(σ,εˉp​)=23​(s−β(εˉp​)):(s−β(εˉp​))​−σy​(εˉp​)

where β(εˉp)\beta(\bar\varepsilon_p)β(εˉp​) is the back stress depends on the equivalent plastic strain εˉp\bar\varepsilon_pεˉp​ and σy(εˉp)\sigma_y(\bar\varepsilon_p)σy​(εˉp​) is the yield stress. Note

3J2=32(s−β(εˉp)):(s−β(εˉp))\sqrt{3J_2}=\sqrt{\dfrac{3}{2}(s-\beta(\bar\varepsilon_p)):(s-\beta(\bar\varepsilon_p))}3J2​​=23​(s−β(εˉp​)):(s−β(εˉp​))​

It is also called J2 plasticity model. A detailed discussion can be seen elsewhere. β(εˉp)=H(εˉp)\beta(\bar\varepsilon_p)=H( \bar\varepsilon_p)β(εˉp​)=H(εˉp​) and σy(εˉp)=K(εˉp)\sigma_y(\bar\varepsilon_p)=K(\bar\varepsilon_p)σy​(εˉp​)=K(εˉp​).

The back stress β(εˉp)\beta(\bar{\varepsilon}_p)β(εˉp​) defines a kinematic hardening response. For example a linear kinematic hardening could be defined as:

β(εˉp)=EKεˉp\beta(\bar\varepsilon_p)=E_K\bar\varepsilon_pβ(εˉp​)=EK​εˉp​
dβ(εˉp)dεˉp=EK\dfrac{\mathrm{d}\beta(\bar\varepsilon_p)}{\mathrm{d}\bar\varepsilon_p}=E_Kdεˉp​dβ(εˉp​)​=EK​

in which EKE_KEK​ is the kinematic hardening stiffness.

The isotropic hardening is defined by function σy(εˉp)\sigma_y(\bar\varepsilon_p)σy​(εˉp​). The value σy(0)\sigma_y(0)σy​(0) should be the initial yield stress. Also, for a bilinear isotropic hardening response, user shall override the following two methods.

σy=σ0(1+∑i=1naiεˉpi)\sigma_y=\sigma_0(1+\sum_{i=1}^{n}a_i\bar\varepsilon_p^i)σy​=σ0​(1+i=1∑n​ai​εˉpi​)

where aia_iai​ are material constants. It is easy to see σy∣εˉp=0=σ0\sigma_y|_{\bar\varepsilon_p=0}=\sigma_0σy​∣εˉp​=0​=σ0​. The derivative is

dσydεˉp=σ0∑i=1niaiεˉpi−1\dfrac{\mathrm{d}\sigma_y}{\mathrm{d}\bar\varepsilon_p}=\sigma_0\sum_{i=1}^{n}ia_i\bar\varepsilon_p^{i-1}dεˉp​dσy​​=σ0​i=1∑n​iai​εˉpi−1​