From 877f4e7e29cc7624fcc8118ff95e8a09e4e6cbae Mon Sep 17 00:00:00 2001 From: Stan Gerald Moore Date: Tue, 11 Oct 2022 09:43:18 -0600 Subject: [PATCH 1/4] Fix issue with KSpace slab correction energy with non-neutral systems --- src/DIELECTRIC/pppm_dielectric.cpp | 4 ++-- src/DIELECTRIC/pppm_disp_dielectric.cpp | 4 ++-- src/ELECTRODE/slab_dipole.cpp | 4 ++-- src/KOKKOS/pppm_kokkos.cpp | 4 ++-- src/KSPACE/ewald.cpp | 6 +++--- src/KSPACE/ewald_disp.cpp | 4 ++-- src/KSPACE/pppm.cpp | 6 +++--- src/KSPACE/pppm_cg.cpp | 4 ++-- src/KSPACE/pppm_disp.cpp | 4 ++-- src/KSPACE/pppm_disp_tip4p.cpp | 4 ++-- src/KSPACE/pppm_tip4p.cpp | 4 ++-- 11 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/DIELECTRIC/pppm_dielectric.cpp b/src/DIELECTRIC/pppm_dielectric.cpp index c063750a75..cf2b19008c 100644 --- a/src/DIELECTRIC/pppm_dielectric.cpp +++ b/src/DIELECTRIC/pppm_dielectric.cpp @@ -442,7 +442,7 @@ void PPPMDielectric::slabcorr() // compute corrections const double e_slabcorr = MY_2PI*(dipole_all*dipole_all - - qsum*dipole_r2 - qsum*qsum*zprd*zprd/12.0)/volume; + qsum*dipole_r2 - qsum*qsum*zprd_slab*zprd_slab/12.0)/volume; const double qscale = qqrd2e * scale; if (eflag_global) energy += qscale * e_slabcorr; @@ -453,7 +453,7 @@ void PPPMDielectric::slabcorr() double efact = qscale * MY_2PI/volume; for (int i = 0; i < nlocal; i++) eatom[i] += efact * eps[i]*q[i]*(x[i][2]*dipole_all - 0.5*(dipole_r2 + - qsum*x[i][2]*x[i][2]) - qsum*zprd*zprd/12.0); + qsum*x[i][2]*x[i][2]) - qsum*zprd_slab*zprd_slab/12.0); } // add on force corrections diff --git a/src/DIELECTRIC/pppm_disp_dielectric.cpp b/src/DIELECTRIC/pppm_disp_dielectric.cpp index beb392a3b3..e07e8dcb01 100644 --- a/src/DIELECTRIC/pppm_disp_dielectric.cpp +++ b/src/DIELECTRIC/pppm_disp_dielectric.cpp @@ -793,7 +793,7 @@ void PPPMDispDielectric::slabcorr(int /*eflag*/) // compute corrections const double e_slabcorr = MY_2PI*(dipole_all*dipole_all - - qsum*dipole_r2 - qsum*qsum*zprd*zprd/12.0)/volume; + qsum*dipole_r2 - qsum*qsum*zprd_slab*zprd_slab/12.0)/volume; const double qscale = qqrd2e * scale; if (eflag_global) energy += qscale * e_slabcorr; @@ -804,7 +804,7 @@ void PPPMDispDielectric::slabcorr(int /*eflag*/) double efact = qscale * MY_2PI/volume; for (int i = 0; i < nlocal; i++) eatom[i] += efact * eps[i]*q[i]*(x[i][2]*dipole_all - 0.5*(dipole_r2 + - qsum*x[i][2]*x[i][2]) - qsum*zprd*zprd/12.0); + qsum*x[i][2]*x[i][2]) - qsum*zprd_slab*zprd_slab/12.0); } // add on force corrections diff --git a/src/ELECTRODE/slab_dipole.cpp b/src/ELECTRODE/slab_dipole.cpp index 2e04a012fc..0e49f5c134 100644 --- a/src/ELECTRODE/slab_dipole.cpp +++ b/src/ELECTRODE/slab_dipole.cpp @@ -65,7 +65,7 @@ void SlabDipole::compute_corr(double qsum, int eflag_atom, int eflag_global, dou // compute corrections double const e_slabcorr = MY_2PI * - (dipole_all * dipole_all - qsum * dipole_r2 - qsum * qsum * zprd * zprd / 12.0) / volume; + (dipole_all * dipole_all - qsum * dipole_r2 - qsum * qsum * zprd_slab * zprd_slab / 12.0) / volume; double const qscale = qqrd2e * scale; if (eflag_global) energy += qscale * e_slabcorr; @@ -75,7 +75,7 @@ void SlabDipole::compute_corr(double qsum, int eflag_atom, int eflag_global, dou for (int i = 0; i < nlocal; i++) eatom[i] += efact * q[i] * (x[i][2] * dipole_all - 0.5 * (dipole_r2 + qsum * x[i][2] * x[i][2]) - - qsum * zprd * zprd / 12.0); + qsum * zprd_slab * zprd_slab / 12.0); } // add on force corrections diff --git a/src/KOKKOS/pppm_kokkos.cpp b/src/KOKKOS/pppm_kokkos.cpp index 432e866b2c..5171c398ad 100644 --- a/src/KOKKOS/pppm_kokkos.cpp +++ b/src/KOKKOS/pppm_kokkos.cpp @@ -2791,7 +2791,7 @@ void PPPMKokkos::slabcorr() // compute corrections const double e_slabcorr = MY_2PI*(dipole_all*dipole_all - - qsum*dipole_r2 - qsum*qsum*zprd*zprd/12.0)/volume; + qsum*dipole_r2 - qsum*qsum*zprd_slab*zprd_slab/12.0)/volume; qscale = qqrd2e * scale; if (eflag_global) energy += qscale * e_slabcorr; @@ -2833,7 +2833,7 @@ KOKKOS_INLINE_FUNCTION void PPPMKokkos::operator()(TagPPPM_slabcorr3, const int &i) const { d_eatom[i] += efact * q[i]*(x(i,2)*dipole_all - 0.5*(dipole_r2 + - qsum*x(i,2)*x(i,2)) - qsum*zprd*zprd/12.0); + qsum*x(i,2)*x(i,2)) - qsum*zprd_slab*zprd_slab/12.0); } template diff --git a/src/KSPACE/ewald.cpp b/src/KSPACE/ewald.cpp index 2f787c54fe..f0638a16e0 100644 --- a/src/KSPACE/ewald.cpp +++ b/src/KSPACE/ewald.cpp @@ -1200,7 +1200,7 @@ void Ewald::slabcorr() // compute corrections const double e_slabcorr = MY_2PI*(dipole_all*dipole_all - - qsum*dipole_r2 - qsum*qsum*zprd*zprd/12.0)/volume; + qsum*dipole_r2 - qsum*qsum*zprd_slab*zprd_slab/12.0)/volume; const double qscale = qqrd2e * scale; if (eflag_global) energy += qscale * e_slabcorr; @@ -1211,7 +1211,7 @@ void Ewald::slabcorr() double efact = qscale * MY_2PI/volume; for (int i = 0; i < nlocal; i++) eatom[i] += efact * q[i]*(x[i][2]*dipole_all - 0.5*(dipole_r2 + - qsum*x[i][2]*x[i][2]) - qsum*zprd*zprd/12.0); + qsum*x[i][2]*x[i][2]) - qsum*zprd_slab*zprd_slab/12.0); } // add on force corrections @@ -1436,7 +1436,7 @@ void Ewald::slabcorr_groups(int groupbit_A, int groupbit_B, int AA_flag) const double efact = qscale * MY_2PI/volume; e2group += efact * (dipole_A*dipole_B - 0.5*(qsum_A*dipole_r2_B + - qsum_B*dipole_r2_A) - qsum_A*qsum_B*zprd*zprd/12.0); + qsum_B*dipole_r2_A) - qsum_A*qsum_B*zprd_slab*zprd_slab/12.0); // add on force corrections diff --git a/src/KSPACE/ewald_disp.cpp b/src/KSPACE/ewald_disp.cpp index d5ebc4dd36..4d1f27fb65 100644 --- a/src/KSPACE/ewald_disp.cpp +++ b/src/KSPACE/ewald_disp.cpp @@ -1465,7 +1465,7 @@ void EwaldDisp::compute_slabcorr() // compute corrections const double e_slabcorr = MY_2PI*(dipole_all*dipole_all - - qsum*dipole_r2 - qsum*qsum*zprd*zprd/12.0)/volume; + qsum*dipole_r2 - qsum*qsum*zprd_slab*zprd_slab/12.0)/volume; const double qscale = force->qqrd2e * scale; if (eflag_global) energy += qscale * e_slabcorr; @@ -1476,7 +1476,7 @@ void EwaldDisp::compute_slabcorr() double efact = qscale * MY_2PI/volume; for (int i = 0; i < nlocal; i++) eatom[i] += efact * q[i]*(x[i][2]*dipole_all - 0.5*(dipole_r2 + - qsum*x[i][2]*x[i][2]) - qsum*zprd*zprd/12.0); + qsum*x[i][2]*x[i][2]) - qsum*zprd_slab*zprd_slab/12.0); } // add on force corrections diff --git a/src/KSPACE/pppm.cpp b/src/KSPACE/pppm.cpp index e94193759f..7dcecd8238 100644 --- a/src/KSPACE/pppm.cpp +++ b/src/KSPACE/pppm.cpp @@ -2944,7 +2944,7 @@ void PPPM::slabcorr() // compute corrections const double e_slabcorr = MY_2PI*(dipole_all*dipole_all - - qsum*dipole_r2 - qsum*qsum*zprd*zprd/12.0)/volume; + qsum*dipole_r2 - qsum*qsum*zprd_slab*zprd_slab/12.0)/volume; const double qscale = qqrd2e * scale; if (eflag_global) energy += qscale * e_slabcorr; @@ -2955,7 +2955,7 @@ void PPPM::slabcorr() double efact = qscale * MY_2PI/volume; for (int i = 0; i < nlocal; i++) eatom[i] += efact * q[i]*(x[i][2]*dipole_all - 0.5*(dipole_r2 + - qsum*x[i][2]*x[i][2]) - qsum*zprd*zprd/12.0); + qsum*x[i][2]*x[i][2]) - qsum*zprd_slab*zprd_slab/12.0); } // add on force corrections @@ -3487,7 +3487,7 @@ void PPPM::slabcorr_groups(int groupbit_A, int groupbit_B, int AA_flag) const double efact = qscale * MY_2PI/volume; e2group += efact * (dipole_A*dipole_B - 0.5*(qsum_A*dipole_r2_B + - qsum_B*dipole_r2_A) - qsum_A*qsum_B*zprd*zprd/12.0); + qsum_B*dipole_r2_A) - qsum_A*qsum_B*zprd_slab*zprd_slab/12.0); // add on force corrections diff --git a/src/KSPACE/pppm_cg.cpp b/src/KSPACE/pppm_cg.cpp index 077eb9f3f4..44518ed056 100644 --- a/src/KSPACE/pppm_cg.cpp +++ b/src/KSPACE/pppm_cg.cpp @@ -629,7 +629,7 @@ void PPPMCG::slabcorr() // compute corrections const double e_slabcorr = MY_2PI*(dipole_all*dipole_all - - qsum*dipole_r2 - qsum*qsum*zprd*zprd/12.0)/volume; + qsum*dipole_r2 - qsum*qsum*zprd_slab*zprd_slab/12.0)/volume; const double qscale = qqrd2e * scale; if (eflag_global) energy += qscale * e_slabcorr; @@ -641,7 +641,7 @@ void PPPMCG::slabcorr() for (j = 0; j < num_charged; j++) { i = is_charged[j]; eatom[i] += efact * q[i]*(x[i][2]*dipole_all - 0.5*(dipole_r2 + - qsum*x[i][2]*x[i][2]) - qsum*zprd*zprd/12.0); + qsum*x[i][2]*x[i][2]) - qsum*zprd_slab*zprd_slab/12.0); } } diff --git a/src/KSPACE/pppm_disp.cpp b/src/KSPACE/pppm_disp.cpp index 7377ec6f39..cf62ef4520 100644 --- a/src/KSPACE/pppm_disp.cpp +++ b/src/KSPACE/pppm_disp.cpp @@ -8139,7 +8139,7 @@ void PPPMDisp::slabcorr(int /*eflag*/) // compute corrections const double e_slabcorr = MY_2PI*(dipole_all*dipole_all - - qsum*dipole_r2 - qsum*qsum*zprd*zprd/12.0)/volume; + qsum*dipole_r2 - qsum*qsum*zprd_slab*zprd_slab/12.0)/volume; const double qscale = force->qqrd2e * scale; if (eflag_global) energy_1 += qscale * e_slabcorr; @@ -8150,7 +8150,7 @@ void PPPMDisp::slabcorr(int /*eflag*/) double efact = qscale * MY_2PI/volume; for (int i = 0; i < nlocal; i++) eatom[i] += efact * q[i]*(x[i][2]*dipole_all - 0.5*(dipole_r2 + - qsum*x[i][2]*x[i][2]) - qsum*zprd*zprd/12.0); + qsum*x[i][2]*x[i][2]) - qsum*zprd_slab*zprd_slab/12.0); } // add on force corrections diff --git a/src/KSPACE/pppm_disp_tip4p.cpp b/src/KSPACE/pppm_disp_tip4p.cpp index 9ebc32ad05..76f3fabfc3 100644 --- a/src/KSPACE/pppm_disp_tip4p.cpp +++ b/src/KSPACE/pppm_disp_tip4p.cpp @@ -534,7 +534,7 @@ void PPPMDispTIP4P::slabcorr(int /*eflag*/) // compute corrections const double e_slabcorr = MY_2PI*(dipole_all*dipole_all - - qsum*dipole_r2 - qsum*qsum*zprd*zprd/12.0)/volume; + qsum*dipole_r2 - qsum*qsum*zprd_slab*zprd_slab/12.0)/volume; const double qscale = force->qqrd2e * scale; if (eflag_global) energy_1 += qscale * e_slabcorr; @@ -545,7 +545,7 @@ void PPPMDispTIP4P::slabcorr(int /*eflag*/) double efact = qscale * MY_2PI/volume; for (int i = 0; i < nlocal; i++) eatom[i] += efact * q[i]*(x[i][2]*dipole_all - 0.5*(dipole_r2 + - qsum*x[i][2]*x[i][2]) - qsum*zprd*zprd/12.0); + qsum*x[i][2]*x[i][2]) - qsum*zprd_slab*zprd_slab/12.0); } // add on force corrections diff --git a/src/KSPACE/pppm_tip4p.cpp b/src/KSPACE/pppm_tip4p.cpp index e9d72bcefe..76ca14a30e 100644 --- a/src/KSPACE/pppm_tip4p.cpp +++ b/src/KSPACE/pppm_tip4p.cpp @@ -526,7 +526,7 @@ void PPPMTIP4P::slabcorr() // compute corrections const double e_slabcorr = MY_2PI*(dipole_all*dipole_all - - qsum*dipole_r2 - qsum*qsum*zprd*zprd/12.0)/volume; + qsum*dipole_r2 - qsum*qsum*zprd_slab*zprd_slab/12.0)/volume; const double qscale = force->qqrd2e * scale; if (eflag_global) energy_1 += qscale * e_slabcorr; @@ -537,7 +537,7 @@ void PPPMTIP4P::slabcorr() double efact = qscale * MY_2PI/volume; for (int i = 0; i < nlocal; i++) eatom[i] += efact * q[i]*(x[i][2]*dipole_all - 0.5*(dipole_r2 + - qsum*x[i][2]*x[i][2]) - qsum*zprd*zprd/12.0); + qsum*x[i][2]*x[i][2]) - qsum*zprd_slab*zprd_slab/12.0); } // add on force corrections From 01c022f83d509033d3b881529c183054de2f4b7c Mon Sep 17 00:00:00 2001 From: Stan Gerald Moore Date: Tue, 11 Oct 2022 10:10:27 -0600 Subject: [PATCH 2/4] Fix variable definition --- src/DIELECTRIC/pppm_dielectric.cpp | 2 +- src/DIELECTRIC/pppm_disp_dielectric.cpp | 2 +- src/ELECTRODE/slab_dipole.cpp | 2 +- src/KOKKOS/pppm_kokkos.cpp | 2 +- src/KSPACE/ewald.cpp | 4 ++-- src/KSPACE/ewald_disp.cpp | 2 +- src/KSPACE/pppm.cpp | 4 ++-- src/KSPACE/pppm_cg.cpp | 2 +- src/KSPACE/pppm_disp.cpp | 2 +- src/KSPACE/pppm_disp_tip4p.cpp | 2 +- src/KSPACE/pppm_tip4p.cpp | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/DIELECTRIC/pppm_dielectric.cpp b/src/DIELECTRIC/pppm_dielectric.cpp index cf2b19008c..3911841107 100644 --- a/src/DIELECTRIC/pppm_dielectric.cpp +++ b/src/DIELECTRIC/pppm_dielectric.cpp @@ -412,7 +412,7 @@ void PPPMDielectric::slabcorr() double **x = atom->x; double *eps = atom->epsilon; - double zprd = domain->zprd; + double zprd_slab = domain->zprd*slab_volfactor; int nlocal = atom->nlocal; double dipole = 0.0; diff --git a/src/DIELECTRIC/pppm_disp_dielectric.cpp b/src/DIELECTRIC/pppm_disp_dielectric.cpp index e07e8dcb01..49c9910444 100644 --- a/src/DIELECTRIC/pppm_disp_dielectric.cpp +++ b/src/DIELECTRIC/pppm_disp_dielectric.cpp @@ -754,7 +754,7 @@ void PPPMDispDielectric::slabcorr(int /*eflag*/) double *q = atom->q; double **x = atom->x; double *eps = atom->epsilon; - double zprd = domain->zprd; + double zprd_slab = domain->zprd*slab_volfactor; int nlocal = atom->nlocal; double dipole = 0.0; diff --git a/src/ELECTRODE/slab_dipole.cpp b/src/ELECTRODE/slab_dipole.cpp index 0e49f5c134..a79153f739 100644 --- a/src/ELECTRODE/slab_dipole.cpp +++ b/src/ELECTRODE/slab_dipole.cpp @@ -43,7 +43,7 @@ void SlabDipole::compute_corr(double qsum, int eflag_atom, int eflag_global, dou // compute local contribution to global dipole moment double *q = atom->q; double **x = atom->x; - double zprd = domain->zprd; + double zprd_slab = domain->zprd*slab_volfactor; int nlocal = atom->nlocal; double dipole = 0.0; for (int i = 0; i < nlocal; i++) dipole += q[i] * x[i][2]; diff --git a/src/KOKKOS/pppm_kokkos.cpp b/src/KOKKOS/pppm_kokkos.cpp index 5171c398ad..ec32bebbcc 100644 --- a/src/KOKKOS/pppm_kokkos.cpp +++ b/src/KOKKOS/pppm_kokkos.cpp @@ -2760,7 +2760,7 @@ void PPPMKokkos::slabcorr() { // compute local contribution to global dipole moment - zprd = domain->zprd; + zprd_slab = domain->zprd*slab_volfactor; int nlocal = atomKK->nlocal; double dipole = 0.0; diff --git a/src/KSPACE/ewald.cpp b/src/KSPACE/ewald.cpp index f0638a16e0..2dba85d6a6 100644 --- a/src/KSPACE/ewald.cpp +++ b/src/KSPACE/ewald.cpp @@ -1171,7 +1171,7 @@ void Ewald::slabcorr() double *q = atom->q; double **x = atom->x; - double zprd = domain->zprd; + double zprd_slab = domain->zprd*slab_volfactor; int nlocal = atom->nlocal; double dipole = 0.0; @@ -1380,7 +1380,7 @@ void Ewald::slabcorr_groups(int groupbit_A, int groupbit_B, int AA_flag) double *q = atom->q; double **x = atom->x; - double zprd = domain->zprd; + double zprd_slab = domain->zprd*slab_volfactor; int *mask = atom->mask; int nlocal = atom->nlocal; diff --git a/src/KSPACE/ewald_disp.cpp b/src/KSPACE/ewald_disp.cpp index 4d1f27fb65..1374905a26 100644 --- a/src/KSPACE/ewald_disp.cpp +++ b/src/KSPACE/ewald_disp.cpp @@ -1426,7 +1426,7 @@ void EwaldDisp::compute_slabcorr() double *q = atom->q; double **x = atom->x; - double zprd = domain->zprd; + double zprd_slab = domain->zprd*slab_volfactor; int nlocal = atom->nlocal; double dipole = 0.0; diff --git a/src/KSPACE/pppm.cpp b/src/KSPACE/pppm.cpp index 7dcecd8238..b50c1f358c 100644 --- a/src/KSPACE/pppm.cpp +++ b/src/KSPACE/pppm.cpp @@ -2915,7 +2915,7 @@ void PPPM::slabcorr() double *q = atom->q; double **x = atom->x; - double zprd = domain->zprd; + double zprd_slab = domain->zprd*slab_volfactor; int nlocal = atom->nlocal; double dipole = 0.0; @@ -3431,7 +3431,7 @@ void PPPM::slabcorr_groups(int groupbit_A, int groupbit_B, int AA_flag) double *q = atom->q; double **x = atom->x; - double zprd = domain->zprd; + double zprd_slab = domain->zprd*slab_volfactor; int *mask = atom->mask; int nlocal = atom->nlocal; diff --git a/src/KSPACE/pppm_cg.cpp b/src/KSPACE/pppm_cg.cpp index 44518ed056..6697c69985 100644 --- a/src/KSPACE/pppm_cg.cpp +++ b/src/KSPACE/pppm_cg.cpp @@ -595,7 +595,7 @@ void PPPMCG::slabcorr() const double * const q = atom->q; const double * const * const x = atom->x; - const double zprd = domain->zprd; + const double zprd_slab = domain->zprd*slab_volfactor; double dipole = 0.0; diff --git a/src/KSPACE/pppm_disp.cpp b/src/KSPACE/pppm_disp.cpp index cf62ef4520..f0f17ed927 100644 --- a/src/KSPACE/pppm_disp.cpp +++ b/src/KSPACE/pppm_disp.cpp @@ -8110,7 +8110,7 @@ void PPPMDisp::slabcorr(int /*eflag*/) double *q = atom->q; double **x = atom->x; - double zprd = domain->zprd; + double zprd_slab = domain->zprd*slab_volfactor; int nlocal = atom->nlocal; double dipole = 0.0; diff --git a/src/KSPACE/pppm_disp_tip4p.cpp b/src/KSPACE/pppm_disp_tip4p.cpp index 76f3fabfc3..92b811984c 100644 --- a/src/KSPACE/pppm_disp_tip4p.cpp +++ b/src/KSPACE/pppm_disp_tip4p.cpp @@ -498,7 +498,7 @@ void PPPMDispTIP4P::slabcorr(int /*eflag*/) double *q = atom->q; double **x = atom->x; - double zprd = domain->zprd; + double zprd_slab = domain->zprd*slab_volfactor; int nlocal = atom->nlocal; int *type = atom->type; double *xi, xM[3]; int iH1, iH2; //for TIP4P virtual site diff --git a/src/KSPACE/pppm_tip4p.cpp b/src/KSPACE/pppm_tip4p.cpp index 76ca14a30e..490c092004 100644 --- a/src/KSPACE/pppm_tip4p.cpp +++ b/src/KSPACE/pppm_tip4p.cpp @@ -490,7 +490,7 @@ void PPPMTIP4P::slabcorr() double *q = atom->q; double **x = atom->x; - double zprd = domain->zprd; + double zprd_slab = domain->zprd*slab_volfactor; int nlocal = atom->nlocal; int *type = atom->type; double *xi, xM[3]; int iH1, iH2; //for TIP4P virtual site From 955b615e1e0211a0f73712e0e1551df9fbce9458 Mon Sep 17 00:00:00 2001 From: Stan Gerald Moore Date: Tue, 11 Oct 2022 10:36:22 -0600 Subject: [PATCH 3/4] Fix undef var --- src/ELECTRODE/boundary_correction.h | 2 +- src/ELECTRODE/ewald_electrode.cpp | 2 +- src/ELECTRODE/pppm_electrode.cpp | 2 +- src/ELECTRODE/slab_2d.cpp | 4 ++-- src/ELECTRODE/slab_2d.h | 2 +- src/ELECTRODE/slab_dipole.cpp | 4 ++-- src/ELECTRODE/slab_dipole.h | 2 +- src/ELECTRODE/wire_dipole.cpp | 4 ++-- src/ELECTRODE/wire_dipole.h | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/ELECTRODE/boundary_correction.h b/src/ELECTRODE/boundary_correction.h index ed026e8c6f..681db645e5 100644 --- a/src/ELECTRODE/boundary_correction.h +++ b/src/ELECTRODE/boundary_correction.h @@ -27,7 +27,7 @@ class BoundaryCorrection : protected Pointers { BoundaryCorrection(LAMMPS *); virtual void vector_corr(double *, int, int, bool){}; virtual void matrix_corr(bigint *, double **){}; - virtual void compute_corr(double, int, int, double &, double *){}; + virtual void compute_corr(double, double, int, int, double &, double *){}; void setup(double, double, double); void setup(double, double, double, double); diff --git a/src/ELECTRODE/ewald_electrode.cpp b/src/ELECTRODE/ewald_electrode.cpp index 4e47d955ef..7a38f89f1c 100644 --- a/src/ELECTRODE/ewald_electrode.cpp +++ b/src/ELECTRODE/ewald_electrode.cpp @@ -418,7 +418,7 @@ void EwaldElectrode::compute(int eflag, int vflag) for (int j = 0; j < 6; j++) vatom[i][j] *= q[i] * qscale; } - boundcorr->compute_corr(qsum, eflag_atom, eflag_global, energy, eatom); + boundcorr->compute_corr(qsum, slab_volfactor, eflag_atom, eflag_global, energy, eatom); } /* ---------------------------------------------------------------------- */ diff --git a/src/ELECTRODE/pppm_electrode.cpp b/src/ELECTRODE/pppm_electrode.cpp index 91d6acc2d5..9ba76e1d6e 100644 --- a/src/ELECTRODE/pppm_electrode.cpp +++ b/src/ELECTRODE/pppm_electrode.cpp @@ -552,7 +552,7 @@ void PPPMElectrode::compute(int eflag, int vflag) } } - boundcorr->compute_corr(qsum, eflag_atom, eflag_global, energy, eatom); + boundcorr->compute_corr(qsum, slab_volfactor, eflag_atom, eflag_global, energy, eatom); compute_vector_called = false; } diff --git a/src/ELECTRODE/slab_2d.cpp b/src/ELECTRODE/slab_2d.cpp index 2c98a067f4..15d23d698d 100644 --- a/src/ELECTRODE/slab_2d.cpp +++ b/src/ELECTRODE/slab_2d.cpp @@ -32,8 +32,8 @@ using namespace MathConst; ------------------------------------------------------------------------- */ Slab2d::Slab2d(LAMMPS *lmp) : BoundaryCorrection(lmp){}; -void Slab2d::compute_corr(double /*qsum*/, int eflag_atom, int eflag_global, double &energy, - double *eatom) +void Slab2d::compute_corr(double /*qsum*/, double /*slab_volfactor*/, int eflag_atom, + int eflag_global, double &energy, double *eatom) { double *q = atom->q; double **x = atom->x; diff --git a/src/ELECTRODE/slab_2d.h b/src/ELECTRODE/slab_2d.h index de5b56e501..8f27218e0f 100644 --- a/src/ELECTRODE/slab_2d.h +++ b/src/ELECTRODE/slab_2d.h @@ -27,7 +27,7 @@ class Slab2d : public BoundaryCorrection { Slab2d(LAMMPS *); void vector_corr(double *, int, int, bool) override; void matrix_corr(bigint *, double **) override; - void compute_corr(double, int, int, double &, double *) override; + void compute_corr(double, double, int, int, double &, double *) override; void setup(double); }; diff --git a/src/ELECTRODE/slab_dipole.cpp b/src/ELECTRODE/slab_dipole.cpp index a79153f739..3f7538c85e 100644 --- a/src/ELECTRODE/slab_dipole.cpp +++ b/src/ELECTRODE/slab_dipole.cpp @@ -37,8 +37,8 @@ using namespace MathConst; */ SlabDipole::SlabDipole(LAMMPS *lmp) : BoundaryCorrection(lmp){}; -void SlabDipole::compute_corr(double qsum, int eflag_atom, int eflag_global, double &energy, - double *eatom) +void SlabDipole::compute_corr(double qsum, double slab_volfactor, int eflag_atom, + int eflag_global, double &energy, double *eatom) { // compute local contribution to global dipole moment double *q = atom->q; diff --git a/src/ELECTRODE/slab_dipole.h b/src/ELECTRODE/slab_dipole.h index 0894c4de48..7522038698 100644 --- a/src/ELECTRODE/slab_dipole.h +++ b/src/ELECTRODE/slab_dipole.h @@ -27,7 +27,7 @@ class SlabDipole : public BoundaryCorrection { SlabDipole(LAMMPS *); void vector_corr(double *, int, int, bool); void matrix_corr(bigint *, double **); - void compute_corr(double, int, int, double &, double *); + void compute_corr(double, double, int, int, double &, double *); void setup(double); }; diff --git a/src/ELECTRODE/wire_dipole.cpp b/src/ELECTRODE/wire_dipole.cpp index 6ba6696df4..c2b64ad69e 100644 --- a/src/ELECTRODE/wire_dipole.cpp +++ b/src/ELECTRODE/wire_dipole.cpp @@ -34,8 +34,8 @@ using namespace MathConst; */ WireDipole::WireDipole(LAMMPS *lmp) : BoundaryCorrection(lmp){}; -void WireDipole::compute_corr(double /*qsum*/, int eflag_atom, int eflag_global, double &energy, - double *eatom) +void WireDipole::compute_corr(double /*qsum*/, double /*slab_volfactor*/, int eflag_atom, + int eflag_global, double &energy, double *eatom) { double *q = atom->q; double **x = atom->x; diff --git a/src/ELECTRODE/wire_dipole.h b/src/ELECTRODE/wire_dipole.h index 838b366515..0db1b2a5f8 100644 --- a/src/ELECTRODE/wire_dipole.h +++ b/src/ELECTRODE/wire_dipole.h @@ -27,7 +27,7 @@ class WireDipole : public BoundaryCorrection { WireDipole(LAMMPS *); void vector_corr(double *, int, int, bool); void matrix_corr(bigint *, double **); - void compute_corr(double, int, int, double &, double *); + void compute_corr(double, double, int, int, double &, double *); void setup(double); }; From 1e6321a1e91ab5a768addf71a774b80dc43887ea Mon Sep 17 00:00:00 2001 From: Stan Gerald Moore Date: Tue, 11 Oct 2022 11:17:03 -0600 Subject: [PATCH 4/4] Update INTEL package --- src/INTEL/pppm_electrode_intel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/INTEL/pppm_electrode_intel.cpp b/src/INTEL/pppm_electrode_intel.cpp index cff6ff6b9a..da0f2fad3b 100644 --- a/src/INTEL/pppm_electrode_intel.cpp +++ b/src/INTEL/pppm_electrode_intel.cpp @@ -272,7 +272,7 @@ void PPPMElectrodeIntel::compute(int eflag, int vflag) slabflag = 0; // bypass compute_second's slabcorr() PPPMIntel::compute_second(eflag, vflag); slabflag = tempslabflag; - boundcorr->compute_corr(qsum, eflag_atom, eflag_global, energy, eatom); + boundcorr->compute_corr(qsum, slab_volfactor, eflag_atom, eflag_global, energy, eatom); compute_vector_called = false; }