18 #ifndef LINEAR_ODE_SOLVER_H_ 19 #define LINEAR_ODE_SOLVER_H_ 50 virtual void update_solution(arma::vec &init_vec, arma::vec &output_vec) = 0;
57 virtual void update_solution(arma::mat &init_vecs, arma::mat &output_vecs,
81 template<
class Method>
92 virtual void update_solution(arma::mat &init_vecs, arma::mat &output_vecs,
98 template<
class Method>
105 for(
unsigned int j=0; j < init_vecs.n_cols; j++)
111 #endif // LINEAR_ODE_SOLVER_H_ arma::mat system_matrix_
the square matrix of ODE system
virtual ~LinearODESolverBase()
virtual ~LinearODESolver()
arma::vec rhs_
the column vector of RHS values (not used currently)
virtual bool evaluate_time_constraint(double &time_constraint)=0
Estimate upper bound for time step. Return true if constraint was set.
Template class of the linear ODE solver.
virtual void update_solution(arma::mat &init_vecs, arma::mat &output_vecs, const std::vector< unsigned int > &mask=std::vector< unsigned int >(0)) override
Updates solution of the system with different initial vectors.
void set_step(double step)
Sets the step of the numerical method.
Global macros to enhance readability and debugging, general constants.
Base class for linear ODE solver.
bool system_matrix_changed_
Indicates that the system_matrix_ was recently updated.
static Input::Type::Abstract & get_input_type()
bool step_changed_
flag is true if the step has been changed
virtual void update_solution(arma::vec &init_vec, arma::vec &output_vec)=0
Updates solution of the ODEs system.
void set_system_matrix(const arma::mat &matrix)
Sets the matrix of ODE system.
double step_
the step of the numerical method
#define OLD_ASSERT_EQUAL(a, b)