From a0563c339c292ceafa83cc1bddc3012e4290b1e6 Mon Sep 17 00:00:00 2001 From: Giovanni La Mura <giovanni.lamura@inaf.it> Date: Fri, 14 Feb 2025 15:02:29 +0100 Subject: [PATCH] Fix configuration index bug in legacy output --- src/inclusion/inclusion.cpp | 4 ++-- src/libnptm/outputs.cpp | 24 ++++++++++++++---------- src/testing/test_inclusion_outputs.cpp | 10 ++++------ test_data/inclusion/c_OINCLU.hd5 | Bin 56532 -> 56532 bytes 4 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/inclusion/inclusion.cpp b/src/inclusion/inclusion.cpp index 1d28b0a5..25b6880f 100644 --- a/src/inclusion/inclusion.cpp +++ b/src/inclusion/inclusion.cpp @@ -1599,8 +1599,7 @@ int inclusion_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryCo } } } // i168 loop - last_configuration++; - oindex = (jindex - 1) * (num_configs + 1) + last_configuration - 1; + oindex = (jindex - 1) * (num_configs + 1) + num_configs; output->vec_sphere_sizes[oindex] = sze; output->vec_sphere_ref_indices[oindex] = entn; // label 160 @@ -2081,6 +2080,7 @@ int inclusion_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryCo #ifdef USE_NVTX nvtxRangePop(); #endif + if (jer == 0) output->vec_jxi[jindex - 1] = jxi488; interval_end = chrono::high_resolution_clock::now(); elapsed = interval_end - interval_start; message = "INFO: angle loop for scale " + to_string(jxi488) + " took " + to_string(elapsed.count()) + "s.\n"; diff --git a/src/libnptm/outputs.cpp b/src/libnptm/outputs.cpp index e121e95f..4d6e61a2 100644 --- a/src/libnptm/outputs.cpp +++ b/src/libnptm/outputs.cpp @@ -4058,7 +4058,7 @@ int InclusionOutputInfo::write_legacy(const std::string &output) { int result = 0; FILE *p_outfile = fopen(output.c_str(), "w"); if (p_outfile != NULL) { - if (vec_xi[0] == 1) { + if (vec_jxi[0] == 1) { fprintf(p_outfile, " READ(IR,*)NSPH,LI,LE,MXNDM,INPOL,NPNT,NPNTTS,IAVM,ISAM\n"); #ifdef USE_ILP64 fprintf( @@ -4102,7 +4102,10 @@ int InclusionOutputInfo::write_legacy(const std::string &output) { if (idfc < 0) { fprintf( p_outfile, " VK=%15.7lE, XI IS SCALE FACTOR FOR LENGTHS\n \n", vec_vk[0]); } - for (int jxi = 0; jxi < xi_block_size; jxi++) { + // End preamble writing + } + // Wavelength loop + for (int jxi = 0; jxi < xi_block_size; jxi++) { int done_dirs = 0; double alamb = 2.0 * 3.141592653589793238 / vec_vk[jxi]; fprintf(p_outfile, "========== JXI =%3d ====================\n", vec_jxi[jxi]); @@ -4119,20 +4122,22 @@ int InclusionOutputInfo::write_legacy(const std::string &output) { break; } for (int i168 = 1; i168 <= configurations; i168++) { - if (vec_sphere_ref_indices[i168 - 1] == cc0) { - fprintf(p_outfile, " SPHERE N.%2d: SIZE=%15.7lE\n", i168, vec_sphere_sizes[i168 - 1]); + int cindex = jxi * (configurations + 1) + i168 - 1; + if (vec_sphere_ref_indices[cindex] == cc0) { + fprintf(p_outfile, " SPHERE N.%2d: SIZE=%15.7lE\n", i168, vec_sphere_sizes[cindex]); } else { fprintf( p_outfile, " SPHERE N.%2d: SIZE=%15.7lE, REFRACTIVE INDEX=%15.7lE%15.7lE\n", - i168, vec_sphere_sizes[i168 - 1], real(vec_sphere_ref_indices[i168 - 1]), - imag(vec_sphere_ref_indices[i168 - 1]) + i168, vec_sphere_sizes[cindex], real(vec_sphere_ref_indices[cindex]), + imag(vec_sphere_ref_indices[cindex]) ); } } // i168 configuration loop + int cindex = jxi * (configurations + 1) + configurations; fprintf( p_outfile, " EXT. SPHERE: SIZE=%15.7lE, REFRACTIVE INDEX=%15.7lE%15.7lE\n", - vec_sphere_sizes[configurations], real(vec_sphere_ref_indices[configurations]), - imag(vec_sphere_ref_indices[configurations]) + vec_sphere_sizes[cindex], real(vec_sphere_ref_indices[cindex]), + imag(vec_sphere_ref_indices[cindex]) ); fprintf(p_outfile, " ENSEMBLE AVERAGE, MODE%2d\n", iavm); if (inpol == 0) fprintf(p_outfile, " LIN -1\n"); @@ -4465,8 +4470,7 @@ int InclusionOutputInfo::write_legacy(const std::string &output) { } // jths loop } // jph loop } // jth loop - } // jxi wavelength loop - } + } // jxi wavelength loop fclose(p_outfile); } else { result = -1; diff --git a/src/testing/test_inclusion_outputs.cpp b/src/testing/test_inclusion_outputs.cpp index e546e898..ac93471a 100644 --- a/src/testing/test_inclusion_outputs.cpp +++ b/src/testing/test_inclusion_outputs.cpp @@ -27,23 +27,21 @@ int test_inclusion_devel(); int main() { int result = 0; - // result += test_inclusion_hdf5_output(); // 1 if failed + result += test_inclusion_hdf5_output(); // 1 if failed result += test_inclusion_devel(); // 10 if failed return result; } int test_inclusion_hdf5_output() { int result = 0; - /* try { - const string hdf5_file = "../../test_data/cluster/c_OCLU_24.hd5"; - ClusterOutputInfo *oi = new ClusterOutputInfo(hdf5_file); - oi->write("c_OCLU_24", "LEGACY"); + const string hdf5_file = "../../test_data/inclusion/c_OINCLU.hd5"; + InclusionOutputInfo *oi = new InclusionOutputInfo(hdf5_file); + oi->write("c_OINCLU", "LEGACY"); delete oi; } catch (const exception& ex) { result = 1; } - */ return result; } diff --git a/test_data/inclusion/c_OINCLU.hd5 b/test_data/inclusion/c_OINCLU.hd5 index b136f7b2ec732e52174c4a69a88e45c7876394cf..c32b085708391b2755357c05f1fb32a63f5772a0 100644 GIT binary patch delta 1455 zcmcbzlljU{<_$}jna+AoKBqBZvl+`VMy9jgoBy%$foVQ=2rb6}q4hW+v>g|O_Tz@o zaXb(@kCzQ>)<4!alamCMK*s)KT{YQ2C<kQfJRyjxb;1yOp9q9LCkmnOi9zUh;>(yo zTK9>(ncO4|HU-3-Bm-wIk_9vUl)E+u$ejT@RZan-Sx*r{+bKb4KjkpEVUyIr+CYXa zQin3POs>)h0=e#-21Fsq?Ls<WS&-Ww=%j$$0%Cs9g)t}TgFTd|53!@p07CZ}z605{ zxz0ok<fh5<gceP<Fas%_JWuG&<VogWQ$fr{77(WI+sT_P6+sr*#dmE^u!8tS&jw<i zoh^j+vxCra_7Eq&i+nqIu@hL^zo@s9H#>uwAaf77K+F|-Gx?G$ocYKN&iv#KXEJ%h znL=K0rjj?92@2W^-Vo=^^MzQy&JSX}-0HWJKL>*C)LZj*GIKD9xw+3!iE;7=je^ZP zLcrQ4``NvnTpSLPn+)=tLIhZN^SelhY5$@iG+zvamWzeZdT|iiE*@eVD7KoCz>Wej zCndv~i&DT$yR}`L15zP|%cVm!>t#S_yG#h}mxVBFQZ85<C~_k5ppmm^az;Lw3G&<F z0=T0K3L)m&6+_J_fzWZK5IV06Lf4f;%wKon?c~E%VD0-(zMXuz8q7R*>h0vmHDIRS zj<=IP*MgaGJKs)bt_L&ocD<b}+yG|Q?S4C1xe?6di+MBIs0r*?5Ywp{%mjtyhh~Vg z_O(K+Ki3AK@3ljm0aC8i4OR|f8ufsg|5m)6?A!}B`ki>!<`2DRct8n%-z<pcbF(4z zy*Uv2-CPL$Zyv-@kcXTXfwhA?6ucPB1bHZV3784;Q1MbQ6Xc=hWnd;KB^fM-xcA=* zh>?7&Ahg_S2(7mULffr{Smjspc5?Fuu=cppx05Gt1T*u>-cDY;3Cw&q_wD4(o54(Q zkZ%DqK`y+!70i5hrfYM<Hi)f$J0PaV?S#;IyC8JkZV27C2SU%=3$Y!P1|A;(8v{z; zpAUkWcExWeGam*sLCzCC0%n5jIdBAGPv0@9ImaRNx)Tt3-$@94?i7T+cN#*!I|H!~ iloDT@2PZ!e^T!1!vuW~+i&t0~85kItHXpns%mn}i$7SLG delta 1464 zcmcbzlljU{<_$}jnVhsIpVOGI*^K2FBa@T%=6|ewV49B|Ld$VLXgy8{ZN~+n{kS1? z91n!f<7ESz^^f(<<Rn2Qkg@+*S4}n$$^n@=PY9xFoiK#nCjz0*i9+amVi5YB_%bGt z)_o#xCO1igO#v|{$-tS5WWh{7<*v;Ea%aF!l~aId)>DMgc1jT1PdN;3*d#TuHjrV9 z)S=8RldCj>K(0Hd0Z|BYyO0i87UcF1x-ygh=y-tK1L3B?m<B>#lfCpo3ODEJLoBN^ zfY5!0??9Grt}_t>Id1Yip+%D|%s_!Kd7jXl$&<`My1>ju77(WI+sT_P6+uSZ#dmE^ zu!49>&jw<ioh^j+vxCra_7Jzei+nqIu@hL^zo@s9H#>uwAS({JK+F|-Gx?G$ocYKN z&iv#KXEJ%hnL=K0rjj?92@2y2-Vo=^^MzQy&JSX}-0HWJKL>*C)LZj*GIKD9xw+3! ziE;7=je^ZPLcrQ4``NvnTpSLPn+)=tLIhZN^SelhY5$@iG+zvamWzeZdT|iiE*@eV zDB7Bmz>WejCndv~i&DT$yR}`L15zP|%cVm!>t#S_yG#h}mxVBFQZ85<C~_k5ppmm^ zaz;Lw3G&<F0=T0K3L)m&6+_J_fzWZK5IV06Lf4f;%wKon?c~E%VD0-(zMXuz8q7R* z>h0vmHDIRSj<=IP*MgaGJKs)bt_L&ocD<b}+yG|Q?S4C1xe?6di+MBIs0r*?5Ywp{ z%mjtyhh~Vg_O(K+Ki3AK@3ljm0aC8i4OR|f8ufsg|5m)6?A!}B`ki>!<`2DRctAN| z-z<pcbF(4zy*Uv2-CPL$Zyv-@kcXTXfwhA?6ucPB1bHZV3784;Q1MbQ6Xc=hWnd;K zB^fM-xcA=*h>?7&Ahg_S2(7mULffr{Smjspc5?Fuu=cppx05Gt1T*u>-cDY;3Cw&q z_wD4(o54(QkZ%DqK`y+!70i5hrfYM<Hi)f$J0PaV?S#;IyC8JkZV27C2SU%=3$Y!P z1|A;(8v{z;pAUkWcExWeGam*sLCzCC0%n5jIdBAGPv0@9ImaRNx)Tt3-$@94?i7T+ ncN#*!I|H!~loDT@2PZ!e^T!1!vuW~+i&t0~Kw$I1OTt_LEYJn- -- GitLab