Subloading

The Modified Extended 3D Subloading Surface (Hashiguchi) Model

The subloading surface framework provides a very versatile approach to model cyclic behaviour. It is highly recommended to try it out.

References

The implementation is based on the following paper.

Additional material on the same topic can be found in the following literature.

Prof. Koichi Hashiguchi has published a large amount of papers on this topic. To find more references, please refer to the monograph and the references therein.

Theory

Refer to the corresponding section in Constitutive Modelling Cookbook for theory, formulation and implementation details.

Syntax

material Subloading (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) [16]
# (1) int, unique material tag
# (2) double, elastic modulus
# (3) double, poisson's ratio
# (4) double, isotropic initial stress, \sigma^i
# (5) double, isotropic linear hardening modulus, k_{iso}
# (6) double, isotropic saturation stress, \sigma^s
# (7) double, isotropic saturation rate, m^s_{iso}
# (8) double, kinematic initial stress, a^i
# (9) double, kinematic linear hardening modulus, k_{kin}
# (10) double, kinematic saturation stress, a^s
# (11) double, kinematic saturation rate, m^s_{kin}
# (12) double, yield ratio evolution rate, u
# (13) double, kinematic hardening rate, b
# (14) double, elastic core evolution rate, c_e
# (15) double, elastic core size, z_e
# [16] double, density, default: 0.0

History Layout

location
parameter

initial_history(0)

iteration counter

initial_history(1)

accumulated plastic strain qq

initial_history(2)

normal yield ratio zz

initial_history(3:8)

normalised back stress α\mathbf{\alpha}

initial_history(9:14)

normalised elastic core d\mathbf{d}

Example

See this example.

Iso-error Map

The following example iso-error maps are obtained via the following script.

from plugins import ErrorMap
# note: the dependency `ErrorMap` can be found in the following link
# https://github.com/TLCFEM/suanPan-manual/blob/dev/plugins/scripts/ErrorMap.py

young_modulus = 1e5
yield_stress = 100.0
hardening_ratio = 0.05

with ErrorMap(
    f"""material Subloading 1 {young_modulus} 0.2 \
{yield_stress} {hardening_ratio * young_modulus} 0 0 \
0 0 0 0 \
5E2 0 5E2 0.7""",
    ref_strain=yield_stress / young_modulus,
    ref_stress=yield_stress,
    contour_samples=30,
) as error_map:
    error_map.contour(
        "subloading.uniaxial", center=(-4, 0), size=3, type={"rel", "abs"}
    )
    error_map.contour(
        "subloading.biaxial", center=(-4, -4), size=3, type={"rel", "abs"}
    )
absolute error uniaxial
absolute error biaxial
relative error uniaxial
relative error biaxial

Last updated