pub mod shooting;
use crate::{
bvp::Boundary,
error::Error,
ode::ODE,
solout::Solout,
solution::Solution,
traits::{Real, State},
};
pub use shooting::{MultipleShooting, Shooting, SingleShooting};
pub trait BVPMethod<T, Y>
where
T: Real,
Y: State<T>,
{
fn solve<EqType, SoloutType>(
&mut self,
problem: &EqType,
t0: T,
tf: T,
y_guess: &Y,
solout: &mut SoloutType,
) -> Result<Solution<T, Y>, Error<T, Y>>
where
EqType: ODE<T, Y> + Boundary<T, Y> + ?Sized,
SoloutType: Solout<T, Y>;
}