Skip to content
Snippets Groups Projects
Commit f8e946c0 authored by Giovanni La Mura's avatar Giovanni La Mura
Browse files

Make DEBUG_AM internal to jxi loop and use utilities to write the matrix

parent 7cf460b1
Branches
Tags
No related merge requests found
...@@ -83,6 +83,10 @@ ...@@ -83,6 +83,10 @@
#include "../include/file_io.h" #include "../include/file_io.h"
#endif #endif
#ifndef INCLUDE_UTILS_H_
#include "../include/utils.h"
#endif
using namespace std; using namespace std;
// I would like to put it all in a struct, but then I'd have to write a constructor for it, due to members defined as references, creating a worse nightmare than the one I'd like to simplify... // I would like to put it all in a struct, but then I'd have to write a constructor for it, due to members defined as references, creating a worse nightmare than the one I'd like to simplify...
...@@ -771,12 +775,7 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf ...@@ -771,12 +775,7 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf
outam0->append_line(virtual_line); outam0->append_line(virtual_line);
sprintf(virtual_line, " I1+1 I2+1 Real Imag\n"); sprintf(virtual_line, " I1+1 I2+1 Real Imag\n");
outam0->append_line(virtual_line); outam0->append_line(virtual_line);
for (int iam=0; iam<ndit; iam++) { write_dcomplex_matrix(outam0, cid->am, ndit, ndit);
for (int jam=0; jam<ndit; jam++) {
sprintf(virtual_line, " %d %d %17.8lE %17.8lE\n", iam, jam, real(cid->am[iam][jam]), imag(cid->am[iam][jam]));
outam0->append_line(virtual_line);
}
}
outam0->write_to_disk(outam0_name); outam0->write_to_disk(outam0_name);
delete outam0; delete outam0;
#endif #endif
...@@ -788,12 +787,7 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf ...@@ -788,12 +787,7 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf
outam1->append_line(virtual_line); outam1->append_line(virtual_line);
sprintf(virtual_line, " I1+1 I2+1 Real Imag\n"); sprintf(virtual_line, " I1+1 I2+1 Real Imag\n");
outam1->append_line(virtual_line); outam1->append_line(virtual_line);
for (int iam=0; iam<ndit; iam++) { write_dcomplex_matrix(outam1, cid->am, ndit, ndit, " %5d %5d (%17.8lE,%17.8lE)\n", 1);
for (int jam=0; jam<ndit; jam++) {
sprintf(virtual_line, " %d %d %17.8lE %17.8lE\n", iam, jam, real(cid->am[iam][jam]), imag(cid->am[iam][jam]));
outam1->append_line(virtual_line);
}
}
outam1->write_to_disk(outam1_name); outam1->write_to_disk(outam1_name);
delete outam1; delete outam1;
#endif #endif
...@@ -816,12 +810,7 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf ...@@ -816,12 +810,7 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf
outam2->append_line(virtual_line); outam2->append_line(virtual_line);
sprintf(virtual_line, " I1+1 I2+1 Real Imag\n"); sprintf(virtual_line, " I1+1 I2+1 Real Imag\n");
outam2->append_line(virtual_line); outam2->append_line(virtual_line);
for (int iam=0; iam<ndit; iam++) { write_dcomplex_matrix(outam2, cid->am, ndit, ndit);
for (int jam=0; jam<ndit; jam++) {
sprintf(virtual_line, " %d %d %17.8lE %17.8lE\n", iam, jam, real(cid->am[iam][jam]), imag(cid->am[iam][jam]));
outam2->append_line(virtual_line);
}
}
outam2->write_to_disk(outam2_name); outam2->write_to_disk(outam2_name);
delete outam2; delete outam2;
#endif #endif
...@@ -850,12 +839,7 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf ...@@ -850,12 +839,7 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf
outam3->append_line(virtual_line); outam3->append_line(virtual_line);
sprintf(virtual_line, " I1+1 I2+1 Real Imag\n"); sprintf(virtual_line, " I1+1 I2+1 Real Imag\n");
outam3->append_line(virtual_line); outam3->append_line(virtual_line);
for (int iam=0; iam<ndit; iam++) { write_dcomplex_matrix(outam3, cid->am, ndit, ndit);
for (int jam=0; jam<ndit; jam++) {
sprintf(virtual_line, " %d %d %17.8lE %17.8lE\n", iam, jam, real(cid->am[iam][jam]), imag(cid->am[iam][jam]));
outam3->append_line(virtual_line);
}
}
outam3->write_to_disk(outam3_name); outam3->write_to_disk(outam3_name);
delete outam3; delete outam3;
#endif #endif
......
...@@ -24,11 +24,17 @@ ...@@ -24,11 +24,17 @@
/*! \brief Write a double complex matrix to a text file. /*! \brief Write a double complex matrix to a text file.
* *
* \param file_name: `const string&` Name of the file to be written. * \param af: `VirtualAsciiFile *` Pointer to an existing VirtualAsciiFile.
* \param mat: `dcomplex **` Pointer to the matrix. * \param mat: `dcomplex **` Pointer to the matrix.
* \param rows: `np_int` Number of rows in the matrix. * \param rows: `int` Number of rows in the matrix.
* \param columns: `np_int` Number of columns in the matrix. * \param columns: `int` Number of columns in the matrix.
* \param format: `const string&` Format of the line (default is \" %5d %5d (%17.8lE,%17.8lE)\n\")
* \param first_index: `int` Index of the first element (default is 1, i.e. base 1 FORTRAN array notation)
*/ */
int write_dcomplex_matrix(const std::string& file_name, dcomplex **mat, np_int rows, np_int columns); int write_dcomplex_matrix(
VirtualAsciiFile *af, dcomplex **mat, int rows,
int columns, const std::string& format=" %5d %5d (%17.8lE,%17.8lE)\n",
int first_index=1
);
#endif #endif
...@@ -40,33 +40,43 @@ ...@@ -40,33 +40,43 @@
* \brief Definition of auxiliary code utilities. * \brief Definition of auxiliary code utilities.
*/ */
#include <cstdio> #include <hdf5.h>
#ifndef INCLUDE_TYPES_H_ #ifndef INCLUDE_TYPES_H_
#include "../include/types.h" #include "../include/types.h"
#endif #endif
#ifndef INCLUDE_ERRORS_H_
#include "../include/errors.h"
#endif
#ifndef INCLUDE_LIST_H_
#include "../include/List.h"
#endif
#ifndef INCLUDE_FILE_IO_H_
#include "../include/file_io.h"
#endif
#ifndef INCLUDE_UTILS_H_ #ifndef INCLUDE_UTILS_H_
#include "../include/utils.h" #include "../include/utils.h"
#endif #endif
using namespace std; using namespace std;
int write_dcomplex_matrix(const std::string& file_name, dcomplex **mat, np_int rows, np_int columns) { int write_dcomplex_matrix(
VirtualAsciiFile *af, dcomplex **mat, int rows, int columns,
const std::string& format, int first_index
) {
int result = 0; int result = 0;
FILE* output = fopen(file_name.c_str(), "w"); char virtual_line[256];
if (output) { for (int i=0; i < rows; i++) {
string str_format = "%5d%5d (%13.5lE,%13.5lE)\n"; for (int j = 0; j < columns; j++) {
if (sizeof(np_int) > sizeof(int)) { sprintf(
str_format = "%5ld%5ld (%13.5lE,%13.5lE)\n"; virtual_line, format.c_str(), i + first_index, j + first_index,
} real(mat[i][j]), imag(mat[i][j])
for (np_int i = 0; i < rows; i++) { );
for (np_int j = 0; j < columns; j++) { af->append_line(virtual_line);
fprintf(output, str_format.c_str(), i, j, real(mat[i][j]), imag(mat[i][j]));
}
} }
fclose(output);
} else {
// Could not open the output file.
result = 1;
} }
return result; return result;
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment