Cholla 3.0.1-dev
Cholla - Massively parallel hydro on GPUs
Loading...
Searching...
No Matches
WriterManager.h
Go to the documentation of this file.
1
6#pragma once
7
8#include <functional>
9#include <string>
10#include <vector>
11
12#include "../global/global.h"
13#include "../grid/field_info.h"
14#include "../grid/grid3D.h"
15#include "../io/FnameTemplate.h" // define FnameTemplate
16#include "../io/ParameterMap.h" // define ParameterMap
17
18namespace io
19{
20
22using WriterFn = std::function<void(Grid3D &, Parameters, int, const FnameTemplate &)>;
23
24namespace detail
25{
26
28struct WriterPack {
30 std::string name;
34 const WriterFn fn;
35};
36
37} // namespace detail
38
45{
46 FnameTemplate fname_template_;
47 std::vector<io::detail::WriterPack> packs_;
48
49 public:
50 WriterManager() = delete;
51 WriterManager(const Parameters &P, ParameterMap &pmap, const FieldInfo &field_info);
52
54 const FnameTemplate &fname_template() const noexcept { return fname_template_; }
55
57 void Apply_Writers(Grid3D &G, const Parameters &P, int nfile) const
58 {
59 for (const io::detail::WriterPack &pack : packs_) {
60 if (nfile % pack.cadence == 0) {
61 pack.fn(G, P, nfile, fname_template_);
62 }
63 }
64 }
65};
66
67} // namespace io
std::function< void(Grid3D &, Parameters, int, const FnameTemplate &)> WriterFn
Definition WriterManager.h:22
Definition field_info.h:49
Definition FnameTemplate.h:43
Class to create a the gravity object.
Definition grid3D.h:229
A class that provides map-like access to parameter files.
Definition ParameterMap.h:74
Manages each configured file-writer.
Definition WriterManager.h:45
const FnameTemplate & fname_template() const noexcept
Definition WriterManager.h:54
void Apply_Writers(Grid3D &G, const Parameters &P, int nfile) const
Definition WriterManager.h:57
Definition global.h:217
bundles information about a writer
Definition WriterManager.h:28
const WriterFn fn
Definition WriterManager.h:34
int cadence
Definition WriterManager.h:32
std::string name
Definition WriterManager.h:30