@@ -14,18 +14,21 @@ namespace LR_Util
1414 auto dr_real = DMR_real.get_DMR_vector ()[is];
1515 assert (dr != nullptr );
1616 assert (dr_real != nullptr );
17- for (int ia = 0 ;ia < nat;ia++)
17+ for (int ia = 0 ;ia < nat;ia++) {
1818 for (int ja = 0 ;ja < nat;ja++)
1919 {
2020 auto ap = dr->find_pair (ia, ja);
2121 auto ap_real = dr_real->find_pair (ia, ja);
2222 for (int iR = 0 ;iR < ap->get_R_size ();++iR)
2323 {
24+ // R index may be different between the two HContainers, find by R value instead of R-index
25+ auto dR = ap->get_R_index (iR);
2426 auto ptr = ap->get_HR_values (iR).get_pointer ();
25- auto ptr_real = ap_real->get_HR_values (iR ).get_pointer ();
26- for (int i = 0 ;i < ap->get_size ();++i) ptr_real[i] = (get_imag ? ptr[i].imag () : ptr[i].real ());
27+ auto ptr_real = ap_real->get_HR_values (dR. x , dR. y , dR. z ).get_pointer ();
28+ for (int i = 0 ;i < ap->get_size ();++i) { ptr_real[i] = (get_imag ? ptr[i].imag () : ptr[i].real ()); }
2729 }
2830 }
31+ }
2932 }
3033 }
3134
@@ -35,17 +38,20 @@ namespace LR_Util
3538 const char & type)
3639 {
3740 bool get_imag = (type == ' I' || type == ' i' );
38- for (int ia = 0 ;ia < nat;ia++)
41+ for (int ia = 0 ;ia < nat;ia++) {
3942 for (int ja = 0 ;ja < nat;ja++)
4043 {
4144 auto ap = HR.find_pair (ia, ja);
4245 auto ap_real = HR_real.find_pair (ia, ja);
4346 for (int iR = 0 ;iR < ap->get_R_size ();++iR)
4447 {
48+ // R index may be different between the two HContainers, find by R value instead of R-index
49+ auto dR = ap->get_R_index (iR);
4550 auto ptr = ap->get_HR_values (iR).get_pointer ();
46- auto ptr_real = ap_real->get_HR_values (iR ).get_pointer ();
47- for (int i = 0 ;i < ap->get_size ();++i) get_imag ? ptr[i].imag (ptr_real[i]) : ptr[i].real (ptr_real[i]);
51+ auto ptr_real = ap_real->get_HR_values (dR. x , dR. y , dR. z ).get_pointer ();
52+ for (int i = 0 ;i < ap->get_size ();++i) { get_imag ? ptr[i].imag (ptr_real[i]) : ptr[i].real (ptr_real[i]); }
4853 }
4954 }
55+ }
5056 }
5157}
0 commit comments