11#ifndef included_RK45TimeIntegrator
12#define included_RK45TimeIntegrator
16#include "AMP/time_integrators/TimeIntegrator.h"
32 std::shared_ptr<AMP::TimeIntegrator::TimeIntegratorParameters> parameters );
40 std::shared_ptr<AMP::TimeIntegrator::TimeIntegratorParameters> parameters )
42 return std::unique_ptr<AMP::TimeIntegrator::TimeIntegrator>(
50 std::shared_ptr<AMP::TimeIntegrator::TimeIntegratorParameters> parameters )
override;
58 std::shared_ptr<const AMP::TimeIntegrator::TimeIntegratorParameters> parameters )
override;
77 std::shared_ptr<AMP::LinearAlgebra::Vector> in,
78 std::shared_ptr<AMP::LinearAlgebra::Vector> out )
override;
80 std::string
type()
const override {
return "RK45"; }
129 std::shared_ptr<AMP::LinearAlgebra::Vector>
d_k1_vec;
130 std::shared_ptr<AMP::LinearAlgebra::Vector>
d_k2_vec;
131 std::shared_ptr<AMP::LinearAlgebra::Vector>
d_k3_vec;
132 std::shared_ptr<AMP::LinearAlgebra::Vector>
d_k4_vec;
133 std::shared_ptr<AMP::LinearAlgebra::Vector>
d_k5_vec;
134 std::shared_ptr<AMP::LinearAlgebra::Vector>
d_k6_vec;
135 std::shared_ptr<AMP::LinearAlgebra::Vector>
d_z_vec;
Class to manage reading/writing restart data.
void writeRestart(int64_t fid) const override
Write restart data to file.
double getNextDt(const bool good_solution) override
std::shared_ptr< AMP::LinearAlgebra::Vector > d_k2_vec
static std::unique_ptr< AMP::TimeIntegrator::TimeIntegrator > createTimeIntegrator(std::shared_ptr< AMP::TimeIntegrator::TimeIntegratorParameters > parameters)
std::string type() const override
Return the name of the TimeIntegrator.
std::shared_ptr< AMP::LinearAlgebra::Vector > d_k3_vec
std::shared_ptr< AMP::LinearAlgebra::Vector > d_z_vec
std::shared_ptr< AMP::LinearAlgebra::Vector > d_k6_vec
void updateSolution(void) override
void registerChildObjects(AMP::IO::RestartManager *manager) const override
Register any child objects.
void getFromInput(std::shared_ptr< AMP::Database > input_db)
int advanceSolution(const double dt, const bool first_step, std::shared_ptr< AMP::LinearAlgebra::Vector > in, std::shared_ptr< AMP::LinearAlgebra::Vector > out) override
Integrate through the specified time increment.
int d_number_regrid_states
std::shared_ptr< AMP::LinearAlgebra::Vector > d_k1_vec
std::shared_ptr< AMP::LinearAlgebra::Vector > d_new_solution
RK45TimeIntegrator(int64_t fid, AMP::IO::RestartManager *manager)
Read restart data to file.
void reset(std::shared_ptr< const AMP::TimeIntegrator::TimeIntegratorParameters > parameters) override
RK45TimeIntegrator(std::shared_ptr< AMP::TimeIntegrator::TimeIntegratorParameters > parameters)
std::shared_ptr< AMP::LinearAlgebra::Vector > d_k4_vec
void initialize(std::shared_ptr< AMP::TimeIntegrator::TimeIntegratorParameters > parameters) override
bool checkNewSolution(void) override
std::shared_ptr< AMP::LinearAlgebra::Vector > d_k5_vec
Abstract base class for time integration.
std::shared_ptr< AMP::TimeIntegrator::TimeIntegrator > shared_ptr
Convience typedef.