# SteelBRB

Steel Model For Modelling BRB

The `SteelBRB` material defines a steel model. It can be used to model buckling restrained braces. It uses exponential type functions thus resembles the [`RambergOsgood`](/suanpan-manual/material/material1d/hysteresis/rambergosgood.md) material.

References are available:

1. <https://doi.org/10.1016/j.jcsr.2011.07.017>
2. <https://doi.org/10.1016/j.jcsr.2014.02.009>

## Syntax

If tension response is identical to compression response, users can use the following command to define the material.

```
material SteelBRB (1) (2) (3) (4) (5) (6) (7) [8]
# (1) int, unique material tag
# (2) double, elastic modulus
# (3) double, yield stress
# (4) double, plastic modulus
# (5) double, saturated stress, \sigma_s
# (6) double, \delta_r
# (7) double, \alpha
# [8] double, density, default: 0.0
```

If tension response is different from compression response, which is often the case in modelling BRB, users can use the following command.

```
material SteelBRB (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) [11]
# (1) int, unique material tag
# (2) double, elastic modulus
# (3) double, yield stress
# (4) double, plastic modulus
# (5) double, tension saturated stress
# (6) double, tension delta_r
# (7) double, tension alpha
# (8) double, compression saturated stress
# (9) double, compression delta_r
# (10) double, compression alpha
# [11] double, density, default: 0.0
```

## Remarks

1. In the original model, a linear response is defined before the initial yield stress, this feature is disabled. Thus, the monotonic loading response is similar to that of the `RambergOsgood` material.
2. In the original model, the elastic and plastic moduli could be different under tension and compression. The implemented model uses identical values for these two parameters.

## History Variable Layout

| location             | value                      |
| -------------------- | -------------------------- |
| `initial_history(0)` | accumulated plastic strain |
| `initial_history(1)` | plastic strain             |

## Theory

The model is described in incremental form. The total strain increment is decomposed into elastic and plastic part,

$$
\dot\sigma=E(\dot\varepsilon-\dot\varepsilon\_p).
$$

For loading, the increment of plastic strain is defined as an implicit function, that is

$$
\dot\varepsilon\_p=\Big|\dfrac{\sigma-\sigma\_p}{\sigma\_y}\Big|^\alpha\dot\varepsilon,
$$

in which $$\sigma\_p$$ is associated with $$\varepsilon\_p$$ via plastic modulus $$H$$,

$$
\sigma\_p=H\varepsilon\_p,
$$

and

$$
\sigma\_y=\sigma\_s-(\sigma\_s-\sigma\_{y,0})\exp(-\dfrac{\mu}{\delta\_r})
$$

where $$\sigma\_s$$ is the saturated stress, $$\sigma\_y$$ is the yield stress, $$\delta\_r$$ is a constant parameter that controls the speed of isotropic hardening, $$\mu$$ is the accumulated plastic strain which is defined to be

$$
\dot\mu=|\dot\varepsilon\_p|.
$$

In the above formulation, $$\sigma\_s$$, $$\alpha$$ and $$\delta\_r$$ could be different in tension and compression.

The development of plastic strain $$\varepsilon\_p$$ is activated when

$$
\dot\varepsilon\sigma<0
$$

## Example

```
material SteelBRB 1 2E5 400. 2E3 660. .2 .6 450. .15 .4
materialTest1D 1 1E-4 40 80 120 160 200 240 280 320 360 400 400
```

![example one](/files/-MQ5ry5FhhVGyeMuA6jZ)

## 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 SteelBRB 1 {young_modulus} {yield_stress} {hardening_ratio * young_modulus} {1.5 * yield_stress} .2 .6 {2 * yield_stress} .15 .4",
    ref_strain=yield_stress / young_modulus,
    ref_stress=yield_stress,
) as error_map:
    error_map.contour("steelbrb", center=-5, size=5, type={"abs"})
```

![accuracy analysis](/files/o8wDq0F0xEfhgLQzkoWx)


---

# 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/hysteresis/steelbrb.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.
