Module: Elastic#
- Name:
mod_mupro_elastic
- Depends on:
- Defined variables:
None
- Defined types:
Strain is NOT in voigt notation
The strain value in this module is NOT in voigt notation. The value of the strain are still as if it’s in tensor notation. The reason we have 6 component is to save memory space.
Defined Types#
type_mupro_ElasticContext#
Variables#
Variable |
Type |
Dimension |
Meaning |
---|---|---|---|
eigenstrain |
real64, pointer |
(6,Rn3,Rn2,Rn1) |
Eigenstrain |
strain |
real64 |
(6,z,y,x) |
Total strain |
displacement |
real64 |
(6,z,y,x) |
Displacement |
stress |
real64 |
(6,z,y,x) |
Stress |
energy |
real64 |
(6,z,y,x) |
Elastic Energy |
stiffness |
real64 |
(6,6) |
Elastic Stiffness |
filmMisfitStrain11 |
real64 |
- |
Epitaxial misfit strain \(\epsilon_{11}\) in thin film setup |
filmMisfitStrain22 |
real64 |
- |
Epitaxial misfit strain \(\epsilon_{22}\) in thin film setup |
filmMisfitStrain12 |
real64 |
- |
Epitaxial misfit strain \(\epsilon_{12}\) in thin film setup |
filmTopAppliedStress33 |
real64 |
- |
Applied stress \(\sigma_{33}\) on film surface in thin film setup |
filmTopAppliedStress23 |
real64 |
- |
Applied stress \(\sigma_{23}\) on film surface in thin film setup |
filmTopAppliedStress13 |
real64 |
- |
Applied stress \(\sigma_{13}\) on film surface in thin film setup |
bulkAppliedStrain |
real64 |
(6) |
Bulk strain constraints |
bulkAppliedStress |
real64 |
(6) |
Bulk stress constraints |
BC |
int32 |
- |
choice of bulk constraint, 1 for strain, 2 for stress |
Stiffness is in voigt notation
For convenience, the stiffness is expressed in voigt notation. The value of stiffness components in voigt notation are the same as their tensor counterparts, there is no multiplier between the conversion. $$ & \begin{pmatrix} C_{11} & C_{12} & C_{13} & C_{14} & C_{15} & C_{16}\
& C_{22} & C_{23} & C_{24} & C_{25} & C_{26}\
& - & C_{33} & C_{34} & C_{35} & C_{36}\
& - & - & C_{44} & C_{45} & C_{46}\
& - & - & - & C_{55} & C_{56}\
& - & - & - & - & C_{66} \end{pmatrix} = \ & \begin{pmatrix} C_{1111} & C_{1122} & C_{1133} & C_{1123} & C_{1113} & C_{1112}\
& C_{2222} & C_{2233} & C_{2223} & C_{2213} & C_{2212}\
& - & C_{3333} & C_{3323} & C_{3313} & C_{3312}\
& - & - & C_{2323} & C_{2313} & C_{2312}\
& - & - & - & C_{1313} & C_{1312}\
& - & - & - & - & C_{1212} \end{pmatrix} $$
Defined Subroutines
mupro_elastic_read_stiffness(table, name, stiffness)
This code subroutine is used to read the stiffness values of elastic materials with a specified name from a given table.
Argument |
Type(Intent) |
Meaning |
---|---|---|
context |
class(type_ElasticContext), intent(inout) |
Used to store the stiffness values found. The shape of the array is (6, 6) |
table |
type(toml_table), allocatable, intent(inout) |
A allocatable toml_table type variable, representing a table containing information about elastic materials. |
name |
character(len=*), intent(in) |
The name of the elastic material to search for |
Procedures
setup
Link the user defined strain, stress, displacement, etc. arrays to the corresponding array used in the library. Then, perform some necessary setup before actually solve the equation.
call elasticContext%setup()
Important
setup must be called before the elastic solve subroutines.
solve
Solve the mechanical equilibrium equation, get the strain, stress, and displacement distribution from the eigenstrain distribution.
call elasticContext%solve()