5#ifndef _MOLECULARDYNAMICS_COUPLING_CONFIGURATIONS_STRATEGYCONFIGURATION_H_
6#define _MOLECULARDYNAMICS_COUPLING_CONFIGURATIONS_STRATEGYCONFIGURATION_H_
8#include "coupling/transferstrategies/AveragingTransferStrategy.h"
9#include "coupling/transferstrategies/DifferenceTransferStrategy.h"
10#include "coupling/transferstrategies/DirectTransferStrategy.h"
11#include "coupling/transferstrategies/TransferStrategy.h"
12#include "coupling/transferstrategies/TransferStrategy4NieCoupling.h"
13#include "coupling/transferstrategies/TransferStrategy4SchwarzCoupling.h"
14#include "tarch/configuration/Configuration.h"
15#include "tarch/configuration/ParseConfiguration.h"
16#include "tarch/la/Vector.h"
20namespace configurations {
60 if (value ==
"direct-transfer") {
62 }
else if (value ==
"difference-transfer") {
64 }
else if (value ==
"schwarz-transfer") {
66 }
else if (value ==
"nie-transfer") {
68 }
else if (value ==
"averaging") {
71 std::cout <<
"ERROR coupling::TransferStrategyConfiguration: Wrong "
79 const std::string boundaries[6] = {
"mass-flux-west",
"mass-flux-east",
"mass-flux-south",
"mass-flux-north",
"mass-flux-bottom",
"mass-flux-top"};
80 for (
unsigned int d = 0; d < 2 * dim; d++) {
86 if (_shiftTimestep < 0.0 || _shiftTimestep > 1.0) {
87 std::cout <<
"Warning "
88 "coupling::configurations::TransferStrategyConfiguration: "
90 << _shiftTimestep <<
"; typical values range between 0 and 1!" << std::endl;
98 std::string
getTag()
const {
return "transfer-strategy"; }
116 template <
class LinkedCell>
142 : _type(type), _massFluxBoundary(massFluxBoundary), _shiftTimestep(shiftTimestep), _isValid(true) {}
148 double _shiftTimestep;
transfer strategy configuration, i.e. algorithm/combin. of quantity transfer steps and quantity inter...
Definition TransferStrategyConfiguration.h:34
StrategyType
Definition TransferStrategyConfiguration.h:39
@ AveragingTransferStrategy
Definition TransferStrategyConfiguration.h:44
@ TransferStrategy4NieCoupling
Definition TransferStrategyConfiguration.h:45
@ DifferenceTransferStrategy
Definition TransferStrategyConfiguration.h:41
@ TransferStrategy4SchwarzCoupling
Definition TransferStrategyConfiguration.h:43
@ TransferStrategy4FluxCoupling
Definition TransferStrategyConfiguration.h:42
@ DirectTransferStrategy
Definition TransferStrategyConfiguration.h:40
coupling::transferstrategies::TransferStrategy< LinkedCell, dim > * interpreteConfiguration(coupling::interface::MDSolverInterface< LinkedCell, dim > *const mdSolverInterface, unsigned int numberOfMDTimesteps) const
Definition TransferStrategyConfiguration.h:118
void parseSubtag(tinyxml2::XMLElement *node)
Definition TransferStrategyConfiguration.h:57
bool isValid() const
Definition TransferStrategyConfiguration.h:108
virtual ~TransferStrategyConfiguration()
Definition TransferStrategyConfiguration.h:52
std::string getTag() const
Definition TransferStrategyConfiguration.h:98
StrategyType getStrategyType() const
Definition TransferStrategyConfiguration.h:138
TransferStrategyConfiguration()
Definition TransferStrategyConfiguration.h:49
interface to the MD simulation
Definition MDSolverInterface.h:25
Definition AveragingTransferStrategy.h:32
Definition DifferenceTransferStrategy.h:29
Definition DirectTransferStrategy.h:28
Definition TransferStrategy4NieCoupling.h:29
Definition TransferStrategy4SchwarzCoupling.h:27
Definition TransferStrategy.h:25
Definition Configuration.h:22
static void readBoolMandatory(bool &storage, tinyxml2::XMLElement *node, std::string tag)
Definition ParseConfiguration.h:151
static void readStringMandatory(std::string &storage, tinyxml2::XMLElement *node, std::string tag)
Definition ParseConfiguration.h:201
static void readDoubleOptional(double &storage, tinyxml2::XMLElement *node, std::string tag)
Definition ParseConfiguration.h:96
Definition tinyxml2.h:1268
everything necessary for coupling operations, is defined in here
Definition AdditiveMomentumInsertion.h:15