MaMiCo
1.2
Toggle main menu visibility
Loading...
Searching...
No Matches
coupling
interface
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
8
namespace
coupling
{
9
namespace
interface {
10
template
<
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
25
template
<
class
LinkedCell,
unsigned
int
dim>
class
coupling::interface::MDSolverInterface
{
26
public
:
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
52
virtual
tarch::la::Vector<dim, double>
getGlobalMDDomainSize
()
const
= 0;
53
56
virtual
tarch::la::Vector<dim, double>
getGlobalMDDomainOffset
()
const
= 0;
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
95
virtual
void
addMoleculeToMDSimulation
(
const
coupling::interface::Molecule<dim>
& molecule) = 0;
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
121
virtual
tarch::la::Vector<dim, unsigned int>
getLinkedCellIndexForMoleculePosition
(
const
tarch::la::Vector<dim, double>
& position) = 0;
122
132
virtual
void
calculateForceAndEnergy
(
coupling::interface::Molecule<dim>
& molecule) = 0;
133
144
virtual
void
synchronizeMoleculesAfterMassModification
() = 0;
145
153
virtual
void
synchronizeMoleculesAfterMomentumModification
() = 0;
154
158
virtual
double
getDt
() = 0;
159
164
virtual
coupling::interface::MoleculeIterator<LinkedCell, dim>
*
getMoleculeIterator
(LinkedCell& cell) = 0;
165
};
166
167
#endif
// _MOLECULARDYNAMICS_COUPLING_MDSOLVERINTERFACE_H_
coupling::interface::MDSolverInterface
interface to the MD simulation
Definition
MDSolverInterface.h:25
coupling::interface::MDSolverInterface::getGlobalMDDomainSize
virtual tarch::la::Vector< dim, double > getGlobalMDDomainSize() const =0
coupling::interface::MDSolverInterface::~MDSolverInterface
virtual ~MDSolverInterface()
Definition
MDSolverInterface.h:30
coupling::interface::MDSolverInterface::getMoleculeIterator
virtual coupling::interface::MoleculeIterator< LinkedCell, dim > * getMoleculeIterator(LinkedCell &cell)=0
coupling::interface::MDSolverInterface::getLinkedCell
virtual LinkedCell & getLinkedCell(const CellIndex_T &couplingCellIndex, const tarch::la::Vector< dim, unsigned int > &linkedCellInCouplingCell, const tarch::la::Vector< dim, unsigned int > &linkedCellsPerCouplingCell)=0
coupling::interface::MDSolverInterface::synchronizeMoleculesAfterMomentumModification
virtual void synchronizeMoleculesAfterMomentumModification()=0
coupling::interface::MDSolverInterface::getMoleculeMass
virtual double getMoleculeMass() const =0
coupling::interface::MDSolverInterface::getInitialVelocity
virtual void getInitialVelocity(const tarch::la::Vector< dim, double > &meanVelocity, const double &kB, const double &temperature, tarch::la::Vector< dim, double > &initialVelocity) const =0
coupling::interface::MDSolverInterface::setupPotentialEnergyLandscape
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
coupling::interface::MDSolverInterface::getLinkedCellIndexForMoleculePosition
virtual tarch::la::Vector< dim, unsigned int > getLinkedCellIndexForMoleculePosition(const tarch::la::Vector< dim, double > &position)=0
coupling::interface::MDSolverInterface::deleteMoleculeFromMDSimulation
virtual void deleteMoleculeFromMDSimulation(const coupling::interface::Molecule< dim > &molecule, LinkedCell &cell)=0
coupling::interface::MDSolverInterface::getGlobalMDDomainOffset
virtual tarch::la::Vector< dim, double > getGlobalMDDomainOffset() const =0
coupling::interface::MDSolverInterface::calculateForceAndEnergy
virtual void calculateForceAndEnergy(coupling::interface::Molecule< dim > &molecule)=0
coupling::interface::MDSolverInterface::getDt
virtual double getDt()=0
coupling::interface::MDSolverInterface::synchronizeMoleculesAfterMassModification
virtual void synchronizeMoleculesAfterMassModification()=0
coupling::interface::MDSolverInterface::getMoleculeSigma
virtual double getMoleculeSigma() const =0
coupling::interface::MDSolverInterface::addMoleculeToMDSimulation
virtual void addMoleculeToMDSimulation(const coupling::interface::Molecule< dim > &molecule)=0
coupling::interface::MDSolverInterface::getKB
virtual double getKB() const =0
coupling::interface::MDSolverInterface::getMoleculeEpsilon
virtual double getMoleculeEpsilon() const =0
coupling::interface::MoleculeIterator
some iterator scheme for traversing the molecules within a linked cell.
Definition
MoleculeIterator.h:24
coupling::interface::Molecule
interface to access a single molecule in the MD simulation.
Definition
Molecule.h:23
tarch::la::Vector
Definition
Vector.h:25
coupling
everything necessary for coupling operations, is defined in here
Definition
AdditiveMomentumInsertion.h:15
Generated by
1.17.0