pub struct StructureBook { /* private fields */ }Expand description
Structural rank analysis of the equality constraint Jacobian,
after the Dulmage–Mendelsohn decomposition used by IDAES’s
DiagnosticsToolbox. The Hessian-free, iterate-independent sparsity
pattern alone tells us whether a subset of equations is
over-determined — more equations than the variables they jointly
touch — which forces at least one of them to be redundant or
mutually inconsistent (a structurally singular Jacobian, LICQ
failure).
The payoff is naming those rows. The solver’s δ_c dual
regularization and wrong-inertia flags detect rank deficiency but
report it as a scalar; this book maps the dependent rows back to the
model’s equation names so diagnose can say mass_balance instead
of “equation 13”. Tracing a singular system to named equations is
exactly the roadblock Lee et al. (2024) identify for
equation-oriented model debugging. See
https://doi.org/10.69997/sct.147875.
Implementations§
Source§impl StructureBook
impl StructureBook
Sourcepub fn new(
inc: EqualityIncidence,
con_names: Vec<String>,
var_names: Vec<String>,
) -> Self
pub fn new( inc: EqualityIncidence, con_names: Vec<String>, var_names: Vec<String>, ) -> Self
Build from the equality incidence graph plus the model’s
constraint and variable name vectors (original order). The
incidence rows index into con_names via
inc.eq_row_inner_idx; the incidence columns index var_names
directly.
Auto Trait Implementations§
impl Freeze for StructureBook
impl RefUnwindSafe for StructureBook
impl Send for StructureBook
impl Sync for StructureBook
impl Unpin for StructureBook
impl UnsafeUnpin for StructureBook
impl UnwindSafe for StructureBook
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T, U> Imply<T> for U
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more