Simpatico  v1.10
ddMd/configIos/ConfigIoFactory.cpp
1 /*
2 * Simpatico - Simulation Package for Polymeric and Molecular Liquids
3 *
4 * Copyright 2010 - 2017, The Regents of the University of Minnesota
5 * Distributed under the terms of the GNU General Public License.
6 */
7 
8 #include "ConfigIoFactory.h"
9 
10 // Subclasses of ConfigIo
11 #include "DdMdConfigIo.h"
12 #include "DdMdOrderedConfigIo.h"
13 #include "LammpsConfigIo.h"
14 #include "SerializeConfigIo.h"
15 
16 namespace DdMd
17 {
18 
19  using namespace Util;
20 
21  /*
22  * Constructor
23  */
25  : simulationPtr_(&simulation)
26  {}
27 
28  /*
29  * Return a pointer to a instance of ConfigIo subclass className.
30  */
31  ConfigIo* ConfigIoFactory::factory(const std::string &className) const
32  {
33  ConfigIo *ptr = 0;
34 
35  // Try subfactories first.
36  ptr = trySubfactories(className);
37  if (ptr) return ptr;
38 
39  if (className == "DdMdConfigIo") {
40  bool hasMolecules;
41  if (Atom::hasAtomContext()) {
42  hasMolecules = true;
43  } else {
44  hasMolecules = false;
45  }
46  ptr = new DdMdConfigIo(*simulationPtr_, hasMolecules);
47  } else
48  if (className == "DdMdConfigIo_NoMolecule") {
49  ptr = new DdMdConfigIo(*simulationPtr_, false);
50  } else
51  if (className == "DdMdConfigIo_Molecule") {
52  ptr = new DdMdConfigIo(*simulationPtr_, true);
53  } else
54  if (className == "DdMdOrderedConfigIo") {
55  bool hasMolecules;
56  if (Atom::hasAtomContext()) {
57  hasMolecules = true;
58  } else {
59  hasMolecules = false;
60  }
61  ptr = new DdMdOrderedConfigIo(*simulationPtr_, hasMolecules);
62  } else
63  if (className == "DdMdOrderedConfigIo_NoMolecule") {
64  ptr = new DdMdOrderedConfigIo(*simulationPtr_, false);
65  } else
66  if (className == "LammpsConfigIo") {
67  ptr = new LammpsConfigIo(*simulationPtr_);
68  } else
69  if (className == "SerializeConfigIo") {
70  ptr = new SerializeConfigIo(*simulationPtr_);
71  }
72 
73  return ptr;
74  }
75 
76 }
Lammps data file format for configuration files.
Parallel domain decomposition (DD) MD simulation.
Main object for a domain-decomposition MD simulation.
Native / default format for configuration files.
Native / default format for configuration files.
ConfigIoFactory(Simulation &simulation)
Constructor.
ConfigIo * trySubfactories(const std::string &className) const
Search through subfactories for match.
Utility classes for scientific computation.
Definition: accumulators.mod:1
static bool hasAtomContext()
Is AtomContext data enabled?
ConfigIo * factory(const std::string &subclassName) const
Create an instance of a specified subclass of ConfigIo.
Abstract reader/writer for configuration files.
Save / load configuration from / to an archive.