Physically Valid Parameters

Header: fiction/technology/sidb/simulation/analysis/physically_valid_parameters.hpp

inline domain<logic::parameter_point, uint64_t> fiction::sidb::simulation::analysis::physically_valid_parameters(const layout &lyt, const charge_distribution &cd, const logic::operational_domain_params &params = {})

Determines the physical parameters under which a given charge distribution of a layout is physically valid: every parameter point of the sweep dimensions in params is checked, and for each one where the charge distribution is valid, its excited-state number (the number of distinct valid energy levels below its energy under those parameters) is recorded.

Parameters:
  • lyt – The layout.

  • cd – The charge distribution whose validity is checked.

  • params – Parameters; the sweep dimensions and the engine that determines the excited-state number.

Throws:

std::invalid_argument – if a sweep range has non-finite or reversed bounds, a non-positive or non-finite step, more points than the storage range permits, or the engine is not QuickExact, EXGS, or QuickSim.

Returns:

The parameter points where cd is physically valid, each with its excited-state number; empty if cd does not cover the layout’s SiDBs in raster order.

class physically_valid_parameters_domain
get_excited_state_number_for_parameter(pp: parameter_point) → int
class physically_valid_parameters(lyt: sidb_layout, cd: charge_distribution, *, timeout: int = 18446744073709551615, base: int = 3, mu_minus: float = -0.32, epsilon_r: float = 5.6, lambda_tf: float = 5.0, sim_engine: sidb_simulation_engine = sidb_simulation_engine.QUICKEXACT, sweep_dimensions: Sequence[operational_domain_value_range] | None = None, number_of_threads: int | None = None, on_progress: Callable[[str, int, int], None] | None = None, on_worker_progress: Callable[[int, int, str, int, int, bool], None] | None = None)

Sweep physical parameter values for which the supplied charge distribution is physically valid. The keyword options define the sweep, physical model, worker count, and progress callbacks. Raises ValueError for engines other than QuickExact, EXGS, and QuickSim.

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.

  • sweep_dimensions – Ordered parameter ranges; None sweeps relative permittivity and screening distance with the native ranges.

  • number_of_threads – Number of workers; None uses the native default.

  • on_progress – Callback receiving (task, completed, total); None disables progress reporting.

  • on_worker_progress – Callback receiving (worker, count, description, completed, total, active); None disables worker reports.

  • sim_engine – SiDB simulation engine used to count lower-energy charge distributions.