use thiserror::Error;
#[derive(Debug, Error)]
pub enum OcpError {
#[error("ODE integration failed: {0}")]
IntegrationFailed(String),
#[error("optimization failed: {0}")]
OptimFailed(#[from] numra_optim::OptimError),
#[error("no model specified")]
NoModel,
#[error("no data specified")]
NoData,
#[error("no initial state specified")]
NoInitialState,
#[error("no dynamics specified")]
NoDynamics,
#[error("dimension mismatch: {0}")]
DimensionMismatch(String),
#[error("{0}")]
Other(String),
}