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

Fix bug in writing scale factor to binary

parent b966ce93
No related branches found
No related tags found
No related merge requests found
......@@ -673,34 +673,6 @@ void ScattererConfiguration::write_binary(string file_name, string mode) {
if (mode.compare("LEGACY") == 0) { // Legacy mode was chosen.
fstream output;
int ies = (use_external_sphere)? 1 : 0;
double *xi_vec;
if (reference_variable_name.compare("XIV") == 0) xi_vec = scale_vec;
else {
is_new_vector = true;
xi_vec = new double[number_of_scales];
if (reference_variable_name.compare("WNS") == 0) {
for (int i = 0; i < number_of_scales; i++)
xi_vec[i] = 3.0e8 * scale_vec[i] / wp;
} else if (reference_variable_name.compare("WLS") == 0) {
for (int i = 0; i < number_of_scales; i++) {
double wn = two_pi / scale_vec[i];
xi_vec[i] = 3.0e8 * wn / wp;
}
} else if (reference_variable_name.compare("PUS") == 0) {
for (int i = 0; i < number_of_scales; i++)
xi_vec[i] = scale_vec[i] / wp;
} else if (reference_variable_name.compare("EVS") == 0) {
for (int i = 0; i < number_of_scales; i++) {
double pu = scale_vec[i] / evc;
xi_vec[i] = pu / wp;
}
} else {
throw UnrecognizedConfigurationException(
"Wrong parameter set: unrecognized scale type "
+ reference_variable_name
);
}
}
output.open(file_name.c_str(), ios::out | ios::binary);
output.write(reinterpret_cast<char *>(&number_of_spheres), sizeof(int));
for (int i = 0; i < number_of_spheres; i++)
......@@ -711,7 +683,7 @@ void ScattererConfiguration::write_binary(string file_name, string mode) {
output.write(reinterpret_cast<char *>(&idfc), sizeof(int));
output.write(reinterpret_cast<char *>(&number_of_scales), sizeof(int));
for (int i = 0; i < number_of_scales; i++)
output.write(reinterpret_cast<char *>(&(xi_vec[i])), sizeof(double));
output.write(reinterpret_cast<char *>(&(scale_vec[i])), sizeof(double));
for (int i115 = 1; i115 <= number_of_spheres; i115++) {
if (iog_vec[i115 - 1] < i115) continue;
output.write(reinterpret_cast<char *>(&(nshl_vec[i115 - 1])), sizeof(int));
......@@ -741,7 +713,6 @@ void ScattererConfiguration::write_binary(string file_name, string mode) {
}
}
}
if (is_new_vector) delete[] xi_vec;
output.close();
}
}
......@@ -790,10 +761,10 @@ void ScattererConfiguration::write_formatted(string file_name) {
case 1:
fprintf(output, " JXI WNS WLS PUS EVS XIV\n");
for (int i = 0; i < number_of_scales; i++) {
wn_vec[i] = scale_vec[i];
wl_vec[i] = two_pi / wn_vec[i];
xi_vec[i] = 3.0e8 * wn_vec[i] / wp;
xi_vec[i] = scale_vec[i];
pu_vec[i] = xi_vec[i] * wp;
wn_vec[i] = pu_vec[i] / 3.0e8;
wl_vec[i] = two_pi / wn_vec[i];
ev_vec[i] = pu_vec[i] * evc;
fprintf(
output,
......@@ -810,10 +781,10 @@ void ScattererConfiguration::write_formatted(string file_name) {
case 2:
fprintf(output, " JXI WLS WNS PUS EVS XIV\n");
for (int i = 0; i < number_of_scales; i++) {
wl_vec[i] = scale_vec[i];
wn_vec[i] = two_pi / wl_vec[i];
xi_vec[i] = 3.0e8 * wn_vec[i] / wp;
xi_vec[i] = scale_vec[i];
pu_vec[i] = xi_vec[i] * wp;
wn_vec[i] = pu_vec[i] / 3.0e8;
wl_vec[i] = two_pi / wn_vec[i];
ev_vec[i] = pu_vec[i] * evc;
fprintf(
output,
......@@ -830,8 +801,8 @@ void ScattererConfiguration::write_formatted(string file_name) {
case 3:
fprintf(output, " JXI PUS WNS WLS EVS XIV\n");
for (int i = 0; i < number_of_scales; i++) {
pu_vec[i] = scale_vec[i];
xi_vec[i] = pu_vec[i] / wp;
xi_vec[i] = scale_vec[i];
pu_vec[i] = xi_vec[i] * wp;
wn_vec[i] = pu_vec[i] / 3.0e8;
wl_vec[i] = two_pi / wn_vec[i];
ev_vec[i] = pu_vec[i] * evc;
......@@ -850,11 +821,11 @@ void ScattererConfiguration::write_formatted(string file_name) {
case 4:
fprintf(output, " JXI EVS WNS WLS PUS XIV\n");
for (int i = 0; i < number_of_scales; i++) {
ev_vec[i] = scale_vec[i];
pu_vec[i] = ev_vec[i] / evc;
xi_vec[i] = pu_vec[i] / wp;
xi_vec[i] = scale_vec[i];
pu_vec[i] = xi_vec[i] * wp;
wn_vec[i] = pu_vec[i] / 3.0e8;
wl_vec[i] = two_pi / wn_vec[i];
ev_vec[i] = pu_vec[i] * evc;
fprintf(
output,
"%5d%13.4lE%13.4lE%13.4lE%13.4lE%13.4lE\n",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment