35#ifndef NEKTAR_SOLVERUTILS_DRIVERPARALLELINTIME_H
36#define NEKTAR_SOLVERUTILS_DRIVERPARALLELINTIME_H
61 std::ostream &out = std::cout)
override;
65 std::ostream &out = std::cout)
override;
#define SOLVER_UTILS_EXPORT
Base class for the development of solvers.
Base class for the development of parallel-in-time solvers.
size_t m_numChunks
Number of time chunks.
NekDouble m_totalTime
Total time integration interval.
void EvaluateExactSolution(const NekDouble &time)
NekDouble vL2ErrorMax(void)
size_t m_coarseSteps
Number of steps for the coarse solver.
void PrintSpeedUp(NekDouble fineSolveTime, NekDouble coarseSolveTime, NekDouble restTime, NekDouble interTime, NekDouble commTime, NekDouble predictorOverheadTime, NekDouble overheadTime)
virtual SOLVER_UTILS_EXPORT ~DriverParallelInTime()=default
Destructor.
void UpdateErrorNorm(const bool normalized)
Array< OneD, NekDouble > m_vL2Errors
void SendSolutionToNextProc(Array< OneD, Array< OneD, NekDouble > > &array, int &convergence)
virtual NekDouble v_EstimateCommunicationTime(void)
NekDouble m_chunkTime
Time for chunks.
size_t m_iterMaxPIT
Maximum number of parallel-in-time iteration.
size_t m_fineSteps
Number of steps for the fine solver.
void SetParallelInTimeEquationSystem(std::string AdvectiveType)
void CopyToFinePhysField(const Array< OneD, const Array< OneD, NekDouble > > &in)
NekDouble m_coarseTimeStep
Timestep for coarse solver.
void RecvInitialConditionFromPreviousProc(Array< OneD, Array< OneD, NekDouble > > &array, int &convergence)
Array< OneD, MultiRegions::ExpListSharedPtr > m_fineFields
Array< OneD, MultiRegions::ExpListSharedPtr > m_coarseFields
void InitialiseEqSystem(bool turnoff_output)
void CopyFromFinePhysField(Array< OneD, Array< OneD, NekDouble > > &out)
Array< OneD, Array< OneD, NekDouble > > m_tmpfine
void Interpolator(const Array< OneD, const Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
std::shared_ptr< SolverUtils::UnsteadySystem > m_coarseEqSys
virtual SOLVER_UTILS_EXPORT void v_InitObject(std::ostream &out=std::cout) override
Virtual function for initialisation implementation.
Array< OneD, NekDouble > m_vLinfErrors
virtual NekDouble v_EstimateOverheadTime(void)
void PrintHeaderTitle1(const std::string &title)
void GetParametersFromSession(void)
void PrintHeaderTitle2(const std::string &title)
NekDouble m_tolerPIT
ParallelInTime tolerance.
void PrintCoarseSolverInfo(std::ostream &out=std::cout)
virtual NekDouble v_EstimateRestrictionTime(void)
virtual NekDouble v_EstimateInterpolationTime(void)
NekDouble m_fineTimeStep
Timestep for fine solver.
void AllocateMemory(void)
void PrintFineSolverInfo(std::ostream &out=std::cout)
size_t m_chunkRank
Rank in time.
void PrintComputationalTime(const NekDouble time)
bool m_exactSolution
Using exact solution to compute error norms.
size_t m_checkSteps
Number of steps for checkpoint.
void SolutionConvergenceMonitoring(const NekDouble &time)
virtual SOLVER_UTILS_EXPORT void v_Execute(std::ostream &out=std::cout) override
Virtual function for solve implementation.
Array< OneD, Array< OneD, NekDouble > > m_tmpcoarse
std::shared_ptr< SolverUtils::UnsteadySystem > m_fineEqSys
Array< OneD, Array< OneD, NekDouble > > m_exactsoln
NekDouble EstimateCommunicationTime(Array< OneD, Array< OneD, NekDouble > > &buffer1, Array< OneD, Array< OneD, NekDouble > > &buffer2)
void SolutionConvergenceSummary(const NekDouble &time)
NekDouble m_time
Local time.
void InitialiseInterpolationField(void)
void CopyFromCoarsePhysField(Array< OneD, Array< OneD, NekDouble > > &out)
virtual NekDouble v_EstimateCoarseSolverTime(void)
void UpdateSolution(const Array< OneD, const Array< OneD, NekDouble > > &in)
void CopyToCoarsePhysField(const Array< OneD, const Array< OneD, NekDouble > > &in)
void CopySolutionVector(const Array< OneD, const Array< OneD, NekDouble > > &in, Array< OneD, Array< OneD, NekDouble > > &out)
virtual NekDouble v_EstimateFineSolverTime(void)
size_t m_infoSteps
Number of steps for info I/O.
virtual NekDouble v_EstimatePredictorTime(void)
virtual NekDouble v_ComputeSpeedUp(const size_t iter, NekDouble fineSolveTime, NekDouble coarseSolveTime, NekDouble restTime, NekDouble interTime, NekDouble commTime, NekDouble predictorTime, NekDouble overheadTime)
void PrintErrorNorm(const bool normalized)
SOLVER_UTILS_EXPORT DriverParallelInTime(const LibUtilities::SessionReaderSharedPtr pSession, const SpatialDomains::MeshGraphSharedPtr pGraph)
Constructor.
std::shared_ptr< SessionReader > SessionReaderSharedPtr
void InterpExp1ToExp2(const Array< OneD, MultiRegions::ExpListSharedPtr > exp1, Array< OneD, MultiRegions::ExpListSharedPtr > &exp2)
Interpolate from an expansion to an expansion.
std::shared_ptr< MeshGraph > MeshGraphSharedPtr
The above copyright notice and this permission notice shall be included.