use numra_core::NumraError;
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),
}
impl From<OcpError> for NumraError {
fn from(e: OcpError) -> Self {
NumraError::Ocp(e.to_string())
}
}