Materials
Relevant module: edelweissfe.config.materiallibrary
Materials are defined in EdelweissFE using the *material
or *advancedmaterial
keyword.
Arguments for the *material
keyword are
Option |
Type |
Description |
---|---|---|
|
|
A unique ID, which is used for referencing the material in EdelweissFE. |
|
|
The name of of the material. |
|
|
The material properties as a float vector, multiline possible. |
|
|
(optional) The material provider. |
The material properties for materials using the *material
keyword are assigned as seen here:
*material, name=neohookewaplastic, id=Mat1, provider=edelweissmaterial
91304.34783, 100000., 260, 70, 320, 9
Arguments for the *advancedmaterial
keyword are
Option |
Type |
Description |
---|---|---|
|
|
A unique ID, which is used for referencing the material in EdelweissFE. |
|
|
The name of of the material. |
|
|
The material properties as a vector of strings, multiline possible. |
|
|
(optional) The material provider. |
The material properties for materials using the *advancedmaterial
keyword are assigned as seen here:
*advancedmaterial, name=hyperplasticadvanced, id=hyperplasticadvanced, provider=edelweissmaterial
psi_e='mu/2 * (I1/J**(2/3) - 3) + K/8 * (J**2 + 1/J**2 - 2)'
mu=91304.34783, K=100000., fy0=260, HLin=70, dfy=320, delta=9
a='2,3,4'
If the material provider is not given, marmotmaterial
is assumed. Materials are assigned to elements by means of Sections.
Provider edelweiss
Relevant module: edelweissfe.materials
Name |
Description |
Keyword |
---|---|---|
|
Linear elastic material. |
|
|
Von Mises material. |
|
|
Neo-Hookean Pence-Gou formulation ‘a’ material. |
|
|
Neo-Hookean Pence-Gou formulation ‘b’ material. |
|
|
Neo-Hookean Pence-Gou formulation ‘c’ material. |
|
|
Hyperelastic material with advanced defined energy density function using I1 and J. |
|
|
Hyperelastic material with advanced defined energy density function using I1, I2, J and C itself. |
|
|
Neo-Hookean Pence-Gou formulation ‘a’ material with J2 plasticity. |
|
|
Neo-Hookean Pence-Gou formulation ‘b’ material with J2 plasticity. |
|
|
Neo-Hookean Pence-Gou formulation ‘c’ material with J2 plasticity. |
|
|
Hyperelastic-plastic material with advanced defined energy density function using I1 and J. |
|
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
E - Elasticity module (Young’s modulus).
\(\mathbf{\nu}\) - Poisson’s ratio.
For the 2D plane strain and 3D material the following law in voigt notation is used
and for the 2D plane stress material the following law is used
For the second case the third strain component gets calculated by using
- class edelweissfe.materials.linearelastic.linearelastic.LinearElasticMaterial(materialProperties)[source]
Initialize.
- Attributes
materialProperties
The properties the material has.
- Parameters
materialProperties (ndarray) –
Methods
assignCurrentStateVars
(currentStateVars)Assign new current state vars.
computePlaneStress
(stress, dStress_dStrain, ...)Computes the stresses for a 2D material with plane stress.
computeStress
(stress, dStress_dStrain, ...)Computes the stresses for a 3D material.
computeStress2D
(stress, dStress_dStrain, ...)Computes the stresses for a 2D material with plane strain.
computeUniaxialStress
(stress, ...)Computes the stresses for a uniaxial stress state.
Initalize a 3D material elasticity matrix.
Initalize a 2D plane strain material elasticity matrix.
Initalize a 2D plane stress material elasticity matrix.
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.
- assignCurrentStateVars(currentStateVars)[source]
Assign new current state vars.
- Parameters
currentStateVars (ndarray) – Array containing the material state vars.
- computePlaneStress(stress, dStress_dStrain, dStrain, time, dTime)[source]
Computes the stresses for a 2D material with plane stress.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dStrain (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, dStress_dStrain, dStrain, time, dTime)[source]
Computes the stresses for a 3D material.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dStrain (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, dStress_dStrain, dStrain, time, dTime)[source]
Computes the stresses for a 2D material with plane strain.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dStrain (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, dStress_dStrain, dStrain, time, dTime)[source]
Computes the stresses for a uniaxial stress state.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dStrain (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
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
E - Elasticity module (Young’s modulus).
\(\mathbf{\nu}\) - Poisson’s ratio.
\(\mathbf{f_{y0}}\) - Yield stress.
\(\mathbf{H_{lin}}\) - Linear plastic hardening parameter.
\(\mathbf{\Delta f_y}\) - Multiplicator for nonlinear isotropic hardening.
\(\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
is used with
and \(\mathbf{s}\) as the deviatoric stress.
- class edelweissfe.materials.vonmises.vonmises.VonMisesMaterial(materialProperties)[source]
Initialize.
- Attributes
materialProperties
The properties the material has.
- Parameters
materialProperties (ndarray) –
Methods
assignCurrentStateVars
(currentStateVars)Assign new current state vars.
computePlaneStress
(stress, dStress_dStrain, ...)Computes the stresses for a plane stress material.
computeStress
(stress, dStress_dStrain, ...)Computes the stresses for a 3D material.
computeUniaxialStress
(stress, ...)Computes the stresses for a uniaxial stress state.
Initalize a 3D material elasticity matrix.
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.
- assignCurrentStateVars(currentStateVars)[source]
Assign new current state vars.
- Parameters
currentStateVars (ndarray) – Array containing the material state vars.
- computePlaneStress(stress, dStress_dStrain, dStrain, time, dTime)[source]
Computes the stresses for a plane stress material.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dStrain (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, dStress_dStrain, dStrain, time, dTime)[source]
Computes the stresses for a 3D material.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dStrain (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, dStress_dStrain, dStrain, time, dTime)[source]
Computes the stresses for a uniaxial stress state.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dStrain (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
Elastic Neo-Hookean W(I1, J) Pence-Gou [a] materials
These materials need the following parameters as input data in the correct order:
\(\mu\) - Shear modulus.
\(\kappa\) - Bulk modulus.
These materials base on a energy density function \(W(I_1, J)\), where \(I_1=\text{trace}(\mathbf{b})\) is the first and \(J=\det(\mathbf{F})\) is the second invariant of the left Cauchy-Green tensor \(\mathbf{b}=\mathbf{FF}^\text{T}\) with the deformation gradient \(\mathbf{F}\), the Kirchhoff stress is then:
The tangent modulus is then given by
The \(\mathbf{W_a}\) material is defined by
The stress can then be calculated with
and the tangent modulus is
- class edelweissfe.materials.neohooke.neohookepencegouformulationa.NeoHookeanWaMaterial(materialProperties)[source]
Initialize.
- Attributes
materialProperties
The properties the material has.
- Parameters
materialProperties (ndarray) –
Methods
assignCurrentStateVars
(currentStateVars)Assign new current state vars.
computeKirchhoff
(stress, ...)Computes the stresses for a 3D material/2D material with plane strain.
computePlaneKirchhoff
(stress, ...)Computes the stresses for a 2D material with plane stress.
computeUniaxialKirchhoff
(stress, ...)Computes the stresses for a uniaxial stress state.
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.
- assignCurrentStateVars(currentStateVars)[source]
Assign new current state vars.
- Parameters
currentStateVars (ndarray) – Array containing the material state vars.
- computeKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a 3D material/2D material with plane strain.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- computePlaneKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a 2D material with plane stress.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- computeUniaxialKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a uniaxial stress state.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- 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
- property materialProperties: ndarray
The properties the material has.
The \(\mathbf{W_b}\) material is defined by
The stress can then be calculated with
and the tangent modulus is
- class edelweissfe.materials.neohooke.neohookepencegouformulationb.NeoHookeanWbMaterial(materialProperties)[source]
Initialize.
- Attributes
materialProperties
The properties the material has.
- Parameters
materialProperties (ndarray) –
Methods
assignCurrentStateVars
(currentStateVars)Assign new current state vars.
computeKirchhoff
(stress, ...)Computes the stresses for a 3D material/2D material with plane strain.
computePlaneKirchhoff
(stress, ...)Computes the stresses for a 2D material with plane stress.
computeUniaxialKirchhoff
(stress, ...)Computes the stresses for a uniaxial stress state.
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.
- assignCurrentStateVars(currentStateVars)[source]
Assign new current state vars.
- Parameters
currentStateVars (ndarray) – Array containing the material state vars.
- computeKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a 3D material/2D material with plane strain.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- computePlaneKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a 2D material with plane stress.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- computeUniaxialKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a uniaxial stress state.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- 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
- property materialProperties: ndarray
The properties the material has.
The \(\mathbf{W_c}\) material is defined by
The stress can then be calculated with
and the tangent modulus is
- class edelweissfe.materials.neohooke.neohookepencegouformulationc.NeoHookeanWcMaterial(materialProperties)[source]
Initialize.
- Attributes
materialProperties
The properties the material has.
- Parameters
materialProperties (ndarray) –
Methods
assignCurrentStateVars
(currentStateVars)Assign new current state vars.
computeKirchhoff
(stress, ...)Computes the stresses for a 3D material/2D material with plane strain.
computePlaneKirchhoff
(stress, ...)Computes the stresses for a 2D material with plane stress.
computeUniaxialKirchhoff
(stress, ...)Computes the stresses for a uniaxial stress state.
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.
- assignCurrentStateVars(currentStateVars)[source]
Assign new current state vars.
- Parameters
currentStateVars (ndarray) – Array containing the material state vars.
- computeKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a 3D material/2D material with plane strain.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- computePlaneKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a 2D material with plane stress.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- computeUniaxialKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a uniaxial stress state.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- 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
- property materialProperties: ndarray
The properties the material has.
Advanced hyperelastic materials
These materials need the following parameters as input data using keywords:
mu
- Shear modulus.K
- Bulk modulus.psi_e
- Energy density function.a
- (Optional) your own parameters inpsi_e
(assignment with commas and quotation mark:a = '1.,2.,3'
).
The right Cauchy-Green tensor is defined as \(\mathbf{C}=\mathbf{F}^\text{T}\mathbf{F}\). These materials use the Kirchhoff stress and its corresponding tangent modulus.
Hyperelastic advanced material
This material class allows the user to input their own energy density function, as seen for the Neo-Hookean materials in the last section. This can be achieved by using the extra input parameter W=’f(C)’ in the input file. This material needs \(\kappa\) and \(\mu\) as input data. The energy density function must be a function of the form
with \(I_1=\text{trace}(\mathbf{C})\), \(J=\det(\mathbf{F})\) and the advanced parameters \(\mathbf{a}\) referred to as a[i] for the i-th parameter in the function in the input file.
Note
This material class uses the num-dual-package for automatic differentiation. This package needs to be installed before usage:
pip install num_dual
Hyperelastic advanced I2 extended material
This material class allows the user to input their own energy density function. Compared to the HyperelasticAdvancedMaterial
, this material allows
the second invariant \(I_2\) and \(\mathbf{C}\) itself to be used in the energy density function.
This can be achieved by using the extra input parameter W=’f(C)’ in the input file. This material needs \(\kappa\) and \(\mu\) as input data.
The energy density function must be a function of the form
with \(I_1=\text{trace}(\mathbf{C})\), \(I_2=\frac{1}{2}\left((\text{trace}(\mathbf{C}))^2 - \text{trace}(\mathbf{C}^2)\right)\), \(J=\det(\mathbf{F})\) and the advanced parameters \(\mathbf{a}\) referred to as a[i] for the i-th parameter in the function in the input file. The right Cauchy-Green tensor itself may also be used as an input.
Note
This material class uses the autograd and num-dual-package for automatic differentiation depending on how complicated the energy density function is. These two packages need to be installed before usage:
pip install num_dual && pip install autograd
- class edelweissfe.materials.hyperelasticadvanced.hyperelasticadvancedi2extended.HyperelasticAdvancedI2ExtendedMaterial(materialProperties)[source]
Initialize.
- Attributes
materialProperties
The properties the material has.
- Parameters
materialProperties (dict) –
Methods
assignCurrentStateVars
(currentStateVars)Assign new current state vars.
computeKirchhoff
(stress, ...)Computes the stresses for a 3D material/2D material with plane strain.
computePlaneKirchhoff
(stress, ...)Computes the stresses for a 2D material with plane stress.
computeUniaxialKirchhoff
(stress, ...)Computes the stresses for a uniaxial stress state.
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.
setEnergyFunction
(materialEnergy)Sets the energy density function for the custom material.
- assignCurrentStateVars(currentStateVars)[source]
Assign new current state vars.
- Parameters
currentStateVars (ndarray) – Array containing the material state vars.
- computeKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a 3D material/2D material with plane strain.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- computePlaneKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a 2D material with plane stress.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- computeUniaxialKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a uniaxial stress state.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- 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
- setEnergyFunction(materialEnergy)[source]
Sets the energy density function for the custom material.
- Parameters
materialEnergy (str) – Energy density function for the material.
- property materialProperties: dict
The properties the material has.
Elastic-plastic Neo-Hookean W(I1, J) Pence-Gou [a] materials
These materials use the same hyperelastic formulations as for the Elastic Neo-Hookean W(I1, J) Pence-Gou [a] materials with plasticity using the spatial Hencky-strain \(\mathbf{e}\) and the same yield and hardening functions as for the Von Mises material added onto them. This material needs the following material properties in the correct order:
\(\mathbf{\mu}\) - Shear modulus.
\(\mathbf{\kappa}\) - Bulk modulus.
\(\mathbf{f_{y0}}\) - Yield stress.
\(\mathbf{H_{lin}}\) - Linear plastic hardening parameter.
\(\mathbf{\Delta f_y}\) - Multiplicator for nonlinear isotropic hardening.
\(\mathbf{\delta}\) - Exponent for nonlinear isotropic hardening.
These three material formulations solve for the residual:
and give back the Kirchhoff stress and its corresponding tangent modulus. The full algorithm for these materials can be found in [b], chapter 14.
- class edelweissfe.materials.neohookeplastic.neohookepencegouformulationaplastic.NeoHookeanWaPlasticMaterial(materialProperties)[source]
Initialize.
- Attributes
materialProperties
The properties the material has.
- Parameters
materialProperties (ndarray) –
Methods
assignCurrentStateVars
(currentStateVars)Assign new current state vars.
computeKirchhoff
(stress, ...)Computes the stresses for a 3D material/2D material with plane strain.
computePlaneKirchhoff
(stress, ...)Computes the stresses for a 2D material with plane stress.
computeUniaxialKirchhoff
(stress, ...)Computes the stresses for a uniaxial stress state.
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.
- assignCurrentStateVars(currentStateVars)[source]
Assign new current state vars.
- Parameters
currentStateVars (ndarray) – Array containing the material state vars.
- computeKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a 3D material/2D material with plane strain.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- computePlaneKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a 2D material with plane stress.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- computeUniaxialKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a uniaxial stress state.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- 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
- property materialProperties: ndarray
The properties the material has.
- class edelweissfe.materials.neohookeplastic.neohookepencegouformulationbplastic.NeoHookeanWbPlasticMaterial(materialProperties)[source]
Initialize.
- Attributes
materialProperties
The properties the material has.
- Parameters
materialProperties (ndarray) –
Methods
assignCurrentStateVars
(currentStateVars)Assign new current state vars.
computeKirchhoff
(stress, ...)Computes the stresses for a 3D material/2D material with plane strain.
computePlaneKirchhoff
(stress, ...)Computes the stresses for a 2D material with plane stress.
computeUniaxialKirchhoff
(stress, ...)Computes the stresses for a uniaxial stress state.
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.
- assignCurrentStateVars(currentStateVars)[source]
Assign new current state vars.
- Parameters
currentStateVars (ndarray) – Array containing the material state vars.
- computeKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a 3D material/2D material with plane strain.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- computePlaneKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a 2D material with plane stress.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- computeUniaxialKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a uniaxial stress state.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- 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
- property materialProperties: ndarray
The properties the material has.
- class edelweissfe.materials.neohookeplastic.neohookepencegouformulationcplastic.NeoHookeanWcPlasticMaterial(materialProperties)[source]
Initialize.
- Attributes
materialProperties
The properties the material has.
- Parameters
materialProperties (ndarray) –
Methods
assignCurrentStateVars
(currentStateVars)Assign new current state vars.
computeKirchhoff
(stress, ...)Computes the stresses for a 3D material/2D material with plane strain.
computePlaneKirchhoff
(stress, ...)Computes the stresses for a 2D material with plane stress.
computeUniaxialKirchhoff
(stress, ...)Computes the stresses for a uniaxial stress state.
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.
- assignCurrentStateVars(currentStateVars)[source]
Assign new current state vars.
- Parameters
currentStateVars (ndarray) – Array containing the material state vars.
- computeKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a 3D material/2D material with plane strain.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- computePlaneKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a 2D material with plane stress.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- computeUniaxialKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a uniaxial stress state.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- 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
- property materialProperties: ndarray
The properties the material has.
Advanced hyperelastic-plastic material
This material class allows the user to input their own energy density function. This can be achieved by using the extra input parameter W=’f(C)’ in the input file. This material needs the following material properties in the correct order The algorithm from the section Elastic-plastic Neo-Hookean W(I1, J) Pence-Gou [a] materials is used. For this material, only the elastic part is differentiated by using automatic differentiation, the plastic part still uses analytical derivatives. This material needs the following parameters as input data using keywords:
mu
- Shear modulus.K
- Bulk modulus.fy0
- Yield stress.HLin
- Linear plastic hardening parameter.dfy
- Multiplicator for nonlinear isotropic hardening.delta
- Exponent for nonlinear isotropic hardening.psi_e
- Energy density function.a
- (Optional) your own parameters inpsi_e
(assignment with commas and quotation mark:a = '1.,2.,3'
).
The energy density function must be a function of the form
with \(\mathbf{C}\) itself and \(I_2\) being not allowed.
Note
This material class uses the num-dual-package for automatic differentiation. This package needs to be installed before usage:
pip install num_dual
Implementing your own materials
Relevant module for hypoelastic materials: edelweissfe.materials.base.basehypoelasticmaterial
- class edelweissfe.materials.base.basehypoelasticmaterial.BaseHypoElasticMaterial(materialProperties)[source]
Initialize.
- Attributes
materialProperties
The properties the material has.
- Parameters
materialProperties (ndarray) –
Methods
assignCurrentStateVars
(currentStateVars)Assign new current state vars.
computePlaneStress
(stress, dStress_dStrain, ...)Computes the stresses for a 2D material with plane stress.
computeStress
(stress, dStress_dStrain, ...)Computes the stresses for a 3D material/2D material with plane strain.
computeUniaxialStress
(stress, ...)Computes the stresses for a uniaxial stress state.
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.
- abstract assignCurrentStateVars(currentStateVars)[source]
Assign new current state vars.
- Parameters
currentStateVars (ndarray) – Array containing the material state vars.
- abstract computePlaneStress(stress, dStress_dStrain, dStrain, time, dTime)[source]
Computes the stresses for a 2D material with plane stress.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dStrain (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, dStress_dStrain, dStrain, time, dTime)[source]
Computes the stresses for a 3D material/2D material with plane strain.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dStrain (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, dStress_dStrain, dStrain, time, dTime)[source]
Computes the stresses for a uniaxial stress state.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dStrain (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
- property materialProperties: ndarray
The properties the material has.
Relevant module for hyperelastic materials: edelweissfe.materials.base.basehyperelasticmaterial
- class edelweissfe.materials.base.basehyperelasticmaterial.BaseHyperElasticMaterial(materialProperties)[source]
Initialize.
- Attributes
materialProperties
The properties the material has.
- Parameters
materialProperties (ndarray) –
Methods
assignCurrentStateVars
(currentStateVars)Assign new current state vars.
computeKirchhoff
(stress, ...)Computes the stresses for a 3D material/2D material with plane strain.
computePlaneKirchhoff
(stress, ...)Computes the stresses for a 2D material with plane stress.
computeUniaxialKirchhoff
(stress, ...)Computes the stresses for a uniaxial stress state.
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.
- abstract assignCurrentStateVars(currentStateVars)[source]
Assign new current state vars.
- Parameters
currentStateVars (ndarray) – Array containing the material state vars.
- abstract computeKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a 3D material/2D material with plane strain.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- abstract computePlaneKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a 2D material with plane stress.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
time (float) – Array of step time and total time.
dTime (float) – Current time step size.
- abstract computeUniaxialKirchhoff(stress, dStress_dDeformationGradient, deformationGradient, time, dTime)[source]
Computes the stresses for a uniaxial stress state.
- Parameters
stress (ndarray) – Vector containing the stresses.
dStress_dDeformationGradient (ndarray) – Matrix containing dStress/dStrain.
deformationGradient (ndarray) – The deformation gradient at time step t.
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
- property materialProperties: ndarray
The properties the material has.
[a] Thomas J. Pence and Kun Gou, “On compressible versions of the incompressible neo-Hookean material”, Mathematics and Mechanics of Solids, 20(2): 157-182, 2015
[b] EA de Souza Neto, D Perić and DRJ Owen, ”Computational methods for plasticity - Theory and applications”, John Wiley & Sons Ltd, Engineering, Swansea University Bay Campus, Fabian Way, Swansea, SA1 8EN, 2008