CppNoddy  0.92
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
CppNoddy::TrackerFile Class Reference

#include <TrackerFile.h>

Public Member Functions

 TrackerFile (int prec=12)
 
 TrackerFile (std::string filename, int prec=12)
 
 ~TrackerFile ()
 
void precision (unsigned prec)
 
void push_ptr (double *scalar, std::string desc="")
 
void push_ptr (D_complex *scalar, std::string desc="")
 
void push_ptr (DenseVector< double > *ptr_to_vector, std::string desc="")
 
void push_ptr (DenseVector< D_complex > *ptr_to_vector, std::string desc="")
 
void push_ptr (OneD_Node_Mesh< double > *ptr_to_mesh, std::string desc="")
 
void push_ptr (OneD_Node_Mesh< D_complex > *ptr_to_mesh, std::string desc="")
 
void push_ptr (OneD_Node_Mesh< D_complex, D_complex > *ptr_to_mesh, std::string desc="")
 
void newline ()
 
void set_filename (std::string filename)
 
void header ()
 
void update ()
 

Protected Attributes

std::ofstream m_dumpFile
 

Detailed Description

Definition at line 17 of file TrackerFile.h.

Constructor & Destructor Documentation

◆ TrackerFile() [1/2]

CppNoddy::TrackerFile::TrackerFile ( int  prec = 12)

Definition at line 12 of file TrackerFile.cpp.

12 {
13 this -> m_precision = prec;
14 }

◆ TrackerFile() [2/2]

CppNoddy::TrackerFile::TrackerFile ( std::string  filename,
int  prec = 12 
)

Definition at line 16 of file TrackerFile.cpp.

16 {
17 m_dumpFile.open(filename.c_str());
18 this -> m_precision = prec;
19 m_dumpFile.precision(prec);
20 m_dumpFile << std::scientific;
21 }
std::ofstream m_dumpFile
Definition: TrackerFile.h:52

References m_dumpFile.

◆ ~TrackerFile()

CppNoddy::TrackerFile::~TrackerFile ( )

Definition at line 23 of file TrackerFile.cpp.

23 {
24 m_dumpFile.close();
25 }

References m_dumpFile.

Member Function Documentation

◆ header()

void CppNoddy::TrackerFile::header ( )

Definition at line 81 of file TrackerFile.cpp.

81 {
82 // write the header
83 m_dumpFile << " # Header : \n # ";
84 for(std::size_t i = 0; i < m_doubleDesc.size(); ++i) {
85 m_dumpFile << m_doubleDesc[ i ] << " | ";
86 }
87 for(std::size_t i = 0; i < m_doubleVectorDesc.size(); ++i) {
88 m_dumpFile << m_doubleVectorDesc[ i ] << " | ";
89 }
90 for(std::size_t i = 0; i < m_complexVectorDesc.size(); ++i) {
91 m_dumpFile << m_complexVectorDesc[ i ] + " (Real)" << " | ";
92 m_dumpFile << m_complexVectorDesc[ i ] + " (Imag)" << " | ";
93 }
94 for(std::size_t i = 0; i < m_doubleMeshDesc.size(); ++i) {
95 m_dumpFile << m_doubleMeshDesc[ i ] + " (nodes)" << " | ";
96 for(unsigned var = 0; var < (*p_doubleMesh[ i ]).get_nvars(); ++var) {
97 m_dumpFile << m_doubleMeshDesc[ i ] + " var#" + Utility::stringify(var) + " | ";
98 }
99 }
100 for(std::size_t i = 0; i < m_complexMeshDesc.size(); ++i) {
101 m_dumpFile << m_complexMeshDesc[ i ] + "(nodes)" << " | ";
102 for(unsigned var = 0; var < (*p_complexMesh[ i ]).get_nvars(); ++var) {
103 m_dumpFile << m_complexMeshDesc[ i ] + " var#" + Utility::stringify(var) + " (Real) | ";
104 m_dumpFile << m_complexMeshDesc[ i ] + " var#" + Utility::stringify(var) + " (Imag) | ";
105 }
106 }
107 for(std::size_t i = 0; i < m_complexComplexMeshDesc.size(); ++i) {
108 m_dumpFile << m_complexComplexMeshDesc[ i ] + "(nodes)_real" << " | ";
109 m_dumpFile << m_complexComplexMeshDesc[ i ] + "(nodes)_imag" << " | ";
110 for(unsigned var = 0; var < (*p_complexComplexMesh[ i ]).get_nvars(); ++var) {
111 m_dumpFile << m_complexComplexMeshDesc[ i ] + " var#" + Utility::stringify(var) + " (Real) | ";
112 m_dumpFile << m_complexComplexMeshDesc[ i ] + " var#" + Utility::stringify(var) + " (Imag) | ";
113 }
114 }
115 m_dumpFile << "\n";
116 }
std::string stringify(const int &val)
Return an integer value as a string - useful for file naming.
Definition: Utility.cpp:193

References m_dumpFile, and CppNoddy::Utility::stringify().

Referenced by main().

◆ newline()

void CppNoddy::TrackerFile::newline ( )

Definition at line 66 of file TrackerFile.cpp.

66 {
67 m_dumpFile << "\n";
68 }

References m_dumpFile.

Referenced by main().

◆ precision()

void CppNoddy::TrackerFile::precision ( unsigned  prec)

Definition at line 76 of file TrackerFile.cpp.

76 {
77 this -> m_precision = prec;
78 m_dumpFile.precision(prec);
79 }

References m_dumpFile.

Referenced by main().

◆ push_ptr() [1/7]

void CppNoddy::TrackerFile::push_ptr ( D_complex scalar,
std::string  desc = "" 
)

Definition at line 32 of file TrackerFile.cpp.

32 {
33 //p_Doubles.push_back( &( scalar -> real() ) );
34 //p_Doubles.push_back( &( scalar -> imag() ) );
35 // above is no longer valid for g++-7.2
36 p_doubles.push_back(&reinterpret_cast<double(&)[2]>(*scalar)[0]);
37 p_doubles.push_back(&reinterpret_cast<double(&)[2]>(*scalar)[1]);
38 m_doubleDesc.push_back(desc + " (real)");
39 m_doubleDesc.push_back(desc + " (imag)");
40 }

◆ push_ptr() [2/7]

void CppNoddy::TrackerFile::push_ptr ( DenseVector< D_complex > *  ptr_to_vector,
std::string  desc = "" 
)

Definition at line 47 of file TrackerFile.cpp.

47 {
48 p_complexVectors.push_back(ptr_to_vector);
49 m_complexVectorDesc.push_back(desc);
50 }

◆ push_ptr() [3/7]

void CppNoddy::TrackerFile::push_ptr ( DenseVector< double > *  ptr_to_vector,
std::string  desc = "" 
)

Definition at line 42 of file TrackerFile.cpp.

42 {
43 p_doubleVectors.push_back(ptr_to_vector);
44 m_doubleVectorDesc.push_back(desc);
45 }

◆ push_ptr() [4/7]

void CppNoddy::TrackerFile::push_ptr ( double *  scalar,
std::string  desc = "" 
)

Definition at line 27 of file TrackerFile.cpp.

27 {
28 p_doubles.push_back(scalar);
29 m_doubleDesc.push_back(desc);
30 }

Referenced by main().

◆ push_ptr() [5/7]

void CppNoddy::TrackerFile::push_ptr ( OneD_Node_Mesh< D_complex > *  ptr_to_mesh,
std::string  desc = "" 
)

Definition at line 57 of file TrackerFile.cpp.

57 {
58 p_complexMesh.push_back(ptr_to_mesh);
59 m_complexMeshDesc.push_back(desc);
60 }

◆ push_ptr() [6/7]

void CppNoddy::TrackerFile::push_ptr ( OneD_Node_Mesh< D_complex, D_complex > *  ptr_to_mesh,
std::string  desc = "" 
)

Definition at line 62 of file TrackerFile.cpp.

62 {
63 p_complexComplexMesh.push_back(ptr_to_mesh);
64 m_complexMeshDesc.push_back(desc);
65 }

◆ push_ptr() [7/7]

void CppNoddy::TrackerFile::push_ptr ( OneD_Node_Mesh< double > *  ptr_to_mesh,
std::string  desc = "" 
)

Definition at line 52 of file TrackerFile.cpp.

52 {
53 p_doubleMesh.push_back(ptr_to_mesh);
54 m_doubleMeshDesc.push_back(desc);
55 }

◆ set_filename()

void CppNoddy::TrackerFile::set_filename ( std::string  filename)

Definition at line 70 of file TrackerFile.cpp.

70 {
71 m_dumpFile.close();
72 m_dumpFile.open(filename.c_str());
73 m_dumpFile.precision(m_precision);
74 }

References m_dumpFile.

Referenced by main().

◆ update()

void CppNoddy::TrackerFile::update ( )

Definition at line 118 of file TrackerFile.cpp.

118 {
119 unsigned block_size(1);
120 if(!p_doubleVectors.empty()) {
121 block_size = p_doubleVectors[ 0 ] -> size();
122 }
123 if(!p_complexVectors.empty()) {
124 block_size = p_complexVectors[ 0 ] -> size();
125 }
126 if(!p_doubleMesh.empty()) {
127 block_size = p_doubleMesh[ 0 ] -> get_nnodes();
128 }
129 if(!p_complexMesh.empty()) {
130 block_size = p_complexMesh[ 0 ] -> get_nnodes();
131 }
132 if(!p_complexComplexMesh.empty()) {
133 block_size = p_complexComplexMesh[ 0 ] -> get_nnodes();
134 }
135
136 for(unsigned line = 0; line < block_size; ++line) {
137 dump_scalar_data();
138 if(!p_doubleVectors.empty()) {
139 // for each vector ptr
140 for(std::size_t i = 0; i < p_doubleVectors.size(); ++i) {
141 m_dumpFile << (*p_doubleVectors[ i ]) [ line ] << " ";
142 }
143 }
144 if(!p_complexVectors.empty()) {
145 // for each vector ptr
146 for(std::size_t i = 0; i < p_complexVectors.size(); ++i) {
147 m_dumpFile << (*p_complexVectors[ i ]) [ line ].real() << " ";
148 m_dumpFile << (*p_complexVectors[ i ]) [ line ].imag() << " ";
149 }
150 }
151 if(!p_doubleMesh.empty()) {
152 // for each mesh ptr
153 for(std::size_t i = 0; i < p_doubleMesh.size(); ++i) {
154 m_dumpFile << (*p_doubleMesh[ i ]).coord(line) << " ";
155 for(unsigned var = 0; var < p_doubleMesh[ i ] -> get_nvars(); ++var) {
156 m_dumpFile << (*p_doubleMesh[ i ])(line, var) << " ";
157 }
158 }
159 }
160 if(!p_complexMesh.empty()) {
161 // for each mesh ptr
162 for(std::size_t i = 0; i < p_complexMesh.size(); ++i) {
163 m_dumpFile << (*p_complexMesh[ i ]).coord(line) << " ";
164 for(unsigned var = 0; var < p_complexMesh[ i ] -> get_nvars(); ++var) {
165 m_dumpFile << (*p_complexMesh[ i ])(line, var).real() << " ";
166 m_dumpFile << (*p_complexMesh[ i ])(line, var).imag() << " ";
167 }
168 }
169 }
170 if(!p_complexComplexMesh.empty()) {
171 // for each mesh ptr
172 for(std::size_t i = 0; i < p_complexComplexMesh.size(); ++i) {
173 m_dumpFile << (*p_complexComplexMesh[ i ]).coord(line).real() << " ";
174 m_dumpFile << (*p_complexComplexMesh[ i ]).coord(line).imag() << " ";
175 for(unsigned var = 0; var < p_complexComplexMesh[ i ] -> get_nvars(); ++var) {
176 m_dumpFile << (*p_complexComplexMesh[ i ])(line, var).real() << " ";
177 m_dumpFile << (*p_complexComplexMesh[ i ])(line, var).imag() << " ";
178 }
179 }
180 }
181 m_dumpFile << "\n";
182 }
183 // flush the buffer
184 m_dumpFile.flush();
185 }
DenseVector< double > real(const DenseVector< D_complex > &X)
Return a double DENSE vector containing the real part of a complex DENSE vector.
Definition: Utility.cpp:177
DenseVector< double > imag(const DenseVector< D_complex > &X)
Return a double DENSE vector containing the imaginary part of a complex DENSE vector.
Definition: Utility.cpp:185

References m_dumpFile.

Referenced by main().

Member Data Documentation

◆ m_dumpFile

std::ofstream CppNoddy::TrackerFile::m_dumpFile
mutableprotected

Definition at line 52 of file TrackerFile.h.

Referenced by header(), newline(), precision(), set_filename(), TrackerFile(), update(), and ~TrackerFile().


The documentation for this class was generated from the following files:

© 2012

R.E. Hewitt