35#ifndef NEKTAR_SOLVERUTILS_DRIVERPFASST_H
36#define NEKTAR_SOLVERUTILS_DRIVERPFASST_H
78 std::ostream &out = std::cout)
override;
82 std::ostream &out = std::cout)
override;
117 std::shared_ptr<LibUtilities::TimeIntegrationSchemeSDC> SDCsolver,
#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 solvers.
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > m_solutionRest
void CoarseIntegratedResidualEval(void)
bool m_updateFineResidual
void AssertParameters(void)
std::shared_ptr< LibUtilities::TimeIntegrationSchemeSDC > m_coarseSDCSolver
virtual NekDouble v_EstimateFineSolverTime(void) override
void CoarseResidualEval(void)
void UpdateFineFirstQuadrature(void)
static std::string className
Name of the class.
virtual NekDouble v_ComputeSpeedUp(const size_t iter, NekDouble fineSolveTime, NekDouble coarseSolveTime, NekDouble restTime, NekDouble interTime, NekDouble commTime, NekDouble predictorOverheadTime, NekDouble overheadTime) override
void ComputeFASCorrection(void)
void CorrectInitialFineResidual(void)
void SaveCoarseSolution(void)
void UpdateCoarseFirstQuadrature(void)
virtual NekDouble v_EstimateRestrictionTime(void) override
void ComputeFineInitialGuess(void)
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > m_residualRest
static DriverSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession, const SpatialDomains::MeshGraphSharedPtr &pGraph)
Creates an instance of this class.
void CorrectInitialFineSolution(void)
void InitialiseSDCScheme(bool pfasst)
void Correct(const Array< OneD, Array< OneD, NekDouble > > &coarse, Array< OneD, Array< OneD, NekDouble > > &fine, bool forced)
void FineResidualEval(void)
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > m_tmpcoarse_arr
void SetTime(const NekDouble &time)
Array< OneD, NekDouble > m_ImatFtoC
void InterpolateCoarseResidual(void)
void RestrictFineSolution(void)
virtual NekDouble v_EstimatePredictorTime(void) override
void Interpolate(const Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &coarse, Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &fine, bool forced)
virtual SOLVER_UTILS_EXPORT void v_Execute(std::ostream &out=std::cout) override
Virtual function for solve implementation.
void WriteOutput(size_t chkPts)
void SaveCoarseResidual(void)
virtual SOLVER_UTILS_EXPORT ~DriverPFASST()=default
Destructor.
virtual SOLVER_UTILS_EXPORT void v_InitObject(std::ostream &out=std::cout) override
Virtual function for initialisation implementation.
Array< OneD, NekDouble > m_ImatCtoF
void CorrectFineSolution(void)
void InterpolateCoarseSolution(void)
void CopyQuadratureSolutionAndResidual(std::shared_ptr< LibUtilities::TimeIntegrationSchemeSDC > SDCsolver, const int index)
void CorrectFineResidual(void)
void RunCoarseSweep(void)
virtual NekDouble v_EstimateCommunicationTime(void) override
virtual NekDouble v_EstimateCoarseSolverTime(void) override
void RestrictFineResidual(void)
virtual NekDouble v_EstimateInterpolationTime(void) override
virtual NekDouble v_EstimateOverheadTime(void) override
void ComputeCoarseInitialGuess(void)
void EvaluateSDCResidualNorm(void)
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > m_tmpfine_arr
SOLVER_UTILS_EXPORT DriverPFASST(const LibUtilities::SessionReaderSharedPtr pSession, const SpatialDomains::MeshGraphSharedPtr pGraph)
Constructor.
void Restrict(const Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &fine, Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &coarse)
static std::string driverLookupId
void FineIntegratedResidualEval(void)
bool IsNotInitialCondition(const size_t n)
void ApplyWindowing(void)
void SetTimeInterpolator(void)
std::shared_ptr< LibUtilities::TimeIntegrationSchemeSDC > m_fineSDCSolver
Base class for the development of parallel-in-time solvers.
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< Driver > DriverSharedPtr
A shared pointer to a Driver object.
std::shared_ptr< MeshGraph > MeshGraphSharedPtr
The above copyright notice and this permission notice shall be included.