strain{}¶
The documentation for this keyword is also available here (old documentation layout).
Below are various variables and functions that can be used inside strain{}
.
Specifying the strain model¶
Note
Within the
strain{}
block in an input file only one ofpseudomorphic_strain
,minimized_strain
,no_strain
, orimport_strain
is to be specified.
- pseudomorphic_strain{}
Homogeneous strain for 1D layer structures (analytical calculation).
This feature also works in 2D or 3D but the user must be sure that the model makes sense from a physical point of view (i.e. the 2D/3D structure should consist of different layers along the growth direction whereas the layers must be homogenous along the two perpendicular directions).
- minimized_strain{}
Minimization of the elastic energy for 2D and 3D geometries (numerical calculation).
It can also be used for 1D simulations. In this case, the results will be equivalent to the analytical model pseudomorphic_strain{}.
- no_strain{}
Strain is not taken into account.
- import_strain{}
- import_from
- type
string
- example
"strain_tensor"
Reference to imported data in import{}.
The data being imported must have exactly 6 components. The expected order of strain tensor components is: \(\varepsilon_{xx}\ \varepsilon_{yy}\ \varepsilon_{zz}\ \varepsilon_{xy}\ \varepsilon_{xz}\ \varepsilon_{yz}\)
- coordinate_system
- type
string
- default
simulation
- example
crystal
The imported strain tensor is with respect to the simulation or crystal coordinate system (optional parameter).
- relaxation
A factor \(R\) scaling all elements of tensor by \((1-R)\)
- type
real number
- values
from 0 to 1
- default
0
Note
In order to calculate the strain, one has to provide a substrate with respect to which the layers are strained. This can be done with the keyword global{} ==> substrate{…}.
Piezo- and pyroelectric charges¶
- piezo_density
- value
yes
orno
- default
yes
Calculate piezoelectric charge density and take it into account while solving the Poisson equation.
If no strain is solved, this flag is ignored.
- pyro_density
- value
yes
orno
- default
yes
Calculate pyroelectric charge density and take it into account while solving the Poisson equation.
If material system is not wurtzite, this flag is ignored. The pyroelectric charge density due to spontaneous polarization applies to wurtzite only. In order to obtain pyroelectric charges, it is not necessary to calculate strain. Pyroelectric charges are only present in wurtzite materials but not in zinc blende.
- second_order_piezo
- value
yes
orno
- default
no
Include 2nd order piezoelectric coefficients in the calculation
Note
Not fully implemented for wurtzite, only “standard growth directions” supported for wurtzite as the most general formula was not known to us at the time of implementation.
Specify growth direction (for pseudomorphic strain model)¶
- growth_direction
- example
growth_direction = [1, 0, 0]
Vector in crystal coordinate system
Can be specified in a 2D or 3D simulation but not in a 1D simulation (x axis is taken by default in 1D)
If not set, x axis of simulation coordinate system is taken by default.
Solver definitions¶
- linear_solver{}
- iterations
- value
integer
- default
10000
Number of iterations for linear equation solver in strain algorithm
- abs_accuracy
- value
double
- default
1e-8 [GPa] (1D)
1e-8 [GPa nm] (2D)
1e-8 [GPa nm2] (3D)
- rel_accuracy
- range
[0.0,0.01]
- default
1e-12
(dimensionless)- use_cscg
- value
yes
orno
Composite step conjugate gradient solver (try this one if standard solver fails to converge)
Debugging¶
- debuglevel
- options
-1
0
1
2
3
- default
2
The higher this integer number, the more information on the numerical solver is printed to the screen output
Output definitions¶
- output_strain_tensor{}
output (symmetric) strain tensor : \(\varepsilon_{ij} = (u_{ij} + u_{ji})/2\) [dimensionless]
- crystal_system
- value
yes
orno
- default
no
output strain tensor in crystal coordinate system
- simulation_system
- value
yes
orno
- default
yes
output strain tensor in simulation coordinate system (useful if simulation coordinate system differs from crystal coordinate system)
Note
The ordering of the strain tensor components is: \(\varepsilon_{xx},\ \varepsilon_{yy},\ \varepsilon_{zz},\ \varepsilon_{xy},\ \varepsilon_{xz},\ \varepsilon_{yz}\)
- boxes
- value
yes
orno
For each grid point, in 1D two points are printed out to mimic abrupt discontinuities at interfaces (in 2D four points, in 3D eight points)
- output_stress_tensor{}
output (symmetric) stress tensor : \(\ \sigma_{ij} = C_{ijkl}\ \varepsilon_{kl}\) [GPa]
- crystal_system
- value
yes
orno
- default
no
output stress tensor in crystal coordinate system
- simulation_system
- value
yes
orno
- default
yes
output stress tensor in simulation coordinate system (useful if simulation coordinate system differs from crystal coordinate system)
Note
The ordering of the stress tensor components is: \(\sigma_{xx},\ \sigma_{yy},\ \sigma_{zz},\ \sigma_{xy},\ \sigma_{xz},\ \sigma_{yz}\)
- boxes
- value
yes
orno
- output_hydrostatic_strain{}
prints out the hydrostatic strain, i.e. the trace of the strain tensor \(\mathrm{Tr}[\varepsilon_{ij}] = \varepsilon_{xx} + \varepsilon_{yy} + \varepsilon_{zz}\) [dimensionless]
- boxes
- value
yes
orno
Note
The hydrostatic strain output is in percent (This is different compared to nextnano³.)
- output_distortion_tensor{}
output distortion tensor \(u_{ij}\) (which can be nonsymmetric for certain growth directions) \(u_{xx}\ u_{yy}\ u_{zz}\ u_{xy}\ u_{yx}\ u_{xz}\ u_{zx}\ u_{yz}\ u_{zy}\) [dimensionless]
- crystal_system
- value
yes
orno
- default
no
output distortion tensor in crystal coordinate system
- simulation_system
- value
yes
orno
- default
yes
output distortion tensor in crystal coordinate system
- boxes
- value
yes
orno
- output_displacement{}
output displacement vector [nm]
- crystal_system
- value
yes
orno
- default
no
output displacement vector in crystal coordinate system
- simulation_system
- value
yes
orno
- default
yes
output displacement vector in simulation coordinate system
- boxes
- value
yes
orno
- output_force_density{}
output force density vector field \(f_i\) [nN/nm3] (at moment output may be not fully correct; not tested sufficiently)
- crystal_system
- value
yes
orno
- default
no
output force density vector field in crystal coordinate system
- simulation_system
- value
yes
orno
- default
yes
output force density vector field in simulation coordinate system
- boxes
- value
yes
orno
- output_elastic_energy_density{}
output elastic energy density (\(\frac{1}{2}\ C_{ijkl}\ \varepsilon_{ij}\ \varepsilon_{kl}\)) [eV/nm3] The integrated elastic energy is printed out in log file.
- boxes
- value
yes
orno
- output_polarization_charges{}
prints out piezo and pyroelectric charge densities [1018/cm3] in case they were calculated. Pyroelectric charges due to spontaneous polarization apply to wurtzite only. Piezoelectric charges can be calculated for both zinc blende and wurtzite in case the strain was calculated. The piezo charge density is written to: density_piezoelectric_charge.dat (\(\rho_\mathrm{pz}\)) For diamond like crystal structures that have an inversion center such a Si or Ge, piezoelectric charges do not exist.
The pyro charge density is written to: density_pyroelectric_charge.dat (\(\rho_\mathrm{py}\)) It applies to wurtzite only and is independent of strain and is due to spontaneous polarization. If both, piezo and pyroelectric charge densities were calculated, the sum of both charge densities (total polarization charge density) is written to: density_polarization_charge.dat (\(\rho_\mathrm{pol}=\rho_\mathrm{pz}+\rho_\mathrm{py}\))
To summarize:
zincblende: density_piezoelectric_charge.dat (\(\rho_\mathrm{pz}\))
wurtzite: density_piezoelectric_charge.dat (\(\rho_\mathrm{pz}\)), density_pyroelectric_charge.dat (\(\rho_\mathrm{py}\)), density_polarization_charge.dat (\(\rho_\mathrm{pol}=\rho_\mathrm{pz}+\rho_\mathrm{py}\))
- output_polarization_vector{}
prints out piezo and pyroelectric polarization vector [C/cm2]. Pyroelectric polarization due to spontaneous polarization apply to wurtzite only. The piezoelectric polarization vector depends on strain and it is zero if no strain is present.
- crystal_system
- value
yes
orno
- default
no
output polarization vector in crystal coordinate system
- simulation_system
- value
yes
orno
- default
yes
output polarization vector in simulation coordinate system
- boxes
- value
yes
orno
- output_sparse_matrix{}
output sparse matrix used in strain solver
- type
enumerate desired types of sparse matrix output in .mtx format (optional).
- options
values
zero_nonzero
zero_nonzero_absolute
all
- default
values
values
: output sparse matrix as it is
zero_nonzero
: output matrix containing ‘0’ and ‘1’ for zero and non-zero entries of sparse matrix
zero_nonzero_absolute
: output matrix containing ‘0’ and ‘1’ for zero and non-zero absolute values of entries of sparse matrix
all
: output all types listed above
Output of material parameters¶
- output_lattice_constants{}
Output lattice constants.
- boxes
- value
yes
orno
- output_elastic_constants
Output elastic constants.
- boxes
- value
yes
orno
- output_piezo_constants{}
Output piezoelectric constants.
- boxes
- value
yes
orno
- output_second_order_piezo_constants{}
Output 2nd order piezoelectric constants.
- boxes
- value
yes
orno
- output_pyro_constants{}
Output pyroelectric constants, i.e. spontaneous polarization constants.
- boxes
- value
yes
orno