Skip to content

Commit 47a085c

Browse files
linpeizePeizeLin
andauthored
fix bug in Matrix_Orbs22::cal_grad_overlap_matrix() (deepmodeling#7254)
Co-authored-by: linpz <linpz@mail.ustc.edu.cn>
1 parent 3669a02 commit 47a085c

1 file changed

Lines changed: 34 additions & 38 deletions

File tree

source/source_lcao/module_ri/Matrix_Orbs22.hpp

Lines changed: 34 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ RI::Tensor<Tdata> Matrix_Orbs22::cal_overlap_matrix(
118118
case Matrix_Order::B2A2A1B1: m(iB2,iA2,iA1,iB1) = overlap; break;
119119
case Matrix_Order::B2A2B1A1: m(iB2,iA2,iB1,iA1) = overlap; break;
120120
case Matrix_Order::B2B1A1A2: m(iB2,iB1,iA1,iA2) = overlap; break;
121-
case Matrix_Order::B2B1A2A1: m(iB2,iB1,iA2,iA1) = overlap; break;
121+
case Matrix_Order::B2B1A2A1: m(iB2,iB1,iA2,iA1) = overlap; break;
122122
default: throw std::invalid_argument(std::string(__FILE__)+" line "+std::to_string(__LINE__));
123123
}
124124
}
@@ -217,44 +217,40 @@ std::array<RI::Tensor<Tdata>,3> Matrix_Orbs22::cal_grad_overlap_matrix(
217217
const size_t NB2 = co10.first;
218218
for( size_t MB2=0; MB2!=2*LB2+1; ++MB2 )
219219
{
220-
const Tdata overlap = co10.second.cal_overlap( tauA*lat0, tauB*lat0, MA1, MA2, MB1, MB2 );
221-
switch(matrix_order)
222-
{
223-
const std::array<double,3> grad_overlap = RI_Util::Vector3_to_array3(co10.second.cal_grad_overlap( tauA*lat0, tauB*lat0, MA1, MA2, MB1, MB2 ));
224-
const size_t iA1 = index_A1[TA][LA1][NA1][MA1];
225-
const size_t iA2 = index_A2[TA][LA2][NA2][MA2];
226-
const size_t iB1 = index_B1[TB][LB1][NB1][MB1];
227-
const size_t iB2 = index_B2[TB][LB2][NB2][MB2];
228-
for(size_t i=0; i<m.size(); ++i)
220+
const std::array<double,3> grad_overlap = RI_Util::Vector3_to_array3(co10.second.cal_grad_overlap( tauA*lat0, tauB*lat0, MA1, MA2, MB1, MB2 ));
221+
const size_t iA1 = index_A1[TA][LA1][NA1][MA1];
222+
const size_t iA2 = index_A2[TA][LA2][NA2][MA2];
223+
const size_t iB1 = index_B1[TB][LB1][NB1][MB1];
224+
const size_t iB2 = index_B2[TB][LB2][NB2][MB2];
225+
for(size_t i=0; i<m.size(); ++i)
226+
{
227+
switch(matrix_order)
229228
{
230-
switch(matrix_order)
231-
{
232-
case Matrix_Order::A1A2B1B2: m[i](iA1,iA2,iB1,iB2) = grad_overlap; break;
233-
case Matrix_Order::A1A2B2B1: m[i](iA1,iA2,iB2,iB1) = grad_overlap; break;
234-
case Matrix_Order::A1B1A2B2: m[i](iA1,iB1,iA2,iB2) = grad_overlap; break;
235-
case Matrix_Order::A1B1B2A2: m[i](iA1,iB1,iB2,iA2) = grad_overlap; break;
236-
case Matrix_Order::A1B2A2B1: m[i](iA1,iB2,iA2,iB1) = grad_overlap; break;
237-
case Matrix_Order::A1B2B1A2: m[i](iA1,iB2,iB1,iA2) = grad_overlap; break;
238-
case Matrix_Order::A2A1B1B2: m[i](iA2,iA1,iB1,iB2) = grad_overlap; break;
239-
case Matrix_Order::A2A1B2B1: m[i](iA2,iA1,iB2,iB1) = grad_overlap; break;
240-
case Matrix_Order::A2B1A1B2: m[i](iA2,iB1,iA1,iB2) = grad_overlap; break;
241-
case Matrix_Order::A2B1B2A1: m[i](iA2,iB1,iB2,iA1) = grad_overlap; break;
242-
case Matrix_Order::A2B2A1B1: m[i](iA2,iB2,iA1,iB1) = grad_overlap; break;
243-
case Matrix_Order::A2B2B1A1: m[i](iA2,iB2,iB1,iA1) = grad_overlap; break;
244-
case Matrix_Order::B1A1A2B2: m[i](iB1,iA1,iA2,iB2) = grad_overlap; break;
245-
case Matrix_Order::B1A1B2A2: m[i](iB1,iA1,iB2,iA2) = grad_overlap; break;
246-
case Matrix_Order::B1A2A1B2: m[i](iB1,iA2,iA1,iB2) = grad_overlap; break;
247-
case Matrix_Order::B1A2B2A1: m[i](iB1,iA2,iB2,iA1) = grad_overlap; break;
248-
case Matrix_Order::B1B2A1A2: m[i](iB1,iB2,iA1,iA2) = grad_overlap; break;
249-
case Matrix_Order::B1B2A2A1: m[i](iB1,iB2,iA2,iA1) = grad_overlap; break;
250-
case Matrix_Order::B2A1A2B1: m[i](iB2,iA1,iA2,iB1) = grad_overlap; break;
251-
case Matrix_Order::B2A1B1A2: m[i](iB2,iA1,iB1,iA2) = grad_overlap; break;
252-
case Matrix_Order::B2A2A1B1: m[i](iB2,iA2,iA1,iB1) = grad_overlap; break;
253-
case Matrix_Order::B2A2B1A1: m[i](iB2,iA2,iB1,iA1) = grad_overlap; break;
254-
case Matrix_Order::B2B1A1A2: m[i](iB2,iB1,iA1,iA2) = grad_overlap; break;
255-
case Matrix_Order::B2B1A2A1: m[i](iB2,iB1,iA2,iA1) = grad_overlap; break;
256-
default: throw std::invalid_argument(std::string(__FILE__)+" line "+std::to_string(__LINE__));
257-
}
229+
case Matrix_Order::A1A2B1B2: m[i](iA1,iA2,iB1,iB2) = grad_overlap; break;
230+
case Matrix_Order::A1A2B2B1: m[i](iA1,iA2,iB2,iB1) = grad_overlap; break;
231+
case Matrix_Order::A1B1A2B2: m[i](iA1,iB1,iA2,iB2) = grad_overlap; break;
232+
case Matrix_Order::A1B1B2A2: m[i](iA1,iB1,iB2,iA2) = grad_overlap; break;
233+
case Matrix_Order::A1B2A2B1: m[i](iA1,iB2,iA2,iB1) = grad_overlap; break;
234+
case Matrix_Order::A1B2B1A2: m[i](iA1,iB2,iB1,iA2) = grad_overlap; break;
235+
case Matrix_Order::A2A1B1B2: m[i](iA2,iA1,iB1,iB2) = grad_overlap; break;
236+
case Matrix_Order::A2A1B2B1: m[i](iA2,iA1,iB2,iB1) = grad_overlap; break;
237+
case Matrix_Order::A2B1A1B2: m[i](iA2,iB1,iA1,iB2) = grad_overlap; break;
238+
case Matrix_Order::A2B1B2A1: m[i](iA2,iB1,iB2,iA1) = grad_overlap; break;
239+
case Matrix_Order::A2B2A1B1: m[i](iA2,iB2,iA1,iB1) = grad_overlap; break;
240+
case Matrix_Order::A2B2B1A1: m[i](iA2,iB2,iB1,iA1) = grad_overlap; break;
241+
case Matrix_Order::B1A1A2B2: m[i](iB1,iA1,iA2,iB2) = grad_overlap; break;
242+
case Matrix_Order::B1A1B2A2: m[i](iB1,iA1,iB2,iA2) = grad_overlap; break;
243+
case Matrix_Order::B1A2A1B2: m[i](iB1,iA2,iA1,iB2) = grad_overlap; break;
244+
case Matrix_Order::B1A2B2A1: m[i](iB1,iA2,iB2,iA1) = grad_overlap; break;
245+
case Matrix_Order::B1B2A1A2: m[i](iB1,iB2,iA1,iA2) = grad_overlap; break;
246+
case Matrix_Order::B1B2A2A1: m[i](iB1,iB2,iA2,iA1) = grad_overlap; break;
247+
case Matrix_Order::B2A1A2B1: m[i](iB2,iA1,iA2,iB1) = grad_overlap; break;
248+
case Matrix_Order::B2A1B1A2: m[i](iB2,iA1,iB1,iA2) = grad_overlap; break;
249+
case Matrix_Order::B2A2A1B1: m[i](iB2,iA2,iA1,iB1) = grad_overlap; break;
250+
case Matrix_Order::B2A2B1A1: m[i](iB2,iA2,iB1,iA1) = grad_overlap; break;
251+
case Matrix_Order::B2B1A1A2: m[i](iB2,iB1,iA1,iA2) = grad_overlap; break;
252+
case Matrix_Order::B2B1A2A1: m[i](iB2,iB1,iA2,iA1) = grad_overlap; break;
253+
default: throw std::invalid_argument(std::string(__FILE__)+" line "+std::to_string(__LINE__));
258254
}
259255
}
260256
}

0 commit comments

Comments
 (0)