LCOV - code coverage report
Current view: top level - coupling/filtering/interfaces - AsymmetricalJunctorInterface.h (source / functions) Coverage Total Hit
Test: coverage.info Lines: 0.0 % 10 0
Test Date: 2026-08-21 15:14:06 Functions: 0.0 % 3 0

            Line data    Source code
       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              : 
       7              : #define DEBUG_ASYM_JUNCTOR_INTERFACE
       8              : 
       9              : #include "coupling/filtering/interfaces/FilterInterface.h"
      10              : 
      11              : namespace coupling {
      12              : namespace filtering {
      13              : template <unsigned int dim> class AsymmetricalJunctorInterface;
      14              : }
      15              : } // namespace coupling
      16              : 
      17              : /**
      18              :  * Interface for Junctors in Asymmetrical Filter Junctions.
      19              :  * Cf. filtering/sequencing/AsymmetricalFilterJunction.h
      20              :  *
      21              :  * Implemenents FI. The underlying FI has the junctor's first cell data set.
      22              :  * @author Felix Maurer
      23              :  */
      24              : template <unsigned int dim> class coupling::filtering::AsymmetricalJunctorInterface : public coupling::filtering::FilterInterface<dim> {
      25              : public:
      26            0 :   AsymmetricalJunctorInterface(
      27              :       // first cell data set
      28              :       const std::vector<coupling::datastructures::CouplingCell<dim>*> inputCellVector1,
      29              :       const std::vector<coupling::datastructures::CouplingCell<dim>*> outputCellVector1,
      30              : 
      31              :       // first cell data set
      32              :       const std::vector<coupling::datastructures::CouplingCell<dim>*> inputCellVector2,
      33              :       // no output
      34              : 
      35              :       // parameters not specific to either 1 or 2
      36              :       const std::array<bool, 7> filteredValues, const char* type)
      37              :       : // The first cell data set in stored in FI's member variables...
      38              :         coupling::filtering::FilterInterface<dim>(inputCellVector1, outputCellVector1, filteredValues, type),
      39              :         //...while the second cell data set is stored within this class
      40            0 :         _inputCellVector2(inputCellVector2) {}
      41              : 
      42            0 :   virtual void operator()() {
      43            0 :     (*_filter1)();
      44            0 :     (*_filter2)();
      45            0 :   }
      46              : 
      47            0 :   ~AsymmetricalJunctorInterface() {
      48              :     // TODO: check for corrupt/memory leaks here
      49            0 :     delete _filter1;
      50            0 :     delete _filter2;
      51            0 :   };
      52              : 
      53              :   // TODO: make FI's updateCellData function unusable
      54              :   void updateCellData(std::vector<coupling::datastructures::CouplingCell<dim>*>& new_inputCellVector1,
      55              :                       std::vector<coupling::datastructures::CouplingCell<dim>*>& new_outputCellVector1,
      56              :                       std::vector<coupling::datastructures::CouplingCell<dim>*>& new_inputCellVector2) {
      57              :     std::cout << "           AJI: Updating cell data." << std::endl;
      58              :     _inputCellVector2 = new_inputCellVector2;
      59              : 
      60              :     // Assumes the input c-style vectors to be nonempty. May be problematic.
      61              :     coupling::filtering::FilterInterface<dim>::updateCellData(new_inputCellVector1, new_outputCellVector1);
      62              :   }
      63              : 
      64              : protected:
      65              :   /**
      66              :    * The first data set is stored in FilterInstance, the second one in here.
      67              :    * Note that the second set contains no output vector. Confer interface
      68              :    * comment above.
      69              :    */
      70              :   std::vector<coupling::datastructures::CouplingCell<dim>*> _inputCellVector2;
      71              : 
      72              :   /*
      73              :    * The first cell data set should be fed to _filter1 and the second one to
      74              :    * _filter2. Note that you have to do this manually in your implementation of
      75              :    * this interface. For an example, cf. filters/WriteToFileJunctor.h
      76              :    */
      77              :   coupling::filtering::FilterInterface<dim>* _filter1;
      78              :   coupling::filtering::FilterInterface<dim>* _filter2;
      79              : };
        

Generated by: LCOV version 2.0-1