pub mod ida_pbc;
pub mod port_hamiltonian;
pub mod storage_function;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum PassivityError {
NotPassive,
SingularMatrix,
MatchingFailed,
InvalidHamiltonian,
}
impl core::fmt::Display for PassivityError {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
PassivityError::NotPassive => {
f.write_str("system is not passive (J skew-symmetry or R PSD violated)")
}
PassivityError::SingularMatrix => {
f.write_str("singular matrix encountered (cannot invert)")
}
PassivityError::MatchingFailed => {
f.write_str("IDA-PBC matching equations could not be solved")
}
PassivityError::InvalidHamiltonian => {
f.write_str("Hamiltonian is invalid (Q must be positive definite)")
}
}
}
}
pub use ida_pbc::{IdaPbcConfig, IdaPbcController, MechanicalIdaPbc};
pub use port_hamiltonian::{LinearPh, PortHamiltonian};
pub use storage_function::{LyapunovStabilityCheck, PassivityVerifier, StorageFunction};