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

Divert TFRFME I/O to RAM

parent bc3c1bc2
No related branches found
No related tags found
No related merge requests found
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
*/ */
#include <complex> #include <complex>
#include <cstdio> #include <cstdio>
#include <exception>
#include <fstream> #include <fstream>
#include <regex> #include <regex>
#include <string> #include <string>
...@@ -16,10 +17,18 @@ ...@@ -16,10 +17,18 @@
#include "../include/Commons.h" #include "../include/Commons.h"
#endif #endif
#ifndef INCLUDE_CONFIGURATION_H_
#include "../include/Configuration.h"
#endif
#ifndef INCLUDE_SPH_SUBS_H_ #ifndef INCLUDE_SPH_SUBS_H_
#include "../include/sph_subs.h" #include "../include/sph_subs.h"
#endif #endif
#ifndef INCLUDE_TFRFME_H_
#include "../include/tfrfme.h"
#endif
#ifndef INCLUDE_TRA_SUBS_H_ #ifndef INCLUDE_TRA_SUBS_H_
#include "../include/tra_subs.h" #include "../include/tra_subs.h"
#endif #endif
...@@ -32,13 +41,13 @@ using namespace std; ...@@ -32,13 +41,13 @@ using namespace std;
* \param output_path: `string` Directory to write the output files in. * \param output_path: `string` Directory to write the output files in.
*/ */
void frfme(string data_file, string output_path) { void frfme(string data_file, string output_path) {
string tfrfme_name = output_path + "/c_TFRFME"; string tfrfme_name = output_path + "/c_TFRFME.hd5";
fstream tfrfme; //fstream tfrfme;
TFRFME *tfrfme = NULL;
char namef[7]; char namef[7];
char more; char more;
double *xv = NULL, *yv = NULL, *zv = NULL;
double *vkv = NULL, **vkzm = NULL; double *vkv = NULL, **vkzm = NULL;
complex<double> *wk = NULL, **w = NULL, **wsum = NULL; complex<double> *wk = NULL, **w = NULL;
const complex<double> cc0(0.0, 0.0); const complex<double> cc0(0.0, 0.0);
const complex<double> uim(0.0, 1.0); const complex<double> uim(0.0, 1.0);
int line_count = 0, last_read_line = 0; int line_count = 0, last_read_line = 0;
...@@ -64,29 +73,23 @@ void frfme(string data_file, string output_path) { ...@@ -64,29 +73,23 @@ void frfme(string data_file, string output_path) {
// End of vector size variables // End of vector size variables
if (jlmf != 1) { if (jlmf != 1) {
int nxv, nyv, nzv; int nxv, nyv, nzv;
tfrfme.open(tfrfme_name, ios::in | ios::binary); if (tfrfme == NULL) tfrfme = TFRFME::from_binary(tfrfme_name, "HDF5");
if (tfrfme.is_open()) { if (tfrfme != NULL) {
tfrfme.read(reinterpret_cast<char *>(&lmode), sizeof(int)); lmode = (int)tfrfme->get_param("lmode");
tfrfme.read(reinterpret_cast<char *>(&lm), sizeof(int)); lm = (int)tfrfme->get_param("lm");
tfrfme.read(reinterpret_cast<char *>(&nkv), sizeof(int)); nkv = (int)tfrfme->get_param("nkv");
tfrfme.read(reinterpret_cast<char *>(&nxv), sizeof(int)); nxv = (int)tfrfme->get_param("nkv");
tfrfme.read(reinterpret_cast<char *>(&nyv), sizeof(int)); nyv = (int)tfrfme->get_param("nkv");
tfrfme.read(reinterpret_cast<char *>(&nzv), sizeof(int)); nzv = (int)tfrfme->get_param("nkv");
tfrfme.read(reinterpret_cast<char *>(&vk), sizeof(double)); vk = tfrfme->get_param("vk");
tfrfme.read(reinterpret_cast<char *>(&exri), sizeof(double)); exri = tfrfme->get_param("exri");
tfrfme.read(reinterpret_cast<char *>(&an), sizeof(double)); an = tfrfme->get_param("an");
tfrfme.read(reinterpret_cast<char *>(&ff), sizeof(double)); ff = tfrfme->get_param("ff");
tfrfme.read(reinterpret_cast<char *>(&tra), sizeof(double)); tra = tfrfme->get_param("tra");
tfrfme.read(reinterpret_cast<char *>(&spd), sizeof(double)); spd = tfrfme->get_param("spd");
tfrfme.read(reinterpret_cast<char *>(&frsh), sizeof(double)); frsh = tfrfme->get_param("frsh");
tfrfme.read(reinterpret_cast<char *>(&exril), sizeof(double)); exril = tfrfme->get_param("exril");
vkv = new double[nkv](); vkv = new double[nkv]();
xv = new double[nxv]();
yv = new double[nyv]();
zv = new double[nzv]();
for (int xi = 0; xi < nxv; xi++) tfrfme.read(reinterpret_cast<char *>(&(xv[xi])), sizeof(double));
for (int yi = 0; yi < nxv; yi++) tfrfme.read(reinterpret_cast<char *>(&(yv[yi])), sizeof(double));
for (int zi = 0; zi < nxv; zi++) tfrfme.read(reinterpret_cast<char *>(&(zv[zi])), sizeof(double));
fstream temptape2; fstream temptape2;
string tempname2 = output_path + "/c_TEMPTAPE2"; string tempname2 = output_path + "/c_TEMPTAPE2";
temptape2.open(tempname2.c_str(), ios::in | ios::binary); temptape2.open(tempname2.c_str(), ios::in | ios::binary);
...@@ -116,15 +119,6 @@ void frfme(string data_file, string output_path) { ...@@ -116,15 +119,6 @@ void frfme(string data_file, string output_path) {
} else { } else {
printf("ERROR: could not open TEMPTAPE2 file.\n"); printf("ERROR: could not open TEMPTAPE2 file.\n");
} }
for (int ixyz12 = 0; ixyz12 < nrvc; ixyz12++) {
for (int j12 = 0; j12 < jlmf - 1; j12++) {
double vreal, vimag;
tfrfme.read(reinterpret_cast<char *>(&vreal), sizeof(double));
tfrfme.read(reinterpret_cast<char *>(&vimag), sizeof(double));
wsum[j12][ixyz12] = complex<double>(vreal, vimag);
} // j12 loop
} // ixyz12 loop
tfrfme.close();
} else { } else {
printf("ERROR: could not open TFRFME file.\n"); printf("ERROR: could not open TFRFME file.\n");
} }
...@@ -179,23 +173,22 @@ void frfme(string data_file, string output_path) { ...@@ -179,23 +173,22 @@ void frfme(string data_file, string output_path) {
re = regex("[0-9]+"); re = regex("[0-9]+");
regex_search(str_target, m, re); regex_search(str_target, m, re);
int ixi = stoi(m.str()); int ixi = stoi(m.str());
fstream tedf; string tedf_name = output_path + "/" + namef + ".hd5";
string tedf_name = output_path + "/" + namef; ScattererConfiguration *tedf = ScattererConfiguration::from_binary(tedf_name, "HDF5");
tedf.open(tedf_name.c_str(), ios::in | ios::binary); if (tedf != NULL) {
if (tedf.is_open()) {
int iduml, idum; int iduml, idum;
tedf.read(reinterpret_cast<char *>(&iduml), sizeof(int)); iduml = (int)tedf->get_param("nsph");
for (int i = 0; i < iduml; i++) tedf.read(reinterpret_cast<char *>(&idum), sizeof(int)); idum = tedf->get_iog(iduml - 1);
tedf.read(reinterpret_cast<char *>(&exdc), sizeof(double)); exdc = tedf->get_param("exdc");
tedf.read(reinterpret_cast<char *>(&wp), sizeof(double)); wp = tedf->get_param("wp");
tedf.read(reinterpret_cast<char *>(&xip), sizeof(double)); xip = tedf->get_param("xip");
tedf.read(reinterpret_cast<char *>(&idfc), sizeof(int)); idfc = (int)tedf->get_param("idfc");
tedf.read(reinterpret_cast<char *>(&nxi), sizeof(int)); nxi = (int)tedf->get_param("nxi");
if (idfc >= 0) { if (idfc >= 0) {
if (ixi <= nxi) { if (ixi <= nxi) {
for (int i = 0; i < ixi; i++) tedf.read(reinterpret_cast<char *>(&xi), sizeof(double)); xi = tedf->get_scale(ixi - 1);
} else { // label 96 } else { // label 96
tedf.close(); delete tedf;
// label 98 // label 98
string output_name = output_path + "/c_OFRFME"; string output_name = output_path + "/c_OFRFME";
FILE *output = fopen(output_name.c_str(), "w"); FILE *output = fopen(output_name.c_str(), "w");
...@@ -206,7 +199,7 @@ void frfme(string data_file, string output_path) { ...@@ -206,7 +199,7 @@ void frfme(string data_file, string output_path) {
xi = xip; xi = xip;
} }
// label 20 // label 20
tedf.close(); delete tedf;
double wn = wp / 3.0e8; double wn = wp / 3.0e8;
vk = xi * wn; vk = xi * wn;
exri = sqrt(exdc); exri = sqrt(exdc);
...@@ -244,26 +237,24 @@ void frfme(string data_file, string output_path) { ...@@ -244,26 +237,24 @@ void frfme(string data_file, string output_path) {
int nxs = nxsh * 2; int nxs = nxsh * 2;
int nxv = nxs + 1; int nxv = nxs + 1;
int nxshpo = nxsh + 1; int nxshpo = nxsh + 1;
xv = new double[nxv]();
for (int i24 = nxshpo; i24 <= nxs; i24++) {
xv[i24] = xv[i24 - 1] + delxyz;
xv[nxv - i24 - 1] = -xv[i24];
} // i24 loop
int nys = nysh * 2; int nys = nysh * 2;
int nyv = nys + 1; int nyv = nys + 1;
int nyshpo = nysh + 1; int nyshpo = nysh + 1;
yv = new double[nyv]();
for (int i25 = nyshpo; i25 <= nys; i25++) {
yv[i25] = yv[i25 - 1] + delxyz;
yv[nyv - i25 - 1] = -yv[i25];
} // i25 loop
int nzs = nzsh * 2; int nzs = nzsh * 2;
int nzv = nzs + 1; int nzv = nzs + 1;
int nzshpo = nzsh + 1; int nzshpo = nzsh + 1;
zv = new double[nzv](); tfrfme = new TFRFME(lmode, lm, nkv, nxv, nyv, nzv);
for (int i24 = nxshpo; i24 <= nxs; i24++) {
tfrfme->set_x(i24, tfrfme->get_x(i24 - 1) + delxyz);
tfrfme->set_x(nxv - i24 - 1, -tfrfme->get_x(i24));
} // i24 loop
for (int i25 = nyshpo; i25 <= nys; i25++) {
tfrfme->set_y(i25, tfrfme->get_y(i25 - 1) + delxyz);
tfrfme->set_y(nyv - i25 - 1, -tfrfme->get_y(i25));
} // i25 loop
for (int i27 = nzshpo; i27 <= nzs; i27++) { for (int i27 = nzshpo; i27 <= nzs; i27++) {
zv[i27] = zv[i27 - 1] + delxyz; tfrfme->set_z(i27, tfrfme->get_z(i27 - 1) + delxyz);
zv[nzv - i27 - 1] = -zv[i27]; tfrfme->set_z(nzv - i27 - 1, -tfrfme->get_z(i27));
} // i27 loop } // i27 loop
int nrvc = nxv * nyv * nzv; int nrvc = nxv * nyv * nzv;
int nkshpo = nksh + 1; int nkshpo = nksh + 1;
...@@ -271,28 +262,15 @@ void frfme(string data_file, string output_path) { ...@@ -271,28 +262,15 @@ void frfme(string data_file, string output_path) {
vkv[i28] = vkv[i28 - 1] + delk; vkv[i28] = vkv[i28 - 1] + delk;
vkv[nkv - i28 - 1] = -vkv[i28]; vkv[nkv - i28 - 1] = -vkv[i28];
} // i28 loop } // i28 loop
tfrfme.open(tfrfme_name.c_str(), ios::out | ios::binary); if (tfrfme != NULL) {
if (tfrfme.is_open()) { tfrfme->set_param("vk", vk);
tfrfme.write(reinterpret_cast<char *>(&lmode), sizeof(int)); tfrfme->set_param("exri", exri);
tfrfme.write(reinterpret_cast<char *>(&lm), sizeof(int)); tfrfme->set_param("an", an);
tfrfme.write(reinterpret_cast<char *>(&nkv), sizeof(int)); tfrfme->set_param("ff", ff);
tfrfme.write(reinterpret_cast<char *>(&nxv), sizeof(int)); tfrfme->set_param("tra", tra);
tfrfme.write(reinterpret_cast<char *>(&nyv), sizeof(int)); tfrfme->set_param("spd", spd);
tfrfme.write(reinterpret_cast<char *>(&nzv), sizeof(int)); tfrfme->set_param("frsh", frsh);
tfrfme.write(reinterpret_cast<char *>(&vk), sizeof(double)); tfrfme->set_param("exril", exril);
tfrfme.write(reinterpret_cast<char *>(&exri), sizeof(double));
tfrfme.write(reinterpret_cast<char *>(&an), sizeof(double));
tfrfme.write(reinterpret_cast<char *>(&ff), sizeof(double));
tfrfme.write(reinterpret_cast<char *>(&tra), sizeof(double));
tfrfme.write(reinterpret_cast<char *>(&spd), sizeof(double));
tfrfme.write(reinterpret_cast<char *>(&frsh), sizeof(double));
tfrfme.write(reinterpret_cast<char *>(&exril), sizeof(double));
for (int xi = 0; xi < nxv; xi++)
tfrfme.write(reinterpret_cast<char *>(&(xv[xi])), sizeof(double));
for (int yi = 0; yi < nyv; yi++)
tfrfme.write(reinterpret_cast<char *>(&(yv[yi])), sizeof(double));
for (int zi = 0; zi < nzv; zi++)
tfrfme.write(reinterpret_cast<char *>(&(zv[zi])), sizeof(double));
fstream temptape1, temptape2; fstream temptape1, temptape2;
string temp_name1 = output_path + "/c_TEMPTAPE1"; string temp_name1 = output_path + "/c_TEMPTAPE1";
string temp_name2 = output_path + "/c_TEMPTAPE2"; string temp_name2 = output_path + "/c_TEMPTAPE2";
...@@ -330,11 +308,6 @@ void frfme(string data_file, string output_path) { ...@@ -330,11 +308,6 @@ void frfme(string data_file, string output_path) {
} }
} // jy40 loop } // jy40 loop
temptape2.close(); temptape2.close();
if (wsum != NULL) {
for (int wsi = wsum_size - 1; wsi > -1; wsi--) delete[] wsum[wsi];
delete[] wsum;
}
wsum = new complex<double>*[nlmmt];
for (int j80 = jlmf - 1; j80 < jlml; j80++) { for (int j80 = jlmf - 1; j80 < jlml; j80++) {
// w matrix // w matrix
if (w != NULL) { if (w != NULL) {
...@@ -359,13 +332,13 @@ void frfme(string data_file, string output_path) { ...@@ -359,13 +332,13 @@ void frfme(string data_file, string output_path) {
} // jy50 loop } // jy50 loop
temptape1.close(); temptape1.close();
int ixyz = 0; int ixyz = 0;
wsum[j80] = new complex<double>[nrvc](); for (int wj = 0; wj < nrvc; wj++) tfrfme->set_matrix_element(j80, wj, cc0);
for (int iz75 = 0; iz75 < nzv; iz75++) { for (int iz75 = 0; iz75 < nzv; iz75++) {
double z = zv[iz75] + frsh; double z = tfrfme->get_z(iz75) + frsh;
for (int iy70 = 0; iy70 < nyv; iy70++) { for (int iy70 = 0; iy70 < nyv; iy70++) {
double y = yv[iy70]; double y = tfrfme->get_y(iy70);
for (int ix65 = 0; ix65 < nxv; ix65++) { for (int ix65 = 0; ix65 < nxv; ix65++) {
double x = xv[ix65]; double x = tfrfme->get_x(ix65);
ixyz++; ixyz++;
complex<double> sumy = cc0; complex<double> sumy = cc0;
for (int jy60 = 0; jy60 < nkv; jy60++) { for (int jy60 = 0; jy60 < nkv; jy60++) {
...@@ -385,41 +358,29 @@ void frfme(string data_file, string output_path) { ...@@ -385,41 +358,29 @@ void frfme(string data_file, string output_path) {
if (jy60 == 0 || jy60 == nkv - 1) sumx *= 0.5; if (jy60 == 0 || jy60 == nkv - 1) sumx *= 0.5;
sumy += sumx; sumy += sumx;
} // jy60 loop } // jy60 loop
wsum[j80][ixyz - 1] = sumy * delks; tfrfme->set_matrix_element(j80, ixyz - 1, sumy * delks);
} // ix65 loop } // ix65 loop
} // iy70 loop } // iy70 loop
} // iz75 loop } // iz75 loop
} // j80 loop } // j80 loop
if (jlmf != 1) { if (jlmf != 1) {
tfrfme.open(tfrfme_name, ios::in | ios::out | ios::binary); lmode = (int)tfrfme->get_param("lmode");
tfrfme.read(reinterpret_cast<char *>(&lmode), sizeof(int)); lm = (int)tfrfme->get_param("lm");
tfrfme.read(reinterpret_cast<char *>(&lm), sizeof(int)); nkv = (int)tfrfme->get_param("nkv");
tfrfme.read(reinterpret_cast<char *>(&nkv), sizeof(int)); nxv = (int)tfrfme->get_param("nxv");
tfrfme.read(reinterpret_cast<char *>(&nxv), sizeof(int)); nyv = (int)tfrfme->get_param("nyv");
tfrfme.read(reinterpret_cast<char *>(&nyv), sizeof(int)); nzv = (int)tfrfme->get_param("nzv");
tfrfme.read(reinterpret_cast<char *>(&nzv), sizeof(int)); vk = tfrfme->get_param("vk");
tfrfme.read(reinterpret_cast<char *>(&vk), sizeof(double)); exri = tfrfme->get_param("exri");
tfrfme.read(reinterpret_cast<char *>(&exri), sizeof(double)); an = tfrfme->get_param("an");
tfrfme.read(reinterpret_cast<char *>(&an), sizeof(double)); ff = tfrfme->get_param("ff");
tfrfme.read(reinterpret_cast<char *>(&ff), sizeof(double)); tra = tfrfme->get_param("tra");
tfrfme.read(reinterpret_cast<char *>(&tra), sizeof(double)); spd = tfrfme->get_param("spd");
tfrfme.read(reinterpret_cast<char *>(&spd), sizeof(double)); frsh = tfrfme->get_param("frsh");
tfrfme.read(reinterpret_cast<char *>(&frsh), sizeof(double)); exril = tfrfme->get_param("exril");
tfrfme.read(reinterpret_cast<char *>(&exril), sizeof(double));
for (int i = 0; i < nxv; i++) tfrfme.read(reinterpret_cast<char *>(&(xv[i])), sizeof(double));
for (int i = 0; i < nyv; i++) tfrfme.read(reinterpret_cast<char *>(&(yv[i])), sizeof(double));
for (int i = 0; i < nzv; i++) tfrfme.read(reinterpret_cast<char *>(&(zv[i])), sizeof(double));
} }
// label 88 // label 88
for (int ixyz = 0; ixyz < nrvc; ixyz++) { tfrfme->write_binary(tfrfme_name, "HDF5");
for (int j = 0; j < jlml; j++) {
double vreal = wsum[j][ixyz].real();
double vimag = wsum[j][ixyz].imag();
tfrfme.write(reinterpret_cast<char *>(&vreal), sizeof(double));
tfrfme.write(reinterpret_cast<char *>(&vimag), sizeof(double));
} // j loop
} // ixyz loop
tfrfme.close();
string output_name = output_path + "/c_OFRFME"; string output_name = output_path + "/c_OFRFME";
FILE *output = fopen(output_name.c_str(), "w"); FILE *output = fopen(output_name.c_str(), "w");
fprintf(output, " IF JLML < NLMMT, PRESERVE TEMPTAPE1, TEMPTAPE2, AND TFRFRME,\n"); fprintf(output, " IF JLML < NLMMT, PRESERVE TEMPTAPE1, TEMPTAPE2, AND TFRFRME,\n");
...@@ -441,11 +402,8 @@ void frfme(string data_file, string output_path) { ...@@ -441,11 +402,8 @@ void frfme(string data_file, string output_path) {
} }
} }
// label 45 // label 45
if (tfrfme.is_open()) tfrfme.close(); if (tfrfme != NULL) delete tfrfme;
delete[] file_lines; delete[] file_lines;
if (xv != NULL) delete[] xv;
if (yv != NULL) delete[] yv;
if (zv != NULL) delete[] zv;
if (vkv != NULL) delete[] vkv; if (vkv != NULL) delete[] vkv;
if (vkzm != NULL) { if (vkzm != NULL) {
for (int vki = nkv - 1; vki > -1; vki--) delete[] vkzm[vki]; for (int vki = nkv - 1; vki > -1; vki--) delete[] vkzm[vki];
...@@ -455,10 +413,6 @@ void frfme(string data_file, string output_path) { ...@@ -455,10 +413,6 @@ void frfme(string data_file, string output_path) {
for (int wi = nkv - 1; wi > -1; wi--) delete[] w[wi]; for (int wi = nkv - 1; wi > -1; wi--) delete[] w[wi];
delete[] w; delete[] w;
} }
if (wsum != NULL) {
for (int wsi = wsum_size - 1; wsi > -1; wsi--) delete[] wsum[wsi];
delete[] wsum;
}
if (wk != NULL) delete[] wk; if (wk != NULL) delete[] wk;
printf("Done.\n"); printf("Done.\n");
} }
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
*/ */
#include <complex> #include <complex>
#include <cstdio> #include <cstdio>
#include <exception>
#include <fstream> #include <fstream>
#include <regex> #include <regex>
#include <string> #include <string>
...@@ -20,6 +21,10 @@ ...@@ -20,6 +21,10 @@
#include "../include/sph_subs.h" #include "../include/sph_subs.h"
#endif #endif
#ifndef INCLUDE_TFRFME_H_
#include "../include/tfrfme.h"
#endif
#ifndef INCLUDE_TRA_SUBS_H_ #ifndef INCLUDE_TRA_SUBS_H_
#include "../include/tra_subs.h" #include "../include/tra_subs.h"
#endif #endif
...@@ -38,7 +43,6 @@ void lffft(string data_file, string output_path) { ...@@ -38,7 +43,6 @@ void lffft(string data_file, string output_path) {
fstream tlfff, tlfft; fstream tlfff, tlfft;
double ****zpv = NULL; double ****zpv = NULL;
double *xv = NULL, *yv = NULL, *zv = NULL;
complex<double> *ac = NULL, *ws = NULL, *wsl = NULL; complex<double> *ac = NULL, *ws = NULL, *wsl = NULL;
complex<double> **am0m = NULL; complex<double> **am0m = NULL;
complex<double> **amd = NULL; complex<double> **amd = NULL;
...@@ -140,37 +144,31 @@ void lffft(string data_file, string output_path) { ...@@ -140,37 +144,31 @@ void lffft(string data_file, string output_path) {
} }
// label 150 // label 150
ttms.close(); ttms.close();
fstream binary_input; TFRFME *tfrfme = NULL;
string binary_name; string binary_name;
if (jss != 1) binary_name = output_path + "/c_TFRFME"; if (jss != 1) binary_name = output_path + "/c_TFRFME.hd5";
else binary_name = output_path + "/c_TWS"; else binary_name = output_path + "/c_TWS";
binary_input.open(binary_name, ios::in | ios::binary); tfrfme = TFRFME::from_binary(binary_name, "HDF5");
if (binary_input.is_open()) { if (tfrfme != NULL) {
int lmode, lm, nkv, nxv, nyv, nzv; int lmode, lm, nkv, nxv, nyv, nzv;
double vk, exri, an, ff, tra; double vk, exri, an, ff, tra;
double spd, frsh, exril; double spd, frsh, exril;
binary_input.read(reinterpret_cast<char *>(&lmode), sizeof(int)); lmode = (int)tfrfme->get_param("lmode");
binary_input.read(reinterpret_cast<char *>(&lm), sizeof(int)); lm = (int)tfrfme->get_param("lm");
binary_input.read(reinterpret_cast<char *>(&nkv), sizeof(int)); nkv = (int)tfrfme->get_param("nkv");
binary_input.read(reinterpret_cast<char *>(&nxv), sizeof(int)); nxv = (int)tfrfme->get_param("nxv");
binary_input.read(reinterpret_cast<char *>(&nyv), sizeof(int)); nyv = (int)tfrfme->get_param("nyv");
binary_input.read(reinterpret_cast<char *>(&nzv), sizeof(int)); nzv = (int)tfrfme->get_param("nzv");
if (lm >= le) { if (lm >= le) {
binary_input.read(reinterpret_cast<char *>(&vk), sizeof(double)); vk = tfrfme->get_param("vk");
binary_input.read(reinterpret_cast<char *>(&exri), sizeof(double)); exri = tfrfme->get_param("exri");
binary_input.read(reinterpret_cast<char *>(&an), sizeof(double)); an = tfrfme->get_param("an");
binary_input.read(reinterpret_cast<char *>(&ff), sizeof(double)); ff = tfrfme->get_param("ff");
binary_input.read(reinterpret_cast<char *>(&tra), sizeof(double)); tra = tfrfme->get_param("tra");
if (vk == vks && exri == exris) { if (vk == vks && exri == exris) {
binary_input.read(reinterpret_cast<char *>(&spd), sizeof(double)); spd = tfrfme->get_param("spd");
binary_input.read(reinterpret_cast<char *>(&frsh), sizeof(double)); frsh = tfrfme->get_param("frsh");
binary_input.read(reinterpret_cast<char *>(&exril), sizeof(double)); exril = tfrfme->get_param("exril");
xv = new double[nxv];
for (int i = 0; i < nxv; i++) binary_input.read(reinterpret_cast<char *>(&(xv[i])), sizeof(double));
yv = new double[nyv];
for (int i = 0; i < nyv; i++) binary_input.read(reinterpret_cast<char *>(&(yv[i])), sizeof(double));
zv = new double[nzv];
for (int i = 0; i < nzv; i++) binary_input.read(reinterpret_cast<char *>(&(zv[i])), sizeof(double));
bool goto160 = false; bool goto160 = false;
if (jft <= 0) { if (jft <= 0) {
zpv = new double***[le]; zpv = new double***[le];
...@@ -204,12 +202,18 @@ void lffft(string data_file, string output_path) { ...@@ -204,12 +202,18 @@ void lffft(string data_file, string output_path) {
tlfff.write(reinterpret_cast<char *>(&spd), sizeof(double)); tlfff.write(reinterpret_cast<char *>(&spd), sizeof(double));
tlfff.write(reinterpret_cast<char *>(&frsh), sizeof(double)); tlfff.write(reinterpret_cast<char *>(&frsh), sizeof(double));
tlfff.write(reinterpret_cast<char *>(&exril), sizeof(double)); tlfff.write(reinterpret_cast<char *>(&exril), sizeof(double));
for (int i = 0; i < nxv; i++) for (int i = 0; i < nxv; i++) {
tlfff.write(reinterpret_cast<char *>(&(xv[i])), sizeof(double)); double x = tfrfme->get_x(i);
for (int i = 0; i < nyv; i++) tlfff.write(reinterpret_cast<char *>(&x), sizeof(double));
tlfff.write(reinterpret_cast<char *>(&(yv[i])), sizeof(double)); }
for (int i = 0; i < nzv; i++) for (int i = 0; i < nyv; i++) {
tlfff.write(reinterpret_cast<char *>(&(zv[i])), sizeof(double)); double y = tfrfme->get_y(i);
tlfff.write(reinterpret_cast<char *>(&y), sizeof(double));
}
for (int i = 0; i < nzv; i++) {
double z = tfrfme->get_z(i);
tlfff.write(reinterpret_cast<char *>(&z), sizeof(double));
}
if (jft < 0) goto160 = true; if (jft < 0) goto160 = true;
} else { // Should never happen. } else { // Should never happen.
printf("ERROR: could not open TLFFF file.\n"); printf("ERROR: could not open TLFFF file.\n");
...@@ -236,12 +240,18 @@ void lffft(string data_file, string output_path) { ...@@ -236,12 +240,18 @@ void lffft(string data_file, string output_path) {
tlfft.write(reinterpret_cast<char *>(&spd), sizeof(double)); tlfft.write(reinterpret_cast<char *>(&spd), sizeof(double));
tlfft.write(reinterpret_cast<char *>(&frsh), sizeof(double)); tlfft.write(reinterpret_cast<char *>(&frsh), sizeof(double));
tlfft.write(reinterpret_cast<char *>(&exril), sizeof(double)); tlfft.write(reinterpret_cast<char *>(&exril), sizeof(double));
for (int i = 0; i < nxv; i++) for (int i = 0; i < nxv; i++) {
tlfft.write(reinterpret_cast<char *>(&(xv[i])), sizeof(double)); double x = tfrfme->get_x(i);
for (int i = 0; i < nyv; i++) tlfft.write(reinterpret_cast<char *>(&x), sizeof(double));
tlfft.write(reinterpret_cast<char *>(&(yv[i])), sizeof(double)); }
for (int i = 0; i < nzv; i++) for (int i = 0; i < nyv; i++) {
tlfft.write(reinterpret_cast<char *>(&(zv[i])), sizeof(double)); double y = tfrfme->get_y(i);
tlfft.write(reinterpret_cast<char *>(&y), sizeof(double));
}
for (int i = 0; i < nzv; i++) {
double z = tfrfme->get_z(i);
tlfft.write(reinterpret_cast<char *>(&z), sizeof(double));
}
} else { // Should never happen. } else { // Should never happen.
printf("ERROR: could not open TLFFT file.\n"); printf("ERROR: could not open TLFFT file.\n");
} }
...@@ -262,13 +272,18 @@ void lffft(string data_file, string output_path) { ...@@ -262,13 +272,18 @@ void lffft(string data_file, string output_path) {
for (int iy475 = 0; iy475 < nyv; iy475++) { for (int iy475 = 0; iy475 < nyv; iy475++) {
for (int ix475 = 0; ix475 < nxv; ix475++) { for (int ix475 = 0; ix475 < nxv; ix475++) {
for (int i = 0; i < nlmmt; i++) { for (int i = 0; i < nlmmt; i++) {
double vreal, vimag; //double vreal, vimag;
binary_input.read(reinterpret_cast<char *>(&vreal), sizeof(double)); //binary_input.read(reinterpret_cast<char *>(&vreal), sizeof(double));
binary_input.read(reinterpret_cast<char *>(&vimag), sizeof(double)); //binary_input.read(reinterpret_cast<char *>(&vimag), sizeof(double));
int row = i;
int col = (nzv * iz475) + (nyv * iy475) + ix475;
complex<double> value = tfrfme->get_matrix_element(row, col);
if (lm <= le) { if (lm <= le) {
ws[i] = complex<double>(vreal, vimag); //ws[i] = complex<double>(vreal, vimag);
ws[i] = value;
} else { // label 170 } else { // label 170
wsl[i] = complex<double>(vreal, vimag); //wsl[i] = complex<double>(vreal, vimag);
wsl[i] = value;
for (int i175 = 0; i175 < cil->nlem; i175++) { for (int i175 = 0; i175 < cil->nlem; i175++) {
int ie = i175 + cil->nlem; int ie = i175 + cil->nlem;
int iel = i175 + nlmm; int iel = i175 + nlmm;
...@@ -384,7 +399,7 @@ void lffft(string data_file, string output_path) { ...@@ -384,7 +399,7 @@ void lffft(string data_file, string output_path) {
fclose(output67); fclose(output67);
} }
} }
binary_input.close(); delete tfrfme;
} else { } else {
printf("ERROR: could not open binary input file %s.\n", binary_name.c_str()); printf("ERROR: could not open binary input file %s.\n", binary_name.c_str());
} }
...@@ -395,9 +410,6 @@ void lffft(string data_file, string output_path) { ...@@ -395,9 +410,6 @@ void lffft(string data_file, string output_path) {
// Clean up memory // Clean up memory
if (ac != NULL) delete[] ac; if (ac != NULL) delete[] ac;
if (ws != NULL) delete[] ws; if (ws != NULL) delete[] ws;
if (xv != NULL) delete[] xv;
if (yv != NULL) delete[] yv;
if (zv != NULL) delete[] zv;
if (wsl != NULL) delete[] wsl; if (wsl != NULL) delete[] wsl;
if (tmsm != NULL) delete[] tmsm; if (tmsm != NULL) delete[] tmsm;
if (tmse != NULL) delete[] tmse; if (tmse != NULL) delete[] tmse;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment