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