# Material properties

## Class member variables

    bool gpu_enabled;
    int num_hist;
    int pos_epsp;
    int pos_temp;
    int pos_texture;
    int pos_damage;
    int erode_flag;
    int pos_erode_flag;
    std::vector<int> curve;
    std::vector<std::pair<int, std::string>> contour;

## Description

    bool gpu_enabled

Set to `true` if GPU acceleration should be used, otherwise `false`.

    int num_hist

The number of state variables used by each material model. The state variable array (`p_history`) is a container where one can store data for each integration point. These variables can change throughout the simulation.

    int pos_epsp

Specifies where in the state variables array (`p_history`) the effective plastic strain variable is located. This is also used for damage properties.

    int pos_temp

Thermal definition from for example `*INITIAL_TEMPERATURE` can be obtained through the `pos_temp` value. The value set will specify where in the state variables array (`p_history`) to set the initial temperature. This is also used for damage properties.

    int pos_texture

When implementing material models using fiber direction (for example fiber composites) with `*INITIAL_MATERIAL_DIRECTION_WRAP`, a texture location must be set. The location tells IMPETUS Solver where in the state variables array (`p_history`) to set the initial fiber direction. It requires 9 slots (3 vectors) in the state variables array (from the specified index). Make sure to allocate enough space when setting `num_hist`.

    int pos_damage

The location in the state variable array (`p_history`) where damage is stored.

    int erode_flg

Specifies how the material model should handle damage evolution.

- `0`: no element erosion / node splitting
- `1`: element erosion
- `2`: node splitting

    int erode_flg_pos

Specifies the position of the erosion flag defined in material parameter list (`p_cmat` / `cmat`). If `erode_flg_pos` is set, the value in this position in `cmat` will be copied to `cmat[80]`.

    std::vector<int> curve

Specifies where in the material parameter list (`p_cmat` / `cmat`) the curve / function ID's are located. Up to 50 curves can be specified per material models. Use `curve.emplace_back(id)` to add new entries.

    std::vector<std::pair<int, std::string>> contour

Set a specific state variable for output, which can then be visualised as a contour plot in the GUI. Use `contour.emplace_back(std::make_pair(id, "Contour plot name"));` to add new entries.