5#ifndef _MDSIMULATIONFACTORY_H_
6#define _MDSIMULATIONFACTORY_H_
13#define MDSIMULATIONFACTORY_DIMENSION 3
15#include "coupling/CouplingMDDefinitions.h"
16#include "coupling/configurations/MaMiCoConfiguration.h"
17#include "coupling/interface/MDSimulation.h"
18#include "coupling/interface/MamicoInterfaceProvider.h"
19#include "simplemd/configurations/MolecularDynamicsConfiguration.h"
20#include "tarch/la/ScalarOperations.h"
21#include "tarch/utils/MultiMDService.h"
24#include "coupling/interface/impl/SimpleMD/SimpleMDSolverInterface.h"
25#include "simplemd/LinkedCell.h"
26#define MY_LINKEDCELL simplemd::LinkedCell
27#include "coupling/interface/impl/SimpleMD/SimpleMDSimulation.h"
28#elif defined(LAMMPS_MD) || defined(LAMMPS_DPD)
30#include "coupling/interface/impl/LAMMPS/LammpsMDSimulation.h"
32#include "coupling/interface/impl/LAMMPS/LammpsDPDSimulation.h"
34#define MY_LINKEDCELL LAMMPS_NS::MamicoCell
35#elif defined(LS1_MARDYN)
36#include "coupling/interface/impl/ls1/LS1MDSimulation.h"
37#include "coupling/interface/impl/ls1/LS1MDSolverInterface.h"
38#include "coupling/interface/impl/ls1/LS1RegionWrapper.h"
39#include "coupling/interface/impl/ls1/LS1StaticCommData.h"
40#define MY_LINKEDCELL ls1::LS1RegionWrapper
74#
if (COUPLING_MD_PARALLEL == COUPLING_MD_YES)
80 return new coupling::interface::SimpleMDSimulation(configuration);
81#elif defined(LAMMPS_MD)
82 return new coupling::interface::LammpsMDSimulation(configuration, mamicoConfiguration
83#
if (COUPLING_MD_PARALLEL == COUPLING_MD_YES)
88#elif defined(LAMMPS_DPD)
89 return new coupling::interface::LammpsDPDSimulation(configuration, mamicoConfiguration
90#
if (COUPLING_MD_PARALLEL == COUPLING_MD_YES)
95#elif defined(LS1_MARDYN)
96 return new coupling::interface::LS1MDSimulation(configuration
97#
if (COUPLING_MD_PARALLEL == COUPLING_MD_YES)
103 std::cout <<
"ERROR MDSimulationFactory::getMDSimulation(): Unknown MD "
124#if defined(SIMPLE_MD)
128 coupling::interface::SimpleMDSimulation* simpleMDSimulation = (coupling::interface::SimpleMDSimulation*)mdSimulation;
129 if (simpleMDSimulation == NULL) {
130 std::cout <<
"ERROR MDSimulationFactory::getMDSolverInterface(): Could "
131 "not cast to SimpleMDSimulation!"
135 mdSolverInterface =
new coupling::interface::SimpleMDSolverInterface(
136 simpleMDSimulation->getBoundaryTreatment(),
137 simpleMDSimulation->getParallelTopologyService(), simpleMDSimulation->getMoleculeService(), simpleMDSimulation->getLinkedCellService(),
138 simpleMDSimulation->getMolecularPropertiesService(), (simpleMDSimulation->getParallelTopologyService()).getLocalBoundaryInformation(),
139 configuration.getSimulationConfiguration().getDt());
141#elif defined(LAMMPS_MD)
146#elif defined(LAMMPS_DPD)
148#elif defined(LS1_MARDYN)
149 mdSolverInterface =
new coupling::interface::LS1MDSolverInterface(mamicoConfiguration.
getCouplingCellConfiguration().getCouplingCellSize(),
154 if (mdSolverInterface == NULL) {
155 std::cout <<
"ERROR MDSimulationFactory::getMDSolverInterface(): "
156 "mdSolverInterface==NULL!"
160 return mdSolverInterface;
166#if defined(SIMPLE_MD)
169 if (interface != NULL) {
173#elif defined(LAMMPS_MD)
175#elif defined(LAMMPS_DPD)
177#elif defined(LS1_MARDYN)
180 if (interface != NULL) {
parses all sub-tags for MaMiCo configuration.
Definition MaMiCoConfiguration.h:31
const coupling::configurations::CouplingCellConfiguration< dim > & getCouplingCellConfiguration() const
Definition MaMiCoConfiguration.h:68
generic interface class for different microscopic (MD) solvers.
Definition MDSimulation.h:11
interface to the MD simulation
Definition MDSolverInterface.h:25
a singleton which returns and stores the interface implementations.
Definition MamicoInterfaceProvider.h:24
void setMDSolverInterface(coupling::interface::MDSolverInterface< LinkedCell, dim > *mdSolverInterface)
Definition MamicoInterfaceProvider.h:48
coupling::interface::MDSolverInterface< LinkedCell, dim > * getMDSolverInterface()
Definition MamicoInterfaceProvider.h:53
static MamicoInterfaceProvider & getInstance()
Definition MamicoInterfaceProvider.h:28
~SimulationAndInterfaceFactory()
Definition MDSimulationFactory.h:195
static SimulationAndInterfaceFactory & getInstance()
Definition MDSimulationFactory.h:60
SimulationAndInterfaceFactory()
Definition MDSimulationFactory.h:191
void shutdownMDSolverInterface()
Definition MDSimulationFactory.h:165
coupling::interface::MDSolverInterface< MY_LINKEDCELL, MDSIMULATIONFACTORY_DIMENSION > * getMDSolverInterface(const simplemd::configurations::MolecularDynamicsConfiguration &configuration, const coupling::configurations::MaMiCoConfiguration< MDSIMULATIONFACTORY_DIMENSION > &mamicoConfiguration, coupling::interface::MDSimulation *mdSimulation)
Definition MDSimulationFactory.h:120
coupling::interface::MDSimulation * getMDSimulation(const simplemd::configurations::MolecularDynamicsConfiguration &configuration, const coupling::configurations::MaMiCoConfiguration< MDSIMULATIONFACTORY_DIMENSION > &mamicoConfiguration, MPI_Comm localComm)
Definition MDSimulationFactory.h:72
everything necessary for coupling operations, is defined in here
Definition AdditiveMomentumInsertion.h:15