ViennaLS
Loading...
Searching...
No Matches
lsWriter.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <fstream>
4
5#include <lsDomain.hpp>
7#include <utility>
8
9namespace viennals {
10
11using namespace viennacore;
12
13template <class T, int D> class Writer {
14 SmartPointer<Domain<T, D>> levelSet = nullptr;
15 std::string fileName;
16
17public:
18 Writer() = default;
19
20 Writer(SmartPointer<Domain<T, D>> passedLevelSet)
21 : levelSet(passedLevelSet) {}
22
23 Writer(SmartPointer<Domain<T, D>> passedLevelSet, std::string passedFileName)
24 : levelSet(passedLevelSet), fileName(std::move(passedFileName)) {}
25
26 void setLevelSet(SmartPointer<Domain<T, D>> passedLevelSet) {
27 levelSet = passedLevelSet;
28 }
29
31 void setFileName(std::string passedFileName) {
32 fileName = std::move(passedFileName);
33 }
34
35 void apply() {
36 // check mesh
37 if (levelSet == nullptr) {
38 Logger::getInstance()
39 .addWarning("No mesh was passed to Writer. Not writing.")
40 .print();
41 return;
42 }
43 // check filename
44 if (fileName.empty()) {
45 Logger::getInstance()
46 .addWarning("No file name specified for Writer. Not writing.")
47 .print();
48 return;
49 }
50
51 if (fileName.find(".lvst") != fileName.length() - 5) {
52 Logger::getInstance()
53 .addWarning("File name does not end in '.lvst', appending it.")
54 .print();
55 fileName.append(".lvst");
56 }
57
58 // Open file for writing and save serialized level set in it
59 std::ofstream fout(fileName, std::ios::binary);
60
61 levelSet->serialize(fout);
62
63 fout.close();
64 }
65};
66
67// add all template specialisations for this class
69
70} // namespace viennals
Class containing all information about the level set, including the dimensions of the domain,...
Definition lsDomain.hpp:27
Writer()=default
Writer(SmartPointer< Domain< T, D > > passedLevelSet, std::string passedFileName)
Definition lsWriter.hpp:23
Writer(SmartPointer< Domain< T, D > > passedLevelSet)
Definition lsWriter.hpp:20
void setFileName(std::string passedFileName)
set file name for file to write
Definition lsWriter.hpp:31
void setLevelSet(SmartPointer< Domain< T, D > > passedLevelSet)
Definition lsWriter.hpp:26
void apply()
Definition lsWriter.hpp:35
#define PRECOMPILE_PRECISION_DIMENSION(className)
Definition lsPreCompileMacros.hpp:24
Definition lsAdvect.hpp:36