Module: Elastic#

Name

mod_mupro_elastic

Depends on

mod_mupro_size, mod_mupro_fft

Defined variables

None

Defined types

type_mupro_ElasticContext

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{split} & \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} \end{split}\]

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()