Skip to content

Commit e7ba46c

Browse files
author
dyzheng
committed
Revert: erroneous PW sigma_y sign fix was wrong
PW kernel uses different 2x2 matrix layout from LCAO: kernel: ps(up)=coeff[0]*becp(up)+coeff[2]*becp(dn) ps(dn)=coeff[1]*becp(up)+coeff[3]*becp(dn) So: coeff[2]=H_DS[up,dn], coeff[1]=H_DS[dn,up] LCAO: coeff[1]=H_DS[up,dn], coeff[2]=H_DS[dn,up] The indices are SWAPPED. Old PW code was already correct. Reverting to original convention: coeff[1]=(+lambda_y), coeff[2]=(-lambda_y)
1 parent 9ba3829 commit e7ba46c

3 files changed

Lines changed: 6 additions & 6 deletions

File tree

source/source_pw/module_pwdft/kernels/force_op.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -406,8 +406,8 @@ struct cal_force_nl_op<FPTYPE, base_device::DEVICE_CPU>
406406
int iat = iat0 + ia;
407407
int sum = sum0 + ia * nproj;
408408
const std::complex<FPTYPE> coefficients0(lambda[iat*3+2], 0.0);
409-
const std::complex<FPTYPE> coefficients1(lambda[iat*3] , -lambda[iat*3+1]);
410-
const std::complex<FPTYPE> coefficients2(lambda[iat*3] , lambda[iat*3+1]);
409+
const std::complex<FPTYPE> coefficients1(lambda[iat*3] , lambda[iat*3+1]);
410+
const std::complex<FPTYPE> coefficients2(lambda[iat*3] , -lambda[iat*3+1]);
411411
const std::complex<FPTYPE> coefficients3(-lambda[iat*3+2], 0.0);
412412
for (int ib = 0; ib < nbands_occ; ib++)
413413
{

source/source_pw/module_pwdft/kernels/stress_op.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,8 +359,8 @@ struct cal_stress_nl_op<FPTYPE, base_device::DEVICE_CPU>
359359
if (npol == 2)
360360
{
361361
const std::complex<FPTYPE> coefficients0(lambda[iat*3+2], 0.0);
362-
const std::complex<FPTYPE> coefficients1(lambda[iat*3] , -lambda[iat*3+1]);
363-
const std::complex<FPTYPE> coefficients2(lambda[iat*3] , lambda[iat*3+1]);
362+
const std::complex<FPTYPE> coefficients1(lambda[iat*3] , lambda[iat*3+1]);
363+
const std::complex<FPTYPE> coefficients2(lambda[iat*3] , -lambda[iat*3+1]);
364364
const std::complex<FPTYPE> coefficients3(-lambda[iat*3+2], 0.0);
365365
for (int ib = 0; ib < nbands_occ; ib++)
366366
{

source/source_pw/module_pwdft/op_pw_proj.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,8 @@ void OnsiteProj<OperatorPW<T, Device>>::cal_ps_delta_spin(const int npol, const
163163
for(int iat=0;iat<this->ucell->nat;iat++)
164164
{
165165
tmp_lambda_coeff[iat * 4] = std::complex<double>(lambda[iat][2], 0.0);
166-
tmp_lambda_coeff[iat * 4 + 1] = std::complex<double>(lambda[iat][0], -lambda[iat][1]);
167-
tmp_lambda_coeff[iat * 4 + 2] = std::complex<double>(lambda[iat][0], lambda[iat][1]);
166+
tmp_lambda_coeff[iat * 4 + 1] = std::complex<double>(lambda[iat][0], lambda[iat][1]);
167+
tmp_lambda_coeff[iat * 4 + 2] = std::complex<double>(lambda[iat][0], -lambda[iat][1]);
168168
tmp_lambda_coeff[iat * 4 + 3] = std::complex<double>(-lambda[iat][2], 0.0);
169169
}
170170
}

0 commit comments

Comments
 (0)