MaMiCo 1.2
Loading...
Searching...
No Matches
MultiMDMediator.h
1// Copyright (C) 2016 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 _COUPLING_MULTIMDMEDIATOR_H_
6#define _COUPLING_MULTIMDMEDIATOR_H_
7
8#include "coupling/InstanceHandling.h"
9#include "coupling/services/MultiMDCellService.h"
10
11namespace coupling {
12template <class LinkedCell, unsigned int> class MultiMDMediator;
13}
14
25template <class LinkedCell, unsigned int dim> class coupling::MultiMDMediator {
26public:
29 : _multiMDCellService(multiMDCellService), _instanceHandling(instanceHandling), _multiMDService(multiMDService),
30 _listActiveMDSimulations(_multiMDService.getNumberLocalComms(), std::vector<bool>()), _macroscopicSolverInterface(macroscopicSolverInterface) {
31 for (auto& group : _listActiveMDSimulations) {
32 group = std::vector<bool>(_multiMDService.getLocalNumberOfMDSimulations(), true);
33 }
34 }
35
41
45 void addMDSimulation(const unsigned int& communicator);
46
50 void addNMDSimulations(const unsigned int& N);
51
56 void addNMDSimulations(const unsigned int& communicator, const unsigned int& N);
57
62
68 void rmMDSimulation(const unsigned int& communicator, const unsigned int& index);
69
73 void rmMDSimulation(const unsigned int& communicator);
74
78 void rmNMDSimulations(const unsigned int& N);
79
83 void shutdownCommunicator(const unsigned int& communicator);
84
89 unsigned int getNumberOfActiveMDSimulations(const unsigned int communicator);
90
95
96private:
100
103
110
118
127
132 unsigned int findInactiveLocalIndex(const unsigned int& communicator);
133
138 unsigned int findActiveLocalIndex(const unsigned int& communicator);
139
142 tarch::utils::MultiMDService<dim>& _multiMDService;
143 std::vector<std::vector<bool>> _listActiveMDSimulations; // global list of active (true) and inactive
144 // (false) simulations
145 coupling::interface::MacroscopicSolverInterface<dim>* _macroscopicSolverInterface;
146};
147
148#include "coupling/MultiMDMediator.cpph"
149
150#endif //_COUPLING_MULTIMDMEDIATOR_H_
Simulation slots are managed (i.e., added/removed) via this class. Works and interacts with the class...
Definition InstanceHandling.h:35
Class to handle interaction between MultiMDCellService and InstanceHandling This is currently mainly ...
Definition MultiMDMediator.h:25
unsigned int findActiveLocalIndex(const unsigned int &communicator)
void shutdownCommunicator(const unsigned int &communicator)
unsigned int getAvgNumberOfActiveMDSimulations()
void rmNMDSimulations(const unsigned int &N)
void rmMDSimulation(const unsigned int &communicator, const unsigned int &index)
unsigned int findFirstCommWithHighLoad()
void rmMDSimulation(const unsigned int &communicator)
void addNMDSimulations(const unsigned int &N)
void addNMDSimulations(const unsigned int &communicator, const unsigned int &N)
void addMDSimulation(const unsigned int &communicator)
unsigned int getNumberOfActiveMDSimulations(const unsigned int communicator)
unsigned int findInactiveLocalIndex(const unsigned int &communicator)
unsigned int findFirstCommWithLowLoad()
unsigned int getNumberOfActiveMDSimulations()
interface for the macroscopic, i.e. continuum solver
Definition MacroscopicSolverInterface.h:23
Definition MultiMDCellService.h:29
Definition MultiMDService.h:30
everything necessary for coupling operations, is defined in here
Definition AdditiveMomentumInsertion.h:15