35#ifndef NEKTAR_SOLVERUTILS_DRIVERPARAREAL_H
36#define NEKTAR_SOLVERUTILS_DRIVERPARAREAL_H
76 std::ostream &out = std::cout)
override;
80 std::ostream &out = std::cout)
override;
111 const size_t iter,
const size_t wd,
#define SOLVER_UTILS_EXPORT
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
Base class for the development of parallel-in-time solvers.
Base class for the development of solvers.
virtual SOLVER_UTILS_EXPORT void v_Execute(std::ostream &out=std::cout) override
Virtual function for solve implementation.
virtual NekDouble v_EstimatePredictorTime(void) override
virtual SOLVER_UTILS_EXPORT ~DriverParareal()=default
Destructor.
void CopyConvergedCheckPoints(const size_t w, const size_t k, size_t kmax)
void ApplyWindowing(const Array< OneD, const Array< OneD, NekDouble > > &in, Array< OneD, Array< OneD, NekDouble > > &out)
static std::string driverLookupId
static std::string className
Name of the class.
virtual NekDouble v_EstimateInterpolationTime(void) override
virtual NekDouble v_EstimateCommunicationTime(void) override
virtual SOLVER_UTILS_EXPORT void v_InitObject(std::ostream &out=std::cout) override
Virtual function for initialisation implementation.
virtual NekDouble v_EstimateRestrictionTime(void) override
void PrintSolutionFile(void)
void RunFineSolve(const NekDouble time, const size_t nstep, const size_t iter, const size_t wd, const Array< OneD, const Array< OneD, NekDouble > > &input, Array< OneD, Array< OneD, NekDouble > > &output)
static DriverSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession, const SpatialDomains::MeshGraphSharedPtr &pGraph)
Creates an instance of this class.
void PararealCorrection(const Array< OneD, const Array< OneD, NekDouble > > &coarse_new, const Array< OneD, const Array< OneD, NekDouble > > &coarse_old, Array< OneD, Array< OneD, NekDouble > > &fine)
SOLVER_UTILS_EXPORT DriverParareal(const LibUtilities::SessionReaderSharedPtr pSession, const SpatialDomains::MeshGraphSharedPtr pGraph)
Constructor.
virtual NekDouble v_EstimateFineSolverTime(void) override
void AssertParameters(void)
virtual NekDouble v_EstimateOverheadTime(void) override
void RunCoarseSolve(const NekDouble time, const size_t nstep, const Array< OneD, const Array< OneD, NekDouble > > &input, Array< OneD, Array< OneD, NekDouble > > &output)
virtual NekDouble v_ComputeSpeedUp(const size_t iter, NekDouble fineSolveTime, NekDouble coarseSolveTime, NekDouble restTime, NekDouble interTime, NekDouble commTime, NekDouble predictorOverheadTime, NekDouble overheadTime) override
virtual NekDouble v_EstimateCoarseSolverTime(void) override
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< Driver > DriverSharedPtr
A shared pointer to a Driver object.
std::shared_ptr< MeshGraph > MeshGraphSharedPtr
std::vector< double > w(NPUPPER)
The above copyright notice and this permission notice shall be included.