diff --git a/src/cluster/cluster.cpp b/src/cluster/cluster.cpp index 89aca339d081febad939ff122d66c46bf48a87ff..94bec3c35c601f5433b063b2350673b482e33625 100644 --- a/src/cluster/cluster.cpp +++ b/src/cluster/cluster.cpp @@ -114,13 +114,11 @@ void cluster(string config_file, string data_file, string output_path) { FILE *output = fopen((output_path + "/c_OCLU").c_str(), "w"); int jer = 0, lcalc = 0; complex<double> arg(0.0, 0.0), ccsam(0.0, 0.0); - int max_ici = 0; - for (int insh = 0; insh < nsph; insh++) { - int nsh = sconf->nshl_vec[insh]; - int ici = (nsh + 1) / 2; - if (ici > max_ici) max_ici = ici; + int configurations = 0; + for (int ci = 1; ci <= nsph; ci++) { + if (sconf->iog_vec[ci -1] >= ci) configurations++; } - C2 *c2 = new C2(nsph, max_ici, npnt, npntts); + C2 *c2 = new C2(nsph, configurations, npnt, npntts); complex<double> **am = new complex<double>*[mxndm]; for (int ai = 0; ai < mxndm; ai++) am[ai] = new complex<double>[mxndm](); const int ndi = c4->nsph * c4->nlim; @@ -278,7 +276,7 @@ void cluster(string config_file, string data_file, string output_path) { fprintf(output, " \n"); } for (int jxi488 = 1; jxi488 <= nxi; jxi488++) { - printf("INFO: running scale iteration %d...", jxi488); + printf("INFO: running scale iteration %d of %d...", jxi488, nxi); int jaw = 1; fprintf(output, "========== JXI =%3d ====================\n", jxi488); double xi = sconf->scale_vec[jxi488 - 1]; diff --git a/src/libnptm/Configuration.cpp b/src/libnptm/Configuration.cpp index 7e61d9721df81aad0face405a195d6e2469ef65e..7eb58c4c0bd5738d7632beb650fa943e13f0efad 100644 --- a/src/libnptm/Configuration.cpp +++ b/src/libnptm/Configuration.cpp @@ -281,7 +281,6 @@ ScattererConfiguration* ScattererConfiguration::from_dedfb(string dedfb_file_nam throw ex; } int nsph, ies; - int max_ici = 0; re = regex("[0-9]+"); string str_target = file_lines[last_read_line]; for (int ri = 0; ri < 2; ri++) { @@ -708,23 +707,25 @@ ScattererConfiguration* ScattererConfiguration::from_legacy(string file_name) { void ScattererConfiguration::print() { int ies = (use_external_sphere)? 1 : 0; - int max_ici = 0; + int configurations = 0; + for (int ci = 1; ci <= number_of_spheres; ci++) { + if (iog_vec[ci - 1] >= ci) configurations++; + } printf("### CONFIGURATION DATA ###\n"); printf("NSPH = %d\n", number_of_spheres); printf("ROS = ["); - for (int i = 0; i < number_of_spheres; i++) printf("\t%lg", radii_of_spheres[i]); + for (int i = 0; i < configurations; i++) printf("\t%lg", radii_of_spheres[i]); printf("\t]\n"); printf("IOG = ["); for (int i = 0; i < number_of_spheres; i++) printf("\t%d", iog_vec[i]); printf("\t]\n"); printf("NSHL = ["); - for (int i = 0; i < number_of_spheres; i++) printf("\t%d", nshl_vec[i]); + for (int i = 0; i < configurations; i++) printf("\t%d", nshl_vec[i]); printf("\t]\n"); printf("RCF = [\n"); - for (int i = 1; i <= number_of_spheres; i++) { + for (int i = 1; i <= configurations; i++) { int nsh = nshl_vec[i - 1]; if (i == 1) nsh += ies; - if (max_ici < (nsh + 1) / 2) max_ici = (nsh + 1) / 2; printf(" ["); for (int ns = 0; ns < nsh; ns++) { printf("\t%lg", rcf[i - 1][ns]); @@ -738,7 +739,7 @@ void ScattererConfiguration::print() { for (int i = 0; i < number_of_scales; i++) printf("\t%lg", scale_vec[i]); printf("\t]\n"); printf("DC0M = [\n"); - for (int i = 0; i < max_ici; i++) { + for (int i = 0; i < configurations; i++) { printf(" [\n"); for (int j = 0; j < number_of_spheres; j++) { printf(" ["); @@ -765,14 +766,15 @@ void ScattererConfiguration::write_binary(string file_name, string mode) { } void ScattererConfiguration::write_hdf5(string file_name) { - const double two_pi = acos(0.0) * 4.0; - const double evc = 6.5821188e-16; int ies = (use_external_sphere)? 1 : 0; - int max_ici = 0; List<string> rec_name_list(1); List<string> rec_type_list(1); List<void *> rec_ptr_list(1); string str_type, str_name; + int configurations = 0; + for (int ci = 1; ci <= number_of_spheres; ci++) { + if(iog_vec[ci - 1] >= ci) configurations++; + } rec_name_list.set(0, "NSPH"); rec_type_list.set(0, "INT32_(1)"); rec_ptr_list.set(0, &number_of_spheres); @@ -811,7 +813,6 @@ void ScattererConfiguration::write_hdf5(string file_name) { rec_ptr_list.append(&(radii_of_spheres[i115 - 1])); // was not from IOG int nsh = nshl_vec[i115 - 1]; // was not from IOG if (i115 == 1) nsh += ies; - if (max_ici < (nsh + 1) / 2) max_ici = nsh + 1 / 2; str_name = "RCF_" + to_string(i115); // was not from IOG str_type = "FLOAT64_(" + to_string(nsh) + ")"; rec_name_list.append(str_name); @@ -820,7 +821,7 @@ void ScattererConfiguration::write_hdf5(string file_name) { } int dim3 = (idfc == 0) ? number_of_scales : 1; - int dc0m_size = 2 * dim3 * number_of_spheres * max_ici; + int dc0m_size = 2 * dim3 * number_of_spheres * configurations; double *dc0m = new double[dc0m_size]; int dc0_index = 0; for (int jxi468 = 1; jxi468 <= number_of_scales; jxi468++) {