MaMiCo
1.2
Toggle main menu visibility
Loading...
Searching...
No Matches
coupling
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
11
namespace
coupling
{
12
template
<
class
LinkedCell,
unsigned
int
>
class
MultiMDMediator
;
13
}
14
25
template
<
class
LinkedCell,
unsigned
int
dim>
class
coupling::MultiMDMediator
{
26
public
:
27
MultiMDMediator(
coupling::services::MultiMDCellService<LinkedCell, dim>
& multiMDCellService,
coupling::InstanceHandling<LinkedCell, dim>
& instanceHandling,
28
tarch::utils::MultiMDService<dim>
& multiMDService,
coupling::interface::MacroscopicSolverInterface<dim>
* macroscopicSolverInterface)
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
40
void
addMDSimulation
();
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
61
void
rmMDSimulation
();
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
94
unsigned
int
getNumberOfActiveMDSimulations
();
95
96
private
:
99
void
addMDSimulationBlock
();
100
102
void
rmMDSimulationBlock
();
103
109
unsigned
int
getAvgNumberOfActiveMDSimulations
();
110
117
unsigned
int
findFirstCommWithLowLoad
();
118
126
unsigned
int
findFirstCommWithHighLoad
();
127
132
unsigned
int
findInactiveLocalIndex
(
const
unsigned
int
& communicator);
133
138
unsigned
int
findActiveLocalIndex
(
const
unsigned
int
& communicator);
139
140
coupling::services::MultiMDCellService<LinkedCell, dim>
& _multiMDCellService;
141
coupling::InstanceHandling<LinkedCell, dim>
& _instanceHandling;
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_
coupling::InstanceHandling
Simulation slots are managed (i.e., added/removed) via this class. Works and interacts with the class...
Definition
InstanceHandling.h:36
coupling::MultiMDMediator
Class to handle interaction between MultiMDCellService and InstanceHandling This is currently mainly ...
Definition
MultiMDMediator.h:25
coupling::MultiMDMediator::findActiveLocalIndex
unsigned int findActiveLocalIndex(const unsigned int &communicator)
coupling::MultiMDMediator::shutdownCommunicator
void shutdownCommunicator(const unsigned int &communicator)
coupling::MultiMDMediator::getAvgNumberOfActiveMDSimulations
unsigned int getAvgNumberOfActiveMDSimulations()
coupling::MultiMDMediator::addMDSimulation
void addMDSimulation()
coupling::MultiMDMediator::rmNMDSimulations
void rmNMDSimulations(const unsigned int &N)
coupling::MultiMDMediator::rmMDSimulation
void rmMDSimulation(const unsigned int &communicator, const unsigned int &index)
coupling::MultiMDMediator::findFirstCommWithHighLoad
unsigned int findFirstCommWithHighLoad()
coupling::MultiMDMediator::rmMDSimulation
void rmMDSimulation(const unsigned int &communicator)
coupling::MultiMDMediator::addNMDSimulations
void addNMDSimulations(const unsigned int &N)
coupling::MultiMDMediator::addMDSimulationBlock
void addMDSimulationBlock()
coupling::MultiMDMediator::rmMDSimulationBlock
void rmMDSimulationBlock()
coupling::MultiMDMediator::addNMDSimulations
void addNMDSimulations(const unsigned int &communicator, const unsigned int &N)
coupling::MultiMDMediator::addMDSimulation
void addMDSimulation(const unsigned int &communicator)
coupling::MultiMDMediator::getNumberOfActiveMDSimulations
unsigned int getNumberOfActiveMDSimulations(const unsigned int communicator)
coupling::MultiMDMediator::findInactiveLocalIndex
unsigned int findInactiveLocalIndex(const unsigned int &communicator)
coupling::MultiMDMediator::rmMDSimulation
void rmMDSimulation()
coupling::MultiMDMediator::findFirstCommWithLowLoad
unsigned int findFirstCommWithLowLoad()
coupling::MultiMDMediator::getNumberOfActiveMDSimulations
unsigned int getNumberOfActiveMDSimulations()
coupling::interface::MacroscopicSolverInterface
interface for the macroscopic, i.e. continuum solver
Definition
MacroscopicSolverInterface.h:23
coupling::services::MultiMDCellService
Definition
MultiMDCellService.h:29
tarch::utils::MultiMDService
Definition
MultiMDService.h:30
coupling
everything necessary for coupling operations, is defined in here
Definition
AdditiveMomentumInsertion.h:15
Generated by
1.17.0