MaMiCo 1.2
Loading...
Searching...
No Matches
MDSolverInterface.h
1// Copyright (C) 2015 Technische Universitaet Muenchen
2// This file is part of the Mamico project. For conditions of distribution
3// and use, please see the copyright notice in Mamico's main folder, or at
4// www5.in.tum.de/mamico
5#ifndef _MOLECULARDYNAMICS_COUPLING_MDSOLVERINTERFACE_H_
6#define _MOLECULARDYNAMICS_COUPLING_MDSOLVERINTERFACE_H_
7
8namespace coupling {
9namespace interface {
10template <class LinkedCell, unsigned int dim> class MDSolverInterface;
11}
12} // namespace coupling
13
14#include "coupling/indexing/IndexingService.h"
15#include "coupling/interface/Molecule.h"
16#include "coupling/interface/MoleculeIterator.h"
17#include "tarch/la/Vector.h"
18#include <list>
19
25template <class LinkedCell, unsigned int dim> class coupling::interface::MDSolverInterface {
26public:
27 using CellIndex_T = I11;
28
30 virtual ~MDSolverInterface() {}
31
47 virtual LinkedCell& getLinkedCell(const CellIndex_T& couplingCellIndex, const tarch::la::Vector<dim, unsigned int>& linkedCellInCouplingCell,
48 const tarch::la::Vector<dim, unsigned int>& linkedCellsPerCouplingCell) = 0;
49
53
57
60 virtual double getMoleculeMass() const = 0;
61
64 virtual double getKB() const = 0;
65
69 virtual double getMoleculeSigma() const = 0;
70
73 virtual double getMoleculeEpsilon() const = 0;
74
83 virtual void getInitialVelocity(const tarch::la::Vector<dim, double>& meanVelocity, const double& kB, const double& temperature,
84 tarch::la::Vector<dim, double>& initialVelocity) const = 0;
85
90 virtual void deleteMoleculeFromMDSimulation(const coupling::interface::Molecule<dim>& molecule, LinkedCell& cell) = 0;
91
96
106 virtual void setupPotentialEnergyLandscape(const tarch::la::Vector<dim, unsigned int>& indexOfFirstCouplingCell,
107 const tarch::la::Vector<dim, unsigned int>& rangeCouplingCells,
108 const tarch::la::Vector<dim, unsigned int>& linkedCellsPerCouplingCell) = 0;
109
122
133
145
154
158 virtual double getDt() = 0;
159
165};
166
167#endif // _MOLECULARDYNAMICS_COUPLING_MDSOLVERINTERFACE_H_
interface to the MD simulation
Definition MDSolverInterface.h:25
virtual tarch::la::Vector< dim, double > getGlobalMDDomainSize() const =0
virtual ~MDSolverInterface()
Definition MDSolverInterface.h:30
virtual coupling::interface::MoleculeIterator< LinkedCell, dim > * getMoleculeIterator(LinkedCell &cell)=0
virtual LinkedCell & getLinkedCell(const CellIndex_T &couplingCellIndex, const tarch::la::Vector< dim, unsigned int > &linkedCellInCouplingCell, const tarch::la::Vector< dim, unsigned int > &linkedCellsPerCouplingCell)=0
virtual void synchronizeMoleculesAfterMomentumModification()=0
virtual double getMoleculeMass() const =0
virtual void getInitialVelocity(const tarch::la::Vector< dim, double > &meanVelocity, const double &kB, const double &temperature, tarch::la::Vector< dim, double > &initialVelocity) const =0
virtual void setupPotentialEnergyLandscape(const tarch::la::Vector< dim, unsigned int > &indexOfFirstCouplingCell, const tarch::la::Vector< dim, unsigned int > &rangeCouplingCells, const tarch::la::Vector< dim, unsigned int > &linkedCellsPerCouplingCell)=0
virtual tarch::la::Vector< dim, unsigned int > getLinkedCellIndexForMoleculePosition(const tarch::la::Vector< dim, double > &position)=0
virtual void deleteMoleculeFromMDSimulation(const coupling::interface::Molecule< dim > &molecule, LinkedCell &cell)=0
virtual tarch::la::Vector< dim, double > getGlobalMDDomainOffset() const =0
virtual void calculateForceAndEnergy(coupling::interface::Molecule< dim > &molecule)=0
virtual void synchronizeMoleculesAfterMassModification()=0
virtual double getMoleculeSigma() const =0
virtual void addMoleculeToMDSimulation(const coupling::interface::Molecule< dim > &molecule)=0
virtual double getKB() const =0
virtual double getMoleculeEpsilon() const =0
some iterator scheme for traversing the molecules within a linked cell.
Definition MoleculeIterator.h:24
interface to access a single molecule in the MD simulation.
Definition Molecule.h:23
Definition Vector.h:24
everything necessary for coupling operations, is defined in here
Definition AdditiveMomentumInsertion.h:15