Line data Source code
1 : #pragma once 2 : 3 : #include "coupling/services/CouplingCellService.h" 4 : 5 : namespace coupling { 6 : namespace interface { 7 : /** 8 : * @brief generic interface class for different microscopic (MD) solvers. 9 : * @author Philipp Neumann 10 : */ 11 12 : class MDSimulation { 12 : public: 13 : /** Destructor */ 14 12 : virtual ~MDSimulation() {} 15 : 16 : /** switches coupling off*/ 17 : virtual void switchOffCoupling() = 0; 18 : 19 : /** switches coupling on*/ 20 : virtual void switchOnCoupling() = 0; 21 : 22 : /** simulates numberTimesteps time steps and starts at time step no. 23 : *firstTimestep 24 : * @param numberTimesteps 25 : * @param firstTimestep 26 : */ 27 : virtual void simulateTimesteps(const unsigned int& numberTimesteps, const unsigned int& firstTimestep) = 0; 28 : 29 : // simulates a single time step 30 : // virtual void simulateTimestep(const unsigned int &thisTimestep ){const 31 : // unsigned int steps=1; simulateTimesteps(thisTimestep,steps);} TODO BUG 32 : 33 : /** sortMoleculesIntoCells*/ 34 : virtual void sortMoleculesIntoCells() = 0; 35 : 36 : /** setCouplingCellService 37 : * @param couplingCellService 38 : */ 39 : virtual void setCouplingCellService(coupling::services::CouplingCellService<MDSIMULATIONFACTORY_DIMENSION>* couplingCellService) = 0; 40 : 41 : /** initialises the _molecularDynamicsSimulation solver 42 : * @sa simplemd::MolecularDynamicsSimulation::initServices() 43 : * @todo Philipp ?? 44 : */ 45 : virtual void init() = 0; 46 : 47 : /** initialises the _molecularDynamicsSimulation solver 48 : * @param multiMDService 49 : * @param localMDSimulation 50 : * @sa simplemd::MolecularDynamicsSimulation::initServices(const 51 : *tarch::utils::MultiMDService<MD_DIM>& multiMDService,unsigned int 52 : *localMDSimulation) 53 : * @todo Philipp ?? 54 : */ 55 : virtual void init(const tarch::utils::MultiMDService<MDSIMULATIONFACTORY_DIMENSION>& multiMDService, unsigned int localMDSimulation) = 0; 56 : 57 : /** shuts down the MD simulation*/ 58 : virtual void shutdown() = 0; 59 : 60 : /** Saves the simulation result as check point in the file filestem 61 : * @param filestem 62 : * @param t 63 : */ 64 : virtual void writeCheckpoint(const std::string& filestem, const unsigned int& t) = 0; 65 : }; 66 : } // namespace interface 67 : } // namespace coupling