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
Loading
Loading
Loading
Loading
+8 −24
Original line number Original line Diff line number Diff line
@@ -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
  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
  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
  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
  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
+10 −4
Original line number Original line Diff line number Diff line
@@ -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
+26 −16
Original line number Original line Diff line number Diff line
@@ -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;
}
}