Assess Population Stability¶
Header: fiction/technology/sidb/simulation/analysis/physical_population_stability.hpp
-
enum class fiction::sidb::simulation::analysis::transition_type : uint8_t¶
Possible types of charge transitions that can occur in an SiDB layout. These transitions represent changes in the charge state of SiDBs, including transitions from neutral to negative, negative to neutral, neutral to positive, and positive to neutral.
Values:
-
enumerator NEUTRAL_TO_NEGATIVE¶
Transition from neutral to negative charge.
-
enumerator NEGATIVE_TO_NEUTRAL¶
SiDB is negatively charged, but is closest to being neutrally charged.
-
enumerator NEUTRAL_TO_POSITIVE¶
Transition from neutral to positive charge.
-
enumerator POSITIVE_TO_NEUTRAL¶
SiDB is positively charged, but is closest to being neutrally charged.
-
enumerator NEUTRAL_TO_NEGATIVE¶
-
struct population_stability_information¶
Population stability of one physically valid charge distribution: for every transition type, the SiDB that is closest to that transition and the potential change it would take, plus the distance an SiDB would have to be placed at to induce that potential change.
Public Members
-
lattice_site critical_dot = {}¶
SiDB with the minimum potential difference to any charge transition threshold. Defaults to
(0, 0, 0).
-
std::unordered_map<transition_type, std::pair<lattice_site, double>> transition_potentials = {}¶
For each transition type, the SiDB closest to it and the required potential difference (unit: V). Empty by default.
-
std::unordered_map<transition_type, double> distance_corresponding_to_potential = {}¶
For each transition type, the distance (unit: nm) an additional SiDB would have to be placed at to induce the required potential difference. A zero potential difference corresponds to positive infinity. An absent transition also has infinite distance; its entry in
transition_potentialshas infinite potential. Distances use the potential magnitude of one elementary charge with all other charge states fixed. Empty by default.
-
double system_energy = {}¶
Electrostatic potential energy of the charge distribution (unit: eV). Defaults to 0.0.
-
lattice_site critical_dot = {}¶
-
struct physical_population_stability_params¶
Parameters of the population stability analysis.
Public Members
-
model::simulation_parameters sim_params = {}¶
Physical parameters of the simulation.
-
uint64_t precision_for_distance_corresponding_to_potential = 2¶
Number of decimal places of the distance corresponding to a potential difference, at most
std::numeric_limits<double>::digits10.
-
uint64_t timeout = {std::numeric_limits<uint64_t>::max()}¶
Millisecond budget for simulation and population analysis. The maximum value means unlimited; zero expires immediately. Expiration throws
utils::timeout_errorwithout returning a partial result.
-
std::chrono::steady_clock::time_point deadline = {std::chrono::steady_clock::time_point::max()}¶
Shared caller deadline.
time_point::max()leaves the enclosing budget unlimited.
-
model::simulation_parameters sim_params = {}¶
-
inline std::vector<population_stability_information> fiction::sidb::simulation::analysis::physical_population_stability(const layout &lyt, const physical_population_stability_params ¶ms)¶
Assesses the population stability of an SiDB layout: for every physically valid charge distribution (found with QuickExact), it determines the SiDB closest to each charge transition and the potential change required for it, in ascending order of the distributions’ energies. The distance an SiDB would have to be placed at to cause that potential change is reported as well. Distances describe a single-charge perturbation with all other charge states fixed, without lattice discretization.
- Parameters:
lyt – The layout to analyze.
params – Parameters.
- Throws:
std::invalid_argument – If relative permittivity is non-positive or non-finite, screening distance is non-positive or NaN, or precision exceeds the decimal precision of
double.- Returns:
The population stability information, one entry per distinct charge distribution.
- class transition_type(*values)¶
Possible types of charge transitions that can occur in an SiDB layout. These transitions represent changes in the charge state of SiDBs, including transitions from neutral to negative, negative to neutral, neutral to positive, and positive to neutral.
- NEUTRAL_TO_NEGATIVE = 0¶
- NEGATIVE_TO_NEUTRAL = 1¶
- NEUTRAL_TO_POSITIVE = 2¶
- POSITIVE_TO_NEUTRAL = 3¶
- class population_stability_information¶
Population stability of one physically valid charge distribution: for every transition type, the SiDB that is closest to that transition and the potential change it would take, plus the distance an SiDB would have to be placed at to induce that potential change.
- property critical_dot¶
SiDB with the minimum potential difference to any charge transition threshold. Defaults to
(0, 0, 0).
- property distance_corresponding_to_potential¶
nm) an additional SiDB would have to be placed at to induce the required potential difference. A zero potential difference corresponds to positive infinity. An absent transition also has infinite distance; its entry in
transition_potentialshas infinite potential. Distances use the potential magnitude of one elementary charge with all other charge states fixed. Empty by default.- Type:
For each transition type, the distance (unit
- property system_energy¶
eV). Defaults to 0.0.
- Type:
Electrostatic potential energy of the charge distribution (unit
- property transition_potentials¶
For each transition type, the SiDB closest to it and the required potential difference (unit: V). Empty by default.
- physical_population_stability(lyt: sidb_layout, *, timeout: int = 18446744073709551615, base: int = 3, mu_minus: float = -0.32, epsilon_r: float = 5.6, lambda_tf: float = 5.0, precision_for_distance_corresponding_to_potential: int = 2) list[population_stability_information]¶
Determine the stability of the SiDB population under the physical model. The keyword options select simulation, potential precision, and the execution budget. Distance conversion bisects the distance bracket up to floating-point resolution.
- Raises:
ValueError – Invalid physical parameters or precision.
- Parameters:
timeout – Execution budget in milliseconds.
base – Number of charge states: 2 for negative and neutral, or 3 to include positive charges.
mu_minus – Negative-charge transition energy in eV.
epsilon_r – Relative permittivity (dimensionless).
lambda_tf – Thomas-Fermi screening distance in nm.
precision_for_distance_corresponding_to_potential – Decimal places for distance conversion, from 0 to 15.