Line data Source code
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_CONFIGURATIONS_MOLECULARDYNAMICSCONFIGURATION_H_
6 : #define _MOLECULARDYNAMICS_CONFIGURATIONS_MOLECULARDYNAMICSCONFIGURATION_H_
7 :
8 : #include "simplemd/configurations/Adios2Configuration.h"
9 : #include "simplemd/configurations/CheckpointConfiguration.h"
10 : #include "simplemd/configurations/DomainConfiguration.h"
11 : #include "simplemd/configurations/DomainDecompConfiguration.h"
12 : #include "simplemd/configurations/ExternalForceConfiguration.h"
13 : #include "simplemd/configurations/MPIConfiguration.h"
14 : #include "simplemd/configurations/MoleculeConfiguration.h"
15 : #include "simplemd/configurations/ProfilePlotterConfiguration.h"
16 : #include "simplemd/configurations/RDFConfiguration.h"
17 : #include "simplemd/configurations/SimulationConfiguration.h"
18 : #include "simplemd/configurations/VTKConfiguration.h"
19 : #include "tarch/configuration/Configuration.h"
20 : #include <iostream>
21 : #include <vector>
22 :
23 : namespace simplemd {
24 : namespace configurations {
25 : class MolecularDynamicsConfiguration;
26 : }
27 : } // namespace simplemd
28 :
29 : /** configuration for MD simulations. Bundles all other configuration tags in
30 : * one main tag.
31 : * @author Philipp Neumann
32 : */
33 : class simplemd::configurations::MolecularDynamicsConfiguration : public tarch::configuration::Configuration {
34 :
35 : public:
36 408 : MolecularDynamicsConfiguration() {}
37 408 : virtual ~MolecularDynamicsConfiguration() {}
38 :
39 : void parseSubtag(tinyxml2::XMLElement* node);
40 : /**
41 : * Return name of xml tag that is associated to the configuration.
42 : */
43 : std::string getTag() const;
44 :
45 : /**
46 : * Is config valid?
47 : *
48 : * This operation usually fails, if
49 : *
50 : * - parseSubtag() hasn't been called, i.e. configuration has not been
51 : * used, or
52 : * - parseSubtag() failed due to a wrong file.
53 : *
54 : * If a tag ain't optional and parseSubtag() was not called (first case)
55 : */
56 : bool isValid() const;
57 :
58 : const simplemd::configurations::DomainConfiguration& getDomainConfiguration() const { return _domainConfiguration; }
59 :
60 : simplemd::configurations::DomainConfiguration& getDomainConfigurationNonConst() { return _domainConfiguration; }
61 :
62 : const simplemd::configurations::MoleculeConfiguration& getMoleculeConfiguration() const { return _moleculeConfiguration; }
63 :
64 : const simplemd::configurations::MPIConfiguration& getMPIConfiguration() const { return _mpiConfiguration; }
65 :
66 : const simplemd::configurations::VTKConfiguration& getVTKConfiguration() const { return _vtkConfiguration; }
67 :
68 : const simplemd::configurations::Adios2Configuration& getAdios2Configuration() const { return _Adios2Configuration; }
69 :
70 : const simplemd::configurations::SimulationConfiguration& getSimulationConfiguration() const { return _simulationConfiguration; }
71 :
72 : const simplemd::configurations::RDFConfiguration& getRDFConfiguration() const { return _rdfConfiguration; }
73 :
74 : const simplemd::configurations::CheckpointConfiguration& getCheckpointConfiguration() const { return _checkpointConfiguration; }
75 :
76 : const simplemd::configurations::DomainDecompConfiguration& getDomainDecompConfiguration() const { return _domainDecompConfiguration; }
77 :
78 : const std::vector<simplemd::configurations::ProfilePlotterConfiguration>& getProfilePlotterConfigurations() const { return _profilePlotterConfigurations; }
79 :
80 : const std::vector<simplemd::configurations::ExternalForceConfiguration>& getExternalForceConfigurations() const { return _externalForceConfigurations; }
81 :
82 : private:
83 : simplemd::configurations::DomainConfiguration _domainConfiguration;
84 : simplemd::configurations::MoleculeConfiguration _moleculeConfiguration;
85 : simplemd::configurations::MPIConfiguration _mpiConfiguration;
86 : simplemd::configurations::VTKConfiguration _vtkConfiguration;
87 : simplemd::configurations::Adios2Configuration _Adios2Configuration;
88 : simplemd::configurations::SimulationConfiguration _simulationConfiguration;
89 : simplemd::configurations::RDFConfiguration _rdfConfiguration;
90 : simplemd::configurations::CheckpointConfiguration _checkpointConfiguration;
91 : simplemd::configurations::DomainDecompConfiguration _domainDecompConfiguration;
92 : std::vector<simplemd::configurations::ProfilePlotterConfiguration> _profilePlotterConfigurations;
93 : std::vector<simplemd::configurations::ExternalForceConfiguration> _externalForceConfigurations;
94 : };
95 :
96 : #endif // _MOLECULARDYNAMICS_CONFIGURATIONS_MOLECULARDYNAMICSCONFIGURATION_H_
|