36#ifndef PRECURSORPROBE_H_
37#define PRECURSORPROBE_H_
55class CudaMemoryManager;
71 : para(std::
move(para)), cudaMemoryManager(std::
move(cudaMemoryManager)), xPos(xPos), yMin(yMin), yMax(yMax),
72 zMin(zMin), zMax(zMax), tStartWritingOutput(tStartWritingOutput), tSave(tSave), outputVariable(outputVariable),
75 nodeDataNames = determineNodeDataNames();
76 writeFuture = std::async([]() {});
84 : para(std::
move(para)), cudaMemoryManager(std::
move(cudaMemoryManager)), xPos(xPos), yMin(yMin), yMax(yMax),
85 zMin(zMin), zMax(zMax), tStartWritingOutput(tStartWritingOutput), tSave(tSave), outputVariable(outputVariable),
88 nodeDataNames = determineNodeDataNames();
89 writeFuture = std::async([]() {});
100 return this->outputVariable;
104 return this->tempOutputVariable;
123 return &precursorStructs[level];
129 this->writePrecision = writePrecision;
149 std::vector<std::string> determineNodeDataNames()
151 std::vector<std::string>
res;
153 switch (outputVariable) {
155 res = {
"vx",
"vy",
"vz" };
158 res = {
"fP00",
"fPP0",
"fPM0",
"fP0P",
"fP0M",
"fPPP",
"fPMP",
"fPPM",
"fPMM" };
161 throw std::runtime_error(
"Invalid OutputVariable for PrecursorWriter");
164 switch (tempOutputVariable) {
169 res.insert(
res.end(), {
"gP00",
"gPP0",
"gPM0",
"gP0P",
"gP0M",
170 "gPPP",
"gPMP",
"gPPM",
"gPMM"});
181 std::vector<PrecursorStruct> precursorStructs;
182 std::vector<std::string> nodeDataNames;
183 std::vector<std::string> cellDataNames;
184 uint tStartWritingOutput, tSave, maxTimestepsPerFile;
185 real xPos, yMin, yMax, zMin, zMax;
188 std::future<void> writeFuture;
189 uint writePrecision = 8;
static WbWriterVtkXmlImageBinary * getInstance()
Probe writing planes of data to be used as inflow data in successor simulation using PrecursorBC The ...
static constexpr uint dPMM
static constexpr uint dP00
std::string makeFileName(int level, uint numberOfFilesWritten)
OutputVariableTemperature getTempOutputVariable()
PrecursorStruct * getPrecursorStruct(int level)
void setWritePrecision(uint writePrecision)
static constexpr uint dP0M
PrecursorWriter(SPtr< Parameter > para, SPtr< CudaMemoryManager > cudaMemoryManager, const std::string &outputPath, const std::string &probeName, real xPos, real yMin, real yMax, real zMin, real zMax, uint tStartWritingOutput, uint tSave, OutputVariable outputVariable, OutputVariableTemperature tempOutputVariable, uint maxTimestepsPerFile=uint(1e4))
static constexpr uint dPM0
static constexpr uint dP0P
static constexpr uint dPMP
static constexpr uint dPPP
static constexpr uint dPPM
PrecursorWriter(SPtr< Parameter > para, SPtr< CudaMemoryManager > cudaMemoryManager, const std::string &outputPath, const std::string &probeName, real xPos, real yMin, real yMax, real zMin, real zMax, uint tStartWritingOutput, uint tSave, OutputVariable outputVariable, uint maxTimestepsPerFile=uint(1e4))
static constexpr uint dPP0
void sample(int level, uint t) override
OutputVariable getOutputVariable()
void getTaggedFluidNodes(GridProvider *gridProvider) override
OutputVariableTemperature
Base class for all samplers.
std::shared_ptr< T > SPtr
uint numberOfTimeStepsPerFile
std::vector< int > indicesOnPlane
uint numberOfPointsInData
uint numberOfFilesWritten
uint numberOfTimeStepsBuffered