LCOV - code coverage report
Current view: top level - coupling/filtering/filters - WriteToFile.h (source / functions) Coverage Total Hit
Test: coverage.info Lines: 0.0 % 9 0
Test Date: 2026-08-21 15:14:06 Functions: 0.0 % 2 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              : #include "coupling/filtering/interfaces/FilterInterfaceReadOnly.h"
       7              : 
       8              : #include <fstream>
       9              : #include <string>
      10              : #include <vector>
      11              : 
      12              : // #define DEBUG_WRITE_TO_FILE
      13              : 
      14              : namespace coupling {
      15              : namespace filtering {
      16              : template <unsigned int dim> class WriteToFile;
      17              : }
      18              : } // namespace coupling
      19              : 
      20              : /*
      21              :  * Read-only filter that writes cell data to a specified file in .csv format.
      22              :  *
      23              :  * Output format will be compliant to the usual MaMiCo CSV format (using ';' as
      24              :  * separator). Output order will be:
      25              :  * - current iteration
      26              :  * - scalar cell properties
      27              :  * - vector cell properties
      28              :  *
      29              :  * The output file will either contain data of all or just the final coupling
      30              :  * iteration. Boolean parameter 'overwrite' is true in the latter case. If you
      31              :  * wish to print out just one cell and not the entire input domain, pass to
      32              :  * "oneCellOnly" in constructor the corresponding local, md2macro, noGhost
      33              :  * index.
      34              :  *
      35              :  * @author Felix Maurer
      36              :  */
      37              : template <unsigned int dim> class coupling::filtering::WriteToFile : public coupling::filtering::FilterInterfaceReadOnly<dim> {
      38              : public:
      39            0 :   WriteToFile(const std::vector<coupling::datastructures::CouplingCell<dim>*>& inputCells,
      40              :               const std::vector<coupling::datastructures::CouplingCell<dim>*>& outputCells, const std::array<bool, 7> filteredValues,
      41              :               std::string location, // output file location
      42              :               bool overwrite = false, int oneCellOnly = -1)
      43              :       :
      44              : 
      45            0 :         coupling::filtering::FilterInterfaceReadOnly<dim>(inputCells, outputCells, filteredValues, "WTF"), _location(location), _overwrite(overwrite),
      46            0 :         _oneCellOnly(oneCellOnly), _iteration(1) {
      47            0 :     if (!_overwrite) {
      48            0 :       _file.open(location);
      49            0 :       _file.close();
      50              :     }
      51              : 
      52              : #ifdef DEBUG_WRITE_TO_FILE
      53              :     std::cout << "           WTF: Write to file instance created. Will save to: " << _location << std::endl;
      54              :     if (_overwrite)
      55              :       std::cout << "         It will only print output of the last iteration." << std::endl;
      56              :     if (_oneCellOnly != -1)
      57              :       std::cout << "         It will only print data of cell with linear "
      58              :                    "sequence domain index "
      59              :                 << _oneCellOnly << std::endl;
      60              : #endif
      61            0 :   }
      62              : 
      63            0 :   ~WriteToFile() {
      64              : #ifdef DEBUG_WRITE_TO_FILE
      65              :     std::cout << "           WTF: Write to file instance deconstructed." << std::endl;
      66              : #endif
      67            0 :   }
      68              : 
      69              :   void operator()();
      70              : 
      71              : private:
      72              :   std::string _location;
      73              : 
      74              :   // true of only the last iteration should be in file output
      75              :   bool _overwrite;
      76              : 
      77              :   //-1 if all cells should be in file output, holds index of the only cell to be
      78              :   // outputted otherwise
      79              :   int _oneCellOnly; // TODO: use CellIndex!
      80              : 
      81              :   std::ofstream _file;
      82              :   unsigned int _iteration;
      83              : };
      84              : 
      85              : // include implementation of header
      86              : #include "WriteToFile.cpph"
        

Generated by: LCOV version 2.0-1