Skip to main content

powerio_prob/instance/
mod.rs

1//! The public calculation instances.
2//!
3//! A problem instance is complete typed input for one problem family,
4//! distinct from the source network, a matrix projection, a solver
5//! formulation, and a solution. Every instance shares its reusable
6//! electrical network as a cheap owning handle — cloning an instance clones
7//! no network table — and exposes a borrowed `network()` accessor. Fields
8//! are private, so the sharing strategy can change without a public break.
9//!
10//! The eight instances are [`DcPfInstance`], [`AcPfInstance`],
11//! [`DcOpfInstance`], [`AcOpfInstance`], [`McAcPfInstance`],
12//! [`McAcOpfInstance`], [`LinDist3FlowOpfInstance`], and [`AcScucInstance`]. Power flow instances carry
13//! partial boundary specifications; OPF instances carry typed
14//! [`Objective`] terms and active constraint selections by stable element
15//! identity, with the numerical limits staying on the network.
16
17pub(crate) mod balanced;
18mod constraints;
19mod lindist3flow;
20mod merge;
21mod multiconductor;
22mod objective;
23mod scuc;
24pub mod scuc_inputs;
25
26pub use balanced::{
27    AcBusSpecification, AcOpfInstance, AcPfInstance, DcBusSpecification, DcOpfInstance,
28    DcPfInstance,
29};
30pub use constraints::{ActiveConstraints, ConstraintSelection, MulticonductorActiveConstraints};
31pub use lindist3flow::{
32    LinDist3FlowApplicability, LinDist3FlowApplicabilityStatus, LinDist3FlowBuildOptions,
33    LinDist3FlowNode, LinDist3FlowOpfInstance, LinDist3FlowOrientedConductor,
34    LinDist3FlowReferencePolicy, LinDist3FlowReferenceProvenance, LinDist3FlowReferenceState,
35    LinDist3FlowReferenceVoltage, LinDist3FlowTopology, LinDist3FlowUnsupported,
36    check_lindist3flow_applicability,
37};
38pub use merge::{ZeroImpedanceMerge, merge_zero_impedance_buses};
39pub use multiconductor::{
40    ActiveControlMode, McAcOpfInstance, McAcPfInstance, PrescribedSourceVoltage,
41    PrescribedTerminalPower,
42};
43pub use objective::{Objective, ObjectiveTerm};
44pub use scuc::AcScucInstance;
45pub use scuc_inputs::{
46    ScucActiveReserveZone, ScucBranchSwitchingCost, ScucContingency, ScucDevice, ScucDeviceKind,
47    ScucDevicePeriod, ScucEnergyCostBlock, ScucEnergyRequirement, ScucInitialCommitment,
48    ScucInputs, ScucRampLimits, ScucReactiveCapability, ScucReactiveReserveZone, ScucReserveCosts,
49    ScucReserveLimits, ScucShunt, ScucStartupCostAdjustment, ScucStartupLimit,
50    ScucTransformerControl, ScucViolationCosts,
51};