15#ifndef dealii_time_stepping_h
16#define dealii_time_stepping_h
181 template <
typename VectorType>
202 std::vector<std::function<VectorType(
const double,
const VectorType &)>>
204 std::vector<std::function<
205 VectorType(
const double,
const double,
const VectorType &)>> &J_inverse,
228 template <
typename VectorType>
256 std::vector<std::function<VectorType(
const double,
const VectorType &)>>
258 std::vector<std::function<
259 VectorType(
const double,
const double,
const VectorType &)>> &J_inverse,
262 VectorType &y)
override;
277 const std::function<VectorType(
const double,
const VectorType &)> &f,
279 VectorType(
const double,
const double,
const VectorType &)>
280 &id_minus_tau_J_inverse,
294 std::vector<double>
b;
299 std::vector<double>
c;
304 std::vector<std::vector<double>>
a;
313 template <
typename VectorType>
352 const std::function<VectorType(
const double,
const VectorType &)> &f,
354 VectorType(
const double,
const double,
const VectorType &)>
355 &id_minus_tau_J_inverse,
358 VectorType &y)
override;
369 const std::function<VectorType(
const double,
const VectorType &)> &f,
398 const std::function<VectorType(
const double,
const VectorType &)> &f,
400 const double delta_t,
402 std::vector<VectorType> &f_stages)
const;
417 template <
typename VectorType>
454 const std::function<VectorType(
const double,
const VectorType &)> &f,
456 VectorType(
const double,
const double,
const VectorType &)>
457 &id_minus_tau_J_inverse,
460 VectorType &y)
override;
473 const std::function<VectorType(
const double,
const VectorType &)> &f,
476 VectorType &solution,
488 std::vector<double> &
b,
489 std::vector<double> &
c)
const;
515 const std::function<VectorType(
const double,
const VectorType &)> &f,
517 const double factor_solution,
518 const double factor_ai,
519 const VectorType ¤t_ri,
521 VectorType &solution,
522 VectorType &next_ri)
const;
536 template <
typename VectorType>
555 const unsigned int max_it = 100,
577 const std::function<VectorType(
const double,
const VectorType &)> &f,
579 VectorType(
const double,
const double,
const VectorType &)>
580 &id_minus_tau_J_inverse,
583 VectorType &y)
override;
622 const std::function<VectorType(
const double,
const VectorType &)> &f,
624 VectorType(
const double,
const double,
const VectorType &)>
625 &id_minus_tau_J_inverse,
629 std::vector<VectorType> &f_stages);
636 const std::function<
void(
const VectorType &, VectorType &)> &get_residual,
637 const std::function<VectorType(
const VectorType &)>
638 &id_minus_tau_J_inverse,
646 const std::function<VectorType(
const double,
const VectorType &)> &f,
649 const VectorType &new_y,
651 VectorType &tendency,
652 VectorType &residual)
const;
676 template <
typename VectorType>
696 const double min_delta = 1e-14,
697 const double max_delta = 1e100,
736 const std::function<VectorType(
const double,
const VectorType &)> &f,
738 VectorType(
const double,
const double,
const VectorType &)>
739 &id_minus_tau_J_inverse,
742 VectorType &y)
override;
753 const std::function<VectorType(
const double,
const VectorType &)> &f,
764 const double min_delta,
765 const double max_delta,
800 const std::function<VectorType(
const double,
const VectorType &)> &f,
802 const double delta_t,
804 std::vector<VectorType> &f_stages);
849 std::vector<double>
b1;
854 std::vector<double>
b2;
double evolve_one_time_step(const std::function< VectorType(const double, const VectorType &)> &f, double t, double delta_t, VectorType &y)
void compute_stages(const std::function< VectorType(const double, const VectorType &)> &f, const double t, const double delta_t, const VectorType &y, std::vector< VectorType > &f_stages)
EmbeddedExplicitRungeKutta()=default
~EmbeddedExplicitRungeKutta() override
const Status & get_status() const override
void set_time_adaptation_parameters(const double coarsen_param, const double refine_param, const double min_delta, const double max_delta, const double refine_tol, const double coarsen_tol)
void initialize(const runge_kutta_method method) override
double evolve_one_time_step(const std::function< VectorType(const double, const VectorType &)> &f, const std::function< VectorType(const double, const double, const VectorType &)> &id_minus_tau_J_inverse, double t, double delta_t, VectorType &y) override
EmbeddedExplicitRungeKutta(const runge_kutta_method method, const double coarsen_param=1.2, const double refine_param=0.8, const double min_delta=1e-14, const double max_delta=1e100, const double refine_tol=1e-8, const double coarsen_tol=1e-12)
const Status & get_status() const override
void initialize(const runge_kutta_method method) override
ExplicitRungeKutta()=default
void compute_stages(const std::function< VectorType(const double, const VectorType &)> &f, const double t, const double delta_t, const VectorType &y, std::vector< VectorType > &f_stages) const
double evolve_one_time_step(const std::function< VectorType(const double, const VectorType &)> &f, double t, double delta_t, VectorType &y)
double evolve_one_time_step(const std::function< VectorType(const double, const VectorType &)> &f, const std::function< VectorType(const double, const double, const VectorType &)> &id_minus_tau_J_inverse, double t, double delta_t, VectorType &y) override
ExplicitRungeKutta(const runge_kutta_method method)
void compute_stages(const std::function< VectorType(const double, const VectorType &)> &f, const std::function< VectorType(const double, const double, const VectorType &)> &id_minus_tau_J_inverse, double t, double delta_t, VectorType &y, std::vector< VectorType > &f_stages)
void newton_solve(const std::function< void(const VectorType &, VectorType &)> &get_residual, const std::function< VectorType(const VectorType &)> &id_minus_tau_J_inverse, VectorType &y)
const Status & get_status() const override
void initialize(const runge_kutta_method method) override
double evolve_one_time_step(const std::function< VectorType(const double, const VectorType &)> &f, const std::function< VectorType(const double, const double, const VectorType &)> &id_minus_tau_J_inverse, double t, double delta_t, VectorType &y) override
void compute_residual(const std::function< VectorType(const double, const VectorType &)> &f, double t, double delta_t, const VectorType &new_y, const VectorType &y, VectorType &tendency, VectorType &residual) const
void set_newton_solver_parameters(const unsigned int max_it, const double tolerance)
ImplicitRungeKutta()=default
ImplicitRungeKutta(const runge_kutta_method method, const unsigned int max_it=100, const double tolerance=1e-6)
void compute_one_stage(const std::function< VectorType(const double, const VectorType &)> &f, const double t, const double factor_solution, const double factor_ai, const VectorType ¤t_ri, VectorType &vec_ki, VectorType &solution, VectorType &next_ri) const
void initialize(const runge_kutta_method method) override
LowStorageRungeKutta(const runge_kutta_method method)
void get_coefficients(std::vector< double > &a, std::vector< double > &b, std::vector< double > &c) const
LowStorageRungeKutta()=default
double evolve_one_time_step(const std::function< VectorType(const double, const VectorType &)> &f, double t, double delta_t, VectorType &solution, VectorType &vec_ri, VectorType &vec_ki)
const Status & get_status() const override
double evolve_one_time_step(const std::function< VectorType(const double, const VectorType &)> &f, const std::function< VectorType(const double, const double, const VectorType &)> &id_minus_tau_J_inverse, double t, double delta_t, VectorType &y) override
double evolve_one_time_step(std::vector< std::function< VectorType(const double, const VectorType &)> > &F, std::vector< std::function< VectorType(const double, const double, const VectorType &)> > &J_inverse, double t, double delta_t, VectorType &y) override
virtual ~RungeKutta() override=default
virtual void initialize(const runge_kutta_method method)=0
std::vector< std::vector< double > > a
virtual double evolve_one_time_step(const std::function< VectorType(const double, const VectorType &)> &f, const std::function< VectorType(const double, const double, const VectorType &)> &id_minus_tau_J_inverse, double t, double delta_t, VectorType &y)=0
virtual double evolve_one_time_step(std::vector< std::function< VectorType(const double, const VectorType &)> > &F, std::vector< std::function< VectorType(const double, const double, const VectorType &)> > &J_inverse, double t, double delta_t, VectorType &y)=0
virtual ~TimeStepping()=default
virtual const Status & get_status() const =0
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
embedded_runge_kutta_time_step
@ RK_CLASSIC_FOURTH_ORDER
@ LOW_STORAGE_RK_STAGE9_ORDER5
@ LOW_STORAGE_RK_STAGE3_ORDER3
@ LOW_STORAGE_RK_STAGE7_ORDER4
@ LOW_STORAGE_RK_STAGE5_ORDER4
embedded_runge_kutta_time_step exit_delta_t
unsigned int n_iterations
runge_kutta_method method
runge_kutta_method method
unsigned int n_iterations
runge_kutta_method method
runge_kutta_method method