Alsvinn  0.5.3
The fast FVM simulator with UQ support
DLLWriter.hpp
Go to the documentation of this file.
1 #pragma once
2 #include "alsfvm/io/Writer.hpp"
5 
6 namespace alsfvm {
7 namespace io {
8 
83 class DLLWriter : public Writer {
84 public:
85 
86 
87  DLLWriter(const std::string& basename,
88  const Parameters& parameters,
89  alsutils::mpi::ConfigurationPtr mpiConfigration = nullptr
90 
91  );
92 
99  virtual void write(const volume::Volume& conservedVariables,
100  const grid::Grid& grid,
101  const simulator::TimestepInformation& timestepInformation);
102 
103 
105  virtual void finalize(const grid::Grid& grid,
106  const simulator::TimestepInformation& timestepInformation);
107 
108 
109 private:
110  using DLLData = void*;
111  DLLData dllData = nullptr;
112  DLLData parametersStruct = nullptr;
113 
114  std::function<void(DLLData, DLLData, real, int)>
115  newTimestepFunction;
116 
117  std::function<void(DLLData, DLLData, real, int)>
118  endTimestepFunction;
119 
120  using write_function_t = void(void* /*data*/,
121  void* /*parameters*/,
122  real /*time*/,
123  const char* /*variable_name*/,
124  const real* /*variable_data*/,
125  int /*nx*/,
126  int /*ny*/,
127  int /*nz*/,
128  int /*ngx*/,
129  int /*ngy*/,
130  int /*ngz*/,
131  real /*ax*/,
132  real /*ay*/,
133  real /*az*/,
134  real /*bx*/,
135  real /*by*/,
136  real /*bz*/,
137  int /*gpu_number*/ );
138  std::function<write_function_t>
139  writeFunction;
140  std::function<void(DLLData)> deleteFunction;
141  std::function<void(DLLData)> deleteParametersFunction;
142 
143  bool needsDataOnHost = false;
144 
145 };
146 } // namespace io
147 } // namespace alsfvm
Definition: Grid.hpp:27
simulator::SimulatorParameters & parameters
Definition: CellComputerFactory.cpp:60
virtual void finalize(const grid::Grid &grid, const simulator::TimestepInformation &timestepInformation)
This method should be called at the end of the simulation.
Definition: DLLWriter.cpp:179
Holds general parameters based on a boost::property tree.
Definition: Parameters.hpp:24
DLLWriter(const std::string &basename, const Parameters &parameters, alsutils::mpi::ConfigurationPtr mpiConfigration=nullptr)
Definition: DLLWriter.cpp:11
The Volume class represents a volume (a collection of cells with values for each cell (eg...
Definition: Volume.hpp:30
double real
Definition: types.hpp:65
Definition: DLLWriter.hpp:83
alsfvm::shared_ptr< Configuration > ConfigurationPtr
Definition: Configuration.hpp:53
const grid::Grid & grid
Definition: NumericalFluxFactory.cpp:104
virtual void write(const volume::Volume &conservedVariables, const grid::Grid &grid, const simulator::TimestepInformation &timestepInformation)
write writes the data to disk
Definition: DLLWriter.cpp:101
The Writer class is an abstract interface to represent output writers.
Definition: Writer.hpp:28
Various utility functions to implement the tecno flux.
Definition: types.hpp:30
Definition: TimestepInformation.hpp:22