- variableThe name of the variable that this object applies to
C++ Type:AuxVariableName
Controllable:No
Description:The name of the variable that this object applies to
BandGapAuxZnO
Calculates the changes to local band gap due to the elastic strain fields.
Overview
Calculates a simple band gap shift due to stress tensor components and ,
where is the unstrained band gap energy and the other parameters correspond to the mechanical deformation.
Example Input File Syntax
Input Parameters
- biaxial_relaxation_coeff0biaxial relaxation coeff
Default:0
C++ Type:double
Controllable:No
Description:biaxial relaxation coeff
- biaxial_strain_rate0uniaxial strain rate
Default:0
C++ Type:double
Controllable:No
Description:uniaxial strain rate
- 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
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- check_boundary_restrictedTrueWhether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a mesh
Default:True
C++ Type:bool
Controllable:No
Description:Whether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a mesh
- execute_onLINEAR TIMESTEP_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, PRE_DISPLACE.
Default:LINEAR 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, PRE_DISPLACE
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, PRE_DISPLACE.
- poisson_ratio0Poisson ratio
Default:0
C++ Type:double
Controllable:No
Description:Poisson ratio
- 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.
- relaxed_energy0relaxed energy
Default:0
C++ Type:double
Controllable:No
Description:relaxed energy
- uniaxial_strain_rate0biaxial strain rate
Default:0
C++ Type:double
Controllable:No
Description:biaxial strain rate
Optional Parameters
- 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.
- 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
(examples/other/Hex_Core_Shell_Cylinder.i)
# Core-shell nanoparticle, 25 nm in diameter:
# Single-crystal round ZnO core, 15 nm in diameter.
# Single-crystal rutile TiO2 shell, 5 nm in thickness.
# Here, crystalline rTiO2 elastic parameters (both bulk and surface ones) in the shell were
# averaged out to isotropic symmetry, which effectively makes the rTiO2 shell amorphous.
[Mesh]
file = ZnO_Core_100_Shell_20_nm.e
# uniform_refine = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_energy]
order = CONSTANT
family = MONOMIAL
[../]
[./pressure]
order = CONSTANT
family = MONOMIAL
[../]
[./EgZnO]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
use_displaced_mesh = false
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
use_displaced_mesh = false
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
use_displaced_mesh = false
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
use_displaced_mesh = false
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
use_displaced_mesh = false
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
use_displaced_mesh = false
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
use_displaced_mesh = false
[../]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_xx
index_i = 0
index_j = 0
use_displaced_mesh = false
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_yy
index_i = 1
index_j = 1
use_displaced_mesh = false
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_zz
index_i = 2
index_j = 2
use_displaced_mesh = false
[../]
[./strain_xy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_xy
index_i = 0
index_j = 1
use_displaced_mesh = false
[../]
[./strain_yz]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_yz
index_i = 1
index_j = 2
use_displaced_mesh = false
[../]
[./strain_zx]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_zx
index_i = 2
index_j = 0
use_displaced_mesh = false
[../]
### Here we use the results from Phys Rev B 88, 235210 (2013) Wagner et al
# which computes the strain-induced bandgap change of wurtzite ZnO using
# the HSE approach. Here E0, db, du, Rb and nu are material properties.
# Units will be in eV. Note we are justified in the strain_xx = strain_yy(using histo2d)
# Here we consider Gamma_7c-Gamma-7v as an example
[./bandgap]
type = BandGapAuxZnO
variable = EgZnO
relaxed_energy = 3.200
uniaxial_strain_rate = -3.800
biaxial_strain_rate = -0.450
biaxial_relaxation_coeff = 0.929
poisson_ratio = 0.31
[../]
[]
[BCs]
# Positive pressure -- compression, negative pressure -- tension
#active = 'back_x_bc back_y_bc back_z_bc top_z_bc'
[./back_x_bc]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0
[../]
[./back_y_bc]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0
[../]
[./back_z_bc]
type = DirichletBC
variable = disp_z
boundary = 8
value = -15
[../]
#Load boundary condition (-.1 um displacement along z)
# [./top_x_bc]
# type = DirichletBC
# variable = disp_x
# boundary = 2
# value = 0
# [../]
#
# [./top_y_bc]
# type = DirichletBC
# variable = disp_y
# boundary = 2
# value = 0
# [../]
[./top_z_bc]
type = DirichletBC
variable = disp_z
boundary = 7
value = 15 #Edit this value#
[../]
### Should I also add in the boundary conditions for my other surfaces? According to Cubit, Surface 2
### does not exist. Do I just go along with what it's telling me?
# Surface elastic parameters for w-ZnO surface taken from Table III of JAP 111, 124305 (2012)
# and averaged out to represent an isotropic surface described by one diagonal elastic const C_1111,
# one shear elastic const C_1122 and one residual stress const tau_11.
#
# Original (anizotropic, w-ZnO 10-10 surface) elastic consts and residual stresses in N/m (PBE):
# C_1111 = 49.1, C_2222 = 34.9, C_1122 = 15.1, C_1212 = 13.7, tau_11 = -2.1, tau_22 = -1.4
#
# Isotropic C_1111 = [C_1111 + C_2222]/2 = 42.0, C_1122 = 15.0, C_1212 is computed automatically
# from C_1111 and C_1122, tau_11 = [tau_11 + tau_22]/2 = -1.7
# Conversion to [N/nm] multiplies everything by 10^{-9}
[./surface_elasticity_X_surf1]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_x
boundary = '3'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 0
[../]
[./surface_elasticity_Y_surf1]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_y
boundary = '3'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 1
[../]
[./surface_elasticity_Z_surf1]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_z
boundary = '3'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 2
[../]
[./surface_elasticity_X_surf2]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_x
boundary = '4'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 0
[../]
[./surface_elasticity_Y_surf2]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_y
boundary = '4'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 1
[../]
[./surface_elasticity_Z_surf2]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_z
boundary = '4'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 2
[../]
[./surface_elasticity_X_surf3]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_x
boundary = '5'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 0
[../]
[./surface_elasticity_Y_surf3]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_y
boundary = '5'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 1
[../]
[./surface_elasticity_Z_surf3]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_z
boundary = '5'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 2
[../]
[./surface_elasticity_X_surf4]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_x
boundary = '6'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 0
[../]
[./surface_elasticity_Y_surf4]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_y
boundary = '6'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 1
[../]
[./surface_elasticity_Z_surf4]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_z
boundary = '6'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 2
[../]
[./surface_elasticity_X_surf5]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_x
boundary = '7'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 0
[../]
[./surface_elasticity_Y_surf5]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_y
boundary = '7'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 1
[../]
[./surface_elasticity_Z_surf5]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_z
boundary = '7'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 2
[../]
[./surface_elasticity_X_surf6]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_x
boundary = '8'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 0
[../]
[./surface_elasticity_Y_surf6]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_y
boundary = '8'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 1
[../]
[./surface_elasticity_Z_surf6]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_z
boundary = '8'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 2
[../]
[./surface_elasticity_X_surf7]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_x
boundary = '9'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 0
[../]
[./surface_elasticity_Y_surf7]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_y
boundary = '9'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 1
[../]
[./surface_elasticity_Z_surf7]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_z
boundary = '9'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 2
[../]
[./surface_elasticity_X_surf8]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_x
boundary = '10'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 0
[../]
[./surface_elasticity_Y_surf8]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_y
boundary = '10'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 1
[../]
[./surface_elasticity_Z_surf8]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_z
boundary = '10'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 2
[../]
[]
[Materials]
# ZnO shell (full [hexagonal] crystalline symmetry)
# Single crystal (see Table 1.6 and Ref. 86) in "Zinc Oxide: Fundamentals, Materials and Device Technology"
# by Hadis Morkoc and Umit Ozgur (2009 WILEY-VCH Verlag GmbH & Co. KGaA, Weinheim ISBN: 978-3-527-40813-9), Chapter 1.
# In GPa: C_ijkl = 209.7 121.1 105.1 209.7 105.1 210.9 42.47 42.47 44.29
# In N/(nm)^2, 1 GPa = 1 * 10^{-9} N/(nm)^2:
[./elasticity_tensor1]
type = ComputeElasticityTensor
block = '1'
fill_method = symmetric9
C_ijkl = '209.7e-09 121.1e-09 105.1e-09 209.7e-09 105.1e-09 210.9e-09 42.47e-09 42.47e-09 44.29e-09'
euler_angle_1 = 0.0
euler_angle_2 = 0.0
euler_angle_3 = 0.0
[../]
[./strain1]
type = ComputeSmallStrain
block = '1'
[../]
[./stress1]
type = ComputeLinearElasticStress
block = '1'
[../]
# Zn core (full [hexagonal] crystalline symmetry)
# Averaged constants for crystalline Zn, see Table 2 in H. M. Ledbetter, J. Phys. Chem. Ref. Data 6, 1181 (1977).
# In GPa: C_ijkl = 163.0 30.6 48.1 163.0 48.1 60.3 39.4 39.4 65.9
# In N/(nm)^2, 1 GPa = 1 * 10^{-9} N/(nm)^2:
[./elasticity_tensor2]
type = ComputeElasticityTensor
block = '2'
fill_method = symmetric9
C_ijkl = '163.0e-09 30.6e-09 48.1e-09 163.0e-09 48.1e-09 60.3e-09 39.4e-09 39.4e-09 65.9e-09'
euler_angle_1 = 0.0
euler_angle_2 = 0.0
euler_angle_3 = 0.0
[../]
[./strain2]
type = ComputeSmallStrain
block = '2'
[../]
[./stress2]
type = ComputeLinearElasticStress
block = '2'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
petsc_options = '-snes_view -snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-ksp_type -snes_rtol -pc_type -pc_hypre_type '
petsc_options_value = ' gmres 1e-9 hypre boomeramg'
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
[]
[Outputs]
[./Exodus]
type = Exodus
file_base = Out_ZnO_Core_100_Shell_20_nm
elemental_as_nodal = true
output_elemental_variables = 1
output_initial = 0
[../]
[]
(examples/other/vary_hydroP_ZnO_xstl000.i)
# Core-shell nanoparticle, 25 nm in diameter:
# Single-crystal round ZnO core, 15 nm in diameter.
# Single-crystal rutile TiO2 shell, 5 nm in thickness.
# Here, crystalline rTiO2 elastic parameters (both bulk and surface ones) in the shell were
# averaged out to isotropic symmetry, which effectively makes the rTiO2 shell amorphous.
[Mesh]
file = core_shell_exodus.e
# uniform_refine = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_energy]
order = CONSTANT
family = MONOMIAL
[../]
[./pressure]
order = CONSTANT
family = MONOMIAL
[../]
[./EgZnO]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
use_displaced_mesh = false
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
use_displaced_mesh = false
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
use_displaced_mesh = false
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
use_displaced_mesh = false
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
use_displaced_mesh = false
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
use_displaced_mesh = false
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
use_displaced_mesh = false
[../]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_xx
index_i = 0
index_j = 0
use_displaced_mesh = false
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_yy
index_i = 1
index_j = 1
use_displaced_mesh = false
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_zz
index_i = 2
index_j = 2
use_displaced_mesh = false
[../]
[./strain_xy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_xy
index_i = 0
index_j = 1
use_displaced_mesh = false
[../]
[./strain_yz]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_yz
index_i = 1
index_j = 2
use_displaced_mesh = false
[../]
[./strain_zx]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_zx
index_i = 2
index_j = 0
use_displaced_mesh = false
[../]
[./elastic_energy]
type=TensorElasticEnergyAux
variable = elastic_energy
use_displaced_mesh = false
[../]
[./pressure]
type = TensorPressureAux
variable = pressure
[../]
### Here we use the results from Phys Rev B 88, 235210 (2013) Wagner et al
# which computes the strain-induced bandgap change of wurtzite ZnO using
# the HSE approach. Here E0, db, du, Rb and nu are material properties.
# Units will be in eV. Note we are justified in the strain_xx = strain_yy(using histo2d)
# Here we consider Gamma_7c-Gamma-7v as an example
[./bandgap]
type = BandGapAuxZnO
variable = EgZnO
relaxed_energy = 3.200
# calc_rel_energy = 3.200
# exp_meas_rel_energy = 3.313
uniaxial_strain_rate = -3.800
biaxial_strain_rate = -0.450
biaxial_relaxation_coeff = 0.929
poisson_ratio = 0.31
[../]
[]
[BCs]
# Positive pressure -- compression, negative pressure -- tension
[./hydrostatic_pressure_X]
type = HydrostaticBC
variable = disp_x
boundary = '1'
pressure = 0.0
component = 0
[../]
[./hydrostatic_pressure_Y]
type = HydrostaticBC
variable = disp_y
boundary = '1'
pressure = 0.0
component = 1
[../]
[./hydrostatic_pressure_Z]
type = HydrostaticBC
variable = disp_z
boundary = '1'
pressure = 0.0
component = 2
[../]
# Surface elastic parameters for w-ZnO surface taken from Table III of JAP 111, 124305 (2012)
# and averaged out to represent an isotropic surface described by one diagonal elastic const C_1111,
# one shear elastic const C_1122 and one residual stress const tau_11.
#
# Original (anizotropic, w-ZnO 10-10 surface) elastic consts and residual stresses in N/m (PBE):
# C_1111 = 49.1, C_2222 = 34.9, C_1122 = 15.1, C_1212 = 13.7, tau_11 = -2.1, tau_22 = -1.4
#
# Isotropic C_1111 = [C_1111 + C_2222]/2 = 42.0, C_1122 = 15.0, C_1212 is computed automatically
# from C_1111 and C_1122, tau_11 = [tau_11 + tau_22]/2 = -1.7
# Conversion to [N/nm] multiplies everything by 10^{-9}
[./surface_elasticity_X]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_x
boundary = '1'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1122
Cs_ijkl = '42.0e-09 15.0e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 0
[../]
[./surface_elasticity_Y]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_y
boundary = '1'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1122
Cs_ijkl = '42.0e-09 15.0e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 1
[../]
[./surface_elasticity_Z]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_z
boundary = '1'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1122
Cs_ijkl = '42.0e-09 15.0e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 2
[../]
[]
[Materials]
# ZnO shell (full [hexagonal] crystalline symmetry)
# Single crystal (see Table 1.6 and Ref. 86) in "Zinc Oxide: Fundamentals, Materials and Device Technology"
# by Hadis Morkoc and Umit Ozgur (2009 WILEY-VCH Verlag GmbH & Co. KGaA, Weinheim ISBN: 978-3-527-40813-9), Chapter 1.
# In GPa: C_ijkl = 209.7 121.1 105.1 209.7 105.1 210.9 42.47 42.47 44.29
# In N/(nm)^2, 1 GPa = 1 * 10^{-9} N/(nm)^2:
[./shell_grain1]
type = LinearElasticMaterial
block = '1'
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
fill_method = symmetric9
# C11 C12 C13 C22 C23 C33 C44 C55 C66
C_ijkl = '209.7e-09 121.1e-09 105.1e-09 209.7e-09 105.1e-09 210.9e-09 42.47e-09 42.47e-09 44.29e-09'
euler_angle_1 = 0.0
euler_angle_2 = 0.0
euler_angle_3 = 0.0
[../]
# Zn core (full [hexagonal] crystalline symmetry)
# Averaged constants for crystalline Zn, see Table 2 in H. M. Ledbetter, J. Phys. Chem. Ref. Data 6, 1181 (1977).
# In GPa: C_ijkl = 163.0 30.6 48.1 163.0 48.1 60.3 39.4 39.4 65.9
# In N/(nm)^2, 1 GPa = 1 * 10^{-9} N/(nm)^2:
[./core]
type = LinearElasticMaterial
block = '2'
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
fill_method = symmetric9
# C11 C12 C13 C22 C23 C33 C44 C55 C66
C_ijkl = '163.0e-09 30.6e-09 48.1e-09 163.0e-09 48.1e-09 60.3e-09 39.4e-09 39.4e-09 65.9e-09'
euler_angle_1 = 0.0
euler_angle_2 = 0.0
euler_angle_3 = 0.0
[../]
[]
[Postprocessors]
[./integrated_elastic_energy]
type = ElementIntegralVariablePostprocessor
# elastic_energy variable is computed by the TensorElasticEnergyAux AuxKernel above
variable = elastic_energy
# block = '1 2'
use_displaced_mesh = false
[../]
[./volume]
type = VolumePostprocessor
use_displaced_mesh = true
# variable = disp_x
# block = '1 2'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -pc_hypre_type '
petsc_options_value = ' gmres hypre boomeramg '
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options = '-snes_view -snes_converged_reason -ksp_converged_reason -options_table -options_left'
[]
#[Debug]
# show_var_residual_norms = true
#[]
[Outputs]
[./Exodus]
type = Exodus
file_base = out_0_Zn_ZnO_xstl000_core_xstl000_shell_P-def
elemental_as_nodal = true
output_elemental_variables = 1
output_initial = 0
[../]
[./console]
type = Console
perf_log = true
linear_residuals = true
nonlinear_residuals = true
[../]
[]
(test/tests/anisotropic_elastic/vary_hydroP_ZnO_iso.i)
# Core-shell nanoparticle, 25 nm in diameter:
# Single-crystal round ZnO core, 15 nm in diameter.
# Single-crystal rutile TiO2 shell, 5 nm in thickness.
# Here, crystalline rTiO2 elastic parameters (both bulk and surface ones) in the shell were
# averaged out to isotropic symmetry, which effectively makes the rTiO2 shell amorphous.
# See Influence of Elastic and Surface Strains on the Optical Properties of Semiconducting Core-Shell Nanoparticles
# J. Mangeri, O. Heinonen, D. Karpeyev, and S. Nakhmanson, Phys. Rev. Applied 4, 014001 (2015)
[Mesh]
file = core_shell_exodus.e
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx_elastic]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy_elastic]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz_elastic]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy_elastic]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz_elastic]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx_elastic]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx_elastic]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy_elastic]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz_elastic]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xy_elastic]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yz_elastic]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zx_elastic]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_energy]
order = CONSTANT
family = MONOMIAL
[../]
[./pressure]
order = CONSTANT
family = MONOMIAL
[../]
[./EgZnO]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = false
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx_elastic
index_i = 0
index_j = 0
use_displaced_mesh = false
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy_elastic
index_i = 1
index_j = 1
use_displaced_mesh = false
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz_elastic
index_i = 2
index_j = 2
use_displaced_mesh = false
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy_elastic
index_i = 0
index_j = 1
use_displaced_mesh = false
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz_elastic
index_i = 1
index_j = 2
use_displaced_mesh = false
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx_elastic
index_i = 2
index_j = 0
use_displaced_mesh = false
[../]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_xx_elastic
index_i = 0
index_j = 0
use_displaced_mesh = false
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_yy_elastic
index_i = 1
index_j = 1
use_displaced_mesh = false
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_zz_elastic
index_i = 2
index_j = 2
use_displaced_mesh = false
[../]
[./strain_xy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_xy_elastic
index_i = 0
index_j = 1
use_displaced_mesh = false
[../]
[./strain_yz]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_yz_elastic
index_i = 1
index_j = 2
use_displaced_mesh = false
[../]
[./strain_zx]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_zx_elastic
index_i = 2
index_j = 0
use_displaced_mesh = false
[../]
[./bandgap]
### Here we use the results from Phys Rev B 88, 235210 (2013) Wagner et al
# which computes the strain-induced bandgap change of wurtzite ZnO using
# the HSE approach. Here E0, db, du, Rb and nu are material properties.
# Units will be in eV. Note we are justified in the strain_xx = strain_yy(using histo2d)
# Here we consider Gamma_7c-Gamma-7v as an example
type = BandGapAuxZnO
variable = EgZnO
relaxed_energy = 3.200
uniaxial_strain_rate = -3.800
biaxial_strain_rate = -0.450
biaxial_relaxation_coeff = 0.929
poisson_ratio = 0.31
[../]
[]
[BCs]
# Positive pressure -- compression, negative pressure -- tension
[./hydrostatic_pressure_X]
type = HydrostaticBC
variable = disp_x
boundary = '1'
pressure = 0.0
component = 0
[../]
[./hydrostatic_pressure_Y]
type = HydrostaticBC
variable = disp_y
boundary = '1'
pressure = 0.0
component = 1
[../]
[./hydrostatic_pressure_Z]
type = HydrostaticBC
variable = disp_z
boundary = '1'
pressure = 0.0
component = 2
[../]
# Surface elastic parameters for w-ZnO surface taken from Table III of JAP 111, 124305 (2012)
# and averaged out to represent an isotropic surface described by one diagonal elastic const C_1111,
# one shear elastic const C_1122 and one residual stress const tau_11.
#
# Original (anizotropic, w-ZnO 10-10 surface) elastic consts and residual stresses in N/m (PBE):
# C_1111 = 49.1, C_2222 = 34.9, C_1122 = 15.1, C_1212 = 13.7, tau_11 = -2.1, tau_22 = -1.4
#
# Isotropic C_1111 = [C_1111 + C_2222]/2 = 42.0, C_1122 = 15.0, C_1212 is computed automatically
# from C_1111 and C_1122, tau_11 = [tau_11 + tau_22]/2 = -1.7
# Conversion to [N/nm] multiplies everything by 10^{-9}
[./surface_elasticity_X]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_x
S_k = '0 0 0'
boundary = '1'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1122
Cs_ijkl = '42.0e-09 15.0e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 0
[../]
[./surface_elasticity_Y]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_y
S_k = '0 0 0'
boundary = '1'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1122
Cs_ijkl = '42.0e-09 15.0e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 1
[../]
[./surface_elasticity_Z]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_z
S_k = '0 0 0'
boundary = '1'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1122
Cs_ijkl = '42.0e-09 15.0e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 2
[../]
[]
[Materials]
# ZnO shell (full [hexagonal] crystalline symmetry)
# Single crystal (see Table 1.6 and Ref. 86) in "Zinc Oxide: Fundamentals, Materials and Device Technology"
# by Hadis Morkoc and Umit Ozgur (2009 WILEY-VCH Verlag GmbH & Co. KGaA, Weinheim ISBN: 978-3-527-40813-9), Chapter 1.
# In GPa: C_ijkl = 209.7 121.1 105.1 209.7 105.1 210.9 42.47 42.47 44.29
# In N/(nm)^2, 1 GPa = 1 * 10^{-9} N/(nm)^2:
[./elasticity_tensor1]
type = ComputeElasticityTensor
block = '1'
fill_method = symmetric9
C_ijkl = '209.7e-09 121.1e-09 105.1e-09 209.7e-09 105.1e-09 210.9e-09 42.47e-09 42.47e-09 44.29e-09'
euler_angle_1 = 0.0
euler_angle_2 = 0.0
euler_angle_3 = 0.0
[../]
[./strain1]
type = ComputeSmallStrain
block = '1'
[../]
[./stress1]
type = ComputeLinearElasticStress
block = '1'
[../]
# Zn core (full [hexagonal] crystalline symmetry)
# Averaged constants for crystalline Zn, see Table 2 in H. M. Ledbetter, J. Phys. Chem. Ref. Data 6, 1181 (1977).
# In GPa: C_ijkl = 163.0 30.6 48.1 163.0 48.1 60.3 39.4 39.4 65.9
# In N/(nm)^2, 1 GPa = 1 * 10^{-9} N/(nm)^2:
[./elasticity_tensor2]
type = ComputeElasticityTensor
block = '2'
fill_method = symmetric9
C_ijkl = '163.0e-09 30.6e-09 48.1e-09 163.0e-09 48.1e-09 60.3e-09 39.4e-09 39.4e-09 65.9e-09'
euler_angle_1 = 0.0
euler_angle_2 = 0.0
euler_angle_3 = 0.0
[../]
[./strain2]
type = ComputeSmallStrain
block = '2'
[../]
[./stress2]
type = ComputeLinearElasticStress
block = '2'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-ksp_type -pc_type -snes_rtol -ksp_rtol'
petsc_options_value = ' gmres bjacobi 1e-4 1e-4'
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK' #"PJFNK, JFNK, NEWTON"
#PJFNK IS SLOW ~1500 seconds but NEWTON introduces the rigid body modes and causes many nonlinear iterations to show up
[]
[Outputs]
[./Exodus]
type = Exodus
file_base = out_Zn_ZnO_xstl000_core_iso_shell
elemental_as_nodal = true
[../]
[]
(examples/other/Core_shell_ZnO_Trial1.i)
# Core-shell nanoparticle, 25 nm in diameter:
# Single-crystal round ZnO core, 15 nm in diameter.
# Single-crystal rutile TiO2 shell, 5 nm in thickness.
# Here, crystalline rTiO2 elastic parameters (both bulk and surface ones) in the shell were
# averaged out to isotropic symmetry, which effectively makes the rTiO2 shell amorphous.
[Mesh]
file = core_shell_nanowire_800nm_100_50.e
# uniform_refine = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_energy]
order = CONSTANT
family = MONOMIAL
[../]
[./pressure]
order = CONSTANT
family = MONOMIAL
[../]
[./EgZnO]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
use_displaced_mesh = false
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
use_displaced_mesh = false
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
use_displaced_mesh = false
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
use_displaced_mesh = false
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
use_displaced_mesh = false
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
use_displaced_mesh = false
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
use_displaced_mesh = false
[../]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_xx
index_i = 0
index_j = 0
use_displaced_mesh = false
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_yy
index_i = 1
index_j = 1
use_displaced_mesh = false
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_zz
index_i = 2
index_j = 2
use_displaced_mesh = false
[../]
[./strain_xy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_xy
index_i = 0
index_j = 1
use_displaced_mesh = false
[../]
[./strain_yz]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_yz
index_i = 1
index_j = 2
use_displaced_mesh = false
[../]
[./strain_zx]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = strain_zx
index_i = 2
index_j = 0
use_displaced_mesh = false
[../]
### Here we use the results from Phys Rev B 88, 235210 (2013) Wagner et al
# which computes the strain-induced bandgap change of wurtzite ZnO using
# the HSE approach. Here E0, db, du, Rb and nu are material properties.
# Units will be in eV. Note we are justified in the strain_xx = strain_yy(using histo2d)
# Here we consider Gamma_7c-Gamma-7v as an example
[./bandgap]
type = BandGapAuxZnO
variable = EgZnO
relaxed_energy = 3.200
uniaxial_strain_rate = -3.800
biaxial_strain_rate = -0.450
biaxial_relaxation_coeff = 0.929
poisson_ratio = 0.31
[../]
[]
[BCs]
# Positive pressure -- compression, negative pressure -- tension
#active = 'back_x_bc back_y_bc back_z_bc top_z_bc'
[./back_x_bc2]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0
[../]
[./back_y_bc2]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0
[../]
[./back_z_bc2]
type = DirichletBC
variable = disp_z
boundary = 2
value = 0
[../]
[./back_x_bc4]
type = DirichletBC
variable = disp_x
boundary = 4
value = 0
[../]
[./back_y_bc4]
type = DirichletBC
variable = disp_y
boundary = 4
value = 0
[../]
[./back_z_bc4]
type = DirichletBC
variable = disp_z
boundary = 4
value = 0
[../]
#Load boundary condition (-.1 um displacement along z)
# [./top_x_bc]
# type = DirichletBC
# variable = disp_x
# boundary = 4
# value = 0
# [../]
#
# [./top_y_bc]
# type = DirichletBC
# variable = disp_y
# boundary = 4
# value = 0
# [../]
[./top_z_bc]
type = DirichletBC
variable = disp_z
boundary = 3
value = 20.3 #Edit this value#
[../]
### Should I also add in the boundary conditions for my other surfaces? According to Cubit, Surface 2
### does not exist. Do I just go along with what it's telling me?
# Surface elastic parameters for w-ZnO surface taken from Table III of JAP 111, 124305 (2012)
# and averaged out to represent an isotropic surface described by one diagonal elastic const C_1111,
# one shear elastic const C_1122 and one residual stress const tau_11.
#
# Original (anizotropic, w-ZnO 10-10 surface) elastic consts and residual stresses in N/m (PBE):
# C_1111 = 49.1, C_2222 = 34.9, C_1122 = 15.1, C_1212 = 13.7, tau_11 = -2.1, tau_22 = -1.4
#
# Isotropic C_1111 = [C_1111 + C_2222]/2 = 42.0, C_1122 = 15.0, C_1212 is computed automatically
# from C_1111 and C_1122, tau_11 = [tau_11 + tau_22]/2 = -1.7
# Conversion to [N/nm] multiplies everything by 10^{-9}
[./surface_elasticity_X_surf1]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_x
boundary = '1'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 0
[../]
[./surface_elasticity_Y_surf1]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_y
boundary = '1'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 1
[../]
[./surface_elasticity_Z_surf1]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_z
boundary = '1'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 2
[../]
[./surface_elasticity_X_surf2]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_x
boundary = '4'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 0
[../]
[./surface_elasticity_Y_surf2]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_y
boundary = '4'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 1
[../]
[./surface_elasticity_Z_surf2]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_z
boundary = '4'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 2
[../]
[./surface_elasticity_X_surf3]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_x
boundary = '5'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 0
[../]
[./surface_elasticity_Y_surf3]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_y
boundary = '5'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 1
[../]
[./surface_elasticity_Z_surf3]
type = SurfaceMechanicsBC
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
variable = disp_z
boundary = '5'
surface_euler_angle_1 = 0.0
surface_euler_angle_2 = 0.0
surface_euler_angle_3 = 0.0
# Surface elastic tensor C_1111, C_1112, C_1122, C_1212, C_1222, C_1211, C_2211, C_2212, C_2222
Cs_ijkl = '49.1e-09 0.0e-09 15.1e-09 13.7e-09 0.0e-09 0.0e-09 15.1e-09 0.0e-09 34.9e-09'
# Intrinsic surface stress
taus = '-1.7e-09'
component = 2
[../]
### I realize I'm missing some more Surface Elasticities here. I'm not sure how to incorporate them. Cubit doesn't show me
### a boundary 2. I'm assuming it was lost when I cut out the hole in the "shell cylinder".
[]
[Materials]
# ZnO shell (full [hexagonal] crystalline symmetry)
# Single crystal (see Table 1.6 and Ref. 86) in "Zinc Oxide: Fundamentals, Materials and Device Technology"
# by Hadis Morkoc and Umit Ozgur (2009 WILEY-VCH Verlag GmbH & Co. KGaA, Weinheim ISBN: 978-3-527-40813-9), Chapter 1.
# In GPa: C_ijkl = 209.7 121.1 105.1 209.7 105.1 210.9 42.47 42.47 44.29
# In N/(nm)^2, 1 GPa = 1 * 10^{-9} N/(nm)^2:
[./shell_grain1]
type = LinearElasticMaterial
block = '1'
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
fill_method = symmetric9
# C11 C12 C13 C22 C23 C33 C44 C55 C66
C_ijkl = '209.7e-09 121.1e-09 105.1e-09 209.7e-09 105.1e-09 210.9e-09 42.47e-09 42.47e-09 44.29e-09'
euler_angle_1 = 0.0
euler_angle_2 = 0.0
euler_angle_3 = 0.0
[../]
# Zn core (full [hexagonal] crystalline symmetry)
# Averaged constants for crystalline Zn, see Table 2 in H. M. Ledbetter, J. Phys. Chem. Ref. Data 6, 1181 (1977).
# In GPa: C_ijkl = 163.0 30.6 48.1 163.0 48.1 60.3 39.4 39.4 65.9
# In N/(nm)^2, 1 GPa = 1 * 10^{-9} N/(nm)^2:
[./core]
type = LinearElasticMaterial
block = '2'
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
fill_method = symmetric9
# C11 C12 C13 C22 C23 C33 C44 C55 C66
C_ijkl = '163.0e-09 30.6e-09 48.1e-09 163.0e-09 48.1e-09 60.3e-09 39.4e-09 39.4e-09 65.9e-09'
euler_angle_1 = 0.0
euler_angle_2 = 0.0
euler_angle_3 = 0.0
[../]
[]
[Postprocessors]
[./integrated_elastic_energy]
type = ElementIntegralVariablePostprocessor
# elastic_energy variable is computed by the TensorElasticEnergyAux AuxKernel above
variable = elastic_energy
# block = '1 2'
use_displaced_mesh = false
[../]
[./volume]
type = VolumePostprocessor
use_displaced_mesh = true
# variable = disp_x
# block = '1 2'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -pc_asm_overlap -pc_hypre_type '
petsc_options_value = ' gmres hypre 4 boomeramg'
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options = '-snes_view -snes_converged_reason -ksp_converged_reason -options_table -options_left'
[]
#[Debug]
# show_var_residual_norms = true
#[]
[Outputs]
[./Exodus]
type = Exodus
file_base = out_0_Zn_ZnO_nanowire_100_nm
elemental_as_nodal = true
output_elemental_variables = 1
output_initial = 0
[../]
[./console]
type = Console
perf_log = true
linear_residuals = true
nonlinear_residuals = true
[../]
[]