Skip to content

Commit 420e4d5

Browse files
committed
fix nan error
1 parent e695f8a commit 420e4d5

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

source/module_hamilt_general/module_xc/xc_functional_NCLibxc_gga.cpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,19 @@ void XC_Functional::postlibxc_gga(int xc_id, const std::vector<double>& rho_up,
209209
f2[i] = v2rho2_2[i]-div_h2[i]+div_div_H2[i] - div_grad_vsigma_2[i] ;
210210
f3[i] = v2rho2_3[i]-2.0*div_h3[i]+div_div_H3[i]-2.0*div_grad_vsigma_3[i] ;
211211
}
212+
#ifdef _OPENMP
213+
#pragma omp parallel for schedule(static, 1024)
214+
#endif
215+
for (size_t i = 0; i < rho_up.size(); ++i) {
216+
if (rho_up[i] <= 0.0 || rho_down[i] <= 0.0) {
217+
e[i] = 0.0;
218+
v1[i] = 0.0;
219+
v2[i] = 0.0;
220+
f1[i] = 0.0;
221+
f2[i] = 0.0;
222+
f3[i] = 0.0;
223+
}
224+
}
212225
}
213226

214227
///////////////////////////////////////////////////////////////////////////////////
@@ -254,8 +267,12 @@ std::pair<std::vector<double>, std::vector<Matrix2x2>> XC_Functional::gga_mc(int
254267

255268
for (size_t i = 0; i < num_points; ++i)
256269
{
257-
Eeff[i] = e[i] + 0.5 * (m_omega[i] / n[i]) * (v1[i] - v2[i]);
258-
270+
if (n[i] == 0.0){
271+
Eeff[i] = 0.0;
272+
}
273+
else{
274+
Eeff[i] = e[i] + 0.5 * (m_omega[i] / n[i]) * (v1[i] - v2[i]);
275+
}
259276
Matrix2x2 pauli_matrix = NCLibxc::construct_pauli_matrix(x, y, z);
260277
Matrix2x2 term1 = NCLibxc::scalar_multiply(((v1[i] - v2[i]) + 0.25 * m_omega[i] * (f1[i] + f3[i] - 2 * f2[i])), pauli_matrix);
261278
Matrix2x2 term2 = NCLibxc::scalar_multiply((0.5 * (v1[i] + v2[i]) + 0.25 * m_omega[i] * (f1[i] - f3[i])), NCLibxc::identity_matrix());

0 commit comments

Comments
 (0)