LCOV - code coverage report
Current view: top level - coupling/filtering/sequencing - AsymmetricalFilterJunction.h (source / functions) Coverage Total Hit
Test: coverage.info Lines: 0.0 % 25 0
Test Date: 2026-08-21 15:14:06 Functions: 0.0 % 4 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 2.0-1