scirs2_integrate/pde/
error.rs1use std::error::Error;
2use std::fmt;
3
4use crate::error::IntegrateError;
5
6#[derive(Debug)]
8pub enum PDEError {
9 BoundaryConditions(String),
11
12 DomainError(String),
14
15 DiscretizationError(String),
17
18 MOLError(String),
20
21 FiniteDifferenceError(String),
23
24 FiniteElementError(String),
26
27 SpectralError(String),
29
30 InvalidGrid(String),
32
33 InvalidParameter(String),
35
36 ComputationError(String),
38
39 ODEError(IntegrateError),
41
42 Other(String),
44}
45
46impl fmt::Display for PDEError {
47 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
48 match self {
49 PDEError::BoundaryConditions(msg) => write!(f, "Boundary condition error: {msg}"),
50 PDEError::DomainError(msg) => write!(f, "Domain error: {msg}"),
51 PDEError::DiscretizationError(msg) => write!(f, "Discretization error: {msg}"),
52 PDEError::MOLError(msg) => write!(f, "Method of lines error: {msg}"),
53 PDEError::FiniteDifferenceError(msg) => write!(f, "Finite difference error: {msg}"),
54 PDEError::FiniteElementError(msg) => write!(f, "Finite element error: {msg}"),
55 PDEError::SpectralError(msg) => write!(f, "Spectral method error: {msg}"),
56 PDEError::InvalidGrid(msg) => write!(f, "Invalid grid error: {msg}"),
57 PDEError::InvalidParameter(msg) => write!(f, "Invalid parameter error: {msg}"),
58 PDEError::ComputationError(msg) => write!(f, "Computation error: {msg}"),
59 PDEError::ODEError(err) => write!(f, "ODE solver error: {err}"),
60 PDEError::Other(msg) => write!(f, "PDE error: {msg}"),
61 }
62 }
63}
64
65impl Error for PDEError {}
66
67pub type PDEResult<T> = Result<T, PDEError>;
69
70impl From<IntegrateError> for PDEError {
72 fn from(err: IntegrateError) -> Self {
73 PDEError::ODEError(err)
74 }
75}