13 this -> m_precision = prec;
18 this -> m_precision = prec;
28 p_doubles.push_back(scalar);
29 m_doubleDesc.push_back(desc);
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)");
43 p_doubleVectors.push_back(ptr_to_vector);
44 m_doubleVectorDesc.push_back(desc);
48 p_complexVectors.push_back(ptr_to_vector);
49 m_complexVectorDesc.push_back(desc);
53 p_doubleMesh.push_back(ptr_to_mesh);
54 m_doubleMeshDesc.push_back(desc);
58 p_complexMesh.push_back(ptr_to_mesh);
59 m_complexMeshDesc.push_back(desc);
63 p_complexComplexMesh.push_back(ptr_to_mesh);
64 m_complexMeshDesc.push_back(desc);
77 this -> m_precision = prec;
84 for(std::size_t i = 0; i < m_doubleDesc.size(); ++i) {
87 for(std::size_t i = 0; i < m_doubleVectorDesc.size(); ++i) {
88 m_dumpFile << m_doubleVectorDesc[ i ] <<
" | ";
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)" <<
" | ";
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) {
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) {
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) {
119 unsigned block_size(1);
120 if(!p_doubleVectors.empty()) {
121 block_size = p_doubleVectors[ 0 ] -> size();
123 if(!p_complexVectors.empty()) {
124 block_size = p_complexVectors[ 0 ] -> size();
126 if(!p_doubleMesh.empty()) {
127 block_size = p_doubleMesh[ 0 ] -> get_nnodes();
129 if(!p_complexMesh.empty()) {
130 block_size = p_complexMesh[ 0 ] -> get_nnodes();
132 if(!p_complexComplexMesh.empty()) {
133 block_size = p_complexComplexMesh[ 0 ] -> get_nnodes();
136 for(
unsigned line = 0; line < block_size; ++line) {
138 if(!p_doubleVectors.empty()) {
140 for(std::size_t i = 0; i < p_doubleVectors.size(); ++i) {
141 m_dumpFile << (*p_doubleVectors[ i ]) [ line ] <<
" ";
144 if(!p_complexVectors.empty()) {
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() <<
" ";
151 if(!p_doubleMesh.empty()) {
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) <<
" ";
160 if(!p_complexMesh.empty()) {
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() <<
" ";
170 if(!p_complexComplexMesh.empty()) {
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() <<
" ";
187 void TrackerFile::dump_scalar_data() {
188 if(!p_doubles.empty()) {
190 for(std::size_t i = 0; i < p_doubles.size(); ++i) {
A specification for a one dimensional mesh object.
A class that can be passed pointers to scalar/vector/mesh objects, then their contents are written to...
A spec for a collection of utility functions.
An DenseVector class – a dense vector object.
A one dimensional mesh utility object.
void precision(unsigned prec)
void push_ptr(double *scalar, std::string desc="")
void set_filename(std::string filename)
std::string stringify(const int &val)
Return an integer value as a string - useful for file naming.
A collection of OO numerical routines aimed at simple (typical) applied problems in continuum mechani...
std::complex< double > D_complex
A complex double precision number using std::complex.