- antiphase_A_xThe x component of the AFD vector field
C++ Type:std::vector<VariableName>
Controllable:No
Description:The x component of the AFD vector field
- antiphase_A_yThe y component of the AFD vector field
C++ Type:std::vector<VariableName>
Controllable:No
Description:The y component of the AFD vector field
RotoBulkEnergyEighth
Calculates an integral whose integrand is the eighth order expansion of the AFD fields
Overview
Computes the free energy in the simulation box (volume ) corresponding to the bulk functional up to eighth order with,
where is the oxygen octahedral cage antiphase tilt vector and the Landau expansion coefficients of the phenomenological theory for a cubic parent phase.
Example Input File Syntax
Input Parameters
- antiphase_A_zThe z component of the AFD vector field
C++ Type:std::vector<VariableName>
Controllable:No
Description:The z component of the AFD vector field
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- energy_scale1the energy scale, useful for transition between eV and J
Default:1
C++ Type:double
Controllable:No
Description:the energy scale, useful for transition between eV and J
- execute_onTIMESTEP_ENDThe list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM, ALWAYS.
Default:TIMESTEP_END
C++ Type:ExecFlagEnum
Options:NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM, ALWAYS, TRANSFER
Controllable:No
Description:The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM, ALWAYS.
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
Optional Parameters
- allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
Default:False
C++ Type:bool
Controllable:No
Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- execution_order_group0Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
Default:0
C++ Type:int
Controllable:No
Description:Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
- force_postauxFalseForces the UserObject to be executed in POSTAUX
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in POSTAUX
- force_preauxFalseForces the UserObject to be executed in PREAUX
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in PREAUX
- force_preicFalseForces the UserObject to be executed in PREIC during initial setup
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in PREIC during initial setup
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- outputsVector of output names where you would like to restrict the output of variables(s) associated with this object
C++ Type:std::vector<OutputName>
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
Input Files
(test/tests/msca/BFO_dwP1A1_100.i)
Nx = 100
Ny = 1
Nz = 1
xMax = 9.42477796076938
yMax = 1.0
zMax = 1.0
freq = 0.2122065907891938
g11 = 12e-3
g12 = -3.0e-3
g44 = 3.0e-3
h11 = 2.0e-4
h12 = -0.2e-3
h44 = 0.8e-3
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = ${Nx}
ny = ${Ny}
nz = ${Nz}
xmin = 0.0
xmax = ${xMax}
ymin = 0.0
ymax = ${yMax}
zmin = 0.0
zmax = ${zMax}
elem_type = HEX8
[]
[./cnode]
input = gen
############################################
##
## additional boundary sideset (one node)
## to zero one of the elastic displacement vectors
## vectors and eliminates rigid body translations
## from the degrees of freedom
##
## NOTE: This must conform with the about
## [Mesh] block settings
##
############################################
type = ExtraNodesetGenerator
coord = '0.0 0.0 0.0'
new_boundary = 100
[../]
[]
[GlobalParams]
len_scale = 1.0
polar_x = polar_x
polar_y = polar_y
polar_z = polar_z
antiphase_A_x = antiphase_A_x
antiphase_A_y = antiphase_A_y
antiphase_A_z = antiphase_A_z
displacements = 'u_x u_y u_z'
potential_E_int = potential_E_int
[]
[Functions]
[./stripeP1]
type = ParsedFunction
value = 0.54*cos(${freq}*(x))
[../]
[./stripeP2]
type = ParsedFunction
value = -0.54*cos(${freq}*(x))
[../]
[./stripeA1]
type = ParsedFunction
value = 7.37*cos(${freq}*(x))
[../]
[./stripeA2]
type = ParsedFunction
value = -7.37*cos(${freq}*(x))
[../]
[./constPm]
type = ParsedFunction
value = -0.54
[../]
[./constPp]
type = ParsedFunction
value = 0.54
[../]
[./constAm]
type = ParsedFunction
value = -7.37
[../]
[./constAp]
type = ParsedFunction
value = 7.37
[../]
[]
[Variables]
[./u_x]
[../]
[./u_y]
[../]
[./u_z]
[../]
[./global_strain]
order = SIXTH
family = SCALAR
[../]
[./polar_x]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constPp
[../]
[../]
[./polar_y]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constPp
[../]
[../]
[./polar_z]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = stripeP1
[../]
[../]
[./antiphase_A_x]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constAp
[../]
[../]
[./antiphase_A_y]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constAp
[../]
[../]
[./antiphase_A_z]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = stripeA1
[../]
[../]
[./potential_E_int]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./s00]
order = CONSTANT
family = MONOMIAL
[../]
[./s01]
order = CONSTANT
family = MONOMIAL
[../]
[./s10]
order = CONSTANT
family = MONOMIAL
[../]
[./s11]
order = CONSTANT
family = MONOMIAL
[../]
[./e00]
order = CONSTANT
family = MONOMIAL
[../]
[./e01]
order = CONSTANT
family = MONOMIAL
[../]
[./e10]
order = CONSTANT
family = MONOMIAL
[../]
[./e11]
order = CONSTANT
family = MONOMIAL
[../]
[./e22]
order = CONSTANT
family = MONOMIAL
[../]
[./e12]
order = CONSTANT
family = MONOMIAL
[../]
[./e21]
order = CONSTANT
family = MONOMIAL
[../]
[./e02]
order = CONSTANT
family = MONOMIAL
[../]
[./e20]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./disp_x]
type = GlobalDisplacementAux
variable = disp_x
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 0
[../]
[./disp_y]
type = GlobalDisplacementAux
variable = disp_y
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 1
[../]
[./disp_z]
type = GlobalDisplacementAux
variable = disp_z
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 2
[../]
[./s00]
type = RankTwoAux
variable = s00
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./s01]
type = RankTwoAux
variable = s01
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[./s10]
type = RankTwoAux
variable = s10
rank_two_tensor = stress
index_i = 1
index_j = 0
[../]
[./s11]
type = RankTwoAux
variable = s11
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./e00]
type = RankTwoAux
variable = e00
rank_two_tensor = total_strain
index_i = 0
index_j = 0
[../]
[./e01]
type = RankTwoAux
variable = e01
rank_two_tensor = total_strain
index_i = 0
index_j = 1
[../]
[./e10]
type = RankTwoAux
variable = e10
rank_two_tensor = total_strain
index_i = 1
index_j = 0
[../]
[./e11]
type = RankTwoAux
variable = e11
rank_two_tensor = total_strain
index_i = 1
index_j = 1
[../]
[./e12]
type = RankTwoAux
variable = e12
rank_two_tensor = total_strain
index_i = 1
index_j = 2
[../]
[./e21]
type = RankTwoAux
variable = e21
rank_two_tensor = total_strain
index_i = 2
index_j = 1
[../]
[./e20]
type = RankTwoAux
variable = e20
rank_two_tensor = total_strain
index_i = 2
index_j = 0
[../]
[./e02]
type = RankTwoAux
variable = e02
rank_two_tensor = total_strain
index_i = 0
index_j = 2
[../]
[./e22]
type = RankTwoAux
variable = e22
rank_two_tensor = total_strain
index_i = 2
index_j = 2
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[./rotostr_ux]
type = RotostrictiveCouplingDispDerivative
variable = u_x
component = 0
[../]
[./rotostr_uy]
type = RotostrictiveCouplingDispDerivative
variable = u_y
component = 1
[../]
[./rotostr_uz]
type = RotostrictiveCouplingDispDerivative
variable = u_z
component = 2
[../]
[./electrostr_ux]
type = ElectrostrictiveCouplingDispDerivative
variable = u_x
component = 0
[../]
[./electrostr_uy]
type = ElectrostrictiveCouplingDispDerivative
variable = u_y
component = 1
[../]
[./electrostr_uz]
type = ElectrostrictiveCouplingDispDerivative
variable = u_z
component = 2
[../]
### Operators for the polar field: ###
[./bed_x]
type = BulkEnergyDerivativeEighth
variable = polar_x
component = 0
[../]
[./bed_y]
type = BulkEnergyDerivativeEighth
variable = polar_y
component = 1
[../]
[./bed_z]
type = BulkEnergyDerivativeEighth
variable = polar_z
component = 2
[../]
[./walled_x]
type = WallEnergyDerivative
variable = polar_x
component = 0
[../]
[./walled_y]
type = WallEnergyDerivative
variable = polar_y
component = 1
[../]
[./walled_z]
type = WallEnergyDerivative
variable = polar_z
component = 2
[../]
[./walled2_x]
type = Wall2EnergyDerivative
variable = polar_x
component = 0
[../]
[./walled2_y]
type = Wall2EnergyDerivative
variable = polar_y
component = 1
[../]
[./walled2_z]
type = Wall2EnergyDerivative
variable = polar_z
component = 2
[../]
[./walled_a_x]
type = AFDWallEnergyDerivative
variable = antiphase_A_x
component = 0
[../]
[./walled_a_y]
type = AFDWallEnergyDerivative
variable = antiphase_A_y
component = 1
[../]
[./walled_a_z]
type = AFDWallEnergyDerivative
variable = antiphase_A_z
component = 2
[../]
[./walled2_a_x]
type = AFDWall2EnergyDerivative
variable = antiphase_A_x
component = 0
[../]
[./walled2_a_y]
type = AFDWall2EnergyDerivative
variable = antiphase_A_y
component = 1
[../]
[./walled2_a_z]
type = AFDWall2EnergyDerivative
variable = antiphase_A_z
component = 2
[../]
[./roto_polar_coupled_x]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_x
component = 0
[../]
[./roto_polar_coupled_y]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_y
component = 1
[../]
[./roto_polar_coupled_z]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_z
component = 2
[../]
[./roto_dis_coupled_x]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_x
component = 0
[../]
[./roto_dis_coupled_y]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_y
component = 1
[../]
[./roto_dis_coupled_z]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_z
component = 2
[../]
[./electrostr_polar_coupled_x]
type = ElectrostrictiveCouplingPolarDerivative
variable = polar_x
component = 0
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./electrostr_polar_coupled_y]
type = ElectrostrictiveCouplingPolarDerivative
variable = polar_y
component = 1
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./electrostr_polar_coupled_z]
type = ElectrostrictiveCouplingPolarDerivative
variable = polar_z
component = 2
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
#Operators for the AFD field
[./rbed_x]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_x
component = 0
[../]
[./rbed_y]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_y
component = 1
[../]
[./rbed_z]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_z
component = 2
[../]
[./rotostr_dis_coupled_x]
type = RotostrictiveCouplingDistortDerivative
variable = antiphase_A_x
component = 0
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./rotostr_dis_coupled_y]
type = RotostrictiveCouplingDistortDerivative
variable = antiphase_A_y
component = 1
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./rotostr_dis_coupled_z]
type = RotostrictiveCouplingDistortDerivative
variable = antiphase_A_z
component = 2
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./polar_x_electric_E]
type = PolarElectricEStrong
variable = potential_E_int
[../]
[./FE_E_int]
type = Electrostatics
variable = potential_E_int
[../]
[./polar_electric_px]
type = PolarElectricPStrong
variable = polar_x
component = 0
[../]
[./polar_electric_py]
type = PolarElectricPStrong
variable = polar_y
component = 1
[../]
[./polar_electric_pz]
type = PolarElectricPStrong
variable = polar_z
component = 2
[../]
[./polar_x_time]
type = TimeDerivativeScaled
variable=polar_x
time_scale = 1.0
block = '0'
[../]
[./polar_y_time]
type = TimeDerivativeScaled
variable=polar_y
time_scale = 1.0
block = '0'
[../]
[./polar_z_time]
type = TimeDerivativeScaled
variable = polar_z
time_scale = 1.0
block = '0'
[../]
[./a_x_time]
type = TimeDerivativeScaled
variable = antiphase_A_x
time_scale = 0.01
block = '0'
[../]
[./a_y_time]
type = TimeDerivativeScaled
variable = antiphase_A_y
time_scale = 0.01
block = '0'
[../]
[./a_z_time]
type = TimeDerivativeScaled
variable = antiphase_A_z
time_scale = 0.01
block = '0'
[../]
[./u_x_time]
type = TimeDerivativeScaled
variable = u_x
time_scale = 1.0
[../]
[./u_y_time]
type = TimeDerivativeScaled
variable = u_y
time_scale = 1.0
[../]
[./u_z_time]
type = TimeDerivativeScaled
variable = u_z
time_scale = 1.0
[../]
[]
[ScalarKernels]
[./global_strain]
type = GlobalStrain
variable = global_strain
global_strain_uo = global_strain_uo
[../]
[]
[Materials]
[./Landau_P]
type = GenericConstantMaterial
prop_names = 'alpha1 alpha11 alpha12 alpha111 alpha112 alpha123 alpha1111 alpha1112 alpha1122 alpha1123'
prop_values = '-2.81296 1.72351 2.24147 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./Landau_A]
type = GenericConstantMaterial
prop_names = 'beta1 beta11 beta12 beta111 beta112 beta123 beta1111 beta1112 beta1122 beta1123'
prop_values = '-0.0137763 0.0000349266 0.0000498846 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./P_A_couple]
type = GenericConstantMaterial
prop_names = 't1111 t1122 t1212 t42111111 t24111111 t42111122 t24112222 t42112233 t24112233 t42112211 t24111122 t42111212 t42123312 t24121112 t24121233 t6211111111 t2611111111 t6211111122 t2611222222 t4411111111 t4411112222'
prop_values = '0.012516 0.0180504 -0.036155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./Landau_G]
type = GenericConstantMaterial
prop_names = 'G110 G11_G110 G12_G110 G44_G110 G44P_G110'
prop_values = '1.0 ${g11} ${g12} ${g44} 0.0'
[../]
[./Landau_H]
type = GenericConstantMaterial
prop_names = 'H110 H11_H110 H12_H110 H44_H110 H44P_H110'
prop_values = '1.0 ${h11} ${h12} ${h44} 0.0'
[../]
[./mat_C]
type = GenericConstantMaterial
prop_names = 'C11 C12 C44'
prop_values = '295.179 117.567 74.0701'
[../]
[./mat_Q]
type = GenericConstantMaterial
prop_names = 'Q11 Q12 Q44'
prop_values = '-0.0603833 0.0111245 -0.0175686'
[../]
[./mat_R]
type = GenericConstantMaterial
prop_names = 'R11 R12 R44'
prop_values = '-0.0000878064 0.0000295306 0.0000627962'
[../]
[./mat_q]
type = GenericConstantMaterial
prop_names = 'q11 q12 q44'
prop_values = '-30.4162 -5.01496 -10.4105'
#the point is the following: use a slightly different definition of Q_ij than Hlinka
[../]
[./mat_r]
type = GenericConstantMaterial
prop_names = 'r11 r12 r44'
prop_values = '-0.0379499 0.00373096 0.0372105'
[../]
[./elasticity_tensor_1]
type = ComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '295.179 117.567 117.567 295.179 117.567 295.179 74.0701 74.0701 74.0701'
[../]
[./strain]
type = ComputeSmallStrain
global_strain = global_strain
[../]
[./global_strain]
type = ComputeGlobalStrain
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./permitivitty_1]
###############################################
##
## so-called background dielectric constant
## (it encapsulates the motion of core electrons
## at high frequency) = e_b*e_0 (here we use
## e_b = 10), see PRB. 74, 104014, (2006)
##
###############################################
type = GenericConstantMaterial
prop_names = 'permittivity'
prop_values = '0.08854187'
[../]
[]
[Postprocessors]
[./dt]
type = TimestepSize
[../]
[./FbP]
type = BulkEnergyEighth
execute_on = 'timestep_end'
[../]
[./FbA]
type = RotoBulkEnergyEighth
execute_on = 'timestep_end'
[../]
[./FcPA]
type = RotoPolarCoupledEnergyEighth
execute_on = 'timestep_end'
[../]
[./FgP]
type = WallEnergy
execute_on = 'timestep_end'
[../]
[./FgA]
type = AFDWallEnergy
execute_on = 'timestep_end'
[../]
[./FcPu]
type = ElectrostrictiveCouplingEnergy
execute_on = 'timestep_end'
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./FcAu]
type = RotostrictiveCouplingEnergy
execute_on = 'timestep_end'
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./Felu]
type = ElasticEnergy
execute_on = 'timestep_end'
[../]
[./Fele]
type = ElectrostaticEnergy
execute_on = 'initial timestep_end'
[../]
[./Ftot]
type = LinearCombinationPostprocessor
pp_names = 'FbP FbA FgP FgA FcPA FcPu FcAu Felu Fele'
pp_coefs = ' 1 1 1 1 1 1 1 1 1'
execute_on = 'timestep_end'
##########################################
#
# NOTE: Ferret output is in attojoules
#
##########################################
[../]
[./perc_change]
type = EnergyRatePostprocessor
postprocessor = Ftot
execute_on = 'timestep_end'
dt = dt
[../]
[]
[BCs]
[./Periodic]
[./x]
auto_direction = 'x'
variable = 'u_x u_y u_z polar_x polar_y polar_z antiphase_A_x antiphase_A_y antiphase_A_z'
[../]
[./xyz]
auto_direction = 'x y z'
variable = 'potential_E_int'
[../]
[../]
# fix center point location
[./centerfix_x]
type = DirichletBC
boundary = 100
variable = u_x
value = 0
[../]
[./centerfix_y]
type = DirichletBC
boundary = 100
variable = u_y
value = 0
[../]
[./centerfix_z]
type = DirichletBC
boundary = 100
variable = u_z
value = 0
[../]
[]
[UserObjects]
[./global_strain_uo]
type = GlobalBFOMaterialRVEUserObject
execute_on = 'Initial Linear Nonlinear'
[../]
[./kill]
type = Terminator
expression = 'perc_change <= 5.0e-7'
[../]
[]
#=
[Preconditioning]
[./smp]
type = SMP
full = true
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart -snes_atol -snes_rtol -ksp_rtol -pc_type -build_twosided'
petsc_options_value = ' 121 1e-8 1e-7 1e-6 bjacobi allreduce'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
scheme = 'bdf2'
dtmin = 1e-13
dtmax = 10.0
[./TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 25 #usually 10
linear_iteration_ratio = 100
dt = 0.08
growth_factor = 1.1
[../]
num_steps = 3
[]
#=
[Outputs]
print_linear_residuals = false
perf_graph_live = false
[./out]
type = Exodus
file_base = BFO_dwP1A1_100
elemental_as_nodal = true
[../]
[]
(test/tests/msca/BFO_P0A0.i)
Nx = 5
Ny = 5
Nz = 5
xMax = 2.0
yMax = 2.0
zMax = 2.0
g11 = 12e-3
g12 = -3.0e-3
g44 = 3.0e-3
h11 = 2.0e-4
h12 = -0.2e-3
h44 = 0.8e-3
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = ${Nx}
ny = ${Ny}
nz = ${Nz}
xmin = 0.0
xmax = ${xMax}
ymin = 0.0
ymax = ${yMax}
zmin = 0.0
zmax = ${zMax}
elem_type = HEX8
[]
[./cnode]
input = gen
############################################
##
## additional boundary sideset (one node)
## to zero one of the elastic displacement vectors
## vectors and eliminates rigid body translations
## from the degrees of freedom
##
## NOTE: This must conform with the about
## [Mesh] block settings
##
############################################
type = ExtraNodesetGenerator
coord = '0.0 0.0 0.0'
new_boundary = 100
[../]
[]
[GlobalParams]
len_scale = 1.0
polar_x = polar_x
polar_y = polar_y
polar_z = polar_z
antiphase_A_x = antiphase_A_x
antiphase_A_y = antiphase_A_y
antiphase_A_z = antiphase_A_z
displacements = 'u_x u_y u_z'
potential_E_int = potential_E_int
[]
[Functions]
[./constPm]
type = ParsedFunction
value = -0.54
[../]
[./constPp]
type = ParsedFunction
value = 0.54
[../]
[./constAm]
type = ParsedFunction
value = -7.37
[../]
[./constAp]
type = ParsedFunction
value = 7.37
[../]
[]
[Variables]
[./u_x]
[../]
[./u_y]
[../]
[./u_z]
[../]
[./global_strain]
order = SIXTH
family = SCALAR
[../]
[./polar_x]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constPp
[../]
[../]
[./polar_y]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constPp
[../]
[../]
[./polar_z]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constPm
[../]
[../]
[./antiphase_A_x]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constAp
[../]
[../]
[./antiphase_A_y]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constAp
[../]
[../]
[./antiphase_A_z]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constAm
[../]
[../]
[./potential_E_int]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./s00]
order = CONSTANT
family = MONOMIAL
[../]
[./s01]
order = CONSTANT
family = MONOMIAL
[../]
[./s10]
order = CONSTANT
family = MONOMIAL
[../]
[./s11]
order = CONSTANT
family = MONOMIAL
[../]
[./e00]
order = CONSTANT
family = MONOMIAL
[../]
[./e01]
order = CONSTANT
family = MONOMIAL
[../]
[./e10]
order = CONSTANT
family = MONOMIAL
[../]
[./e11]
order = CONSTANT
family = MONOMIAL
[../]
[./e22]
order = CONSTANT
family = MONOMIAL
[../]
[./e12]
order = CONSTANT
family = MONOMIAL
[../]
[./e21]
order = CONSTANT
family = MONOMIAL
[../]
[./e02]
order = CONSTANT
family = MONOMIAL
[../]
[./e20]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./disp_x]
type = GlobalDisplacementAux
variable = disp_x
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 0
[../]
[./disp_y]
type = GlobalDisplacementAux
variable = disp_y
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 1
[../]
[./disp_z]
type = GlobalDisplacementAux
variable = disp_z
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 2
[../]
[./s00]
type = RankTwoAux
variable = s00
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./s01]
type = RankTwoAux
variable = s01
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[./s10]
type = RankTwoAux
variable = s10
rank_two_tensor = stress
index_i = 1
index_j = 0
[../]
[./s11]
type = RankTwoAux
variable = s11
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./e00]
type = RankTwoAux
variable = e00
rank_two_tensor = total_strain
index_i = 0
index_j = 0
[../]
[./e01]
type = RankTwoAux
variable = e01
rank_two_tensor = total_strain
index_i = 0
index_j = 1
[../]
[./e10]
type = RankTwoAux
variable = e10
rank_two_tensor = total_strain
index_i = 1
index_j = 0
[../]
[./e11]
type = RankTwoAux
variable = e11
rank_two_tensor = total_strain
index_i = 1
index_j = 1
[../]
[./e12]
type = RankTwoAux
variable = e12
rank_two_tensor = total_strain
index_i = 1
index_j = 2
[../]
[./e21]
type = RankTwoAux
variable = e21
rank_two_tensor = total_strain
index_i = 2
index_j = 1
[../]
[./e20]
type = RankTwoAux
variable = e20
rank_two_tensor = total_strain
index_i = 2
index_j = 0
[../]
[./e02]
type = RankTwoAux
variable = e02
rank_two_tensor = total_strain
index_i = 0
index_j = 2
[../]
[./e22]
type = RankTwoAux
variable = e22
rank_two_tensor = total_strain
index_i = 2
index_j = 2
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[./rotostr_ux]
type = RotostrictiveCouplingDispDerivative
variable = u_x
component = 0
[../]
[./rotostr_uy]
type = RotostrictiveCouplingDispDerivative
variable = u_y
component = 1
[../]
[./rotostr_uz]
type = RotostrictiveCouplingDispDerivative
variable = u_z
component = 2
[../]
[./electrostr_ux]
type = ElectrostrictiveCouplingDispDerivative
variable = u_x
component = 0
[../]
[./electrostr_uy]
type = ElectrostrictiveCouplingDispDerivative
variable = u_y
component = 1
[../]
[./electrostr_uz]
type = ElectrostrictiveCouplingDispDerivative
variable = u_z
component = 2
[../]
### Operators for the polar field: ###
[./bed_x]
type = BulkEnergyDerivativeEighth
variable = polar_x
component = 0
[../]
[./bed_y]
type = BulkEnergyDerivativeEighth
variable = polar_y
component = 1
[../]
[./bed_z]
type = BulkEnergyDerivativeEighth
variable = polar_z
component = 2
[../]
[./walled_x]
type = WallEnergyDerivative
variable = polar_x
component = 0
[../]
[./walled_y]
type = WallEnergyDerivative
variable = polar_y
component = 1
[../]
[./walled_z]
type = WallEnergyDerivative
variable = polar_z
component = 2
[../]
[./walled2_x]
type = Wall2EnergyDerivative
variable = polar_x
component = 0
[../]
[./walled2_y]
type = Wall2EnergyDerivative
variable = polar_y
component = 1
[../]
[./walled2_z]
type = Wall2EnergyDerivative
variable = polar_z
component = 2
[../]
[./walled_a_x]
type = AFDWallEnergyDerivative
variable = antiphase_A_x
component = 0
[../]
[./walled_a_y]
type = AFDWallEnergyDerivative
variable = antiphase_A_y
component = 1
[../]
[./walled_a_z]
type = AFDWallEnergyDerivative
variable = antiphase_A_z
component = 2
[../]
[./walled2_a_x]
type = AFDWall2EnergyDerivative
variable = antiphase_A_x
component = 0
[../]
[./walled2_a_y]
type = AFDWall2EnergyDerivative
variable = antiphase_A_y
component = 1
[../]
[./walled2_a_z]
type = AFDWall2EnergyDerivative
variable = antiphase_A_z
component = 2
[../]
[./roto_polar_coupled_x]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_x
component = 0
[../]
[./roto_polar_coupled_y]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_y
component = 1
[../]
[./roto_polar_coupled_z]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_z
component = 2
[../]
[./roto_dis_coupled_x]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_x
component = 0
[../]
[./roto_dis_coupled_y]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_y
component = 1
[../]
[./roto_dis_coupled_z]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_z
component = 2
[../]
[./electrostr_polar_coupled_x]
type = ElectrostrictiveCouplingPolarDerivative
variable = polar_x
component = 0
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./electrostr_polar_coupled_y]
type = ElectrostrictiveCouplingPolarDerivative
variable = polar_y
component = 1
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./electrostr_polar_coupled_z]
type = ElectrostrictiveCouplingPolarDerivative
variable = polar_z
component = 2
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
#Operators for the AFD field
[./rbed_x]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_x
component = 0
[../]
[./rbed_y]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_y
component = 1
[../]
[./rbed_z]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_z
component = 2
[../]
[./rotostr_dis_coupled_x]
type = RotostrictiveCouplingDistortDerivative
variable = antiphase_A_x
component = 0
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./rotostr_dis_coupled_y]
type = RotostrictiveCouplingDistortDerivative
variable = antiphase_A_y
component = 1
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./rotostr_dis_coupled_z]
type = RotostrictiveCouplingDistortDerivative
variable = antiphase_A_z
component = 2
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./polar_x_electric_E]
type = PolarElectricEStrong
variable = potential_E_int
[../]
[./FE_E_int]
type = Electrostatics
variable = potential_E_int
[../]
[./polar_electric_px]
type = PolarElectricPStrong
variable = polar_x
component = 0
[../]
[./polar_electric_py]
type = PolarElectricPStrong
variable = polar_y
component = 1
[../]
[./polar_electric_pz]
type = PolarElectricPStrong
variable = polar_z
component = 2
[../]
[./polar_x_time]
type = TimeDerivativeScaled
variable=polar_x
time_scale = 1.0
block = '0'
[../]
[./polar_y_time]
type = TimeDerivativeScaled
variable=polar_y
time_scale = 1.0
block = '0'
[../]
[./polar_z_time]
type = TimeDerivativeScaled
variable = polar_z
time_scale = 1.0
block = '0'
[../]
[./a_x_time]
type = TimeDerivativeScaled
variable = antiphase_A_x
time_scale = 0.01
block = '0'
[../]
[./a_y_time]
type = TimeDerivativeScaled
variable = antiphase_A_y
time_scale = 0.01
block = '0'
[../]
[./a_z_time]
type = TimeDerivativeScaled
variable = antiphase_A_z
time_scale = 0.01
block = '0'
[../]
[./u_x_time]
type = TimeDerivativeScaled
variable = u_x
time_scale = 1.0
[../]
[./u_y_time]
type = TimeDerivativeScaled
variable = u_y
time_scale = 1.0
[../]
[./u_z_time]
type = TimeDerivativeScaled
variable = u_z
time_scale = 1.0
[../]
[]
[ScalarKernels]
[./global_strain]
type = GlobalStrain
variable = global_strain
global_strain_uo = global_strain_uo
[../]
[]
[Materials]
[./Landau_P]
type = GenericConstantMaterial
prop_names = 'alpha1 alpha11 alpha12 alpha111 alpha112 alpha123 alpha1111 alpha1112 alpha1122 alpha1123'
prop_values = '-2.81296 1.72351 2.24147 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./Landau_A]
type = GenericConstantMaterial
prop_names = 'beta1 beta11 beta12 beta111 beta112 beta123 beta1111 beta1112 beta1122 beta1123'
prop_values = '-0.0137763 0.0000349266 0.0000498846 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./P_A_couple]
type = GenericConstantMaterial
prop_names = 't1111 t1122 t1212 t42111111 t24111111 t42111122 t24112222 t42112233 t24112233 t42112211 t24111122 t42111212 t42123312 t24121112 t24121233 t6211111111 t2611111111 t6211111122 t2611222222 t4411111111 t4411112222'
prop_values = '0.012516 0.0180504 -0.036155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./Landau_G]
type = GenericConstantMaterial
prop_names = 'G110 G11_G110 G12_G110 G44_G110 G44P_G110'
prop_values = '1.0 ${g11} ${g12} ${g44} 0.0'
[../]
[./Landau_H]
type = GenericConstantMaterial
prop_names = 'H110 H11_H110 H12_H110 H44_H110 H44P_H110'
prop_values = '1.0 ${h11} ${h12} ${h44} 0.0'
[../]
[./mat_C]
type = GenericConstantMaterial
prop_names = 'C11 C12 C44'
prop_values = '295.179 117.567 74.0701'
[../]
[./mat_Q]
type = GenericConstantMaterial
prop_names = 'Q11 Q12 Q44'
prop_values = '-0.0603833 0.0111245 -0.0175686'
[../]
[./mat_R]
type = GenericConstantMaterial
prop_names = 'R11 R12 R44'
prop_values = '-0.0000878064 0.0000295306 0.0000627962'
[../]
[./mat_q]
type = GenericConstantMaterial
prop_names = 'q11 q12 q44'
prop_values = '-30.4162 -5.01496 -10.4105'
#the point is the following: use a slightly different definition of Q_ij than Hlinka
[../]
[./mat_r]
type = GenericConstantMaterial
prop_names = 'r11 r12 r44'
prop_values = '-0.0379499 0.00373096 0.0372105'
[../]
[./elasticity_tensor_1]
type = ComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '295.179 117.567 117.567 295.179 117.567 295.179 74.0701 74.0701 74.0701'
[../]
[./strain]
type = ComputeSmallStrain
global_strain = global_strain
[../]
[./global_strain]
type = ComputeGlobalStrain
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./permitivitty_1]
###############################################
##
## so-called background dielectric constant
## (it encapsulates the motion of core electrons
## at high frequency) = e_b*e_0 (here we use
## e_b = 10), see PRB. 74, 104014, (2006)
##
###############################################
type = GenericConstantMaterial
prop_names = 'permittivity'
prop_values = '0.08854187'
[../]
[]
[Postprocessors]
[./dt]
type = TimestepSize
[../]
[./FbP]
type = BulkEnergyEighth
execute_on = 'timestep_end'
[../]
[./FbA]
type = RotoBulkEnergyEighth
execute_on = 'timestep_end'
[../]
[./FcPA]
type = RotoPolarCoupledEnergyEighth
execute_on = 'timestep_end'
[../]
[./FgP]
type = WallEnergy
execute_on = 'timestep_end'
[../]
[./FgA]
type = AFDWallEnergy
execute_on = 'timestep_end'
[../]
[./FcPu]
type = ElectrostrictiveCouplingEnergy
execute_on = 'timestep_end'
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./FcAu]
type = RotostrictiveCouplingEnergy
execute_on = 'timestep_end'
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./Felu]
type = ElasticEnergy
execute_on = 'timestep_end'
[../]
[./Fele]
type = ElectrostaticEnergy
execute_on = 'initial timestep_end'
[../]
[./Ftot]
type = LinearCombinationPostprocessor
pp_names = 'FbP FbA FgP FgA FcPA FcPu FcAu Felu Fele'
pp_coefs = ' 1 1 1 1 1 1 1 1 1'
execute_on = 'timestep_end'
##########################################
#
# NOTE: Ferret output is in attojoules
#
##########################################
[../]
[./perc_change]
type = EnergyRatePostprocessor
postprocessor = Ftot
execute_on = 'timestep_end'
dt = dt
[../]
[]
[BCs]
[./Periodic]
[./x]
auto_direction = 'x y z'
variable = 'u_x u_y u_z polar_x polar_y polar_z antiphase_A_x antiphase_A_y antiphase_A_z'
[../]
[./xyz]
auto_direction = 'x y z'
variable = 'potential_E_int'
[../]
[../]
# fix center point location
[./centerfix_x]
type = DirichletBC
boundary = 100
variable = u_x
value = 0
[../]
[./centerfix_y]
type = DirichletBC
boundary = 100
variable = u_y
value = 0
[../]
[./centerfix_z]
type = DirichletBC
boundary = 100
variable = u_z
value = 0
[../]
[]
[UserObjects]
[./global_strain_uo]
type = GlobalBFOMaterialRVEUserObject
execute_on = 'Initial Linear Nonlinear'
[../]
[./kill]
type = Terminator
expression = 'perc_change <= 5.0e-7'
[../]
[]
#=
[Preconditioning]
[./smp]
type = SMP
full = true
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart -snes_atol -snes_rtol -ksp_rtol -pc_type -build_twosided'
petsc_options_value = ' 121 1e-8 1e-7 1e-6 bjacobi allreduce'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
scheme = 'bdf2'
dtmin = 1e-13
dtmax = 10.0
[./TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 25 #usually 10
linear_iteration_ratio = 100
dt = 0.08
growth_factor = 1.1
[../]
num_steps = 2
[]
#=
[Outputs]
print_linear_residuals = false
perf_graph_live = false
[./out]
type = Exodus
file_base = BFO_P0A0
elemental_as_nodal = true
[../]
[]
(test/tests/transform_test/BFO_P0A0_transform_kernel_test.i)
Nx = 3
Ny = 3
Nz = 3
xMax = 1.0
yMax = 1.0
zMax = 1.0
############################################
##
## This input file aims to solve the BFO
## problem where one of the components of
## the order parameters is aligned along
## [111] || global z
##
## As such, all of the residuals and
## jacobians need to be transformed (rotated)
## This will be done in general at a later date
## However, since this the Aux system is used
## extensively to do this, indices will appear
## as p0,p1,p2,a0,a1,a2,u0,u1,u2 which indicate
## derivatives w.r.t the components of various
## order parameters in the transformed coords.
##
## Indices of microforces and jacobians
## will also have bp, br, rp, els, ros, sels, sros
## which denote the bulk polar, bulk roto, rotopolar,
## electrostrictive, rotostrictive,
## stress- electrostrictive, and stress- rotostrictive
## terms.
##
## i.e, Jbp_p0p0 corresoponds to the on-diagonal
## jacobian associated with the bulk energy for the
## polarization.
##
## any instance of 1_x,1_y,1_z will denote the current
## global cartesian coordinate system which is
## orthonormal and defined by the S matrix.
##
## any instance of o_x,o_y,o_z denote the original
## cartesian coordinate system.
##
## i.e, P1 = S Po => Po = S^{-1} P1
##
## Finally, some indices are q0,q1,q2,q3,
## which follow q = <p0,p1,p2,a0,a1,a2,u0,u1,u2>
## ordering.
##
##
############################################
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = ${Nx}
ny = ${Ny}
nz = ${Nz}
xmin = 0.0
xmax = ${xMax}
ymin = 0.0
ymax = ${yMax}
zmin = 0.0
zmax = ${zMax}
elem_type = HEX8
[]
[./cnode]
input = gen
############################################
##
## additional boundary sideset (one node)
## to zero one of the elastic displacement vectors
## vectors and eliminates rigid body translations
## from the degrees of freedom
##
## NOTE: This must conform with the about
## [Mesh] block settings
##
############################################
type = ExtraNodesetGenerator
coord = '0.0 0.0 0.0'
new_boundary = 100
[../]
[]
[GlobalParams]
len_scale = 1.0
displacements = 'u1_x u1_y u1_z'
[]
[Functions]
[./constPp]
type = ParsedFunction
value = 0.54
[../]
[./constAp]
type = ParsedFunction
value = 7.37
[../]
[]
[Variables]
[./u1_x]
[../]
[./u1_y]
[../]
[./u1_z]
[../]
# [./global_strain]
# order = SIXTH
# family = SCALAR
# [../]
[./P1_x]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = RandomIC
min = -0.01e-6
max = 0.01e-6
[../]
[../]
[./P1_y]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = RandomIC
min = -0.01e-6
max = 0.01e-6
[../]
[../]
[./P1_z]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constPp
[../]
[../]
[./A1_x]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = RandomIC
min = -0.01e-6
max = 0.01e-6
[../]
[../]
[./A1_y]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = RandomIC
min = -0.01e-6
max = 0.01e-6
[../]
[../]
[./A1_z]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constAp
[../]
[../]
[]
[AuxVariables]
############################################
##
## Transformed coordinates
##
## These follow Po = Inv[S] P1
## In the AuxKernels that calculate this
##
## We will flag this as 'inverse = true'
##
############################################
[./Po_x]
order = FIRST
family = LAGRANGE
[../]
[./Po_y]
order = FIRST
family = LAGRANGE
[../]
[./Po_z]
order = FIRST
family = LAGRANGE
[../]
[./Ao_x]
order = FIRST
family = LAGRANGE
[../]
[./Ao_y]
order = FIRST
family = LAGRANGE
[../]
[./Ao_z]
order = FIRST
family = LAGRANGE
[../]
############################################
##
## Microforces
##
## We have bulk energy P, bulk energy A
## and a RP coupling.
## This means we should have 3+3+6 forces.
##
############################################
[./fbp_p0]
order = CONSTANT
family = MONOMIAL
[../]
[./fbp_p1]
order = CONSTANT
family = MONOMIAL
[../]
[./fbp_p2]
order = CONSTANT
family = MONOMIAL
[../]
[./fba_a0]
order = CONSTANT
family = MONOMIAL
[../]
[./fba_a1]
order = CONSTANT
family = MONOMIAL
[../]
[./fba_a2]
order = CONSTANT
family = MONOMIAL
[../]
[./frp_p0]
order = CONSTANT
family = MONOMIAL
[../]
[./frp_p1]
order = CONSTANT
family = MONOMIAL
[../]
[./frp_p2]
order = CONSTANT
family = MONOMIAL
[../]
[./frp_a0]
order = CONSTANT
family = MONOMIAL
[../]
[./frp_a1]
order = CONSTANT
family = MONOMIAL
[../]
[./frp_a2]
order = CONSTANT
family = MONOMIAL
[../]
[./Jbp_p0p0]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jbp_p1p1]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jbp_p2p2]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jbp_p0p1]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jbp_p1p2]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jbp_p0p2]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jba_a0a0]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jba_a1a1]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jba_a2a2]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jba_a0a1]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jba_a1a2]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jba_a0a2]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_p0p0]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_p1p1]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_p2p2]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_p0p1]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_p1p2]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_p0p2]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_a0a0]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_a1a1]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_a2a2]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_a0a1]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_a1a2]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_a0a2]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_p0a0]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_p0a1]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_p0a2]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_p1a0]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_p1a1]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_p1a2]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_p2a0]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_p2a1]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[./Jrp_p2a2]
order = CONSTANT
family = MONOMIAL
outputs = none
[../]
[]
[AuxKernels]
[./p1]
type = Transformed111Order
variable = Po_x
inverse = true
component = 0
order_param_x = P1_x
order_param_y = P1_y
order_param_z = P1_z
[../]
[./p2]
type = Transformed111Order
variable = Po_y
inverse = true
component = 1
order_param_x = P1_x
order_param_y = P1_y
order_param_z = P1_z
[../]
[./p3]
type = Transformed111Order
variable = Po_z
inverse = true
component = 2
order_param_x = P1_x
order_param_y = P1_y
order_param_z = P1_z
[../]
[./a1]
type = Transformed111Order
variable = Ao_x
inverse = true
component = 0
order_param_x = A1_x
order_param_y = A1_y
order_param_z = A1_z
[../]
[./a2]
type = Transformed111Order
variable = Ao_y
inverse = true
component = 1
order_param_x = A1_x
order_param_y = A1_y
order_param_z = A1_z
[../]
[./a3]
type = Transformed111Order
variable = Ao_z
inverse = true
component = 2
order_param_x = A1_x
order_param_y = A1_y
order_param_z = A1_z
[../]
##################################################
##
##
## Microforces
##
##
##################################################
[./fbpp1]
type = MicroforceBulkEnergy
variable = fbp_p0
component = 0
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./fbpp2]
type = MicroforceBulkEnergy
variable = fbp_p1
component = 1
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./fbpp3]
type = MicroforceBulkEnergy
variable = fbp_p2
component = 2
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./fbaa1]
type = MicroforceRotoBulkEnergy
variable = fba_a0
component = 0
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./fbaa2]
type = MicroforceRotoBulkEnergy
variable = fba_a1
component = 1
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./fbaa3]
type = MicroforceRotoBulkEnergy
variable = fba_a2
component = 2
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./frpp0]
type = MicroforceRotopolarCoupledPolarEnergy
variable = frp_p0
component = 0
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./frpp1]
type = MicroforceRotopolarCoupledPolarEnergy
variable = frp_p1
component = 1
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./frpp2]
type = MicroforceRotopolarCoupledPolarEnergy
variable = frp_p2
component = 2
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./frpa0]
type = MicroforceRotopolarCoupledDistortEnergy
variable = frp_a0
component = 0
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./frpa1]
type = MicroforceRotopolarCoupledDistortEnergy
variable = frp_a1
component = 1
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./frpa2]
type = MicroforceRotopolarCoupledDistortEnergy
variable = frp_a2
component = 2
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
##################################################
##
##
## Jacobians
##
##
##################################################
[./Jbpp0p0]
type = JacobiansBulkEnergy
variable = Jbp_p0p0
index_i = 0
index_j = 0
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jbpp1p1]
type = JacobiansBulkEnergy
variable = Jbp_p1p1
index_i = 1
index_j = 1
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jbpp2p2]
type = JacobiansBulkEnergy
variable = Jbp_p2p2
index_i = 2
index_j = 2
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jbpp0p1]
type = JacobiansBulkEnergy
variable = Jbp_p0p1
index_i = 0
index_j = 1
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jbpp1p2]
type = JacobiansBulkEnergy
variable = Jbp_p1p2
index_i = 1
index_j = 2
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jbpp0p2]
type = JacobiansBulkEnergy
variable = Jbp_p0p2
index_i = 0
index_j = 2
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jbaa0a0]
type = JacobiansRotoBulkEnergy
variable = Jba_a0a0
index_i = 0
index_j = 0
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jbaa1a1]
type = JacobiansRotoBulkEnergy
variable = Jba_a1a1
index_i = 1
index_j = 1
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jbaa2a2]
type = JacobiansRotoBulkEnergy
variable = Jba_a2a2
index_i = 2
index_j = 2
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jbaa0a1]
type = JacobiansRotoBulkEnergy
variable = Jba_a0a1
index_i = 0
index_j = 1
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jbaa1a2]
type = JacobiansRotoBulkEnergy
variable = Jba_a1a2
index_i = 1
index_j = 2
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jbaa0a2]
type = JacobiansRotoBulkEnergy
variable = Jba_a0a2
index_i = 0
index_j = 2
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpp0p0]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_p0p0
index_i = 0
index_j = 0
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpp1p1]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_p1p1
index_i = 1
index_j = 1
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpp2p2]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_p2p2
index_i = 2
index_j = 2
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpa0a0]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_a0a0
index_i = 3
index_j = 3
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpa1a1]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_a1a1
index_i = 4
index_j = 4
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpa2a2]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_a2a2
index_i = 5
index_j = 5
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpp0p1]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_p0p1
index_i = 0
index_j = 1
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpp1p2]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_p1p2
index_i = 1
index_j = 2
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpp0p2]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_p0p2
index_i = 0
index_j = 2
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpp0a0]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_p0a0
index_i = 0
index_j = 3
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpp0a1]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_p0a1
index_i = 0
index_j = 4
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpp0a2]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_p0a2
index_i = 0
index_j = 5
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpp1a0]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_p1a0
index_i = 1
index_j = 3
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpp1a1]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_p1a1
index_i = 1
index_j = 4
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpp1a2]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_p1a2
index_i = 1
index_j = 5
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpp2a0]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_p2a0
index_i = 2
index_j = 3
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpp2a1]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_p2a1
index_i = 2
index_j = 4
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpp2a2]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_p2a2
index_i = 2
index_j = 5
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpa0a1]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_a0a1
index_i = 3
index_j = 4
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpa0a2]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_a0a2
index_i = 3
index_j = 5
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[./Jrpa1a2]
type = JacobiansRotopolarCoupledEnergy
variable = Jrp_a1a2
index_i = 4
index_j = 5
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
execute_on = 'INITIAL LINEAR NONLINEAR'
[../]
[]
#[ScalarKernels]
# [./global_strain]
# type = GlobalStrain
# variable = global_strain
# global_strain_uo = global_strain_uo
# [../]
#[]
[Kernels]
[./TensorMechanics]
[../]
### Operators for the polar field: ###
[./bed_x]
type = Transformed111KernelOp3
variable = P1_x
component = 0
order_param_x = P1_x
order_param_y = P1_y
order_param_z = P1_z
f_q0 = fbp_p0
f_q1 = fbp_p1
f_q2 = fbp_p2
J_q0q0 = Jbp_p0p0
J_q1q1 = Jbp_p1p1
J_q2q2 = Jbp_p2p2
J_q0q1 = Jbp_p0p1
J_q1q2 = Jbp_p1p2
J_q0q2 = Jbp_p0p2
[../]
[./bed_y]
type = Transformed111KernelOp3
variable = P1_y
component = 1
order_param_x = P1_x
order_param_y = P1_y
order_param_z = P1_z
f_q0 = fbp_p0
f_q1 = fbp_p1
f_q2 = fbp_p2
J_q0q0 = Jbp_p0p0
J_q1q1 = Jbp_p1p1
J_q2q2 = Jbp_p2p2
J_q0q1 = Jbp_p0p1
J_q1q2 = Jbp_p1p2
J_q0q2 = Jbp_p0p2
[../]
[./bed_z]
type = Transformed111KernelOp3
variable = P1_z
component = 2
order_param_x = P1_x
order_param_y = P1_y
order_param_z = P1_z
f_q0 = fbp_p0
f_q1 = fbp_p1
f_q2 = fbp_p2
J_q0q0 = Jbp_p0p0
J_q1q1 = Jbp_p1p1
J_q2q2 = Jbp_p2p2
J_q0q1 = Jbp_p0p1
J_q1q2 = Jbp_p1p2
J_q0q2 = Jbp_p0p2
[../]
# Operators for the AFD field
[./rbed_x]
type = Transformed111KernelOp3
variable = A1_x
component = 0
order_param_x = A1_x
order_param_y = A1_y
order_param_z = A1_z
f_q0 = fba_a0
f_q1 = fba_a1
f_q2 = fba_a2
J_q0q0 = Jba_a0a0
J_q1q1 = Jba_a1a1
J_q2q2 = Jba_a2a2
J_q0q1 = Jba_a0a1
J_q1q2 = Jba_a1a2
J_q0q2 = Jba_a0a2
[../]
[./rbed_y]
type = Transformed111KernelOp3
variable = A1_y
component = 1
order_param_x = A1_x
order_param_y = A1_y
order_param_z = A1_z
f_q0 = fba_a0
f_q1 = fba_a1
f_q2 = fba_a2
J_q0q0 = Jba_a0a0
J_q1q1 = Jba_a1a1
J_q2q2 = Jba_a2a2
J_q0q1 = Jba_a0a1
J_q1q2 = Jba_a1a2
J_q0q2 = Jba_a0a2
[../]
[./rbed_z]
type = Transformed111KernelOp3
variable = A1_z
component = 2
order_param_x = A1_x
order_param_y = A1_y
order_param_z = A1_z
f_q0 = fba_a0
f_q1 = fba_a1
f_q2 = fba_a2
J_q0q0 = Jba_a0a0
J_q1q1 = Jba_a1a1
J_q2q2 = Jba_a2a2
J_q0q1 = Jba_a0a1
J_q1q2 = Jba_a1a2
J_q0q2 = Jba_a0a2
[../]
[./rpp_x]
type = Transformed111KernelOp6
variable = P1_x
component = 0
order_param_x = P1_x
order_param_y = P1_y
order_param_z = P1_z
order_param2_x = A1_x
order_param2_y = A1_y
order_param2_z = A1_z
f_q0 = frp_p0
f_q1 = frp_p1
f_q2 = frp_p2
f_q3 = frp_a0
f_q4 = frp_a1
f_q5 = frp_a2
J_q0q0 = Jrp_p0p0
J_q1q1 = Jrp_p1p1
J_q2q2 = Jrp_p2p2
J_q3q3 = Jrp_a0a0
J_q4q4 = Jrp_a1a1
J_q5q5 = Jrp_a2a2
J_q0q1 = Jrp_p0p1
J_q1q2 = Jrp_p1p2
J_q0q2 = Jrp_p0p2
J_q0q3 = Jrp_p0a0
J_q0q4 = Jrp_p0a1
J_q0q5 = Jrp_p0a2
J_q1q3 = Jrp_p1a0
J_q1q4 = Jrp_p1a1
J_q1q5 = Jrp_p1a2
J_q2q3 = Jrp_p2a0
J_q2q4 = Jrp_p1a1
J_q2q5 = Jrp_p1a2
J_q3q4 = Jrp_a0a1
J_q3q5 = Jrp_a0a2
J_q4q5 = Jrp_a1a2
[../]
[./rpp_y]
type = Transformed111KernelOp6
variable = P1_y
component = 1
order_param_x = P1_x
order_param_y = P1_y
order_param_z = P1_z
order_param2_x = A1_x
order_param2_y = A1_y
order_param2_z = A1_z
f_q0 = frp_p0
f_q1 = frp_p1
f_q2 = frp_p2
f_q3 = frp_a0
f_q4 = frp_a1
f_q5 = frp_a2
J_q0q0 = Jrp_p0p0
J_q1q1 = Jrp_p1p1
J_q2q2 = Jrp_p2p2
J_q3q3 = Jrp_a0a0
J_q4q4 = Jrp_a1a1
J_q5q5 = Jrp_a2a2
J_q0q1 = Jrp_p0p1
J_q1q2 = Jrp_p1p2
J_q0q2 = Jrp_p0p2
J_q0q3 = Jrp_p0a0
J_q0q4 = Jrp_p0a1
J_q0q5 = Jrp_p0a2
J_q1q3 = Jrp_p1a0
J_q1q4 = Jrp_p1a1
J_q1q5 = Jrp_p1a2
J_q2q3 = Jrp_p2a0
J_q2q4 = Jrp_p1a1
J_q2q5 = Jrp_p1a2
J_q3q4 = Jrp_a0a1
J_q3q5 = Jrp_a0a2
J_q4q5 = Jrp_a1a2
[../]
[./rpp_z]
type = Transformed111KernelOp6
variable = P1_z
component = 2
order_param_x = P1_x
order_param_y = P1_y
order_param_z = P1_z
order_param2_x = A1_x
order_param2_y = A1_y
order_param2_z = A1_z
f_q0 = frp_p0
f_q1 = frp_p1
f_q2 = frp_p2
f_q3 = frp_a0
f_q4 = frp_a1
f_q5 = frp_a2
J_q0q0 = Jrp_p0p0
J_q1q1 = Jrp_p1p1
J_q2q2 = Jrp_p2p2
J_q3q3 = Jrp_a0a0
J_q4q4 = Jrp_a1a1
J_q5q5 = Jrp_a2a2
J_q0q1 = Jrp_p0p1
J_q1q2 = Jrp_p1p2
J_q0q2 = Jrp_p0p2
J_q0q3 = Jrp_p0a0
J_q0q4 = Jrp_p0a1
J_q0q5 = Jrp_p0a2
J_q1q3 = Jrp_p1a0
J_q1q4 = Jrp_p1a1
J_q1q5 = Jrp_p1a2
J_q2q3 = Jrp_p2a0
J_q2q4 = Jrp_p1a1
J_q2q5 = Jrp_p1a2
J_q3q4 = Jrp_a0a1
J_q3q5 = Jrp_a0a2
J_q4q5 = Jrp_a1a2
[../]
[./rpa_x]
type = Transformed111KernelOp6
variable = A1_x
component = 3
order_param_x = P1_x
order_param_y = P1_y
order_param_z = P1_z
order_param2_x = A1_x
order_param2_y = A1_y
order_param2_z = A1_z
f_q0 = frp_p0
f_q1 = frp_p1
f_q2 = frp_p2
f_q3 = frp_a0
f_q4 = frp_a1
f_q5 = frp_a2
J_q0q0 = Jrp_p0p0
J_q1q1 = Jrp_p1p1
J_q2q2 = Jrp_p2p2
J_q3q3 = Jrp_a0a0
J_q4q4 = Jrp_a1a1
J_q5q5 = Jrp_a2a2
J_q0q1 = Jrp_p0p1
J_q1q2 = Jrp_p1p2
J_q0q2 = Jrp_p0p2
J_q0q3 = Jrp_p0a0
J_q0q4 = Jrp_p0a1
J_q0q5 = Jrp_p0a2
J_q1q3 = Jrp_p1a0
J_q1q4 = Jrp_p1a1
J_q1q5 = Jrp_p1a2
J_q2q3 = Jrp_p2a0
J_q2q4 = Jrp_p1a1
J_q2q5 = Jrp_p1a2
J_q3q4 = Jrp_a0a1
J_q3q5 = Jrp_a0a2
J_q4q5 = Jrp_a1a2
[../]
[./rpa_y]
type = Transformed111KernelOp6
variable = A1_y
component = 4
order_param_x = P1_x
order_param_y = P1_y
order_param_z = P1_z
order_param2_x = A1_x
order_param2_y = A1_y
order_param2_z = A1_z
f_q0 = frp_p0
f_q1 = frp_p1
f_q2 = frp_p2
f_q3 = frp_a0
f_q4 = frp_a1
f_q5 = frp_a2
J_q0q0 = Jrp_p0p0
J_q1q1 = Jrp_p1p1
J_q2q2 = Jrp_p2p2
J_q3q3 = Jrp_a0a0
J_q4q4 = Jrp_a1a1
J_q5q5 = Jrp_a2a2
J_q0q1 = Jrp_p0p1
J_q1q2 = Jrp_p1p2
J_q0q2 = Jrp_p0p2
J_q0q3 = Jrp_p0a0
J_q0q4 = Jrp_p0a1
J_q0q5 = Jrp_p0a2
J_q1q3 = Jrp_p1a0
J_q1q4 = Jrp_p1a1
J_q1q5 = Jrp_p1a2
J_q2q3 = Jrp_p2a0
J_q2q4 = Jrp_p1a1
J_q2q5 = Jrp_p1a2
J_q3q4 = Jrp_a0a1
J_q3q5 = Jrp_a0a2
J_q4q5 = Jrp_a1a2
[../]
[./rpa_z]
type = Transformed111KernelOp6
variable = A1_z
component = 5
order_param_x = P1_x
order_param_y = P1_y
order_param_z = P1_z
order_param2_x = A1_x
order_param2_y = A1_y
order_param2_z = A1_z
f_q0 = frp_p0
f_q1 = frp_p1
f_q2 = frp_p2
f_q3 = frp_a0
f_q4 = frp_a1
f_q5 = frp_a2
J_q0q0 = Jrp_p0p0
J_q1q1 = Jrp_p1p1
J_q2q2 = Jrp_p2p2
J_q3q3 = Jrp_a0a0
J_q4q4 = Jrp_a1a1
J_q5q5 = Jrp_a2a2
J_q0q1 = Jrp_p0p1
J_q1q2 = Jrp_p1p2
J_q0q2 = Jrp_p0p2
J_q0q3 = Jrp_p0a0
J_q0q4 = Jrp_p0a1
J_q0q5 = Jrp_p0a2
J_q1q3 = Jrp_p1a0
J_q1q4 = Jrp_p1a1
J_q1q5 = Jrp_p1a2
J_q2q3 = Jrp_p2a0
J_q2q4 = Jrp_p1a1
J_q2q5 = Jrp_p1a2
J_q3q4 = Jrp_a0a1
J_q3q5 = Jrp_a0a2
J_q4q5 = Jrp_a1a2
[../]
[./polar_x_time]
type = TimeDerivativeScaled
variable = P1_x
time_scale = 1.0
block = '0'
[../]
[./polar_y_time]
type = TimeDerivativeScaled
variable = P1_y
time_scale = 1.0
block = '0'
[../]
[./polar_z_time]
type = TimeDerivativeScaled
variable = P1_z
time_scale = 1.0
block = '0'
[../]
[./a_x_time]
type = TimeDerivativeScaled
variable = A1_x
time_scale = 0.01
block = '0'
[../]
[./a_y_time]
type = TimeDerivativeScaled
variable = A1_y
time_scale = 0.01
block = '0'
[../]
[./a_z_time]
type = TimeDerivativeScaled
variable = A1_z
time_scale = 0.01
block = '0'
[../]
[]
[Materials]
[./Landau_P]
type = GenericConstantMaterial
prop_names = 'alpha1 alpha11 alpha12 alpha111 alpha112 alpha123 alpha1111 alpha1112 alpha1122 alpha1123'
prop_values = '-2.81296 1.72351 2.24147 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./Landau_A]
type = GenericConstantMaterial
prop_names = 'beta1 beta11 beta12 beta111 beta112 beta123 beta1111 beta1112 beta1122 beta1123'
prop_values = '-0.0137763 0.0000349266 0.0000498846 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./P_A_couple]
type = GenericConstantMaterial
prop_names = 't1111 t1122 t1212 t42111111 t24111111 t42111122 t24112222 t42112233 t24112233 t42112211 t24111122 t42111212 t42123312 t24121112 t24121233 t6211111111 t2611111111 t6211111122 t2611222222 t4411111111 t4411112222'
prop_values = '0.012516 0.0180504 -0.036155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./elasticity_tensor_1]
type = ComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '295.179 117.567 117.567 295.179 117.567 295.179 74.0701 74.0701 74.0701'
########################################################################################
##
## The below Euler rotation below should rotate the [001]-oriented elasticity tensor to
## the [111]-orientation as it is equivalent to our S matrix.
## Note that the MOOSE convention is slightly different than Mathematica's so we use
## three different angles.
## Therefore, all of our strains will be calculated using ComputeSmallStrain in primed
## coordinates [i.e. e_{||,||}, e_{1,||}, ...]
##
## ...but then, it is important that our strains talk to our primed variables correctly.
##
########################################################################################
euler_angle_1 = 135.0
euler_angle_2 = -54.735610317245346
euler_angle_3 = -90.0
[../]
[./strain]
type = ComputeSmallStrain
#global_strain = global_strain
[../]
#[./global_strain]
# type = ComputeGlobalStrain
# scalar_global_strain = global_strain
# global_strain_uo = global_strain_uo
#[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Postprocessors]
[./dt]
type = TimestepSize
[../]
[./FbP1]
type = BulkEnergyEighth
execute_on = 'timestep_end'
polar_x = P1_x
polar_y = P1_y
polar_z = P1_z
[../]
[./FbPo]
type = BulkEnergyEighth
execute_on = 'timestep_end'
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
[../]
[./FbA1]
type = RotoBulkEnergyEighth
execute_on = 'timestep_end'
antiphase_A_x = A1_x
antiphase_A_y = A1_y
antiphase_A_z = A1_z
[../]
[./FbAo]
type = RotoBulkEnergyEighth
execute_on = 'timestep_end'
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
[../]
[./FcPA1]
type = RotoPolarCoupledEnergyEighth
execute_on = 'timestep_end'
polar_x = P1_x
polar_y = P1_y
polar_z = P1_z
antiphase_A_x = A1_x
antiphase_A_y = A1_y
antiphase_A_z = A1_z
[../]
[./FcPAo]
type = RotoPolarCoupledEnergyEighth
execute_on = 'timestep_end'
polar_x = Po_x
polar_y = Po_y
polar_z = Po_z
antiphase_A_x = Ao_x
antiphase_A_y = Ao_y
antiphase_A_z = Ao_z
[../]
[./Felu]
type = ElasticEnergy
execute_on = 'timestep_end'
[../]
[./Ftoto]
type = LinearCombinationPostprocessor
pp_names = 'FbPo FbAo FcPAo'
pp_coefs = ' 1 1 1'
execute_on = 'timestep_end'
##########################################
#
# NOTE: Ferret output is in attojoules
#
##########################################
[../]
[./Ftot1]
type = LinearCombinationPostprocessor
pp_names = 'FbP1 FbA1 FcPA1'
pp_coefs = ' 1 1 1'
execute_on = 'timestep_end'
##########################################
#
# NOTE: Ferret output is in attojoules
#
##########################################
[../]
[./perc_change]
type = EnergyRatePostprocessor
postprocessor = Ftot1
execute_on = 'timestep_end'
dt = dt
[../]
[]
[BCs]
[./Periodic]
[./xy]
auto_direction = 'x y z'
variable = 'u1_x u1_y u1_z P1_x P1_y P1_z A1_x A1_y A1_z'
[../]
[../]
# fix center point location
[./centerfix_x]
type = DirichletBC
boundary = 100
variable = u1_x
value = 0
[../]
[./centerfix_y]
type = DirichletBC
boundary = 100
variable = u1_y
value = 0
[../]
[./centerfix_z]
type = DirichletBC
boundary = 100
variable = u1_z
value = 0
[../]
[]
[UserObjects]
#[./global_strain_uo]
# type = GlobalBFOMaterialRVEUserObject
# execute_on = 'Initial Linear Nonlinear'
# polar_x = P1_x
# polar_y = P1_y
# polar_z = P1_z
# antiphase_A_x = A1_x
# antiphase_A_y = A1_y
# antiphase_A_z = A1_z
#[../]
[./kill]
type = Terminator
expression = 'perc_change <= 5.0e-5'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart -snes_atol -snes_rtol -ksp_rtol -pc_type -build_twosided'
petsc_options_value = ' 121 1e-10 1e-10 1e-6 bjacobi allreduce'
[../]
[]
[Executioner]
type = Transient
dt = 0.08
solve_type = 'NEWTON'
scheme = 'bdf2'
dtmin = 1e-13
dtmax = 10.0
num_steps = 10
[]
[Outputs]
print_linear_residuals = false
[./out]
type = Exodus
file_base = out_P0A0_transformed_kernel_test
elemental_as_nodal = true
[../]
[]
(tutorial/BFO_dwP1A1_100.i)
Nx = 250
Ny = 1
Nz = 1
xMax = 31.41592653589793
yMax = 1.0
zMax = 1.0
freq = 0.2
g11 = 12e-3
g12 = -3.0e-3
g44 = 3.0e-3
h11 = 2.0e-4
h12 = -0.2e-3
h44 = 0.8e-3
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = ${Nx}
ny = ${Ny}
nz = ${Nz}
xmin = 0.0
xmax = ${xMax}
ymin = 0.0
ymax = ${yMax}
zmin = 0.0
zmax = ${zMax}
elem_type = HEX8
[]
[./cnode]
input = gen
############################################
##
## additional boundary sideset (one node)
## to zero one of the elastic displacement vectors
## vectors and eliminates rigid body translations
## from the degrees of freedom
##
## NOTE: This must conform with the about
## [Mesh] block settings
##
############################################
type = ExtraNodesetGenerator
coord = '0.0 0.0 0.0'
new_boundary = 100
[../]
[]
[GlobalParams]
len_scale = 1.0
polar_x = polar_x
polar_y = polar_y
polar_z = polar_z
antiphase_A_x = antiphase_A_x
antiphase_A_y = antiphase_A_y
antiphase_A_z = antiphase_A_z
displacements = 'u_x u_y u_z'
potential_E_int = potential_E_int
[]
[Functions]
[./stripeP1]
type = ParsedFunction
value = 0.54*cos(${freq}*(x))
[../]
[./stripeP2]
type = ParsedFunction
value = -0.54*cos(${freq}*(x))
[../]
[./stripeA1]
type = ParsedFunction
value = 7.37*cos(${freq}*(x))
[../]
[./stripeA2]
type = ParsedFunction
value = -7.37*cos(${freq}*(x))
[../]
[./constPm]
type = ParsedFunction
value = -0.54
[../]
[./constPp]
type = ParsedFunction
value = 0.54
[../]
[./constAm]
type = ParsedFunction
value = -7.37
[../]
[./constAp]
type = ParsedFunction
value = 7.37
[../]
[]
[Variables]
[./u_x]
[../]
[./u_y]
[../]
[./u_z]
[../]
[./global_strain]
order = SIXTH
family = SCALAR
[../]
[./polar_x]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constPp
[../]
[../]
[./polar_y]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constPp
[../]
[../]
[./polar_z]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = stripeP1
[../]
[../]
[./antiphase_A_x]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constAp
[../]
[../]
[./antiphase_A_y]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constAp
[../]
[../]
[./antiphase_A_z]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = stripeA1
[../]
[../]
[./potential_E_int]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./s00]
order = CONSTANT
family = MONOMIAL
[../]
[./s01]
order = CONSTANT
family = MONOMIAL
[../]
[./s10]
order = CONSTANT
family = MONOMIAL
[../]
[./s11]
order = CONSTANT
family = MONOMIAL
[../]
[./e00]
order = CONSTANT
family = MONOMIAL
[../]
[./e01]
order = CONSTANT
family = MONOMIAL
[../]
[./e10]
order = CONSTANT
family = MONOMIAL
[../]
[./e11]
order = CONSTANT
family = MONOMIAL
[../]
[./e22]
order = CONSTANT
family = MONOMIAL
[../]
[./e12]
order = CONSTANT
family = MONOMIAL
[../]
[./e21]
order = CONSTANT
family = MONOMIAL
[../]
[./e02]
order = CONSTANT
family = MONOMIAL
[../]
[./e20]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[./rotostr_ux]
type = RotostrictiveCouplingDispDerivative
variable = u_x
component = 0
[../]
[./rotostr_uy]
type = RotostrictiveCouplingDispDerivative
variable = u_y
component = 1
[../]
[./rotostr_uz]
type = RotostrictiveCouplingDispDerivative
variable = u_z
component = 2
[../]
[./electrostr_ux]
type = ElectrostrictiveCouplingDispDerivative
variable = u_x
component = 0
[../]
[./electrostr_uy]
type = ElectrostrictiveCouplingDispDerivative
variable = u_y
component = 1
[../]
[./electrostr_uz]
type = ElectrostrictiveCouplingDispDerivative
variable = u_z
component = 2
[../]
### Operators for the polar field: ###
[./bed_x]
type = BulkEnergyDerivativeEighth
variable = polar_x
component = 0
[../]
[./bed_y]
type = BulkEnergyDerivativeEighth
variable = polar_y
component = 1
[../]
[./bed_z]
type = BulkEnergyDerivativeEighth
variable = polar_z
component = 2
[../]
[./walled_x]
type = WallEnergyDerivative
variable = polar_x
component = 0
[../]
[./walled_y]
type = WallEnergyDerivative
variable = polar_y
component = 1
[../]
[./walled_z]
type = WallEnergyDerivative
variable = polar_z
component = 2
[../]
[./walled2_x]
type = Wall2EnergyDerivative
variable = polar_x
component = 0
[../]
[./walled2_y]
type = Wall2EnergyDerivative
variable = polar_y
component = 1
[../]
[./walled2_z]
type = Wall2EnergyDerivative
variable = polar_z
component = 2
[../]
[./walled_a_x]
type = AFDWallEnergyDerivative
variable = antiphase_A_x
component = 0
[../]
[./walled_a_y]
type = AFDWallEnergyDerivative
variable = antiphase_A_y
component = 1
[../]
[./walled_a_z]
type = AFDWallEnergyDerivative
variable = antiphase_A_z
component = 2
[../]
[./walled2_a_x]
type = AFDWall2EnergyDerivative
variable = antiphase_A_x
component = 0
[../]
[./walled2_a_y]
type = AFDWall2EnergyDerivative
variable = antiphase_A_y
component = 1
[../]
[./walled2_a_z]
type = AFDWall2EnergyDerivative
variable = antiphase_A_z
component = 2
[../]
[./roto_polar_coupled_x]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_x
component = 0
[../]
[./roto_polar_coupled_y]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_y
component = 1
[../]
[./roto_polar_coupled_z]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_z
component = 2
[../]
[./roto_dis_coupled_x]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_x
component = 0
[../]
[./roto_dis_coupled_y]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_y
component = 1
[../]
[./roto_dis_coupled_z]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_z
component = 2
[../]
[./electrostr_polar_coupled_x]
type = ElectrostrictiveCouplingPolarDerivative
variable = polar_x
component = 0
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./electrostr_polar_coupled_y]
type = ElectrostrictiveCouplingPolarDerivative
variable = polar_y
component = 1
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./electrostr_polar_coupled_z]
type = ElectrostrictiveCouplingPolarDerivative
variable = polar_z
component = 2
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
#Operators for the AFD field
[./rbed_x]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_x
component = 0
[../]
[./rbed_y]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_y
component = 1
[../]
[./rbed_z]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_z
component = 2
[../]
[./rotostr_dis_coupled_x]
type = RotostrictiveCouplingDistortDerivative
variable = antiphase_A_x
component = 0
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./rotostr_dis_coupled_y]
type = RotostrictiveCouplingDistortDerivative
variable = antiphase_A_y
component = 1
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./rotostr_dis_coupled_z]
type = RotostrictiveCouplingDistortDerivative
variable = antiphase_A_z
component = 2
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./polar_x_electric_E]
type = PolarElectricEStrong
variable = potential_E_int
[../]
[./FE_E_int]
type = Electrostatics
variable = potential_E_int
[../]
[./polar_electric_px]
type = PolarElectricPStrong
variable = polar_x
component = 0
[../]
[./polar_electric_py]
type = PolarElectricPStrong
variable = polar_y
component = 1
[../]
[./polar_electric_pz]
type = PolarElectricPStrong
variable = polar_z
component = 2
[../]
[./polar_x_time]
type = TimeDerivativeScaled
variable=polar_x
time_scale = 1.0
block = '0'
[../]
[./polar_y_time]
type = TimeDerivativeScaled
variable=polar_y
time_scale = 1.0
block = '0'
[../]
[./polar_z_time]
type = TimeDerivativeScaled
variable = polar_z
time_scale = 1.0
block = '0'
[../]
[./a_x_time]
type = TimeDerivativeScaled
variable = antiphase_A_x
time_scale = 0.01
block = '0'
[../]
[./a_y_time]
type = TimeDerivativeScaled
variable = antiphase_A_y
time_scale = 0.01
block = '0'
[../]
[./a_z_time]
type = TimeDerivativeScaled
variable = antiphase_A_z
time_scale = 0.01
block = '0'
[../]
[./u_x_time]
type = TimeDerivativeScaled
variable = u_x
time_scale = 1.0
[../]
[./u_y_time]
type = TimeDerivativeScaled
variable = u_y
time_scale = 1.0
[../]
[./u_z_time]
type = TimeDerivativeScaled
variable = u_z
time_scale = 1.0
[../]
[]
[AuxKernels]
[./disp_x]
type = GlobalDisplacementAux
variable = disp_x
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 0
[../]
[./disp_y]
type = GlobalDisplacementAux
variable = disp_y
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 1
[../]
[./disp_z]
type = GlobalDisplacementAux
variable = disp_z
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 2
[../]
[./s00]
type = RankTwoAux
variable = s00
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./s01]
type = RankTwoAux
variable = s01
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[./s10]
type = RankTwoAux
variable = s10
rank_two_tensor = stress
index_i = 1
index_j = 0
[../]
[./s11]
type = RankTwoAux
variable = s11
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./e00]
type = RankTwoAux
variable = e00
rank_two_tensor = total_strain
index_i = 0
index_j = 0
[../]
[./e01]
type = RankTwoAux
variable = e01
rank_two_tensor = total_strain
index_i = 0
index_j = 1
[../]
[./e10]
type = RankTwoAux
variable = e10
rank_two_tensor = total_strain
index_i = 1
index_j = 0
[../]
[./e11]
type = RankTwoAux
variable = e11
rank_two_tensor = total_strain
index_i = 1
index_j = 1
[../]
[./e12]
type = RankTwoAux
variable = e12
rank_two_tensor = total_strain
index_i = 1
index_j = 2
[../]
[./e21]
type = RankTwoAux
variable = e21
rank_two_tensor = total_strain
index_i = 2
index_j = 1
[../]
[./e20]
type = RankTwoAux
variable = e20
rank_two_tensor = total_strain
index_i = 2
index_j = 0
[../]
[./e02]
type = RankTwoAux
variable = e02
rank_two_tensor = total_strain
index_i = 0
index_j = 2
[../]
[./e22]
type = RankTwoAux
variable = e22
rank_two_tensor = total_strain
index_i = 2
index_j = 2
[../]
[]
[ScalarKernels]
[./global_strain]
type = GlobalStrain
variable = global_strain
global_strain_uo = global_strain_uo
[../]
[]
[Materials]
[./Landau_P]
type = GenericConstantMaterial
prop_names = 'alpha1 alpha11 alpha12 alpha111 alpha112 alpha123 alpha1111 alpha1112 alpha1122 alpha1123'
prop_values = '-2.81296 1.72351 2.24147 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./Landau_A]
type = GenericConstantMaterial
prop_names = 'beta1 beta11 beta12 beta111 beta112 beta123 beta1111 beta1112 beta1122 beta1123'
prop_values = '-0.0137763 0.0000349266 0.0000498846 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./P_A_couple]
type = GenericConstantMaterial
prop_names = 't1111 t1122 t1212 t42111111 t24111111 t42111122 t24112222 t42112233 t24112233 t42112211 t24111122 t42111212 t42123312 t24121112 t24121233 t6211111111 t2611111111 t6211111122 t2611222222 t4411111111 t4411112222'
prop_values = '0.012516 0.0180504 -0.036155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./Landau_G]
type = GenericConstantMaterial
prop_names = 'G110 G11_G110 G12_G110 G44_G110 G44P_G110'
prop_values = '1.0 ${g11} ${g12} ${g44} 0.0'
[../]
[./Landau_H]
type = GenericConstantMaterial
prop_names = 'H110 H11_H110 H12_H110 H44_H110 H44P_H110'
prop_values = '1.0 ${h11} ${h12} ${h44} 0.0'
[../]
[./mat_C]
type = GenericConstantMaterial
prop_names = 'C11 C12 C44'
prop_values = '295.179 117.567 74.0701'
[../]
[./mat_Q]
type = GenericConstantMaterial
prop_names = 'Q11 Q12 Q44'
prop_values = '-0.0603833 0.0111245 -0.0175686'
[../]
[./mat_R]
type = GenericConstantMaterial
prop_names = 'R11 R12 R44'
prop_values = '-0.0000878064 0.0000295306 0.0000627962'
[../]
[./mat_q]
type = GenericConstantMaterial
prop_names = 'q11 q12 q44'
prop_values = '-30.4162 -5.01496 -10.4105'
[../]
[./mat_r]
type = GenericConstantMaterial
prop_names = 'r11 r12 r44'
prop_values = '-0.0379499 0.00373096 0.0372105'
[../]
[./elasticity_tensor_1]
type = ComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '295.179 117.567 117.567 295.179 117.567 295.179 74.0701 74.0701 74.0701'
[../]
[./strain]
type = ComputeSmallStrain
global_strain = global_strain
[../]
[./global_strain]
type = ComputeGlobalStrain
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./permitivitty_1]
###############################################
##
## so-called background dielectric constant
## (it encapsulates the motion of core electrons
## at high frequency) = e_b*e_0 (here we use
## e_b = 10), see PRB. 74, 104014, (2006)
##
###############################################
type = GenericConstantMaterial
prop_names = 'permittivity'
prop_values = '0.08854187'
[../]
[]
[Postprocessors]
[./dt]
type = TimestepSize
[../]
[./FbP]
type = BulkEnergyEighth
execute_on = 'timestep_end'
[../]
[./FbA]
type = RotoBulkEnergyEighth
execute_on = 'timestep_end'
[../]
[./FcPA]
type = RotoPolarCoupledEnergyEighth
execute_on = 'timestep_end'
[../]
[./FgP]
type = WallEnergy
execute_on = 'timestep_end'
[../]
[./FgA]
type = AFDWallEnergy
execute_on = 'timestep_end'
[../]
[./FcPu]
type = ElectrostrictiveCouplingEnergy
execute_on = 'timestep_end'
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./FcAu]
type = RotostrictiveCouplingEnergy
execute_on = 'timestep_end'
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./Felu]
type = ElasticEnergy
execute_on = 'timestep_end'
[../]
[./Fele]
type = ElectrostaticEnergy
execute_on = 'initial timestep_end'
[../]
[./Ftot]
type = LinearCombinationPostprocessor
pp_names = 'FbP FbA FgP FgA FcPA FcPu FcAu Felu Fele'
pp_coefs = ' 1 1 1 1 1 1 1 1 1'
execute_on = 'timestep_end'
##########################################
#
# NOTE: Ferret output is in attojoules
#
##########################################
[../]
[./perc_change]
type = EnergyRatePostprocessor
postprocessor = Ftot
execute_on = 'timestep_end'
dt = dt
[../]
[./elapsed]
type = PerfGraphData
section_name = "Root" # for profiling the problem
data_type = total
[../]
[]
[BCs]
[./Periodic]
[./x]
auto_direction = 'x'
variable = 'u_x u_y u_z polar_x polar_y polar_z antiphase_A_x antiphase_A_y antiphase_A_z'
[../]
[./xyz]
auto_direction = 'x y z'
variable = 'potential_E_int'
[../]
[../]
# fix center point location
[./centerfix_x]
type = DirichletBC
boundary = 100
variable = u_x
value = 0
[../]
[./centerfix_y]
type = DirichletBC
boundary = 100
variable = u_y
value = 0
[../]
[./centerfix_z]
type = DirichletBC
boundary = 100
variable = u_z
value = 0
[../]
[]
[UserObjects]
[./global_strain_uo]
type = GlobalBFOMaterialRVEUserObject
execute_on = 'Initial Linear Nonlinear'
[../]
[./kill]
type = Terminator
expression = 'perc_change <= 5.0e-7'
[../]
[]
#=
[Preconditioning]
[./smp]
type = SMP
full = true
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart -snes_atol -snes_rtol -ksp_rtol -pc_type -build_twosided'
petsc_options_value = ' 121 1e-8 1e-7 1e-6 bjacobi allreduce'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
scheme = 'bdf2'
dtmin = 1e-13
dtmax = 10.0
[./TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 25 #usually 10
linear_iteration_ratio = 100
dt = 0.08
growth_factor = 1.1
[../]
num_steps = 1000
[]
[Outputs]
print_linear_residuals = false
perf_graph_live = false
[./out]
type = Exodus
file_base = BFO_dwP1A1_100
elemental_as_nodal = true
[../]
[]
(test/tests/transform_test/BFO_P0A0_f.i)
Nx = 3
Ny = 3
Nz = 3
xMax = 1.0
yMax = 1.0
zMax = 1.0
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = ${Nx}
ny = ${Ny}
nz = ${Nz}
xmin = 0.0
xmax = ${xMax}
ymin = 0.0
ymax = ${yMax}
zmin = 0.0
zmax = ${zMax}
elem_type = HEX8
[]
[./cnode]
input = gen
############################################
##
## additional boundary sideset (one node)
## to zero one of the elastic displacement vectors
## vectors and eliminates rigid body translations
## from the degrees of freedom
##
## NOTE: This must conform with the about
## [Mesh] block settings
##
############################################
type = ExtraNodesetGenerator
coord = '0.0 0.0 0.0'
new_boundary = 100
[../]
[]
[GlobalParams]
len_scale = 1.0
polar_x = polar_x
polar_y = polar_y
polar_z = polar_z
antiphase_A_x = antiphase_A_x
antiphase_A_y = antiphase_A_y
antiphase_A_z = antiphase_A_z
[]
[Functions]
[./constPm]
type = ParsedFunction
value = -0.54
[../]
[./constPp]
type = ParsedFunction
value = 0.54
[../]
[./constAm]
type = ParsedFunction
value = -7.37
[../]
[./constAp]
type = ParsedFunction
value = 7.37
[../]
[]
[Variables]
[./polar_x]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constPp
[../]
[../]
[./polar_y]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constPp
[../]
[../]
[./polar_z]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constPp
[../]
[../]
[./antiphase_A_x]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constAp
[../]
[../]
[./antiphase_A_y]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constAp
[../]
[../]
[./antiphase_A_z]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constAp
[../]
[../]
[]
[AuxVariables]
[]
[AuxKernels]
[]
[Kernels]
### Operators for the polar field: ###
[./bed_x]
type = BulkEnergyDerivativeEighth
variable = polar_x
component = 0
[../]
[./bed_y]
type = BulkEnergyDerivativeEighth
variable = polar_y
component = 1
[../]
[./bed_z]
type = BulkEnergyDerivativeEighth
variable = polar_z
component = 2
[../]
[./roto_polar_coupled_x]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_x
component = 0
[../]
[./roto_polar_coupled_y]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_y
component = 1
[../]
[./roto_polar_coupled_z]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_z
component = 2
[../]
[./roto_dis_coupled_x]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_x
component = 0
[../]
[./roto_dis_coupled_y]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_y
component = 1
[../]
[./roto_dis_coupled_z]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_z
component = 2
[../]
#Operators for the AFD field
[./rbed_x]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_x
component = 0
[../]
[./rbed_y]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_y
component = 1
[../]
[./rbed_z]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_z
component = 2
[../]
[./polar_x_time]
type = TimeDerivativeScaled
variable=polar_x
time_scale = 1.0
block = '0'
[../]
[./polar_y_time]
type = TimeDerivativeScaled
variable=polar_y
time_scale = 1.0
block = '0'
[../]
[./polar_z_time]
type = TimeDerivativeScaled
variable = polar_z
time_scale = 1.0
block = '0'
[../]
[./a_x_time]
type = TimeDerivativeScaled
variable = antiphase_A_x
time_scale = 0.01
block = '0'
[../]
[./a_y_time]
type = TimeDerivativeScaled
variable = antiphase_A_y
time_scale = 0.01
block = '0'
[../]
[./a_z_time]
type = TimeDerivativeScaled
variable = antiphase_A_z
time_scale = 0.01
block = '0'
[../]
[]
[Materials]
[./Landau_P]
type = GenericConstantMaterial
prop_names = 'alpha1 alpha11 alpha12 alpha111 alpha112 alpha123 alpha1111 alpha1112 alpha1122 alpha1123'
prop_values = '-2.81296 1.72351 2.24147 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./Landau_A]
type = GenericConstantMaterial
prop_names = 'beta1 beta11 beta12 beta111 beta112 beta123 beta1111 beta1112 beta1122 beta1123'
prop_values = '-0.0137763 0.0000349266 0.0000498846 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./P_A_couple]
type = GenericConstantMaterial
prop_names = 't1111 t1122 t1212 t42111111 t24111111 t42111122 t24112222 t42112233 t24112233 t42112211 t24111122 t42111212 t42123312 t24121112 t24121233 t6211111111 t2611111111 t6211111122 t2611222222 t4411111111 t4411112222'
prop_values = '0.012516 0.0180504 -0.036155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[]
[Postprocessors]
[./dt]
type = TimestepSize
[../]
[./FbP]
type = BulkEnergyEighth
execute_on = 'timestep_end'
[../]
[./FbA]
type = RotoBulkEnergyEighth
execute_on = 'timestep_end'
[../]
[./FcPA]
type = RotoPolarCoupledEnergyEighth
execute_on = 'timestep_end'
[../]
[./Ftot]
type = LinearCombinationPostprocessor
pp_names = 'FbP FbA FcPA'
pp_coefs = ' 1 1 1'
execute_on = 'timestep_end'
##########################################
#
# NOTE: Ferret output is in attojoules
#
##########################################
[../]
[./perc_change]
type = EnergyRatePostprocessor
postprocessor = Ftot
execute_on = 'timestep_end'
dt = dt
[../]
[./nodes]
type = NumNodes
[../]
[]
[BCs]
[./Periodic]
[./xy]
auto_direction = 'x y z'
variable = 'polar_x polar_y polar_z antiphase_A_x antiphase_A_y antiphase_A_z'
[../]
[../]
[]
[UserObjects]
[./kill]
type = Terminator
expression = 'perc_change <= 5.0e-5'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart -snes_atol -snes_rtol -ksp_rtol -pc_type -build_twosided'
petsc_options_value = ' 121 1e-10 1e-10 1e-6 bjacobi allreduce'
[../]
[]
[Executioner]
type = Transient
dt = 0.08
solve_type = 'NEWTON'
scheme = 'bdf2'
dtmin = 1e-13
dtmax = 10.0
num_steps = 10
[]
[Outputs]
print_linear_residuals = false
[./out]
type = Exodus
file_base = out_P0A0_f
elemental_as_nodal = true
[../]
[]
(tutorial/BFO_P111_TO_P111b_switch_m1_a1.i)
alphadef = 0.003
endtdef = 0.00223
efreq = 600
Eadef = -1.8e3
[Mesh]
[fileload]
type = FileMeshGenerator
file = out_BFOMDL_P111A111_m1.e
use_for_exodus_restart = true
[]
[]
[GlobalParams]
len_scale = 1.0
mag1_x = mag1_x
mag1_y = mag1_y
mag1_z = mag1_z
mag2_x = mag2_x
mag2_y = mag2_y
mag2_z = mag2_z
polar_x = polar_x
polar_y = polar_y
polar_z = polar_z
antiphase_A_x = antiphase_A_x
antiphase_A_y = antiphase_A_y
antiphase_A_z = antiphase_A_z
displacements = 'u_x u_y u_z'
E_x = E_x
E_y = E_y
E_z = E_z
[]
[Functions]
[./bc_func_1]
type = ParsedFunction
value = 'st'
vars = 'st '
vals = '5e2'
[../]
[]
[Materials]
[./constants] # Constants used in other material properties
type = GenericConstantMaterial
prop_names = ' alpha De D0 g0mu0Ms g0 K1 K1c Kt '
prop_values = '0.003 3.7551 0.003 48291.9 48291.9 -5.0068 -0.00550748 -0.000365997 '
[../]
[./a_long]
type = GenericFunctionMaterial
prop_names = 'alpha_long'
prop_values = 'bc_func_1'
[../]
[./Landau_P]
type = GenericConstantMaterial
prop_names = 'alpha1 alpha11 alpha12 alpha111 alpha112 alpha123 alpha1111 alpha1112 alpha1122 alpha1123'
prop_values = '-2.81296e3 1.72351e3 2.24147e3 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./Landau_A]
type = GenericConstantMaterial
prop_names = 'beta1 beta11 beta12 beta111 beta112 beta123 beta1111 beta1112 beta1122 beta1123'
prop_values = '-0.0137763e3 0.0000349266e3 0.0000498846e3 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./P_A_couple]
type = GenericConstantMaterial
prop_names = 't1111 t1122 t1212 t42111111 t24111111 t42111122 t24112222 t42112233 t24112233 t42112211 t24111122 t42111212 t42123312 t24121112 t24121233 t6211111111 t2611111111 t6211111122 t2611222222 t4411111111 t4411112222'
prop_values = '0.012516e3 0.0180504e3 -0.036155e3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./mat_C]
type = GenericConstantMaterial
prop_names = 'C11 C12 C44'
prop_values = '295.179e3 117.567e3 74.0701e3'
[../]
[./mat_Q]
type = GenericConstantMaterial
prop_names = 'Q11 Q12 Q44'
prop_values = '-0.0603833 0.0111245 -0.0175686'
[../]
[./mat_R]
type = GenericConstantMaterial
prop_names = 'R11 R12 R44'
prop_values = '-0.0000878064 0.0000295306 0.0000627962'
[../]
[./mat_q]
type = GenericConstantMaterial
prop_names = 'q11 q12 q44'
prop_values = '-30.4162e3 -5.01496e3 -10.4105e3'
#the point is the following: use a slightly different definition of Q_ij than Hlinka
[../]
[./mat_r]
type = GenericConstantMaterial
prop_names = 'r11 r12 r44'
prop_values = '-0.0379499e3 0.00373096e3 0.0372105e3'
[../]
[./elasticity_tensor_1]
type = ComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '295.179e3 117.567e3 117.567e3 295.179e3 117.567e3 295.179e3 74.0701e3 74.0701e3 74.0701e3'
[../]
[./strain]
type = ComputeSmallStrain
global_strain = global_strain
[../]
[./global_strain]
type = ComputeGlobalStrain
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./permitivitty_1]
###############################################
##
## so-called background dielectric constant
## (it encapsulates the motion of core electrons
## at high frequency) = e_b*e_0 (here we use
## e_b = 10), see PRB. 74, 104014, (2006)
##
###############################################
type = GenericConstantMaterial
prop_names = 'permittivity'
prop_values = '0.00008854187'
[../]
[]
[Variables]
[./mag1_x]
order = FIRST
family = LAGRANGE
initial_from_file_var = mag1_x
initial_from_file_timestep = 'LATEST'
[../]
[./mag1_y]
order = FIRST
family = LAGRANGE
initial_from_file_var = mag1_y
initial_from_file_timestep = 'LATEST'
[../]
[./mag1_z]
order = FIRST
family = LAGRANGE
initial_from_file_var = mag1_z
initial_from_file_timestep = 'LATEST'
[../]
[./mag2_x]
order = FIRST
family = LAGRANGE
initial_from_file_var = mag2_x
initial_from_file_timestep = 'LATEST'
[../]
[./mag2_y]
order = FIRST
family = LAGRANGE
initial_from_file_var = mag2_y
initial_from_file_timestep = 'LATEST'
[../]
[./mag2_z]
order = FIRST
family = LAGRANGE
initial_from_file_var = mag2_z
initial_from_file_timestep = 'LATEST'
[../]
[./u_x]
[../]
[./u_y]
[../]
[./u_z]
[../]
[./global_strain]
order = SIXTH
family = SCALAR
[../]
[./polar_x]
order = FIRST
family = LAGRANGE
initial_from_file_var = polar_x
initial_from_file_timestep = 'LATEST'
[../]
[./polar_y]
order = FIRST
family = LAGRANGE
initial_from_file_var = polar_y
initial_from_file_timestep = 'LATEST'
[../]
[./polar_z]
order = FIRST
family = LAGRANGE
initial_from_file_var = polar_z
initial_from_file_timestep = 'LATEST'
[../]
[./antiphase_A_x]
order = FIRST
family = LAGRANGE
initial_from_file_var = antiphase_A_x
initial_from_file_timestep = 'LATEST'
[../]
[./antiphase_A_y]
order = FIRST
family = LAGRANGE
initial_from_file_var = antiphase_A_y
initial_from_file_timestep = 'LATEST'
[../]
[./antiphase_A_z]
order = FIRST
family = LAGRANGE
initial_from_file_var = antiphase_A_z
initial_from_file_timestep = 'LATEST'
[../]
[]
[AuxVariables]
[./mag1_s]
order = FIRST
family = LAGRANGE
[../]
[./mag2_s]
order = FIRST
family = LAGRANGE
[../]
[./Neel_L_x]
order = FIRST
family = LAGRANGE
[../]
[./Neel_L_y]
order = FIRST
family = LAGRANGE
[../]
[./Neel_L_z]
order = FIRST
family = LAGRANGE
[../]
[./SSMag_x]
order = FIRST
family = LAGRANGE
[../]
[./SSMag_y]
order = FIRST
family = LAGRANGE
[../]
[./SSMag_z]
order = FIRST
family = LAGRANGE
[../]
[./ph]
order = FIRST
family = LAGRANGE
[../]
[./th1]
order = FIRST
family = LAGRANGE
[../]
[./th2]
order = FIRST
family = LAGRANGE
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./s00]
order = CONSTANT
family = MONOMIAL
[../]
[./s01]
order = CONSTANT
family = MONOMIAL
[../]
[./s10]
order = CONSTANT
family = MONOMIAL
[../]
[./s11]
order = CONSTANT
family = MONOMIAL
[../]
[./e00]
order = CONSTANT
family = MONOMIAL
[../]
[./e01]
order = CONSTANT
family = MONOMIAL
[../]
[./e10]
order = CONSTANT
family = MONOMIAL
[../]
[./e11]
order = CONSTANT
family = MONOMIAL
[../]
[./e22]
order = CONSTANT
family = MONOMIAL
[../]
[./e12]
order = CONSTANT
family = MONOMIAL
[../]
[./e21]
order = CONSTANT
family = MONOMIAL
[../]
[./e02]
order = CONSTANT
family = MONOMIAL
[../]
[./e20]
order = CONSTANT
family = MONOMIAL
[../]
[./E_x]
order = CONSTANT
family = MONOMIAL
[../]
[./E_y]
order = CONSTANT
family = MONOMIAL
[../]
[./E_z]
order = CONSTANT
family = MONOMIAL
[../]
[./sublat1_phi]
order = FIRST
family = LAGRANGE
[../]
[./sublat1_th]
order = FIRST
family = LAGRANGE
[../]
[./sublat2_phi]
order = FIRST
family = LAGRANGE
[../]
[./sublat2_th]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[./rotostr_ux]
type = RotostrictiveCouplingDispDerivative
variable = u_x
component = 0
[../]
[./rotostr_uy]
type = RotostrictiveCouplingDispDerivative
variable = u_y
component = 1
[../]
[./rotostr_uz]
type = RotostrictiveCouplingDispDerivative
variable = u_z
component = 2
[../]
[./electrostr_ux]
type = ElectrostrictiveCouplingDispDerivative
variable = u_x
component = 0
[../]
[./electrostr_uy]
type = ElectrostrictiveCouplingDispDerivative
variable = u_y
component = 1
[../]
[./electrostr_uz]
type = ElectrostrictiveCouplingDispDerivative
variable = u_z
component = 2
[../]
### Operators for the polar field: ###
[./bed_x]
type = BulkEnergyDerivativeEighth
variable = polar_x
component = 0
[../]
[./bed_y]
type = BulkEnergyDerivativeEighth
variable = polar_y
component = 1
[../]
[./bed_z]
type = BulkEnergyDerivativeEighth
variable = polar_z
component = 2
[../]
[./roto_polar_coupled_x]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_x
component = 0
[../]
[./roto_polar_coupled_y]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_y
component = 1
[../]
[./roto_polar_coupled_z]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_z
component = 2
[../]
[./roto_dis_coupled_x]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_x
component = 0
[../]
[./roto_dis_coupled_y]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_y
component = 1
[../]
[./roto_dis_coupled_z]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_z
component = 2
[../]
[./electrostr_polar_coupled_x]
type = ElectrostrictiveCouplingPolarDerivative
variable = polar_x
component = 0
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./electrostr_polar_coupled_y]
type = ElectrostrictiveCouplingPolarDerivative
variable = polar_y
component = 1
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./electrostr_polar_coupled_z]
type = ElectrostrictiveCouplingPolarDerivative
variable = polar_z
component = 2
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
#Operators for the AFD field
[./rbed_x]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_x
component = 0
[../]
[./rbed_y]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_y
component = 1
[../]
[./rbed_z]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_z
component = 2
[../]
[./rotostr_dis_coupled_x]
type = RotostrictiveCouplingDistortDerivative
variable = antiphase_A_x
component = 0
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./rotostr_dis_coupled_y]
type = RotostrictiveCouplingDistortDerivative
variable = antiphase_A_y
component = 1
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./rotostr_dis_coupled_z]
type = RotostrictiveCouplingDistortDerivative
variable = antiphase_A_z
component = 2
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./polar_electric_px]
type = PolarElectricPStrongEConst
variable = polar_x
component = 0
[../]
[./polar_electric_py]
type = PolarElectricPStrongEConst
variable = polar_y
component = 1
[../]
[./polar_electric_pz]
type = PolarElectricPStrongEConst
variable = polar_z
component = 2
[../]
#---------------------------------------#
# #
# Time dependence #
# #
#---------------------------------------#
[./mag1_x_time]
type = TimeDerivative
variable = mag1_x
[../]
[./mag1_y_time]
type = TimeDerivative
variable = mag1_y
[../]
[./mag1_z_time]
type = TimeDerivative
variable = mag1_z
[../]
[./mag2_x_time]
type = TimeDerivative
variable = mag2_x
[../]
[./mag2_y_time]
type = TimeDerivative
variable = mag2_y
[../]
[./mag2_z_time]
type = TimeDerivative
variable = mag2_z
[../]
#---------------------------------------#
# #
# AFM sublattice exchange #
# #
#---------------------------------------#
[./afmex1_x]
type = AFMSublatticeSuperexchange
variable = mag1_x
mag_sub = 0
component = 0
[../]
[./afmex1_y]
type = AFMSublatticeSuperexchange
variable = mag1_y
mag_sub = 0
component = 1
[../]
[./afmex1_z]
type = AFMSublatticeSuperexchange
variable = mag1_z
mag_sub = 0
component = 2
[../]
[./afmex2_x]
type = AFMSublatticeSuperexchange
variable = mag2_x
mag_sub = 1
component = 0
[../]
[./afmex2_y]
type = AFMSublatticeSuperexchange
variable = mag2_y
mag_sub = 1
component = 1
[../]
[./afmex2_z]
type = AFMSublatticeSuperexchange
variable = mag2_z
mag_sub = 1
component = 2
[../]
#---------------------------------------#
# #
# AFM sublattice DMI #
# !isStronglyCoupled=true #
#---------------------------------------#
[./afmdmi1_x]
type = AFMSublatticeDMInteractionSC
variable = mag1_x
mag_sub = 0
component = 0
[../]
[./afmdmi1_y]
type = AFMSublatticeDMInteractionSC
variable = mag1_y
mag_sub = 0
component = 1
[../]
[./afmdmi1_z]
type = AFMSublatticeDMInteractionSC
variable = mag1_z
mag_sub = 0
component = 2
[../]
[./afmdmi2_x]
type = AFMSublatticeDMInteractionSC
variable = mag2_x
mag_sub = 1
component = 0
[../]
[./afmdmi2_y]
type = AFMSublatticeDMInteractionSC
variable = mag2_y
mag_sub = 1
component = 1
[../]
[./afmdmi2_z]
type = AFMSublatticeDMInteractionSC
variable = mag2_z
mag_sub = 1
component = 2
[../]
#---------------------------------------#
# #
# Magnetocrystalline anisotropy for #
# the AFM sublattice in easy-plane #
# !isStronglyCoupled=true #
#---------------------------------------#
[./afma1_x]
type = AFMEasyPlaneAnisotropySC
variable = mag1_x
mag_sub = 0
component = 0
[../]
[./afma1_y]
type = AFMEasyPlaneAnisotropySC
variable = mag1_y
mag_sub = 0
component = 1
[../]
[./afma1_z]
type = AFMEasyPlaneAnisotropySC
variable = mag1_z
mag_sub = 0
component = 2
[../]
[./afma2_x]
type = AFMEasyPlaneAnisotropySC
variable = mag2_x
mag_sub = 1
component = 0
[../]
[./afma2_y]
type = AFMEasyPlaneAnisotropySC
variable = mag2_y
mag_sub = 1
component = 1
[../]
[./afma2_z]
type = AFMEasyPlaneAnisotropySC
variable = mag2_z
mag_sub = 1
component = 2
[../]
#---------------------------------------#
# #
# Single-ion anisotropy environment #
# for the AFM sublattice in the #
# degenerate easy-plane #
# !isStronglyCoupled=true #
#---------------------------------------#
[./afmsia1_x]
type = AFMSingleIonCubicSixthAnisotropySC
variable = mag1_x
mag_sub = 0
component = 0
[../]
[./afmsia1_y]
type = AFMSingleIonCubicSixthAnisotropySC
variable = mag1_y
mag_sub = 0
component = 1
[../]
[./afmsia1_z]
type = AFMSingleIonCubicSixthAnisotropySC
variable = mag1_z
mag_sub = 0
component = 2
[../]
[./afmsia2_x]
type = AFMSingleIonCubicSixthAnisotropySC
variable = mag2_x
mag_sub = 1
component = 0
[../]
[./afmsia2_y]
type = AFMSingleIonCubicSixthAnisotropySC
variable = mag2_y
mag_sub = 1
component = 1
[../]
[./afmsia2_z]
type = AFMSingleIonCubicSixthAnisotropySC
variable = mag2_z
mag_sub = 1
component = 2
[../]
#---------------------------------------#
# #
# LLB constraint terms #
# #
#---------------------------------------#
[./llb1_x]
type = LongitudinalLLB
variable = mag1_x
mag_x = mag1_x
mag_y = mag1_y
mag_z = mag1_z
component = 0
[../]
[./llb1_y]
type = LongitudinalLLB
variable = mag1_y
mag_x = mag1_x
mag_y = mag1_y
mag_z = mag1_z
component = 1
[../]
[./llb1_z]
type = LongitudinalLLB
variable = mag1_z
mag_x = mag1_x
mag_y = mag1_y
mag_z = mag1_z
component = 2
[../]
[./llb2_x]
type = LongitudinalLLB
variable = mag2_x
mag_x = mag2_x
mag_y = mag2_y
mag_z = mag2_z
component = 0
[../]
[./llb2_y]
type = LongitudinalLLB
variable = mag2_y
mag_x = mag2_x
mag_y = mag2_y
mag_z = mag2_z
component = 1
[../]
[./llb2_z]
type = LongitudinalLLB
variable = mag2_z
mag_x = mag2_x
mag_y = mag2_y
mag_z = mag2_z
component = 2
[../]
#---------------------------------------#
# #
# Time dependence #
# #
#---------------------------------------#
[./polar_x_time]
type = TimeDerivativeScaled
variable=polar_x
time_scale = 0.005
block = '0'
[../]
[./polar_y_time]
type = TimeDerivativeScaled
variable=polar_y
time_scale = 0.005
block = '0'
[../]
[./polar_z_time]
type = TimeDerivativeScaled
variable = polar_z
time_scale = 0.005
block = '0'
[../]
[./a_x_time]
type = TimeDerivativeScaled
variable = antiphase_A_x
time_scale = 0.00005
block = '0'
[../]
[./a_y_time]
type = TimeDerivativeScaled
variable = antiphase_A_y
time_scale = 0.00005
block = '0'
[../]
[./a_z_time]
type = TimeDerivativeScaled
variable = antiphase_A_z
time_scale = 0.00005
block = '0'
[../]
[]
[AuxKernels]
[./mag1_mag]
type = VectorMag
variable = mag1_s
vector_x = mag1_x
vector_y = mag1_y
vector_z = mag1_z
execute_on = 'initial timestep_end final'
[../]
[./mag2_mag]
type = VectorMag
variable = mag2_s
vector_x = mag2_x
vector_y = mag2_y
vector_z = mag2_z
execute_on = 'initial timestep_end final'
[../]
[./Neel_Lx]
type = VectorDiffOrSum
variable = Neel_L_x
var1 = mag1_x
var2 = mag2_x
diffOrSum = 0
execute_on = 'initial timestep_end final'
[../]
[./Neel_Ly]
type = VectorDiffOrSum
variable = Neel_L_y
var1 = mag1_y
var2 = mag2_y
diffOrSum = 0
execute_on = 'initial timestep_end final'
[../]
[./Neel_Lz]
type = VectorDiffOrSum
variable = Neel_L_z
var1 = mag1_z
var2 = mag2_z
diffOrSum = 0
execute_on = 'initial timestep_end final'
[../]
[./smallSignalMag_x]
type = VectorDiffOrSum
variable = SSMag_x
var1 = mag1_x
var2 = mag2_x
diffOrSum = 1
execute_on = 'initial timestep_end final'
[../]
[./smallSignalMag_y]
type = VectorDiffOrSum
variable = SSMag_y
var1 = mag1_y
var2 = mag2_y
diffOrSum = 1
execute_on = 'initial timestep_end final'
[../]
[./smallSignalMag_z]
type = VectorDiffOrSum
variable = SSMag_z
var1 = mag1_z
var2 = mag2_z
diffOrSum = 1
execute_on = 'initial timestep_end final'
[../]
[./phc]
type = AngleBetweenTwoVectors
variable = ph
var1x = mag1_x
var1y = mag1_y
var1z = mag1_z
var2x = mag2_x
var2y = mag2_y
var2z = mag2_z
execute_on = 'initial timestep_end final'
[../]
[./th1c]
type = AngleBetweenTwoVectors
variable = th1
var1x = mag1_x
var1y = mag1_y
var1z = mag1_z
var2x = polar_x
var2y = polar_y
var2z = polar_z
execute_on = 'initial timestep_end final'
[../]
[./th2c]
type = AngleBetweenTwoVectors
variable = th2
var1x = mag2_x
var1y = mag2_y
var1z = mag2_z
var2x = polar_x
var2y = polar_y
var2z = polar_z
execute_on = 'initial timestep_end final'
[../]
[./disp_x]
type = GlobalDisplacementAux
variable = disp_x
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 0
[../]
[./disp_y]
type = GlobalDisplacementAux
variable = disp_y
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 1
[../]
[./disp_z]
type = GlobalDisplacementAux
variable = disp_z
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 2
[../]
[./s00]
type = RankTwoAux
variable = s00
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./s01]
type = RankTwoAux
variable = s01
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[./s10]
type = RankTwoAux
variable = s10
rank_two_tensor = stress
index_i = 1
index_j = 0
[../]
[./s11]
type = RankTwoAux
variable = s11
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./e00]
type = RankTwoAux
variable = e00
rank_two_tensor = total_strain
index_i = 0
index_j = 0
[../]
[./e01]
type = RankTwoAux
variable = e01
rank_two_tensor = total_strain
index_i = 0
index_j = 1
[../]
[./e10]
type = RankTwoAux
variable = e10
rank_two_tensor = total_strain
index_i = 1
index_j = 0
[../]
[./e11]
type = RankTwoAux
variable = e11
rank_two_tensor = total_strain
index_i = 1
index_j = 1
[../]
[./e12]
type = RankTwoAux
variable = e12
rank_two_tensor = total_strain
index_i = 1
index_j = 2
[../]
[./e21]
type = RankTwoAux
variable = e21
rank_two_tensor = total_strain
index_i = 2
index_j = 1
[../]
[./e20]
type = RankTwoAux
variable = e20
rank_two_tensor = total_strain
index_i = 2
index_j = 0
[../]
[./e02]
type = RankTwoAux
variable = e02
rank_two_tensor = total_strain
index_i = 0
index_j = 2
[../]
[./e22]
type = RankTwoAux
variable = e22
rank_two_tensor = total_strain
index_i = 2
index_j = 2
[../]
[./ez]
type = HarmonicFieldAux
variable = E_z
amplitude = ${Eadef}
correction = 1.0
frequency = ${efreq}
tshift = 0.0
ton = 0.0
toff = 0.000944
execute_on = 'initial timestep_end final'
[../]
[./mcsublat1_phi]
type = SphericalCoordinateVector
variable = sublat1_phi
component = 0
var1x = mag1_x
var1y = mag1_y
var1z = mag1_z
execute_on = 'initial timestep_end final'
[../]
[./mcsublat1_th]
type = SphericalCoordinateVector
variable = sublat1_th
component = 1
var1x = mag1_x
var1y = mag1_y
var1z = mag1_z
execute_on = 'initial timestep_end final'
[../]
[./mcsublat2_phi]
type = SphericalCoordinateVector
variable = sublat2_phi
component = 0
var1x = mag2_x
var1y = mag2_y
var1z = mag2_z
execute_on = 'initial timestep_end final'
[../]
[./mcsublat2_th]
type = SphericalCoordinateVector
variable = sublat2_th
component = 1
var1x = mag2_x
var1y = mag2_y
var1z = mag2_z
execute_on = 'initial timestep_end final'
[../]
[]
[ScalarKernels]
[./global_strain]
type = GlobalStrain
variable = global_strain
global_strain_uo = global_strain_uo
[../]
[]
[BCs]
[./Periodic]
[./xyz]
auto_direction = 'x y z'
variable = 'u_x u_y u_z polar_x polar_y polar_z antiphase_A_x antiphase_A_y antiphase_A_z mag1_x mag1_y mag1_z mag2_x mag2_y mag2_z'
[../]
[../]
# fix center point location
[./centerfix_x]
type = DirichletBC
boundary = 100
variable = u_x
value = 0
[../]
[./centerfix_y]
type = DirichletBC
boundary = 100
variable = u_y
value = 0
[../]
[./centerfix_z]
type = DirichletBC
boundary = 100
variable = u_z
value = 0
[../]
[]
[Postprocessors]
#---------------------------------------#
# #
# Average Mk = |m_k| and along #
# other directions #
# #
#---------------------------------------#
[./M1]
type = ElementAverageValue
variable = mag1_s
execute_on = 'initial timestep_end final'
[../]
[./M2]
type = ElementAverageValue
variable = mag2_s
execute_on = 'initial timestep_end final'
[../]
[./<m1x>]
type = ElementAverageValue
variable = mag1_x
execute_on = 'initial timestep_end final'
[../]
[./<m1y>]
type = ElementAverageValue
variable = mag1_y
execute_on = 'initial timestep_end final'
[../]
[./<m1z>]
type = ElementAverageValue
variable = mag1_z
execute_on = 'initial timestep_end final'
[../]
[./<m2x>]
type = ElementAverageValue
variable = mag2_x
execute_on = 'initial timestep_end final'
[../]
[./<m2y>]
type = ElementAverageValue
variable = mag2_y
execute_on = 'initial timestep_end final'
[../]
[./<m2z>]
type = ElementAverageValue
variable = mag2_z
execute_on = 'initial timestep_end final'
[../]
[./<Lx>]
type = ElementAverageValue
variable = Neel_L_x
execute_on = 'initial timestep_end final'
[../]
[./<Ly>]
type = ElementAverageValue
variable = Neel_L_y
execute_on = 'initial timestep_end final'
[../]
[./<Lz>]
type = ElementAverageValue
variable = Neel_L_z
execute_on = 'initial timestep_end final'
[../]
[./<SSmx>]
type = ElementAverageValue
variable = SSMag_x
execute_on = 'initial timestep_end final'
[../]
[./<SSmy>]
type = ElementAverageValue
variable = SSMag_y
execute_on = 'initial timestep_end final'
[../]
[./<SSmz>]
type = ElementAverageValue
variable = SSMag_z
execute_on = 'initial timestep_end final'
[../]
[./<ph>]
type = ElementAverageValue
variable = ph
execute_on = 'initial timestep_end final'
[../]
[./<th1>]
type = ElementAverageValue
variable = th1
execute_on = 'initial timestep_end final'
[../]
[./<th2>]
type = ElementAverageValue
variable = th2
execute_on = 'initial timestep_end final'
[../]
[./<sl1phi>]
type = ElementAverageValue
variable = sublat1_phi
execute_on = 'initial timestep_end final'
[../]
[./<sl1th>]
type = ElementAverageValue
variable = sublat1_th
execute_on = 'initial timestep_end final'
[../]
[./<sl2phi>]
type = ElementAverageValue
variable = sublat2_phi
execute_on = 'initial timestep_end final'
[../]
[./<sl2th>]
type = ElementAverageValue
variable = sublat2_th
execute_on = 'initial timestep_end final'
[../]
#---------------------------------------#
# #
# Calculate exchange energy of #
# the magnetic body #
# #
#---------------------------------------#
[./FafmSLexch]
type = AFMSublatticeSuperexchangeEnergy
execute_on = 'initial timestep_end final'
mag1_x = mag1_x
mag1_y = mag1_y
mag1_z = mag1_z
mag2_x = mag2_x
mag2_y = mag2_y
mag2_z = mag2_z
energy_scale = 6241.51
[../]
[./FafmSLdmi]
type = AFMSublatticeDMInteractionEnergy
execute_on = 'initial timestep_end final'
energy_scale = 6241.51
[../]
#---------------------------------------#
# #
# Calculate excess energy from missed #
# LLB targets #
# #
#---------------------------------------#
[./Fllb1]
type = MagneticExcessLLBEnergy
mag_x = mag1_x
mag_y = mag1_y
mag_z = mag1_z
execute_on = 'initial timestep_end final'
[../]
[./Fllb2]
type = MagneticExcessLLBEnergy
mag_x = mag2_x
mag_y = mag2_y
mag_z = mag2_z
execute_on = 'initial timestep_end final'
[../]
#---------------------------------------#
# #
# Calculate the anisotropy energy #
# #
#---------------------------------------#
[./Fa1]
type = AFMEasyPlaneAnisotropyEnergy
execute_on = 'initial timestep_end final'
mag_x = mag1_x
mag_y = mag1_y
mag_z = mag1_z
energy_scale = 6241.51
[../]
[./Fa2]
type = AFMEasyPlaneAnisotropyEnergy
execute_on = 'initial timestep_end final'
mag_x = mag2_x
mag_y = mag2_y
mag_z = mag2_z
energy_scale = 6241.51
[../]
[./Fsia1]
type = AFMSingleIonCubicSixthAnisotropyEnergy
execute_on = 'initial timestep_end final'
mag_x = mag1_x
mag_y = mag1_y
mag_z = mag1_z
energy_scale = 6241.51
[../]
[./Fsia2]
type = AFMSingleIonCubicSixthAnisotropyEnergy
execute_on = 'initial timestep_end final'
mag_x = mag2_x
mag_y = mag2_y
mag_z = mag2_z
energy_scale = 6241.51
[../]
#---------------------------------------#
# #
# add all the energy contributions #
# and calculate their percent change #
# #
#---------------------------------------#
[./FtotMAG]
type = LinearCombinationPostprocessor
pp_names = 'FafmSLexch FafmSLdmi Fa1 Fa2 Fsia1 Fsia2'
pp_coefs = ' 1.0 1.0 1.0 1.0 1.0 1.0'
execute_on = 'initial timestep_end final'
[../]
[./FtotLLB]
type = LinearCombinationPostprocessor
pp_names = 'Fllb1 Fllb2'
pp_coefs = ' 1.0 1.0'
execute_on = 'initial timestep_end final'
[../]
[./Px]
type = ElementAverageValue
variable = polar_x
execute_on = 'initial timestep_end final'
[../]
[./Py]
type = ElementAverageValue
variable = polar_y
execute_on = 'initial timestep_end final'
[../]
[./Pz]
type = ElementAverageValue
variable = polar_z
execute_on = 'initial timestep_end final'
[../]
[./Ax]
type = ElementAverageValue
variable = antiphase_A_x
execute_on = 'initial timestep_end final'
[../]
[./Ay]
type = ElementAverageValue
variable = antiphase_A_y
execute_on = 'initial timestep_end final'
[../]
[./Az]
type = ElementAverageValue
variable = antiphase_A_z
execute_on = 'initial timestep_end final'
[../]
[./e00]
type = ElementAverageValue
variable = e00
execute_on = 'initial timestep_end final'
[../]
[./e11]
type = ElementAverageValue
variable = e11
execute_on = 'initial timestep_end final'
[../]
[./e22]
type = ElementAverageValue
variable = e22
execute_on = 'initial timestep_end final'
[../]
[./e01]
type = ElementAverageValue
variable = e01
execute_on = 'initial timestep_end final'
[../]
[./e12]
type = ElementAverageValue
variable = e12
execute_on = 'initial timestep_end final'
[../]
[./e02]
type = ElementAverageValue
variable = e02
execute_on = 'initial timestep_end final'
[../]
[./Ez]
type = ElementAverageValue
variable = E_z
execute_on = 'initial timestep_end final'
[../]
[./dt]
type = TimestepSize
[../]
[./FbP]
type = BulkEnergyEighth
execute_on = 'initial timestep_end final'
energy_scale = 6.24151
[../]
[./FbA]
type = RotoBulkEnergyEighth
execute_on = 'initial timestep_end final'
energy_scale = 6.24151
[../]
[./FcPA]
type = RotoPolarCoupledEnergyEighth
execute_on = 'initial timestep_end final'
energy_scale = 6.24151
[../]
[./FcPu]
type = ElectrostrictiveCouplingEnergy
execute_on = 'initial timestep_end final'
energy_scale = 6.24151
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./FcAu]
type = RotostrictiveCouplingEnergy
execute_on = 'initial timestep_end final'
energy_scale = 6.24151
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./Felu]
type = ElasticEnergy
execute_on = 'initial timestep_end final'
energy_scale = 6.24151
[../]
[./scSSMag_x]
type = LinearCombinationPostprocessor
pp_names = '<SSmx>'
pp_coefs = ' 100 '
execute_on = 'initial timestep_end final'
[../]
[./scSSMag_y]
type = LinearCombinationPostprocessor
pp_names = '<SSmy>'
pp_coefs = ' 100 '
execute_on = 'initial timestep_end final'
[../]
[./scSSMag_z]
type = LinearCombinationPostprocessor
pp_names = '<SSmz>'
pp_coefs = ' 100 '
execute_on = 'initial timestep_end final'
[../]
[./rA_x]
type = LinearCombinationPostprocessor
pp_names = 'Ax'
pp_coefs = '0.017453277'
execute_on = 'initial timestep_end final'
[../]
[./rA_y]
type = LinearCombinationPostprocessor
pp_names = 'Ay'
pp_coefs = '0.017453277'
execute_on = 'initial timestep_end final'
[../]
[./rA_z]
type = LinearCombinationPostprocessor
pp_names = 'Az'
pp_coefs = '0.017453277'
execute_on = 'initial timestep_end final'
[../]
[./FtotFER]
type = LinearCombinationPostprocessor
pp_names = 'FbP FbA FcPA FcPu FcAu Felu'
pp_coefs = ' 1 1 1 1 1 1 '
execute_on = 'initial timestep_end final'
##########################################
#
# NOTE: Ferret output is in attojoules
#
##########################################
[../]
[./perc_change]
type = EnergyRatePostprocessor
postprocessor = FtotFER
execute_on = 'initial timestep_end final'
dt = dt
[../]
[./elapsed]
type = PerfGraphData
section_name = "Root" # for profiling the problem
data_type = total
[../]
[]
[UserObjects]
[./global_strain_uo]
type = GlobalBFOMaterialRVEUserObject
execute_on = 'Initial Linear Nonlinear'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
petsc_options_iname = '-ksp_gmres_restart -snes_atol -snes_rtol -ksp_rtol -pc_type '
petsc_options_value = ' 121 1e-8 1e-7 1e-5 bjacobi'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
[./TimeIntegrator]
type = ImplicitEuler
[../]
dtmin = 1e-14
dtmax = 1.0e-6
[./TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 18 #usually 8-16
linear_iteration_ratio = 100
dt = 1.0e-8
[../]
num_steps = 150000
end_time = ${endtdef}
[]
[Outputs]
print_linear_residuals = false
perf_graph_live = false
[./out]
type = Exodus
file_base = out_P111-P111b-BFOMDL_m1_a1
elemental_as_nodal = true
[../]
[./outCSV]
type = CSV
file_base = out_P111-P111b-BFOMDL_m1_a1
[../]
#
[]
(tutorial/BFO_homogeneous_PA.i)
Nx = 3
Ny = 3
Nz = 3
xMax = 1.0
yMax = 1.0
zMax = 1.0
g11 = 12e-3
g12 = -3.0e-3
g44 = 3.0e-3
h11 = 2.0e-4
h12 = -0.2e-3
h44 = 0.8e-3
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = ${Nx}
ny = ${Ny}
nz = ${Nz}
xmin = 0.0
xmax = ${xMax}
ymin = 0.0
ymax = ${yMax}
zmin = 0.0
zmax = ${zMax}
elem_type = HEX8
[]
[./cnode]
input = gen
############################################
##
## additional boundary sideset (one node)
## to zero one of the elastic displacement vectors
## vectors and eliminates rigid body translations
## from the degrees of freedom
##
## NOTE: This must conform with the about
## [Mesh] block settings
##
############################################
type = ExtraNodesetGenerator
coord = '0.0 0.0 0.0'
new_boundary = 100
[../]
[]
[GlobalParams]
len_scale = 1.0
polar_x = polar_x
polar_y = polar_y
polar_z = polar_z
antiphase_A_x = antiphase_A_x
antiphase_A_y = antiphase_A_y
antiphase_A_z = antiphase_A_z
displacements = 'u_x u_y u_z'
potential_E_int = potential_E_int
[]
[Functions]
[./constPm]
type = ParsedFunction
value = -0.50
[../]
[./constPp]
type = ParsedFunction
value = 0.50
[../]
[./constAm]
type = ParsedFunction
value = -7.1
[../]
[./constAp]
type = ParsedFunction
value = 7.1
[../]
[]
[Variables]
[./u_x]
[../]
[./u_y]
[../]
[./u_z]
[../]
[./global_strain]
order = SIXTH
family = SCALAR
[../]
[./polar_x]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constPp
[../]
[../]
[./polar_y]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constPp
[../]
[../]
[./polar_z]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constPm
[../]
[../]
[./antiphase_A_x]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constAp
[../]
[../]
[./antiphase_A_y]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constAp
[../]
[../]
[./antiphase_A_z]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = constAm
[../]
[../]
[./potential_E_int]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[./rotostr_ux]
type = RotostrictiveCouplingDispDerivative
variable = u_x
component = 0
[../]
[./rotostr_uy]
type = RotostrictiveCouplingDispDerivative
variable = u_y
component = 1
[../]
[./rotostr_uz]
type = RotostrictiveCouplingDispDerivative
variable = u_z
component = 2
[../]
[./electrostr_ux]
type = ElectrostrictiveCouplingDispDerivative
variable = u_x
component = 0
[../]
[./electrostr_uy]
type = ElectrostrictiveCouplingDispDerivative
variable = u_y
component = 1
[../]
[./electrostr_uz]
type = ElectrostrictiveCouplingDispDerivative
variable = u_z
component = 2
[../]
### Operators for the polar field: ###
[./bed_x]
type = BulkEnergyDerivativeEighth
variable = polar_x
component = 0
[../]
[./bed_y]
type = BulkEnergyDerivativeEighth
variable = polar_y
component = 1
[../]
[./bed_z]
type = BulkEnergyDerivativeEighth
variable = polar_z
component = 2
[../]
[./walled_x]
type = WallEnergyDerivative
variable = polar_x
component = 0
[../]
[./walled_y]
type = WallEnergyDerivative
variable = polar_y
component = 1
[../]
[./walled_z]
type = WallEnergyDerivative
variable = polar_z
component = 2
[../]
[./walled2_x]
type = Wall2EnergyDerivative
variable = polar_x
component = 0
[../]
[./walled2_y]
type = Wall2EnergyDerivative
variable = polar_y
component = 1
[../]
[./walled2_z]
type = Wall2EnergyDerivative
variable = polar_z
component = 2
[../]
[./walled_a_x]
type = AFDWallEnergyDerivative
variable = antiphase_A_x
component = 0
[../]
[./walled_a_y]
type = AFDWallEnergyDerivative
variable = antiphase_A_y
component = 1
[../]
[./walled_a_z]
type = AFDWallEnergyDerivative
variable = antiphase_A_z
component = 2
[../]
[./walled2_a_x]
type = AFDWall2EnergyDerivative
variable = antiphase_A_x
component = 0
[../]
[./walled2_a_y]
type = AFDWall2EnergyDerivative
variable = antiphase_A_y
component = 1
[../]
[./walled2_a_z]
type = AFDWall2EnergyDerivative
variable = antiphase_A_z
component = 2
[../]
[./roto_polar_coupled_x]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_x
component = 0
[../]
[./roto_polar_coupled_y]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_y
component = 1
[../]
[./roto_polar_coupled_z]
type = RotoPolarCoupledEnergyPolarDerivativeAlt
variable = polar_z
component = 2
[../]
[./roto_dis_coupled_x]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_x
component = 0
[../]
[./roto_dis_coupled_y]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_y
component = 1
[../]
[./roto_dis_coupled_z]
type = RotoPolarCoupledEnergyDistortDerivativeAlt
variable = antiphase_A_z
component = 2
[../]
[./electrostr_polar_coupled_x]
type = ElectrostrictiveCouplingPolarDerivative
variable = polar_x
component = 0
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./electrostr_polar_coupled_y]
type = ElectrostrictiveCouplingPolarDerivative
variable = polar_y
component = 1
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./electrostr_polar_coupled_z]
type = ElectrostrictiveCouplingPolarDerivative
variable = polar_z
component = 2
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
#Operators for the AFD field
[./rbed_x]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_x
component = 0
[../]
[./rbed_y]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_y
component = 1
[../]
[./rbed_z]
type = RotoBulkEnergyDerivativeEighthAlt
variable = antiphase_A_z
component = 2
[../]
[./rotostr_dis_coupled_x]
type = RotostrictiveCouplingDistortDerivative
variable = antiphase_A_x
component = 0
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./rotostr_dis_coupled_y]
type = RotostrictiveCouplingDistortDerivative
variable = antiphase_A_y
component = 1
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./rotostr_dis_coupled_z]
type = RotostrictiveCouplingDistortDerivative
variable = antiphase_A_z
component = 2
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./polar_x_electric_E]
type = PolarElectricEStrong
variable = potential_E_int
[../]
[./FE_E_int]
type = Electrostatics
variable = potential_E_int
[../]
[./polar_electric_px]
type = PolarElectricPStrong
variable = polar_x
component = 0
[../]
[./polar_electric_py]
type = PolarElectricPStrong
variable = polar_y
component = 1
[../]
[./polar_electric_pz]
type = PolarElectricPStrong
variable = polar_z
component = 2
[../]
[./polar_x_time]
type = TimeDerivativeScaled
variable=polar_x
time_scale = 1.0
block = '0'
[../]
[./polar_y_time]
type = TimeDerivativeScaled
variable=polar_y
time_scale = 1.0
block = '0'
[../]
[./polar_z_time]
type = TimeDerivativeScaled
variable = polar_z
time_scale = 1.0
block = '0'
[../]
[./a_x_time]
type = TimeDerivativeScaled
variable = antiphase_A_x
time_scale = 0.01
block = '0'
[../]
[./a_y_time]
type = TimeDerivativeScaled
variable = antiphase_A_y
time_scale = 0.01
block = '0'
[../]
[./a_z_time]
type = TimeDerivativeScaled
variable = antiphase_A_z
time_scale = 0.01
block = '0'
[../]
[./u_x_time]
type = TimeDerivativeScaled
variable = u_x
time_scale = 1.0
[../]
[./u_y_time]
type = TimeDerivativeScaled
variable = u_y
time_scale = 1.0
[../]
[./u_z_time]
type = TimeDerivativeScaled
variable = u_z
time_scale = 1.0
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./s00]
order = CONSTANT
family = MONOMIAL
[../]
[./s01]
order = CONSTANT
family = MONOMIAL
[../]
[./s10]
order = CONSTANT
family = MONOMIAL
[../]
[./s11]
order = CONSTANT
family = MONOMIAL
[../]
[./e00]
order = CONSTANT
family = MONOMIAL
[../]
[./e01]
order = CONSTANT
family = MONOMIAL
[../]
[./e10]
order = CONSTANT
family = MONOMIAL
[../]
[./e11]
order = CONSTANT
family = MONOMIAL
[../]
[./e22]
order = CONSTANT
family = MONOMIAL
[../]
[./e12]
order = CONSTANT
family = MONOMIAL
[../]
[./e21]
order = CONSTANT
family = MONOMIAL
[../]
[./e02]
order = CONSTANT
family = MONOMIAL
[../]
[./e20]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./disp_x]
type = GlobalDisplacementAux
variable = disp_x
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 0
[../]
[./disp_y]
type = GlobalDisplacementAux
variable = disp_y
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 1
[../]
[./disp_z]
type = GlobalDisplacementAux
variable = disp_z
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 2
[../]
[./s00]
type = RankTwoAux
variable = s00
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./s01]
type = RankTwoAux
variable = s01
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[./s10]
type = RankTwoAux
variable = s10
rank_two_tensor = stress
index_i = 1
index_j = 0
[../]
[./s11]
type = RankTwoAux
variable = s11
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./e00]
type = RankTwoAux
variable = e00
rank_two_tensor = total_strain
index_i = 0
index_j = 0
[../]
[./e01]
type = RankTwoAux
variable = e01
rank_two_tensor = total_strain
index_i = 0
index_j = 1
[../]
[./e10]
type = RankTwoAux
variable = e10
rank_two_tensor = total_strain
index_i = 1
index_j = 0
[../]
[./e11]
type = RankTwoAux
variable = e11
rank_two_tensor = total_strain
index_i = 1
index_j = 1
[../]
[./e12]
type = RankTwoAux
variable = e12
rank_two_tensor = total_strain
index_i = 1
index_j = 2
[../]
[./e21]
type = RankTwoAux
variable = e21
rank_two_tensor = total_strain
index_i = 2
index_j = 1
[../]
[./e20]
type = RankTwoAux
variable = e20
rank_two_tensor = total_strain
index_i = 2
index_j = 0
[../]
[./e02]
type = RankTwoAux
variable = e02
rank_two_tensor = total_strain
index_i = 0
index_j = 2
[../]
[./e22]
type = RankTwoAux
variable = e22
rank_two_tensor = total_strain
index_i = 2
index_j = 2
[../]
[]
[ScalarKernels]
[./global_strain]
type = GlobalStrain
variable = global_strain
global_strain_uo = global_strain_uo
[../]
[]
[Materials]
[./Landau_P]
type = GenericConstantMaterial
prop_names = 'alpha1 alpha11 alpha12 alpha111 alpha112 alpha123 alpha1111 alpha1112 alpha1122 alpha1123'
prop_values = '-2.81296 1.72351 2.24147 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./Landau_A]
type = GenericConstantMaterial
prop_names = 'beta1 beta11 beta12 beta111 beta112 beta123 beta1111 beta1112 beta1122 beta1123'
prop_values = '-0.0137763 0.0000349266 0.0000498846 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./P_A_couple]
type = GenericConstantMaterial
prop_names = 't1111 t1122 t1212 t42111111 t24111111 t42111122 t24112222 t42112233 t24112233 t42112211 t24111122 t42111212 t42123312 t24121112 t24121233 t6211111111 t2611111111 t6211111122 t2611222222 t4411111111 t4411112222'
prop_values = '0.012516 0.0180504 -0.036155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0'
[../]
[./Landau_G]
type = GenericConstantMaterial
prop_names = 'G110 G11_G110 G12_G110 G44_G110 G44P_G110'
prop_values = '1.0 ${g11} ${g12} ${g44} 0.0'
[../]
[./Landau_H]
type = GenericConstantMaterial
prop_names = 'H110 H11_H110 H12_H110 H44_H110 H44P_H110'
prop_values = '1.0 ${h11} ${h12} ${h44} 0.0'
[../]
[./mat_C]
type = GenericConstantMaterial
prop_names = 'C11 C12 C44'
prop_values = '295.179 117.567 74.0701'
[../]
[./mat_Q]
type = GenericConstantMaterial
prop_names = 'Q11 Q12 Q44'
prop_values = '-0.0603833 0.0111245 -0.0175686'
[../]
[./mat_R]
type = GenericConstantMaterial
prop_names = 'R11 R12 R44'
prop_values = '-0.0000878064 0.0000295306 0.0000627962'
[../]
[./mat_q]
type = GenericConstantMaterial
prop_names = 'q11 q12 q44'
prop_values = '-30.4162 -5.01496 -10.4105'
#the point is the following: use a slightly different definition of Q_ij than Hlinka
[../]
[./mat_r]
type = GenericConstantMaterial
prop_names = 'r11 r12 r44'
prop_values = '-0.0379499 0.00373096 0.0372105'
[../]
[./elasticity_tensor_1]
type = ComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '295.179 117.567 117.567 295.179 117.567 295.179 74.0701 74.0701 74.0701'
[../]
[./strain]
type = ComputeSmallStrain
global_strain = global_strain
[../]
[./global_strain]
type = ComputeGlobalStrain
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./permitivitty_1]
###############################################
##
## so-called background dielectric constant
## (it encapsulates the motion of core electrons
## at high frequency) = e_b*e_0 (here we use
## e_b = 10), see PRB. 74, 104014, (2006)
##
###############################################
type = GenericConstantMaterial
prop_names = 'permittivity'
prop_values = '0.08854187'
[../]
[]
[Postprocessors]
[./dt]
type = TimestepSize
[../]
[./FbP]
type = BulkEnergyEighth
execute_on = 'timestep_end'
[../]
[./FbA]
type = RotoBulkEnergyEighth
execute_on = 'timestep_end'
[../]
[./FcPA]
type = RotoPolarCoupledEnergyEighth
execute_on = 'timestep_end'
[../]
[./FgP]
type = WallEnergy
execute_on = 'timestep_end'
[../]
[./FgA]
type = AFDWallEnergy
execute_on = 'timestep_end'
[../]
[./FcPu]
type = ElectrostrictiveCouplingEnergy
execute_on = 'timestep_end'
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./FcAu]
type = RotostrictiveCouplingEnergy
execute_on = 'timestep_end'
u_x = disp_x
u_y = disp_y
u_z = disp_z
[../]
[./Felu]
type = ElasticEnergy
execute_on = 'timestep_end'
[../]
[./Fele]
type = ElectrostaticEnergy
execute_on = 'initial timestep_end'
[../]
[./Ftot]
type = LinearCombinationPostprocessor
pp_names = 'FbP FbA FgP FgA FcPA FcPu FcAu Felu Fele'
pp_coefs = ' 1 1 1 1 1 1 1 1 1'
execute_on = 'timestep_end'
##########################################
#
# NOTE: Ferret output is in attojoules
#
##########################################
[../]
[./perc_change]
type = EnergyRatePostprocessor
postprocessor = Ftot
execute_on = 'timestep_end'
dt = dt
[../]
[]
[BCs]
[./Periodic]
[./x]
auto_direction = 'x y z'
variable = 'u_x u_y u_z polar_x polar_y polar_z antiphase_A_x antiphase_A_y antiphase_A_z'
[../]
[./xyz]
auto_direction = 'x y z'
variable = 'potential_E_int'
[../]
[../]
# fix center point location
[./centerfix_x]
type = DirichletBC
boundary = 100
variable = u_x
value = 0
[../]
[./centerfix_y]
type = DirichletBC
boundary = 100
variable = u_y
value = 0
[../]
[./centerfix_z]
type = DirichletBC
boundary = 100
variable = u_z
value = 0
[../]
[]
[UserObjects]
[./global_strain_uo]
type = GlobalBFOMaterialRVEUserObject
execute_on = 'Initial Linear Nonlinear'
[../]
[./kill]
type = Terminator
expression = 'perc_change <= 5.0e-7'
[../]
[]
#=
[Preconditioning]
[./smp]
type = SMP
full = true
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart -snes_atol -snes_rtol -ksp_rtol -pc_type -build_twosided'
petsc_options_value = ' 121 1e-8 1e-7 1e-6 bjacobi allreduce'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
scheme = 'bdf2'
dtmin = 1e-13
dtmax = 10.0
[./TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 25 #usually 10
linear_iteration_ratio = 100
dt = 0.001
growth_factor = 1.1
[../]
[]
[Outputs]
print_linear_residuals = false
perf_graph_live = false
[./out]
type = Exodus
file_base = BFO_P0A0
elemental_as_nodal = true
[../]
[]