MaMiCo 1.2
Loading...
Searching...
No Matches
MaMiCoConfiguration.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
4#ifndef _MOLECULARDYNAMICS_COUPLING_CONFIGURATIONS_MAMICOCONFIGURATION_H_
5#define _MOLECULARDYNAMICS_COUPLING_CONFIGURATIONS_MAMICOCONFIGURATION_H_
6
7#include "coupling/configurations/BoundaryForceConfiguration.h"
8#include "coupling/configurations/CouplingCellConfiguration.h"
9#include "coupling/configurations/MomentumInsertionConfiguration.h"
10#include "coupling/configurations/ParallelTopologyConfiguration.h"
11#include "coupling/configurations/ParticleInsertionConfiguration.h"
12#include "coupling/configurations/ThermostatConfiguration.h"
13#include "coupling/configurations/TimeIntegrationConfiguration.h"
14#include "coupling/configurations/TransferStrategyConfiguration.h"
15#include "tarch/configuration/Configuration.h"
16#include "tarch/la/Vector.h"
17#include <iostream>
18
19namespace coupling {
20namespace configurations {
21template <unsigned int dim> class MaMiCoConfiguration;
22}
23} // namespace coupling
24
32public:
35 : _isValid(true), _isDefinedParticleInsertion(false), _isDefinedMomentumInsertion(false), _isDefinedBoundaryForce(false),
36 _isDefinedTransferStrategy(false), _isDefinedParallelTopology(false), _isDefinedThermostat(false) {}
37
40
45
49 std::string getTag() const { return "mamico"; }
50
63 bool isValid() const { return _isValid; }
64
69
74 if (!_isDefinedParticleInsertion) {
75 std::cout << "ERROR coupling::configurations::MaMiCoConfiguration: "
76 "Particle insertion not defined!"
77 << std::endl;
78 exit(EXIT_FAILURE);
79 }
80 return _particleInsertionConfiguration;
81 }
82
87 if (!_isDefinedMomentumInsertion) {
88 std::cout << "ERROR coupling::configurations::MaMiCoConfiguration: "
89 "Momentum insertion not defined!"
90 << std::endl;
91 exit(EXIT_FAILURE);
92 }
93 return _momentumInsertionConfiguration;
94 }
95
100 if (!_isDefinedBoundaryForce) {
101 std::cout << "ERROR coupling::configurations::MaMiCoConfiguration: "
102 "Boundary force not defined!"
103 << std::endl;
104 exit(EXIT_FAILURE);
105 }
106 return _boundaryForceConfiguration;
107 }
108
113 if (!_isDefinedTransferStrategy) {
114 std::cout << "ERROR coupling::configurations::MaMiCoConfiguration: "
115 "Transfer-Strategy not defined!"
116 << std::endl;
117 exit(EXIT_FAILURE);
118 }
119 return _transferStrategyConfiguration;
120 }
121
126 if (!_isDefinedParallelTopology) {
127 std::cout << "ERROR coupling::configurations::MaMiCoConfiguration: "
128 "Parallel-Topology not defined!"
129 << std::endl;
130 exit(EXIT_FAILURE);
131 }
132 return _parallelTopologyConfiguration;
133 }
134
139 // is optional, thus always defined
140 return _timeIntegrationConfiguration;
141 }
142
147 if (!_isDefinedThermostat) {
148 std::cout << "ERROR coupling::configurations::MaMiCoConfiguration: "
149 "Thermostat not defined!"
150 << std::endl;
151 exit(EXIT_FAILURE);
152 }
153 return _thermostatConfiguration;
154 }
155
156private:
157 bool _isValid;
159 coupling::configurations::ParticleInsertionConfiguration _particleInsertionConfiguration;
160 coupling::configurations::MomentumInsertionConfiguration _momentumInsertionConfiguration;
163 coupling::configurations::ParallelTopologyConfiguration _parallelTopologyConfiguration;
164 coupling::configurations::TimeIntegrationConfiguration _timeIntegrationConfiguration;
166 bool _isDefinedParticleInsertion;
167 bool _isDefinedMomentumInsertion;
168 bool _isDefinedBoundaryForce;
169 bool _isDefinedTransferStrategy;
170 bool _isDefinedParallelTopology;
171 bool _isDefinedThermostat;
172};
173#include "coupling/configurations/MaMiCoConfiguration.cpph"
174
175#endif // _MOLECULARDYNAMICS_COUPLING_CONFIGURATIONS_MAMICOCONFIGURATION_H_
reads boundary force tag
Definition BoundaryForceConfiguration.h:27
configuration for output of coupling cell data to vtk files.
Definition CouplingCellConfiguration.h:24
parses all sub-tags for MaMiCo configuration.
Definition MaMiCoConfiguration.h:31
virtual ~MaMiCoConfiguration()
Definition MaMiCoConfiguration.h:39
const coupling::configurations::MomentumInsertionConfiguration & getMomentumInsertionConfiguration() const
Definition MaMiCoConfiguration.h:86
MaMiCoConfiguration()
Definition MaMiCoConfiguration.h:34
const coupling::configurations::ThermostatConfiguration & getThermostatConfiguration() const
Definition MaMiCoConfiguration.h:146
const coupling::configurations::TimeIntegrationConfiguration & getTimeIntegrationConfiguration() const
Definition MaMiCoConfiguration.h:138
const coupling::configurations::BoundaryForceConfiguration< dim > & getBoundaryForceConfiguration() const
Definition MaMiCoConfiguration.h:99
const coupling::configurations::ParticleInsertionConfiguration & getParticleInsertionConfiguration() const
Definition MaMiCoConfiguration.h:73
const coupling::configurations::ParallelTopologyConfiguration & getParallelTopologyConfiguration() const
Definition MaMiCoConfiguration.h:125
const coupling::configurations::TransferStrategyConfiguration< dim > & getTransferStrategyConfiguration() const
Definition MaMiCoConfiguration.h:112
bool isValid() const
Definition MaMiCoConfiguration.h:63
std::string getTag() const
Definition MaMiCoConfiguration.h:49
void parseSubtag(tinyxml2::XMLElement *node)
const coupling::configurations::CouplingCellConfiguration< dim > & getCouplingCellConfiguration() const
Definition MaMiCoConfiguration.h:68
momentum insertion configuration. friend class: NieTest
Definition MomentumInsertionConfiguration.h:31
reads parallel topology configuration. XYZ and ZYX are supported.
Definition ParallelTopologyConfiguration.h:25
configuration for particle insertion algorithm (e.g.: USHER).
Definition ParticleInsertionConfiguration.h:28
Definition ThermostatConfiguration.h:23
reads time integration configuration
Definition TimeIntegrationConfiguration.h:23
transfer strategy configuration, i.e. algorithm/combin. of quantity transfer steps and quantity inter...
Definition TransferStrategyConfiguration.h:34
Definition Configuration.h:22
Definition tinyxml2.h:1268
everything necessary for coupling operations, is defined in here
Definition AdditiveMomentumInsertion.h:15