ParallelFileMerger.hpp
Go to the documentation of this file.
1/*
2 Copyright 2016 Dr. Blatt - HPC-Simulation-Software & Services
3 Copyright 2016 STATOIL AS.
4
5 This file is part of the Open Porous Media project (OPM).
6
7 OPM is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 OPM is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with OPM. If not, see <http://www.gnu.org/licenses/>.
19*/
20
21#ifndef OPM_PARALLELFILEMERGER_HEADER_INCLUDED
22#define OPM_PARALLELFILEMERGER_HEADER_INCLUDED
23
24#include <filesystem>
25#include <iosfwd>
26#include <memory>
27#include <regex>
28#include <string>
29
30namespace Opm {
31namespace detail {
32
33namespace fs = ::std::filesystem;
34
42{
43public:
47 ParallelFileMerger(const fs::path& output_dir,
48 const std::string& deckname,
49 bool show_fallout = false);
50
51 void operator()(const fs::path& file);
52
53private:
58 void appendFile(std::ofstream& of, const fs::path& file, const std::string& rank);
59
61 std::regex debugFileRegex_;
63 std::regex logFileRegex_;
65 std::regex fileWarningRegex_;
67 std::unique_ptr<std::ofstream> debugStream_;
69 std::unique_ptr<std::ofstream> logStream_;
71 bool show_fallout_;
72};
73
74} // end namespace detail
75} // end namespace Opm
76
77#endif // end header guard
A functor that merges multiple files of a parallel run to one file.
Definition: ParallelFileMerger.hpp:42
void operator()(const fs::path &file)
ParallelFileMerger(const fs::path &output_dir, const std::string &deckname, bool show_fallout=false)
Constructor.
Definition: BlackoilPhases.hpp:27