Materials

Relevant module: edelweissfe.config.materiallibrary

edelweissfe.config.materiallibrary.getMaterialClass(materialName, provider=None)[source]

Get the the requested material class.

Parameters
  • materialName (str) – The name of the requested material.

  • provider (str) – The name of the material provider.

Returns

The material provider class type.

Return type

type

Materials are defined in EdelweissFE using the *material keyword. Arguments are

*material : definition of a material

Option

Type

Description

id

string

A unique ID, which is used for referencing the material in EdelweissFE.

name

string

The name of of the material.

datalines

numpy float array

The material properties as a float vector, multiline possible.

provider

string

(Optional) The material provider.

If the material provider is not given marmotmaterial is assumed. Materials are assigned to elements by means of Sections.

Provider marmotmaterial

Relevant module: Marmot.

Provider edelweissmaterial

Relevant module: edelweissfe.materials

Linear elastic material

This material uses a linear elastic relation between stress and strain. The linear elastic material can be used as 2D plane stress and plane strain material as well as 3D material. This material needs the following material properties in the correct order

  1. E - Elasticity module (Young’s modulus).

  2. \(\mathbf{\nu}\) - Poisson’s ratio.

For the 2D plane strain and 3D material the following law in voigt notation is used

\[\begin{split}\begin{bmatrix}\sigma_{11}\\ \sigma_{22} \\ \sigma_{33}\\ \sigma_{12}\\ \sigma_{23}\\ \sigma_{13}\end{bmatrix} = \frac{E}{(1+\nu)(1-2\nu)} \begin{bmatrix}(1-\nu) & \nu & \nu & 0 & 0 & 0 \\ & (1-\nu) & \nu & 0 & 0 & 0\\ & & (1-\nu) & 0 & 0 & 0\\ & & & \frac{1-2\nu}{2} & 0 & 0\\ & & & & \frac{1-2\nu}{2} & 0\\ \text{symm.}& & & & & \frac{1-2\nu}{2}\end{bmatrix} \begin{bmatrix}\varepsilon_{11}\\ \varepsilon_{22} \\ \varepsilon_{33}\\ \gamma_{12}\\ \gamma_{23}\\ \gamma_{13}\end{bmatrix}\end{split}\]

and for the 2D plane stress material the following law is used

\[\begin{split}\begin{bmatrix}\sigma_{11}\\ \sigma_{22} \\ \sigma_{12}\end{bmatrix} = \frac{E}{1-\nu^2} \begin{bmatrix}1 & \nu & 0\\ & 1 & 0\\ \text{symm.}& & \frac{1-\nu}{2}\end{bmatrix} \begin{bmatrix}\varepsilon_{11}\\ \varepsilon_{22} \\ \gamma_{12}\end{bmatrix}.\end{split}\]

For the second case the third strain component gets calculated by using

\[\varepsilon_{33} = -\frac{\nu}{1-\nu} (\varepsilon_{11}+\varepsilon_{22}).\]
class edelweissfe.materials.linearelastic.linearelastic.LinearElasticMaterial(materialProperties)[source]

Initialize.

Methods

assignCurrentStateVars(currentStateVars)

Assign new current state vars.

computePlaneStress(stress, dStressdStrain, ...)

Computes the stresses for a 2D material with plane stress.

computeStress(stress, dStressdStrain, ...)

Computes the stresses for a 3D material.

computeStress2D(stress, dStressdStrain, ...)

Computes the stresses for a 2D material with plane strain.

computeUniaxialStress(stress, ...)

Computes the stresses for a uniaxial stress state.

elasticityMatrix()

Initalize a 3D material elasticity matrix.

elasticityMatrix2D()

Initalize a 2D plane strain material elasticity matrix.

elasticityMatrixPlaneStress()

Initalize a 2D plane stress material elasticity matrix.

getNumberOfRequiredStateVars()

Returns number of needed material state Variables per integration point in the material.

getResult(result)

Get the result, as a persistent view which is continiously updated by the material.

Parameters

materialProperties (ndarray) –

assignCurrentStateVars(currentStateVars)[source]

Assign new current state vars.

Parameters

currentStateVars (ndarray) – Array containing the material state vars.

computePlaneStress(stress, dStressdStrain, dStrain, time, dTime)[source]

Computes the stresses for a 2D material with plane stress.

Parameters
  • stress (ndarray) – Vector containing the stresses.

  • dStressdStrain (ndarray) – Matrix containing dStress/dStrain.

  • dStrain (ndarray) – Strain vector increment at time step t to t+dTime.

  • time (float) – Array of step time and total time.

  • dTime (float) – Current time step size.

computeStress(stress, dStressdStrain, dStrain, time, dTime)[source]

Computes the stresses for a 3D material.

Parameters
  • stress (ndarray) – Vector containing the stresses.

  • dStressdStrain (ndarray) – Matrix containing dStress/dStrain.

  • dStrain (ndarray) – Strain vector increment at time step t to t+dTime.

  • time (float) – Array of step time and total time.

  • dTime (float) – Current time step size.

computeStress2D(stress, dStressdStrain, dStrain, time, dTime)[source]

Computes the stresses for a 2D material with plane strain.

Parameters
  • stress (ndarray) – Vector containing the stresses.

  • dStressdStrain (ndarray) – Matrix containing dStress/dStrain.

  • dStrain (ndarray) – Strain vector increment at time step t to t+dTime.

  • time (float) – Array of step time and total time.

  • dTime (float) – Current time step size.

computeUniaxialStress(stress, dStressdStrain, dStrain, time, dTime)[source]

Computes the stresses for a uniaxial stress state.

Parameters
  • stress (ndarray) – Vector containing the stresses.

  • dStressdStrain (ndarray) – Matrix containing dStress/dStrain.

  • dStrain (ndarray) – Strain vector increment at time step t to t+dTime.

  • time (float) – Array of step time and total time.

  • dTime (float) – Current time step size.

elasticityMatrix()[source]

Initalize a 3D material elasticity matrix.

Returns

The elasticity matrix.

Return type

np.ndarray

elasticityMatrix2D()[source]

Initalize a 2D plane strain material elasticity matrix.

Returns

The elasticity matrix.

Return type

np.ndarray

elasticityMatrixPlaneStress()[source]

Initalize a 2D plane stress material elasticity matrix.

Returns

The elasticity matrix.

Return type

np.ndarray

getNumberOfRequiredStateVars()[source]

Returns number of needed material state Variables per integration point in the material.

Returns

Number of needed material state Vars.

Return type

int

getResult(result)[source]

Get the result, as a persistent view which is continiously updated by the material.

Parameters

result (str) – The name of the result.

Returns

The result.

Return type

float

Von Mises material

This material uses the same linear elastic law as the linear elastic material until plasticity is reached. The von Mises material can be used as 2D plane strain and 3D material. This material needs the following material properties in the correct order

  1. E - Elasticity module (Young’s modulus).

  2. \(\mathbf{\nu}\) - Poisson’s ratio.

  3. \(\mathbf{f_{y0}}\) - Yield stress.

  4. \(\mathbf{H_{lin}}\) - Linear plastic hardening parameter.

  5. \(\mathbf{\Delta f_y}\) - Multiplicator for nonlinear isotropic hardening.

  6. \(\mathbf{\delta}\) - Exponent for nonlinear isotropic hardening.

The law used for nonlinear isotropic hardening in this material is \(f_y(\kappa)=f_{y0}+H_{lin}\kappa+\Delta f_{y} e^{-\delta\kappa}\) with \(\kappa\) as the hardening parameter. Plasticity is reached once the yield function f is \(f(\kappa)=||\mathbf{s}||-\sqrt{\frac{2}{3}}f_y(\kappa) > 0\) with \(\mathbf{s}\) as the deviatoric stress. With plasticity reached the material calculates a new \(\Delta\kappa\) using Newton’s method which is afterwards added to the hardening parameter \(\kappa\). In the end the full material tangent and the back projected stress get calculated. For the back projected stress

\[\mathbf{\sigma} = \mathbf{\sigma}^{trial} - 2G\sqrt{\frac{3}{2}}\Delta\kappa\frac{\mathbf{s}}{||\mathbf{s}||}\]

is used with

\[G = \frac{E}{2(1 + \nu)}\]

and \(\mathbf{s}\) as the deviatoric stress.

class edelweissfe.materials.vonmises.vonmises.VonMisesMaterial(materialProperties)[source]

Initialize.

Methods

assignCurrentStateVars(currentStateVars)

Assign new current state vars.

computePlaneStress(stress, dStressdStrain, ...)

Computes the stresses for a plane stress material.

computeStress(stress, dStressdStrain, ...)

Computes the stresses for a 3D material.

computeUniaxialStress(stress, ...)

Computes the stresses for a uniaxial stress state.

elasticityMatrix()

Initalize a 3D material elasticity matrix.

getNumberOfRequiredStateVars()

Returns number of needed material state Variables per integration point in the material.

getResult(result)

Get the result, as a persistent view which is continiously updated by the material.

Parameters

materialProperties (ndarray) –

assignCurrentStateVars(currentStateVars)[source]

Assign new current state vars.

Parameters

currentStateVars (ndarray) – Array containing the material state vars.

computePlaneStress(stress, dStressdStrain, dStrain, time, dTime)[source]

Computes the stresses for a plane stress material.

Parameters
  • stress (ndarray) – Vector containing the stresses.

  • dStressdStrain (ndarray) – Matrix containing dStress/dStrain.

  • dStrain (ndarray) – Strain vector increment at time step t to t+dTime.

  • time (float) – Array of step time and total time.

  • dTime (float) – Current time step size.

computeStress(stress, dStressdStrain, dStrain, time, dTime)[source]

Computes the stresses for a 3D material.

Parameters
  • stress (ndarray) – Vector containing the stresses.

  • dStressdStrain (ndarray) – Matrix containing dStress/dStrain.

  • dStrain (ndarray) – Strain vector increment at time step t to t+dTime.

  • time (float) – Array of step time and total time.

  • dTime (float) – Current time step size.

computeUniaxialStress(stress, dStressdStrain, dStrain, time, dTime)[source]

Computes the stresses for a uniaxial stress state.

Parameters
  • stress (ndarray) – Vector containing the stresses.

  • dStressdStrain (ndarray) – Matrix containing dStress/dStrain.

  • dStrain (ndarray) – Strain vector increment at time step t to t+dTime.

  • time (float) – Array of step time and total time.

  • dTime (float) – Current time step size.

elasticityMatrix()[source]

Initalize a 3D material elasticity matrix.

Returns

The elasticity matrix.

Return type

np.ndarray

getNumberOfRequiredStateVars()[source]

Returns number of needed material state Variables per integration point in the material.

Returns

Number of needed material state Vars.

Return type

int

getResult(result)[source]

Get the result, as a persistent view which is continiously updated by the material.

Parameters

result (str) – The name of the result.

Returns

The result.

Return type

float

Implementing your own materials

Relevant module: edelweissfe.materials.base.basehypoelasticmaterial

class edelweissfe.materials.base.basehypoelasticmaterial.BaseHypoElasticMaterial(materialProperties)[source]

Initialize.

Methods

assignCurrentStateVars(currentStateVars)

Assign new current state vars.

computePlaneStress(stress, dStressdStrain, ...)

Computes the stresses for a 2D material with plane stress.

computeStress(stress, dStressdStrain, ...)

Computes the stresses for a 3D material/2D material with plane strain.

computeUniaxialStress(stress, ...)

Computes the stresses for a uniaxial stress state.

getNumberOfRequiredStateVars()

Returns number of needed material state Variables per integration point in the material.

getResult(result)

Get the result, as a persistent view which is continiously updated by the material.

Parameters

materialProperties (ndarray) –

abstract assignCurrentStateVars(currentStateVars)[source]

Assign new current state vars.

Parameters

currentStateVars (ndarray) – Array containing the material state vars.

abstract computePlaneStress(stress, dStressdStrain, dStrain, time, dTime)[source]

Computes the stresses for a 2D material with plane stress.

Parameters
  • stress (ndarray) – Vector containing the stresses.

  • dStressdStrain (ndarray) – Matrix containing dStress/dStrain.

  • dStrain (ndarray) – Strain vector increment at time step t to t+dTime.

  • time (float) – Array of step time and total time.

  • dTime (float) – Current time step size.

abstract computeStress(stress, dStressdStrain, dStrain, time, dTime)[source]

Computes the stresses for a 3D material/2D material with plane strain.

Parameters
  • stress (ndarray) – Vector containing the stresses.

  • dStressdStrain (ndarray) – Matrix containing dStress/dStrain.

  • dStrain (ndarray) – Strain vector increment at time step t to t+dTime.

  • time (float) – Array of step time and total time.

  • dTime (float) – Current time step size.

abstract computeUniaxialStress(stress, dStressdStrain, dStrain, time, dTime)[source]

Computes the stresses for a uniaxial stress state.

Parameters
  • stress (ndarray) – Vector containing the stresses.

  • dStressdStrain (ndarray) – Matrix containing dStress/dStrain.

  • dStrain (ndarray) – Strain vector increment at time step t to t+dTime.

  • time (float) – Array of step time and total time.

  • dTime (float) – Current time step size.

abstract getNumberOfRequiredStateVars()[source]

Returns number of needed material state Variables per integration point in the material.

Returns

Number of needed material state Vars.

Return type

int

abstract getResult(result)[source]

Get the result, as a persistent view which is continiously updated by the material.

Parameters

result (str) – The name of the result.

Returns

The result.

Return type

float