Simulation Parameters#
Configuration Hierarchy#
[device]
[device.geometry]
[device.geometry.regions]
[device.geometry.regions.shape]
[device.contacts]
[scsp]
[scba]
[qtbm]
[electrostatics]
[electron]
[electron.solver]
[electron.obc]
[electron.obc.memoizer]
[electron.left_contact]
[electron.right_contact]
[phonon]
[phonon.solver]
[phonon.obc]
[phonon.obc.memoizer]
[phonon.lyapunov]
[phonon.lyapunov.memoizer]
[coulomb_screening]
[coulomb_screening.solver]
[coulomb_screening.obc]
[coulomb_screening.obc.memoizer]
[coulomb_screening.lyapunov]
[coulomb_screening.lyapunov.memoizer]
[photon]
[photon.solver]
[photon.obc]
[photon.obc.memoizer]
[photon.lyapunov]
[photon.lyapunov.memoizer]
[outputs]
[compute]
[compute.convolve]
[compute.nevp]
[compute.lyapunov]
[compute.band_edge]
[compute.comm]
Parameter Overview#
SCSPConfig#
Parameters controlling the self-consistent Schrödinger-Poisson loop.
| Name | Type | Default |
|---|---|---|
min_iterations |
PositiveInt |
1 |
max_iterations |
PositiveInt |
100 |
convergence_tol |
PositiveFloat |
0.001 |
mixer |
Literal['under-relaxation', 'diis'] |
'under-relaxation' |
mixing_factor |
PositiveFloat |
0.75 |
adaptive_mixing |
bool |
False |
max_history |
PositiveInt |
3 |
epsilon |
PositiveFloat |
1e-05 |
extrapolation_interval |
PositiveInt |
1 |
QTBMConfig#
Parameters for the quantum transmitting boundary method (QTBM).
| Name | Type | Default |
|---|---|---|
max_batch_size |
PositiveInt |
10 |
low_rank_obc |
bool |
False |
SCBAConfig#
Parameters for the self-consistent Born approximation (SCBA)
| Name | Type | Default |
|---|---|---|
min_iterations |
PositiveInt |
1 |
max_iterations |
PositiveInt |
100 |
convergence_tol |
PositiveFloat |
1e-05 |
mixing_factor |
PositiveFloat |
0.1 |
output_interval |
PositiveInt |
1 |
coulomb_screening |
bool |
False |
photon |
bool |
False |
phonon |
bool |
False |
symmetric |
bool |
True |
align_self_energy_to_complex_axes |
bool |
True |
ElectrostaticsConfig#
Parameters for the electrostatics calculations.
| Name | Type | Default |
|---|---|---|
orbital_basis |
Literal['point-charge'] |
'point-charge' |
solving_scheme |
Literal['root-finding', 'direct'] |
'root-finding' |
max_iterations |
PositiveInt |
20 |
convergence_tol |
PositiveFloat |
0.001 |
density_model |
Literal['single-band', 'omen'] |
'single-band' |
density_model_dim |
Literal[1, 2, 3] |
2 |
initial_guess |
Literal['zero', 'constraints', 'file'] |
'zero' |
default_epsilon_r |
PositiveFloat |
1.0 |
electron_affinity |
float or None |
None |
MemoizerConfig#
Parameters for memoizing wrappers.
| Name | Type | Default |
|---|---|---|
mode |
Literal['auto', 'force', 'force-after-first', 'off'] |
'auto' |
num_ref_iterations |
PositiveInt |
2 |
relative_tol |
PositiveFloat |
0.2 |
absolute_tol |
PositiveFloat |
1e-06 |
warning_threshold |
PositiveFloat |
0.1 |
agreement_threshold |
float |
0.999 |
SolverConfig#
Options for the system solver.
| Name | Type | Default |
|---|---|---|
algorithm |
Literal['rgf', 'inv'] |
'rgf' |
max_batch_size |
PositiveInt |
100 |
compute_current |
bool or None |
None |
direct_solver |
Literal['superlu', 'mumps', 'cudss', 'pardiso', 'thomas', 'auto'] |
'auto' |
OBCConfig#
Options for open-boundary conditions (OBCs).
| Name | Type | Default |
|---|---|---|
algorithm |
Literal['sancho-rubio', 'spectral'] |
'spectral' |
nevp_solver |
Literal['beyn', 'full'] |
'beyn' |
block_sections |
PositiveInt |
1 |
min_decay |
PositiveFloat |
0.001 |
max_decay |
PositiveFloat or None |
None |
num_ref_iterations |
PositiveInt |
2 |
min_propagation |
PositiveFloat |
0.01 |
residual_tolerance |
PositiveFloat |
0.001 |
residual_normalization |
bool |
True |
warning_threshold |
PositiveFloat |
0.1 |
eta_decay |
PositiveFloat |
1e-12 |
max_iterations |
PositiveInt |
100 |
convergence_tol |
PositiveFloat |
1e-06 |
r_o |
PositiveFloat |
10.0 |
r_i |
PositiveFloat |
0.8 |
m_0 |
PositiveInt |
10 |
num_quad_points |
PositiveInt |
20 |
memoizer |
MemoizerConfig |
- |
LyapunovConfig#
Parameters for solving the (discrete-time) Lyapunov equation.
| Name | Type | Default |
|---|---|---|
algorithm |
Literal['spectral', 'doubling'] |
'spectral' |
reduce_sparsity |
bool |
True |
assume_constant_sparsity |
bool |
False |
max_iterations |
PositiveInt |
100 |
relative_tol |
PositiveFloat |
0.0001 |
absolute_tol |
PositiveFloat |
1e-08 |
num_ref_iterations |
PositiveInt |
2 |
memoizer |
MemoizerConfig |
- |
ContactConfig#
Configuration for a contact.
| Name | Type | Default |
|---|---|---|
name |
str |
- |
origin |
tuple[float, float, float] |
(0.0, 0.0, 0.0) |
lattice_vectors |
list[list[float]] |
- |
direction |
Literal['a', 'b', 'c'] or None |
None |
fermi_level |
float or None |
None |
mid_gap_energy |
float or None |
None |
num_kpoints_transport |
int |
50 |
temperature |
NonNegativeFloat |
300.0 |
voltage |
float |
0.0 |
ElectronConfig#
Options for the electronic subsystem solver.
| Name | Type | Default |
|---|---|---|
solver |
SolverConfig |
- |
obc |
OBCConfig |
- |
eta_obc |
NonNegativeFloat |
0 |
eta |
NonNegativeFloat |
1e-12 |
left_contact |
ContactConfig or None |
None |
right_contact |
ContactConfig or None |
None |
band_edge_tracking |
bool |
False |
energy_window_min |
float or None |
None |
energy_window_max |
float or None |
None |
energy_window_num |
PositiveInt or None |
None |
energy_window_num_per_rank |
PositiveInt or None |
None |
flatband |
bool or None |
None |
dos_peak_limit |
PositiveFloat |
100.0 |
filtering_iteration_limit |
PositiveInt |
1 |
max_batch_size |
PositiveInt or None |
None |
CoulombScreeningConfig#
Options for the Coulomb screening solver.
| Name | Type | Default |
|---|---|---|
interaction_cutoff |
PositiveFloat |
10.0 |
solver |
SolverConfig |
- |
obc |
OBCConfig |
- |
lyapunov |
LyapunovConfig |
- |
epsilon_r |
PositiveFloat |
1.0 |
num_connected_blocks |
Literal['auto'] or PositiveInt |
'auto' |
dos_peak_limit |
PositiveFloat |
100.0 |
filtering_iteration_limit |
PositiveInt |
1 |
align_polarization_to_complex_axes |
bool |
True |
include_energy_renormalization |
Literal['self-energy', 'polarization', 'both'] |
'self-energy' |
apply_hilbert_correction |
bool |
False |
max_batch_size |
PositiveInt or None |
None |
PhotonConfig#
Parameters for photons and electron-photon interactions.
| Name | Type | Default |
|---|---|---|
interaction_cutoff |
PositiveFloat |
10.0 |
solver |
SolverConfig |
- |
obc |
OBCConfig |
- |
lyapunov |
LyapunovConfig |
- |
PhononConfig#
Parameters for phonons and electron-phonon interactions.
| Name | Type | Default |
|---|---|---|
interaction_cutoff |
PositiveFloat |
10.0 |
solver |
SolverConfig |
- |
obc |
OBCConfig |
- |
lyapunov |
LyapunovConfig |
- |
model |
Literal['pseudo-scattering', 'negf'] |
'pseudo-scattering' |
phonon_energy |
NonNegativeFloat or None |
None |
deformation_potential |
NonNegativeFloat or None |
None |
temperature |
PositiveFloat |
300.0 |
OutputConfig#
Options for the output of quatrex calculations.
| Name | Type | Default |
|---|---|---|
device_currents |
bool |
True |
potential |
bool |
False |
electron_ldos |
bool |
False |
electron_density |
bool |
False |
hole_density |
bool |
False |
polarization_density |
bool |
False |
coulomb_screening_density |
bool |
False |
self_energy_density |
bool |
False |
profiling_path |
Path or None |
None |
save_profiling_results |
bool |
False |
profiling_save_format |
Literal['pickle', 'json'] |
'json' |
DeviceConfig#
Configuration for the simulated device.
| Name | Type | Default |
|---|---|---|
construct_from_unit_cell |
bool |
False |
geometry |
GeometryConfig |
- |
neighbor_cell_cutoff |
tuple[NonNegativeInt, NonNegativeInt, NonNegativeInt] or None |
None |
num_transport_cells |
PositiveInt |
1 |
transport_direction |
Literal['x', 'y', 'z'] |
- |
block_size |
PositiveInt or list[PositiveInt] or None |
None |
contacts |
list[ContactConfig] |
- |
num_orbitals_per_atom |
dict[str, int] |
{'X': 1} |
kpoint_grid |
tuple[PositiveInt, PositiveInt, PositiveInt] |
(1, 1, 1) |
kpoint_shift |
tuple[float, float, float] |
(0.0, 0.0, 0.0) |
LyapunovComputeConfig#
Configuration concerning the solution of the Lyapunov equation.
| Name | Type | Default |
|---|---|---|
eig_compute_location |
Literal['numpy', 'cupy', 'nvmath'] |
'numpy' |
use_pinned_memory |
bool |
True |
NEVPConfig#
Configurations concerning the solution of NEVPs.
| Name | Type | Default |
|---|---|---|
eig_compute_location |
Literal['numpy', 'cupy', 'nvmath'] |
'numpy' |
project_compute_location |
Literal['numpy', 'cupy'] |
'numpy' |
use_pinned_memory |
bool |
True |
use_qr |
bool |
False |
contour_batch_size |
PositiveInt or None |
None |
num_threads_contour |
PositiveInt |
1024 |
reduce_sparsity |
bool |
False |
BandEdgeConfig#
Parameters concerning the eigenvalue-based band-edge tracking.
| Name | Type | Default |
|---|---|---|
use_eigvalsh |
bool |
True |
eigvalsh_compute_location |
Literal['numpy', 'cupy'] |
'numpy' |
use_pinned_memory |
bool |
True |
block_sections |
PositiveInt |
1 |
ConvolveConfig#
Parameters concerning the FFT convolution.
| Name | Type | Default |
|---|---|---|
batch_size |
PositiveInt or None |
None |
CommConfig#
Parameters concerning the communication backends.
| Name | Type | Default |
|---|---|---|
block_comm_size |
PositiveInt |
1 |
block_all_to_all |
Literal['host_mpi', 'device_mpi', 'nccl'] or None |
None |
block_all_gather |
Literal['host_mpi', 'device_mpi', 'nccl'] or None |
None |
block_all_reduce |
Literal['host_mpi', 'device_mpi', 'nccl'] or None |
None |
block_bcast |
Literal['host_mpi', 'device_mpi', 'nccl'] or None |
None |
block_send_recv |
Literal['host_mpi', 'device_mpi', 'nccl'] or None |
None |
stack_all_to_all |
Literal['host_mpi', 'device_mpi', 'nccl'] or None |
None |
stack_all_gather |
Literal['host_mpi', 'device_mpi', 'nccl'] or None |
None |
stack_all_reduce |
Literal['host_mpi', 'device_mpi', 'nccl'] or None |
None |
stack_bcast |
Literal['host_mpi', 'device_mpi', 'nccl'] or None |
None |
stack_send_recv |
Literal['host_mpi', 'device_mpi', 'nccl'] or None |
None |
ComputeConfig#
Top level configuration for all performance and compute options.
| Name | Type | Default |
|---|---|---|
dsdbsparse_type |
DSDBSparse |
DSDBCOO |
numba_threading_layer |
Literal['workqueue', 'omp', 'tbb'] |
'workqueue' |
threadpool_api |
Literal['blas', 'openmp'] or None |
None |
numba_num_threads |
PositiveInt or None |
None |
blas_num_threads |
PositiveInt or Literal['sequential_blas_under_openmp'] or None |
None |
convolve |
ConvolveConfig |
- |
nevp |
NEVPConfig |
- |
lyapunov |
LyapunovComputeConfig |
- |
band_edge |
BandEdgeConfig |
- |
comm |
CommConfig |
- |
QuatrexConfig#
Top-level simulation configuration.
| Name | Type | Default |
|---|---|---|
device |
DeviceConfig |
- |
formalism |
Literal['wf', 'negf'] |
- |
scsp |
SCSPConfig or None |
None |
scba |
SCBAConfig |
- |
qtbm |
QTBMConfig |
- |
electrostatics |
ElectrostaticsConfig |
- |
electron |
ElectronConfig |
- |
phonon |
PhononConfig or None |
None |
coulomb_screening |
CoulombScreeningConfig or None |
None |
photon |
PhotonConfig or None |
None |
config_dir |
Path |
- |
simulation_dir |
Path |
- |
input_dir |
Path or None |
None |
output_dir |
Path or None |
None |
outputs |
OutputConfig |
- |
compute |
ComputeConfig |
- |
Box#
An axis-aligned box defined by its minimum and maximum corners.
| Name | Type | Default |
|---|---|---|
type |
Literal['box'] |
'box' |
bounds |
list[list[float]] |
- |
Cylinder#
A solid cylinder.
| Name | Type | Default |
|---|---|---|
type |
Literal['cylinder'] |
'cylinder' |
center |
list[float] |
- |
radius |
float |
- |
axis |
list[float] |
- |
length |
float |
- |
Rectangle#
A rectangular surface.
| Name | Type | Default |
|---|---|---|
type |
Literal['rectangle'] |
'rectangle' |
center |
list[float] |
- |
normal |
list[float] |
- |
tangent |
list[float] |
- |
length |
float |
- |
width |
float |
- |
Tube#
A cylindrical surface.
| Name | Type | Default |
|---|---|---|
type |
Literal['tube'] |
'tube' |
center |
list[float] |
- |
axis |
list[float] |
- |
radius |
float |
- |
length |
float |
- |
ShapeUnion#
A union of multiple shapes.
| Name | Type | Default |
|---|---|---|
type |
Literal['union'] |
'union' |
shapes |
list[Shape] |
- |
ShapeDifference#
A difference of two shapes.
| Name | Type | Default |
|---|---|---|
type |
Literal['difference'] |
'difference' |
base |
Shape |
- |
subtract |
Shape |
- |
VolumeProperties#
Properties associated with a volumetric region.
| Name | Type | Default |
|---|---|---|
epsilon_r |
float or None |
None |
donor_concentration |
float |
0.0 |
acceptor_concentration |
float |
0.0 |
SurfaceProperties#
Properties associated with a surface region.
| Name | Type | Default |
|---|---|---|
work_function |
NonNegativeFloat or None |
None |
voltage |
float |
- |
Region#
Physical region in the geometry.
| Name | Type | Default |
|---|---|---|
name |
str |
- |
shape |
Shape |
- |
properties |
Any |
- |
mesh_size |
float or None |
None |
GeometryConfig#
Final resolved geometry configuration for the device.
| Name | Type | Default |
|---|---|---|
regions |
list[Region] or None |
None |
atoms_mesh_size |
float or None |
None |
default_mesh_size |
float |
5.0 |