1use numra_core::NumraError;
8use thiserror::Error;
9
10#[derive(Debug, Error)]
12pub enum OcpError {
13 #[error("ODE integration failed: {0}")]
14 IntegrationFailed(String),
15 #[error("optimization failed: {0}")]
16 OptimFailed(#[from] numra_optim::OptimError),
17 #[error("no model specified")]
18 NoModel,
19 #[error("no data specified")]
20 NoData,
21 #[error("no initial state specified")]
22 NoInitialState,
23 #[error("no dynamics specified")]
24 NoDynamics,
25 #[error("dimension mismatch: {0}")]
26 DimensionMismatch(String),
27 #[error("{0}")]
28 Other(String),
29}
30
31impl From<OcpError> for NumraError {
32 fn from(e: OcpError) -> Self {
33 NumraError::Ocp(e.to_string())
34 }
35}