Re-increased but added to the convergency limit
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
use nalgebra::SVector;
|
use nalgebra::SVector;
|
||||||
use roots::find_root_regula_falsi;
|
use roots::{find_root_regula_falsi, SimpleConvergency};
|
||||||
|
|
||||||
use super::callback::Callback;
|
use super::callback::Callback;
|
||||||
use super::controller::{Controller, PIController};
|
use super::controller::{Controller, PIController};
|
||||||
@@ -30,6 +30,7 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub fn solve(&mut self) -> Solution<S, D> {
|
pub fn solve(&mut self) -> Solution<S, D> {
|
||||||
|
let mut convergency = SimpleConvergency{ eps: 1e-14, max_iter: 150 };
|
||||||
let mut times: Vec<f64> = vec![self.ode.t];
|
let mut times: Vec<f64> = vec![self.ode.t];
|
||||||
let mut states: Vec<SVector<f64, D>> = vec![self.ode.y];
|
let mut states: Vec<SVector<f64, D>> = vec![self.ode.y];
|
||||||
let mut dense_coefficients: Vec<Vec<SVector<f64, D>>> = Vec::new();
|
let mut dense_coefficients: Vec<Vec<SVector<f64, D>>> = Vec::new();
|
||||||
@@ -71,7 +72,7 @@ where
|
|||||||
let test_y = self.integrator.step(&self.ode, test_t).0;
|
let test_y = self.integrator.step(&self.ode, test_t).0;
|
||||||
(callback.event)(self.ode.t + test_t, test_y, &self.ode.params)
|
(callback.event)(self.ode.t + test_t, test_y, &self.ode.params)
|
||||||
};
|
};
|
||||||
let root = find_root_regula_falsi(0.0, step, &f, &mut 1e-8).unwrap();
|
let root = find_root_regula_falsi(0.0, step, &f, &mut convergency).unwrap();
|
||||||
step = root;
|
step = root;
|
||||||
(new_y, _, dense_option) = self.integrator.step(&self.ode, step);
|
(new_y, _, dense_option) = self.integrator.step(&self.ode, step);
|
||||||
(callback.effect)(&mut self.ode);
|
(callback.effect)(&mut self.ode);
|
||||||
|
|||||||
Reference in New Issue
Block a user