Skip to content

Commit 47dbf4e

Browse files
authored
Merge pull request brucefan1983#1033 from brucefan1983/fix_charge_stress_nan
fix charge stress nan
2 parents 19d8ee2 + ecce0d7 commit 47dbf4e

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

src/force/nep_charge.cu

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1339,6 +1339,8 @@ void NEP_Charge::find_k_and_G(const bool is_small_box, const double* box, const
13391339
nep_data.ky.resize(charge_para.num_kpoints_max);
13401340
nep_data.kz.resize(charge_para.num_kpoints_max);
13411341
nep_data.G.resize(charge_para.num_kpoints_max);
1342+
nep_data.S_real.resize(charge_para.num_kpoints_max);
1343+
nep_data.S_imag.resize(charge_para.num_kpoints_max);
13421344
}
13431345

13441346
nep_data.kx.copy_from_host(cpu_kx.data(), num_kpoints);
@@ -1432,10 +1434,16 @@ static __global__ void find_force_charge_reciprocal_space(
14321434
temp_force_sum[1] += ky * imag_term;
14331435
temp_force_sum[2] += kz * imag_term;
14341436
}
1435-
g_pe[n] += K_C_SP * temp_energy_sum / (N2 - N1);
1436-
for (int d = 0; d < 6; ++d) {
1437-
g_virial[n + N * d] += K_C_SP * temp_virial_sum[d] / (N2 - N1);
1438-
}
1437+
g_pe[n] += K_C_SP * temp_energy_sum / N;
1438+
g_virial[n + 0 * N] += K_C_SP * temp_virial_sum[0] / N;
1439+
g_virial[n + 1 * N] += K_C_SP * temp_virial_sum[1] / N;
1440+
g_virial[n + 2 * N] += K_C_SP * temp_virial_sum[2] / N;
1441+
g_virial[n + 3 * N] += K_C_SP * temp_virial_sum[3] / N;
1442+
g_virial[n + 4 * N] += K_C_SP * temp_virial_sum[5] / N;
1443+
g_virial[n + 5 * N] += K_C_SP * temp_virial_sum[4] / N;
1444+
g_virial[n + 6 * N] += K_C_SP * temp_virial_sum[3] / N;
1445+
g_virial[n + 7 * N] += K_C_SP * temp_virial_sum[5] / N;
1446+
g_virial[n + 8 * N] += K_C_SP * temp_virial_sum[4] / N;
14391447
g_D_real[n] = 2.0f * K_C_SP * temp_D_real_sum;
14401448
const float charge_factor = K_C_SP * 2.0f * g_charge[n];
14411449
g_fx[n] += charge_factor * temp_force_sum[0];

src/force/nep_charge.cuh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public:
115115

116116
struct Charge_Para {
117117
int charge_mode = 0;
118-
int num_kpoints_max = 50000;
118+
int num_kpoints_max = 1;
119119
float alpha = 0.5f; // 1 / (2 Angstrom)
120120
float alpha_factor = 1.0f; // 1 / (4 * alpha * alpha)
121121
float two_alpha_over_sqrt_pi = 0.564189583547756f;

0 commit comments

Comments
 (0)