# Subloading1D

The Modified Extended 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.

1. [10.1007/s00707-025-04339-0](https://doi.org/10.1007/s00707-025-04339-0)

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

1. [10.1007/978-3-030-93138-4](https://doi.org/10.1007/978-3-030-93138-4)
2. [10.1007/s11831-023-10022-1](https://doi.org/10.1007/s11831-023-10022-1)
3. [10.1007/s11831-022-09880-y](https://doi.org/10.1007/s11831-022-09880-y)

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.

Alternatively, refer to the corresponding section in [Constitutive Modelling Cookbook](https://github.com/TLCFEM/constitutive-modelling-cookbook/releases/download/latest/COOKBOOK.pdf) for implementation details.

## Theory

### Subloading Surface

The subloading surface is defined as

$$
f\_s=|\eta|-z\sigma^y
$$

where $$\eta=\sigma-a^y\alpha+\left(z-1\right)\sigma^yd$$ is the shifted stress, shifted from the centre defined by $$a^y\alpha+\left(1-z\right)\sigma^yd$$. The scalar $$0\leqslant{}z\leqslant{}1$$ is the normal yield ratio that provides a smooth transition from the interior to the normal yield surface. The scalar $$\sigma^y$$ is the yield stress, that is affected by isotropic hardening.

### Isotropic Hardening

The isotropic hardening combines linear hardening and exponential saturation.

$$
\sigma^y=\sigma^i+k\_\text{iso}q+\sigma^s\_\text{iso}\left(1-e^{-m^s\_\text{iso}q}\right)
$$

where $$\sigma^i$$ is the initial yield stress, $$k\_\text{iso}$$ is the linear hardening modulus, $$\sigma^s\_\text{iso}$$ is the saturation stress and $$m^s\_\text{iso}$$ is the hardening rate.

The history variable $$q$$ is the accumulated plastic strain, conventionally, it is

$$
\dot{q}=\gamma
$$

where $$\gamma$$ is the plasticity multiplier.

### Kinematic Hardening

A modified Armstrong--Frederick rule is adopted for the normalised back stress $$\alpha$$.

$$
\dot{\alpha}=b\gamma\left(n-\alpha\right)
$$

with

$$
a^y=a^i+k\_\text{kin}q+a^s\_\text{kin}\left(1-e^{-m^s\_\text{kin}q}\right)
$$

where $$b$$ is hardening rate. Compared to the conventional AF rule, the saturation bound is not a constant in this model. Instead, it is associated to plasticity. The backbone $$a^y$$ mimics $$\sigma^y$$. The parameters $$a^i$$, $$k\_\text{kin}$$, $$a^s\_\text{kin}$$ and $$m^s\_\text{kin}$$ share similar implications compared to their counterparts.

### Evolution of $$z$$

The following rule is used. Noting that the original formulation uses a cotangent function. Here, the logarithmic function is used instead. Also, the original formulation sets a minimum value for $$z$$ ($$R$$ in the references). We do not adopt such a limit.

$$
\dot{z}=-u\ln\left(z\right)\gamma.
$$

In which, $$u$$ is a constant that controls the rate of transition.

### Evolution of $$d$$

The evolution of $$d$$ resembles that of $$\alpha$$.

$$
\dot{d}=c\_e\gamma\left(z\_en-d\right)
$$

in which $$c\_e$$ and $$z\_e<1$$ are two constants.

## Syntax

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

## History Layout

| location             | parameter                         |
| -------------------- | --------------------------------- |
| `initial_history(0)` | iteration counter                 |
| `initial_history(1)` | accumulated plastic strain $$q$$  |
| `initial_history(2)` | normal yield ratio $$z$$          |
| `initial_history(3)` | normalised back stress $$\alpha$$ |
| `initial_history(4)` | normalised elastic core $$d$$     |

## Example

See [this](https://tlcfem.gitbook.io/suanpan-manual/example/structural/statics/calibration-subloading) example.

## Accuracy

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

young_modulus = 2e5
yield_stress = 4e2
hardening_ratio = 0.01

with ErrorLine(
    f"""material Subloading1D 1 {young_modulus} \
{yield_stress} 10 50 10 \
200 10 50 10 \
4E2 10 10 0.3""",
    ref_strain=yield_stress / young_modulus,
    ref_stress=yield_stress,
) as error_map:
    error_map.contour("subloading", center=-5, size=5, type={"abs"})
```

![accuracy analysis](https://4006314410-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQ5rMqEBbzA9NgGETGX%2Fuploads%2Fgit-blob-73ce0d8543212126bb1a307d5084eefaa29862e9%2Fsubloading.abs.error.svg?alt=media)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://tlcfem.gitbook.io/suanpan-manual/material/material1d/vonmises/subloading1d.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
