Gromacs  2026.0-dev-20251119-5f0a571d
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Member Functions
gmx::ICheckpointHelperClient Class Referenceabstract

#include <gromacs/modularsimulator/modularsimulatorinterfaces.h>

+ Inheritance diagram for gmx::ICheckpointHelperClient:

Description

Client that needs to store data during checkpointing.

Clients receive a CheckpointData object for reading and writing. Note that ReadCheckpointData is a typedef for CheckpointData<CheckpointDataOperation::Read>, and WriteCheckpointData is a typedef for CheckpointData<CheckpointDataOperation::Write>. This allows clients to write a single templated function, e.g. template<CheckpointDataOperation operation> void doCheckpointData(CheckpointData<operation>* checkpointData, const MpiComm& mpiComm) { checkpointData->scalar("important value", &value_); } for both checkpoint reading and writing. This function can then be dispatched from the interface functions, void writeCheckpoint(WriteCheckpointData checkpointData, const MpiComm& mpiComm) { doCheckpointData<CheckpointDataOperation::Write>(&checkpointData, mpiComm); } void readCheckpoint(ReadCheckpointData checkpointData, const MpiComm& mpiComm, gmx_domdec_t* dd) { doCheckpointData<CheckpointDataOperation::Read>(&checkpointData, mpiComm, dd); } This reduces code duplication and ensures that reading and writing operations will not get out of sync.

Public Member Functions

virtual ~ICheckpointHelperClient ()=default
 Standard virtual destructor.
 
virtual void saveCheckpointState (std::optional< WriteCheckpointData > checkpointData, const MpiComm &mpiComm, gmx_domdec_t *dd)=0
 Write checkpoint (CheckpointData object only passed on main rank)
 
virtual void restoreCheckpointState (std::optional< ReadCheckpointData > checkpointData, const MpiComm &mpiComm, gmx_domdec_t *dd)=0
 Read checkpoint (CheckpointData object only passed on main rank)
 
virtual const std::string & clientID ()=0
 Get unique client id.
 

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