MaMiCo 1.2
Loading...
Searching...
No Matches
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
10namespace coupling {
11namespace filtering {
12template <unsigned int dim, std::size_t inputc, std::size_t outputc> class JunctorInterface;
13}
14} // namespace coupling
15
28template <unsigned int dim, std::size_t inputc, std::size_t outputc>
30public:
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
60protected:
64 std::array<std::vector<coupling::datastructures::CouplingCell<dim>*>, inputc> _inputCellVectors;
65 std::array<std::vector<coupling::datastructures::CouplingCell<dim>*>, outputc> _outputCellVectors;
66};
defines the cell type with cell-averaged quantities only (no linked cells).
Definition CouplingCell.h:29
Definition FilterInterface.h:32
Definition JunctorInterface.h:29
std::array< std::vector< coupling::datastructures::CouplingCell< dim > * >, inputc > _inputCellVectors
Definition JunctorInterface.h:64
Definition Vector.h:24
Definition FilterPipeline.h:21
everything necessary for coupling operations, is defined in here
Definition AdditiveMomentumInsertion.h:15