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
>
6
#include <
lsPreCompileMacros.hpp
>
7
#include <utility>
8
9
namespace
viennals
{
10
11
using namespace
viennacore;
12
13
template
<
class
T,
int
D>
class
Writer
{
14
SmartPointer<Domain<T, D>> levelSet =
nullptr
;
15
std::string fileName;
16
17
public
:
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
68
PRECOMPILE_PRECISION_DIMENSION
(Writer)
69
70
}
// namespace viennals
viennals::Domain
Class containing all information about the level set, including the dimensions of the domain,...
Definition
lsDomain.hpp:27
viennals::Writer::Writer
Writer()=default
viennals::Writer::Writer
Writer(SmartPointer< Domain< T, D > > passedLevelSet, std::string passedFileName)
Definition
lsWriter.hpp:23
viennals::Writer::Writer
Writer(SmartPointer< Domain< T, D > > passedLevelSet)
Definition
lsWriter.hpp:20
viennals::Writer::setFileName
void setFileName(std::string passedFileName)
set file name for file to write
Definition
lsWriter.hpp:31
viennals::Writer::setLevelSet
void setLevelSet(SmartPointer< Domain< T, D > > passedLevelSet)
Definition
lsWriter.hpp:26
viennals::Writer::apply
void apply()
Definition
lsWriter.hpp:35
lsDomain.hpp
lsPreCompileMacros.hpp
PRECOMPILE_PRECISION_DIMENSION
#define PRECOMPILE_PRECISION_DIMENSION(className)
Definition
lsPreCompileMacros.hpp:24
viennals
Definition
lsAdvect.hpp:36
include
viennals
lsWriter.hpp
Generated by
1.13.2