// ============================================================================ // == == // == AMDiS - Adaptive multidimensional simulations == // == == // ============================================================================ // == == // == crystal growth group == // == == // == Stiftung caesar == // == Ludwig-Erhard-Allee 2 == // == 53175 Bonn == // == germany == // == == // ============================================================================ // == == // == http://www.caesar.de/cg/AMDiS == // == == // ============================================================================ /** \file ProblemTimeInterface.h */ #ifndef AMDIS_PROBLEMTIMEINTERFACE_H #define AMDIS_PROBLEMTIMEINTERFACE_H #include "Flag.h" namespace AMDiS { class AdaptInfo; // ============================================================================ // ===== class ProblemTimeInterface =========================================== // ============================================================================ /** * \ingroup Problem * * \brief * Interface for time dependent problems. Concrete problems must override * all pure virtual methods. */ class ProblemTimeInterface { public: virtual ~ProblemTimeInterface() {}; /** \brief * Executes all needed operations when the simulation time changes. */ virtual void setTime(AdaptInfo *adaptInfo) = 0; /** \brief * Called at the beginning of each timestep */ virtual void initTimestep(AdaptInfo *adaptInfo) = 0; /** \brief * Called at the end of each timestep. */ virtual void closeTimestep(AdaptInfo *adaptInfo) = 0; /** \brief * Solves the initial problem. */ virtual void solveInitialProblem(AdaptInfo *adaptInfo) = 0; /** \brief * Solves the initial problem. */ virtual void transferInitialSolution(AdaptInfo *adaptInfo) = 0; /** \brief * Function that serializes the problem plus information about the iteration. */ virtual void serialize(std::ostream &out) = 0; /** \brief * Function that deserializes the problem plus information about the iteration. */ virtual void deserialize(std::istream &in) = 0; }; } #endif