Chaste Commit::ca8ccdedf819b6e02855bc0e8e6f50bdecbc5208
CardiacSimulationArchiver< PROBLEM_CLASS > Class Template Reference

#include <CardiacSimulationArchiver.hpp>

+ Collaboration diagram for CardiacSimulationArchiver< PROBLEM_CLASS >:

Static Public Member Functions

static void Save (PROBLEM_CLASS &rSimulationToArchive, const std::string &rDirectory, bool clearDirectory=true)
 
static PROBLEM_CLASS * Load (const std::string &rDirectory)
 
static PROBLEM_CLASS * Load (const FileFinder &rDirectory)
 
static PROBLEM_CLASS * Migrate (const FileFinder &rDirectory)
 

Detailed Description

template<class PROBLEM_CLASS>
class CardiacSimulationArchiver< PROBLEM_CLASS >

CardiacSimulationArchiver is a helper class for checkpointing of cardiac simulations.

The class is templated over the class defining the simulation (e.g. MonodomainProblem). It would be more natural to template over dimensions as for other classes, and just deal with pointers to AbstractCardiacProblem. However, this breaks archive backwards compatibility...

Definition at line 52 of file CardiacSimulationArchiver.hpp.

Member Function Documentation

◆ Load() [1/2]

template<class PROBLEM_CLASS >
PROBLEM_CLASS * CardiacSimulationArchiver< PROBLEM_CLASS >::Load ( const FileFinder rDirectory)
static

Unarchives a simulation from the directory specified.

Does a migrate if necessary (this is actually just a wrapper around the Migrate method now).

Note
Must be called collectively, i.e. by all processes.
Parameters
rDirectorydirectory where the multiple files defining the checkpoint are located
Returns
a pointer to the unarchived cardiac problem class

Definition at line 110 of file CardiacSimulationArchiver.cpp.

References CardiacSimulationArchiver< PROBLEM_CLASS >::Migrate().

◆ Load() [2/2]

template<class PROBLEM_CLASS >
PROBLEM_CLASS * CardiacSimulationArchiver< PROBLEM_CLASS >::Load ( const std::string &  rDirectory)
static

Unarchives a simulation from the directory specified.

Does a migrate if necessary (this is actually just a wrapper around the Migrate method now).

Note
Must be called collectively, i.e. by all processes.
Parameters
rDirectorydirectory where the multiple files defining the checkpoint are located (relative to CHASTE_TEST_OUTPUT)
Returns
a pointer to the unarchived cardiac problem class

Definition at line 103 of file CardiacSimulationArchiver.cpp.

References RelativeTo::ChasteTestOutput, and CardiacSimulationArchiver< PROBLEM_CLASS >::Migrate().

◆ Migrate()

template<class PROBLEM_CLASS >
PROBLEM_CLASS * CardiacSimulationArchiver< PROBLEM_CLASS >::Migrate ( const FileFinder rDirectory)
static

Load a simulation, saved by any number of processes, into the correct number of processes for those currently launched.

Note
Must be called collectively, i.e. by all processes.

Uses the DistributedVectorFactory saved in the process 0 archive to work out how many secondary archive files to read, and loads the cells and boundary conditions from these too.

Uses a dumb partition to work out how to distribute the mesh and cells over the processes. If we are loading on the same number of processes as the simulation was saved on, it uses exactly the same distribution as before.

Parameters
rDirectorydirectory where the multiple files defining the checkpoint are located
Returns
a pointer to the migrated cardiac problem class

Definition at line 117 of file CardiacSimulationArchiver.cpp.

References EXCEPTION, FileFinder::Exists(), FileFinder::GetAbsolutePath(), ArchiveOpener< Archive, Stream >::GetCommonArchive(), PetscTools::GetMyRank(), PetscTools::GetNumProcs(), DistributedVectorFactory::GetNumProcs(), DistributedVectorFactory::GetOriginalFactory(), ArchiveLocationInfo::GetProcessUniqueFilePath(), FileFinder::IsDir(), and DistributedVectorFactory::SetCheckNumberOfProcessesOnLoad().

Referenced by CardiacSimulationArchiver< PROBLEM_CLASS >::Load(), and CardiacSimulationArchiver< PROBLEM_CLASS >::Load().

◆ Save()

template<class PROBLEM_CLASS >
void CardiacSimulationArchiver< PROBLEM_CLASS >::Save ( PROBLEM_CLASS &  rSimulationToArchive,
const std::string &  rDirectory,
bool  clearDirectory = true 
)
static

Archives a simulation in the directory specified.

Note
Must be called collectively, i.e. by all processes.
Parameters
rSimulationToArchiveobject defining the simulation to archive
rDirectorydirectory where the multiple files defining the checkpoint will be stored (relative to CHASTE_TEST_OUTPUT)
clearDirectorywhether the directory needs to be cleared or not.

Definition at line 55 of file CardiacSimulationArchiver.cpp.

References PetscTools::AmMaster(), PetscTools::Barrier(), RelativeTo::ChasteTestOutput, EXCEPTION, ArchiveOpener< Archive, Stream >::GetCommonArchive(), PetscTools::GetNumProcs(), OutputFileHandler::GetOutputDirectoryFullPath(), and PetscTools::ReplicateBool().

Referenced by CardiacSimulation::CreateAndRun().


The documentation for this class was generated from the following files: