Skip to content

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