MaMiCo
1.2
Toggle main menu visibility
Loading...
Searching...
No Matches
coupling
filtering
interfaces
JunctorInterface.h
1
// This file is part of the Mamico project. For conditions of distribution
2
// and use, please see the copyright notice in Mamico's main folder, or at
3
// www5.in.tum.de/mamico
4
5
#pragma once
6
#include <vector>
7
8
#define DEBUG_JUNCTOR_INTERFACE
9
10
namespace
coupling
{
11
namespace
filtering
{
12
template
<
unsigned
int
dim, std::
size_t
inputc, std::
size_t
outputc>
class
JunctorInterface
;
13
}
14
}
// namespace coupling
15
28
template
<
unsigned
int
dim, std::
size_t
inputc, std::
size_t
outputc>
29
class
coupling::filtering::JunctorInterface
:
public
coupling::filtering::FilterInterface
<dim> {
30
public
:
31
JunctorInterface(
const
std::array<std::vector<
coupling::datastructures::CouplingCell<dim>
*>, inputc> inputCellVectors,
32
const
std::array<std::vector<
coupling::datastructures::CouplingCell<dim>
*>, outputc> outputCellVectors,
33
const
std::array<bool, 7> filteredValues,
const
char
* type)
34
:
// This assumes the array of cell vectors to be nonempty. Suboptimal.
35
// NOTE: Avoid using FI's cell vectors. Use
36
// _inputCellVectors/_outputCellVectors instead.
37
coupling::filtering::FilterInterface<dim>
(inputCellVectors[0], outputCellVectors[0], filteredValues, type),
_inputCellVectors
(inputCellVectors),
38
_outputCellVectors(outputCellVectors) {
39
#ifdef DEBUG_JUNCTOR_INTERFACE
40
// check input partition sizes
41
for
(
unsigned
int
i = 0; i < inputc; i++)
42
std::cout <<
" FJ: Size of input cell vector at index "
<< i <<
": "
<< inputCellVectors[i].size() << std::endl;
43
for
(
unsigned
int
i = 0; i < outputc; i++)
44
std::cout <<
" FJ: Size of output cell vector at index "
<< i <<
": "
<< outputCellVectors[i].size() << std::endl;
45
46
#endif
47
}
48
49
void
updateCellData(std::vector<
coupling::datastructures::CouplingCell<dim>
*> new_inputCellVectors[inputc],
50
std::vector<
coupling::datastructures::CouplingCell<dim>
*> new_outputCellVectors[outputc],
51
std::vector<
tarch::la::Vector<dim, unsigned int>
>& new_cellIndices) {
52
std::cout <<
" JI: Updating cell data."
<< std::endl;
53
_inputCellVectors
= new_inputCellVectors;
54
_outputCellVectors = new_outputCellVectors;
55
56
// Assumes the input c-style vectors to be nonempty. May be problematic.
57
coupling::filtering::FilterInterface<dim>::updateCellData(new_inputCellVectors[0], new_outputCellVectors[0]);
58
}
59
60
protected
:
64
std::array<std::vector<coupling::datastructures::CouplingCell<dim>*>, inputc>
_inputCellVectors
;
65
std::array<std::vector<coupling::datastructures::CouplingCell<dim>*>, outputc> _outputCellVectors;
66
};
coupling::datastructures::CouplingCell
defines the cell type with cell-averaged quantities only (no linked cells).
Definition
CouplingCell.h:29
coupling::filtering::FilterInterface
Definition
FilterInterface.h:32
coupling::filtering::JunctorInterface
Definition
JunctorInterface.h:29
coupling::filtering::JunctorInterface::_inputCellVectors
std::array< std::vector< coupling::datastructures::CouplingCell< dim > * >, inputc > _inputCellVectors
Definition
JunctorInterface.h:64
tarch::la::Vector
Definition
Vector.h:25
coupling::filtering
Definition
FilterPipeline.h:21
coupling
everything necessary for coupling operations, is defined in here
Definition
AdditiveMomentumInsertion.h:15
Generated by
1.17.0