Module: Ferroelectric#
Semi-implicit thin film solver for second order differential equations of form:
Name: mod_mupro_msolve
Depends on: mod_mupro_base, mod_mupro_fft, mod_mupro_log
Defined variables: None
Defined types: - type_mupro_FerroelectricContext
Defined Types#
type_mupro_FerroelectricContext#
Variables
Variable  | 
Type  | 
Dimension  | 
Meaning  | 
|---|---|---|---|
stiffness  | 
real64  | 
(6,6)  | 
Elastic stiffness  | 
electrostrictive  | 
real64  | 
(6,6)  | 
Electrostrictive tensor  | 
eigenstrain  | 
real64,pointer  | 
(6,z,y,x)  | 
Eigenstrain  | 
elast  | 
real64,pointer  | 
(3,z,y,x)  | 
Elastic driving force  | 
elec  | 
real64,pointer  | 
(3,z,y,x)  | 
Electric driving force  | 
lan  | 
real64,pointer  | 
(3,z,y,x)  | 
Landau driving force  | 
op  | 
real64,pointer  | 
(3,z,y,x)  | 
Order parameter  | 
boundCharge  | 
real64,pointer  | 
(3,z,y,x)  | 
Bound charge  | 
landau_energy  | 
real64,pointer  | 
(3,z,y,x)  | 
Landau energy  | 
grad_energy  | 
real64,pointer  | 
(3,z,y,x)  | 
gradient energy  | 
a1,a2,a3  | 
real64  | 
-  | 
Landau coefficient  | 
a11,a22,a33  | 
real64  | 
-  | 
Landau coefficient  | 
a23,a13,a12  | 
real64  | 
-  | 
Landau coefficient  | 
a111,a112,a123  | 
real64  | 
-  | 
Landau coefficient  | 
a1111,a1112,a1122,a1123  | 
real64  | 
-  | 
Landau coefficient  | 
type_mupro_inhomoFerroelectricContext#
Variables
Variable  | 
Type  | 
Dimension  | 
Meaning  | 
|---|---|---|---|
stiffness  | 
real64  | 
(6,6)  | 
Elastic stiffness  | 
electrostrictive  | 
real64  | 
(6,6)  | 
Electrostrictive tensor  | 
eigenstrain  | 
real64,pointer  | 
(6,z,y,x)  | 
Eigenstrain  | 
elast  | 
real64,pointer  | 
(3,z,y,x)  | 
Elastic driving force  | 
elec  | 
real64,pointer  | 
(3,z,y,x)  | 
Electric driving force  | 
lan  | 
real64,pointer  | 
(3,z,y,x)  | 
Landau driving force  | 
op  | 
real64,pointer  | 
(3,z,y,x)  | 
Order parameter  | 
boundCharge  | 
real64,pointer  | 
(3,z,y,x)  | 
Bound charge  | 
landau_energy  | 
real64,pointer  | 
(3,z,y,x)  | 
Landau energy  | 
grad_energy  | 
real64,pointer  | 
(3,z,y,x)  | 
gradient energy  | 
a1,a2,a3  | 
real64,pointer  | 
-  | 
Landau coefficient  | 
a11,a22,a33  | 
real64,pointer  | 
-  | 
Landau coefficient  | 
a23,a13,a12  | 
real64,pointer  | 
-  | 
Landau coefficient  | 
a111,a112,a123  | 
real64,pointer  | 
-  | 
Landau coefficient  | 
a1111,a1112,a1122,a1123  | 
real64,pointer  | 
These two types inherit from type_ferroelectricBase
Procedures#
setup
get_gradient_energy
get_polarization_bound_charge
get_eigenstrain
get_elastic_driving_force
get_landau_driving_force
get_gradient_driving_force
All the above subroutines have a parameter of type type_FerroelectricBase, which can be converted to types type_mupro_FerroelectricContext and type_mupro_inhomoFerroelectricContext as needed
Argument  | 
Type(Intent)  | 
|---|---|
context  | 
type(type_FerroelectricBase), intent(inout) :: context  |