Nektar++
|
Base class for the development of solvers. More...
#include <DriverParareal.h>
Static Public Member Functions | |
static DriverSharedPtr | create (const LibUtilities::SessionReaderSharedPtr &pSession, const SpatialDomains::MeshGraphSharedPtr &pGraph) |
Creates an instance of this class. More... | |
Static Public Attributes | |
static std::string | className |
Name of the class. More... | |
Static Protected Attributes | |
static std::string | driverLookupId |
![]() | |
static std::string | evolutionOperatorLookupIds [] |
static std::string | evolutionOperatorDef |
static std::string | driverDefault |
Private Member Functions | |
void | AssertParameters (void) |
void | RunCoarseSolve (const NekDouble time, const size_t nstep, const Array< OneD, const Array< OneD, NekDouble > > &input, Array< OneD, Array< OneD, NekDouble > > &output) |
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) |
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) |
void | PrintSolutionFile (void) |
void | ApplyWindowing (const Array< OneD, const Array< OneD, NekDouble > > &in, Array< OneD, Array< OneD, NekDouble > > &out) |
void | CopyConvergedCheckPoints (const size_t w, const size_t k, size_t kmax) |
Friends | |
class | MemoryManager< DriverParareal > |
Base class for the development of solvers.
Definition at line 46 of file DriverParareal.h.
|
protected |
Constructor.
Definition at line 54 of file DriverParareal.cpp.
|
protectedvirtualdefault |
Destructor.
|
private |
Definition at line 560 of file DriverParareal.cpp.
References Nektar::SolverUtils::DriverParallelInTime::m_chunkRank, Nektar::SolverUtils::DriverParallelInTime::m_numChunks, Nektar::SolverUtils::Driver::m_session, and Vmath::Vcopy().
Referenced by v_Execute().
Definition at line 415 of file DriverParareal.cpp.
References ASSERTL0, Nektar::SolverUtils::DriverParallelInTime::m_checkSteps, Nektar::SolverUtils::DriverParallelInTime::m_coarseSteps, Nektar::SolverUtils::DriverParallelInTime::m_coarseTimeStep, Nektar::SolverUtils::DriverParallelInTime::m_fineSteps, Nektar::SolverUtils::DriverParallelInTime::m_fineTimeStep, Nektar::SolverUtils::DriverParallelInTime::m_infoSteps, Nektar::SolverUtils::DriverParallelInTime::m_numChunks, and Nektar::SolverUtils::DriverParallelInTime::m_numWindowsPIT.
Referenced by v_Execute().
|
private |
Output directory name.
Definition at line 586 of file DriverParareal.cpp.
References CellMLToNektar.pycml::copy(), Nektar::SolverUtils::DriverParallelInTime::m_checkSteps, Nektar::SolverUtils::DriverParallelInTime::m_chunkRank, Nektar::SolverUtils::Driver::m_comm, Nektar::SolverUtils::DriverParallelInTime::m_fineEqSys, Nektar::SolverUtils::DriverParallelInTime::m_fineSteps, Nektar::SolverUtils::DriverParallelInTime::m_numChunks, Nektar::SolverUtils::Driver::m_session, Nektar::LibUtilities::ReduceMax, and Nektar::UnitTests::w().
Referenced by v_Execute().
|
inlinestatic |
Creates an instance of this class.
Definition at line 52 of file DriverParareal.h.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), and CellMLToNektar.cellml_metadata::p.
|
private |
Definition at line 536 of file DriverParareal.cpp.
References Vmath::Vadd(), and Vmath::Vsub().
Referenced by v_Execute().
Definition at line 551 of file DriverParareal.cpp.
References Nektar::SolverUtils::DriverParallelInTime::m_fineEqSys, and Nektar::SolverUtils::DriverParallelInTime::PrintHeaderTitle2().
Referenced by v_Execute().
|
private |
Definition at line 459 of file DriverParareal.cpp.
References Nektar::SolverUtils::DriverParallelInTime::Interpolator(), Nektar::SolverUtils::DriverParallelInTime::m_coarseEqSys, Nektar::SolverUtils::DriverParallelInTime::m_fineEqSys, and Nektar::SolverUtils::DriverParallelInTime::m_tmpcoarse.
Referenced by v_Execute().
|
private |
Definition at line 493 of file DriverParareal.cpp.
References Nektar::SolverUtils::DriverParallelInTime::m_checkSteps, Nektar::SolverUtils::DriverParallelInTime::m_chunkRank, Nektar::SolverUtils::DriverParallelInTime::m_fineEqSys, Nektar::SolverUtils::DriverParallelInTime::m_fineSteps, and Nektar::SolverUtils::DriverParallelInTime::m_numChunks.
Referenced by v_EstimateFineSolverTime(), and v_Execute().
|
overrideprotectedvirtual |
Reimplemented from Nektar::SolverUtils::DriverParallelInTime.
Definition at line 390 of file DriverParareal.cpp.
References Nektar::SolverUtils::DriverParallelInTime::m_numChunks.
|
overrideprotectedvirtual |
Reimplemented from Nektar::SolverUtils::DriverParallelInTime.
Definition at line 301 of file DriverParareal.cpp.
References Nektar::SolverUtils::DriverParallelInTime::CopyFromFinePhysField(), Nektar::LibUtilities::Timer::Elapsed(), Nektar::SolverUtils::DriverParallelInTime::m_chunkTime, Nektar::SolverUtils::DriverParallelInTime::m_coarseEqSys, Nektar::SolverUtils::DriverParallelInTime::m_coarseNpts, Nektar::SolverUtils::DriverParallelInTime::m_coarseSteps, Nektar::SolverUtils::DriverParallelInTime::m_fineEqSys, Nektar::SolverUtils::DriverParallelInTime::m_nVar, Nektar::SolverUtils::DriverParallelInTime::m_time, Nektar::LibUtilities::Timer::Start(), and Nektar::LibUtilities::Timer::Stop().
Referenced by v_EstimatePredictorTime().
|
overrideprotectedvirtual |
Reimplemented from Nektar::SolverUtils::DriverParallelInTime.
Definition at line 235 of file DriverParareal.cpp.
References Nektar::SolverUtils::DriverParallelInTime::EstimateCommunicationTime(), Nektar::SolverUtils::DriverParallelInTime::m_fineNpts, and Nektar::SolverUtils::DriverParallelInTime::m_nVar.
|
overrideprotectedvirtual |
Reimplemented from Nektar::SolverUtils::DriverParallelInTime.
Definition at line 347 of file DriverParareal.cpp.
References Nektar::SolverUtils::DriverParallelInTime::CopyFromFinePhysField(), Nektar::LibUtilities::Timer::Elapsed(), Nektar::SolverUtils::DriverParallelInTime::m_chunkTime, Nektar::SolverUtils::DriverParallelInTime::m_fineEqSys, Nektar::SolverUtils::DriverParallelInTime::m_fineNpts, Nektar::SolverUtils::DriverParallelInTime::m_fineSteps, Nektar::SolverUtils::DriverParallelInTime::m_nVar, Nektar::SolverUtils::DriverParallelInTime::m_time, RunFineSolve(), Nektar::LibUtilities::Timer::Start(), and Nektar::LibUtilities::Timer::Stop().
|
overrideprotectedvirtual |
Reimplemented from Nektar::SolverUtils::DriverParallelInTime.
Definition at line 277 of file DriverParareal.cpp.
References Nektar::LibUtilities::Timer::Elapsed(), Nektar::SolverUtils::DriverParallelInTime::Interpolator(), Nektar::SolverUtils::DriverParallelInTime::m_coarseNpts, Nektar::SolverUtils::DriverParallelInTime::m_fineNpts, Nektar::SolverUtils::DriverParallelInTime::m_tmpcoarse, Nektar::SolverUtils::DriverParallelInTime::m_tmpfine, Nektar::LibUtilities::Timer::Start(), and Nektar::LibUtilities::Timer::Stop().
|
overrideprotectedvirtual |
Reimplemented from Nektar::SolverUtils::DriverParallelInTime.
Definition at line 382 of file DriverParareal.cpp.
|
overrideprotectedvirtual |
Reimplemented from Nektar::SolverUtils::DriverParallelInTime.
Definition at line 374 of file DriverParareal.cpp.
References v_EstimateCoarseSolverTime().
|
overrideprotectedvirtual |
Reimplemented from Nektar::SolverUtils::DriverParallelInTime.
Definition at line 253 of file DriverParareal.cpp.
References Nektar::LibUtilities::Timer::Elapsed(), Nektar::SolverUtils::DriverParallelInTime::Interpolator(), Nektar::SolverUtils::DriverParallelInTime::m_coarseNpts, Nektar::SolverUtils::DriverParallelInTime::m_fineNpts, Nektar::SolverUtils::DriverParallelInTime::m_tmpcoarse, Nektar::SolverUtils::DriverParallelInTime::m_tmpfine, Nektar::LibUtilities::Timer::Start(), and Nektar::LibUtilities::Timer::Stop().
|
overrideprotectedvirtual |
Virtual function for solve implementation.
Reimplemented from Nektar::SolverUtils::DriverParallelInTime.
Definition at line 72 of file DriverParareal.cpp.
References Nektar::SolverUtils::DriverParallelInTime::AllocateMemory(), ApplyWindowing(), AssertParameters(), CopyConvergedCheckPoints(), Nektar::SolverUtils::DriverParallelInTime::CopyFromFinePhysField(), Nektar::SolverUtils::DriverParallelInTime::CopySolutionVector(), Nektar::SolverUtils::DriverParallelInTime::CopyToFinePhysField(), Nektar::LibUtilities::Timer::Elapsed(), Nektar::SolverUtils::DriverParallelInTime::EvaluateExactSolution(), CellMLToNektar.pycml::format, Nektar::SolverUtils::DriverParallelInTime::GetParametersFromSession(), Nektar::SolverUtils::DriverParallelInTime::InitialiseEqSystem(), Nektar::SolverUtils::DriverParallelInTime::InitialiseInterpolationField(), Nektar::SolverUtils::DriverParallelInTime::m_chunkRank, Nektar::SolverUtils::DriverParallelInTime::m_chunkTime, Nektar::SolverUtils::DriverParallelInTime::m_coarseSteps, Nektar::SolverUtils::DriverParallelInTime::m_exactsoln, Nektar::SolverUtils::DriverParallelInTime::m_exactSolution, Nektar::SolverUtils::DriverParallelInTime::m_fineNpts, Nektar::SolverUtils::DriverParallelInTime::m_fineSteps, Nektar::SolverUtils::DriverParallelInTime::m_fineTimeStep, Nektar::SolverUtils::DriverParallelInTime::m_iterMaxPIT, Nektar::SolverUtils::DriverParallelInTime::m_numChunks, Nektar::SolverUtils::DriverParallelInTime::m_numWindowsPIT, Nektar::SolverUtils::DriverParallelInTime::m_nVar, Nektar::SolverUtils::Driver::m_session, Nektar::SolverUtils::DriverParallelInTime::m_time, Nektar::SolverUtils::DriverParallelInTime::m_tolerPIT, Nektar::SolverUtils::DriverParallelInTime::m_totalTime, PararealCorrection(), Nektar::SolverUtils::DriverParallelInTime::PrintCoarseSolverInfo(), Nektar::SolverUtils::DriverParallelInTime::PrintFineSolverInfo(), Nektar::SolverUtils::DriverParallelInTime::PrintHeaderTitle1(), Nektar::SolverUtils::DriverParallelInTime::PrintHeaderTitle2(), PrintSolutionFile(), Nektar::SolverUtils::DriverParallelInTime::RecvInitialConditionFromPreviousProc(), RunCoarseSolve(), RunFineSolve(), Nektar::SolverUtils::DriverParallelInTime::SendSolutionToNextProc(), Nektar::SolverUtils::DriverParallelInTime::SolutionConvergenceMonitoring(), Nektar::SolverUtils::DriverParallelInTime::SolutionConvergenceSummary(), Nektar::SolverUtils::DriverParallelInTime::SpeedUpAnalysis(), Nektar::LibUtilities::Timer::Start(), Nektar::LibUtilities::Timer::Stop(), Nektar::SolverUtils::DriverParallelInTime::UpdateSolution(), Nektar::SolverUtils::DriverParallelInTime::vL2ErrorMax(), and Nektar::UnitTests::w().
|
overrideprotectedvirtual |
Virtual function for initialisation implementation.
Reimplemented from Nektar::SolverUtils::DriverParallelInTime.
Definition at line 64 of file DriverParareal.cpp.
References Nektar::SolverUtils::DriverParallelInTime::v_InitObject().
|
friend |
Definition at line 1 of file DriverParareal.h.
|
static |
Name of the class.
Definition at line 63 of file DriverParareal.h.
|
staticprotected |
Definition at line 101 of file DriverParareal.h.