# YLD0418P

The `YLD0418P` material implements an isotropic hardening model using the YLD2004-18P yield criterion with either orthotropic or isotropic elasticity.

## References

1. [10.1016/j.ijplas.2004.06.004](https://doi.org/10.1016/j.ijplas.2004.06.004)

## Syntax

### Orthotropic Elasticity

```
material YLD0418P (1) (2...7) (8...10) (11...28) (29) (30) (31) (32) (33) [34]
# (1) int, unique material tag
# (2...7) double, six moduli: E_{xx}, E_{yy}, E_{zz}, G_{xy}, G_{yz}, G_{zx}
# (8...10) double, three poissions ratios: v_{xy}, v_{yz}, v_{xz}
# (11...28) double, 18 model parameters, see documentation for details
# (29) double, exponent
# (30) double, reference stress
# (31) int, hardening backbone expression tag
# (32) double, kinematic hardening rate
# (33) double, kinematic hardening bound
# [34] double, density, default: 0.0
```

### Isotropic Elasticity

```
material YLD0418PISO (1) (2) (3) (4...21) (22) (23) (24) (25) (26) [27]
# (1) int, unique material tag
# (2) double, elastic modulus
# (3) double, poissions ratio
# (4...21) double, 18 model parameters, see documentation for details
# (22) double, exponent
# (23) double, reference stress
# (24) int, hardening backbone expression tag
# (25) double, kinematic hardening rate
# (26) double, kinematic hardening bound
# [27] double, density, default: 0.0
```

## Remarks

The hardening expression shall be a **simple scalar-valued** expression. Check the corresponding [page](../../../command-collection/define/expression) for details.

If any of kinematic hardening rate or bound is zero, the kinematic hardening is disabled. The local return mapping uses different algorithms depending on whether the kinematic hardening is enabled or not. Thus, if kinematic hardening is not important, one shall consider disabling it to improve numerical performance.

The reference stress is used to normalize the yield surface to avoid potential numerical issues. It shall be set to a proper value, for example, the initial yield stress.

The isotropic hardening can be disabled by providing a hardening expression that always returns zero.

## Example

```
expression SimpleScalar 1 x 1+.02x

material YLD0418PISO 1 1E4 .25 \
1.241024 1.078271 1.216463 1.223867 1.093105 0.889161 0.501909 0.557173 1.349094 \
0.775366 0.922743 0.765487 0.793356 0.918689 1.027625 1.115833 1.112273 0.589787 \
8 100. \
1 \
0. 0.
```

## Iso-error Map

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

```py
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

modulus = 1e4
yield_stress = 10.0

with ErrorMap(
    f"material YLD0418P 1 {modulus} {0.4 * modulus} {0.3 * modulus} {0.8 * modulus} {0.7 * modulus} {0.9 * modulus} .25 .3 .2 \
1.241024 1.078271 1.216463 1.223867 1.093105 0.889161 0.501909 0.557173 1.349094 \
0.775366 0.922743 0.765487 0.793356 0.918689 1.027625 1.115833 1.112273 0.589787 \
8 {yield_stress} \
1 \
{0.05 * modulus} {yield_stress}\nexpression SimpleScalar 1 x 1+.01x",
    ref_strain=yield_stress / modulus,
    ref_stress=yield_stress,
    contour_samples=50,
) as error_map:
    error_map.contour("yld0418p.uniaxial", center=(-3, 0), size=1, type={"rel", "abs"})
    error_map.contour("yld0418p.biaxial", center=(-3, -3), size=1, type={"rel", "abs"})
```

![absolute error uniaxial](https://4006314410-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQ5rMqEBbzA9NgGETGX%2Fuploads%2Fgit-blob-8061ecba25efdb2d6a346325b1b867853a2b9f1f%2Fyld0418p.uniaxial.abs.error.svg?alt=media) ![absolute error biaxial](https://4006314410-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQ5rMqEBbzA9NgGETGX%2Fuploads%2Fgit-blob-1bfc6dff2ac0a6ea7baf7b3ec822be4fafc0b2ff%2Fyld0418p.biaxial.abs.error.svg?alt=media) ![relative error uniaxial](https://4006314410-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQ5rMqEBbzA9NgGETGX%2Fuploads%2Fgit-blob-bce7d5fc2112eb02815b7f57e714d31299fe33ee%2Fyld0418p.uniaxial.rel.error.svg?alt=media) ![relative error biaxial](https://4006314410-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQ5rMqEBbzA9NgGETGX%2Fuploads%2Fgit-blob-3d4d21b1229b2667e1490d9172f4c3717b10ff68%2Fyld0418p.biaxial.rel.error.svg?alt=media)
