LCOV - code coverage report
Current view: top level - coupling/filtering/sequencing - AsymmetricalFilterJunction.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 25 0.0 %
Date: 2025-06-25 11:26:37 Functions: 0 5 0.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_FILTER_JUNCTION_ASYM
       8             : 
       9             : #include "coupling/filtering/sequencing/FilterSequence.h"
      10             : 
      11             : // INCLUDE ALL RELEVANT JUNCTOR HEADERS HERE
      12             : #include "coupling/filtering/filters/WriteToFileJunctor.h"
      13             : 
      14             : /*
      15             :  * Filtering junction which does not use multiple identical input domains, but
      16             :  * rather uses one primary input partition to filter on while having access to a
      17             :  * secondary input data set. As no filtering is conducted on that secondary
      18             :  * input cell data set, it may be of any shape or size. The primary input
      19             :  * partition has to follow the restrictions to input data sets of
      20             :  * FilterSequences and FilterJunctions.
      21             :  *
      22             :  * @author Felix Maurer
      23             :  */
      24             : 
      25             : namespace coupling {
      26             : namespace filtering {
      27             : template <unsigned int dim> class AsymmetricalFilterJunction;
      28             : }
      29             : } // namespace coupling
      30             : 
      31             : template <unsigned int dim> class coupling::filtering::AsymmetricalFilterJunction : public coupling::filtering::FilterSequence<dim> {
      32             : public:
      33           0 :   AsymmetricalFilterJunction(const char* name,
      34             :                              const std::vector<coupling::datastructures::CouplingCell<dim>*> primaryInputCellVector,   // primary input of sequence.
      35             :                              const std::vector<coupling::datastructures::CouplingCell<dim>*> secondaryInputCellVector, // additional data, presented as
      36             :                                                                                                                        // macro cells as well
      37             : #if (COUPLING_MD_PARALLEL == COUPLING_MD_YES)
      38             :                              MPI_Comm comm,
      39             : #endif
      40             :                              std::array<bool, 7> filteredValues)
      41             :       : coupling::filtering::FilterSequence<dim>(name, primaryInputCellVector,
      42             : #if (COUPLING_MD_PARALLEL == COUPLING_MD_YES)
      43             :                                                  comm,
      44             : #endif
      45             :                                                  filteredValues),
      46           0 :         _inputCellVector_secondary(secondaryInputCellVector) {
      47             : #ifdef DEBUG_FILTER_JUNCTION_ASYM
      48           0 :     std::cout << PRINT_PREFIX() << "Begin initialization." << std::endl;
      49             : #endif
      50             : 
      51             :     // allocate and init secondary cell vectors
      52           0 :     for (auto cell : _inputCellVector_secondary) {
      53           0 :       _cellVector1_secondary.push_back(new coupling::datastructures::CouplingCell<dim>(*cell));
      54           0 :       _cellVector2_secondary.push_back(new coupling::datastructures::CouplingCell<dim>(*cell));
      55             :     }
      56             : #ifdef DEBUG_FILTER_JUNCTION_ASYM
      57           0 :     std::cout << PRINT_PREFIX() << "Initialized secondary cell vectors." << std::endl;
      58           0 :     std::cout << PRINT_PREFIX() << "First element of _cellVector1_secondary after init: " << _cellVector1_secondary[0] << std::endl;
      59           0 :     std::cout << PRINT_PREFIX() << "First element of _cellVector2_secondary after init: " << _cellVector2_secondary[0] << std::endl;
      60             : #endif
      61             : 
      62           0 :     coupling::filtering::FilterSequence<dim>::_isModifiable = false; // Dynamic filters are not yet supported. TODO
      63           0 :   }
      64             : 
      65           0 :   ~AsymmetricalFilterJunction() {
      66           0 :     for (auto secondarycell : _cellVector1_secondary)
      67           0 :       delete secondarycell;
      68           0 :     for (auto secondarycell : _cellVector2_secondary)
      69           0 :       delete secondarycell;
      70           0 :   }
      71             : 
      72             :   /*
      73             :    * This function is very similar to the interface's. Check
      74             :    * coupling::FilterSequence for more details.
      75             :    */
      76             :   int loadFiltersFromXML(tinyxml2::XMLElement* sequenceNode) override;
      77             : 
      78           0 :   void printFilters() override {
      79           0 :     std::cout << "Junctors in asymmetrical junction " << coupling::filtering::FilterSequence<dim>::_name << ": ";
      80           0 :     for (auto f : coupling::filtering::FilterSequence<dim>::_filters)
      81           0 :       std::cout << f->getType() << " ";
      82           0 :     std::cout << std::endl;
      83           0 :   }
      84             : 
      85           0 :   std::string PRINT_PREFIX() const override {
      86           0 :     return std::string("   AFJ(").std::string::append(coupling::filtering::FilterSequence<dim>::_name).std::string::append("): ");
      87             :   }
      88             : 
      89             : private:
      90             :   std::vector<coupling::datastructures::CouplingCell<dim>*> _inputCellVector_secondary;
      91             : 
      92             :   std::vector<coupling::datastructures::CouplingCell<dim>*> _cellVector1_secondary;
      93             :   std::vector<coupling::datastructures::CouplingCell<dim>*> _cellVector2_secondary;
      94             : };
      95             : 
      96             : // inlcude implementation
      97             : #include "coupling/filtering/sequencing/AsymmetricalFilterJunction.cpph"

Generated by: LCOV version 1.14