Clean up evflags
This commit is contained in:
@ -705,7 +705,7 @@ void PairReaxFFKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
|
||||
k_params_fbp.template sync<DeviceType>();
|
||||
k_params_hbp.template sync<DeviceType>();
|
||||
|
||||
if (eflag || vflag) atomKK->modified(execution_space,datamask_modify);
|
||||
if (eflag_either || vflag_either) atomKK->modified(execution_space,datamask_modify);
|
||||
else atomKK->modified(execution_space,F_MASK);
|
||||
|
||||
x = atomKK->k_x.view<DeviceType>();
|
||||
@ -762,15 +762,15 @@ void PairReaxFFKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
|
||||
|
||||
// Polarization (self)
|
||||
if (neighflag == HALF) {
|
||||
if (evflag)
|
||||
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagPairReaxComputePolar<HALF,1>>(0,inum),*this,ev);
|
||||
else
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagPairReaxComputePolar<HALF,0>>(0,inum),*this);
|
||||
if (eflag_global)
|
||||
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagPairReaxComputePolar<HALF>>(0,inum),*this,ev);
|
||||
else if (eflag_atom)
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagPairReaxComputePolar<HALF>>(0,inum),*this);
|
||||
} else { //if (neighflag == HALFTHREAD) {
|
||||
if (evflag)
|
||||
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagPairReaxComputePolar<HALFTHREAD,1>>(0,inum),*this,ev);
|
||||
else
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagPairReaxComputePolar<HALFTHREAD,0>>(0,inum),*this);
|
||||
if (eflag_global)
|
||||
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagPairReaxComputePolar<HALFTHREAD>>(0,inum),*this,ev);
|
||||
else if (eflag_atom)
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagPairReaxComputePolar<HALFTHREAD>>(0,inum),*this);
|
||||
}
|
||||
ev_all += ev;
|
||||
pvector[13] = ev.ecoul;
|
||||
@ -1125,9 +1125,9 @@ void PairReaxFFKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
template<int NEIGHFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputePolar<NEIGHFLAG,EVFLAG>, const int &ii, EV_FLOAT_REAX& ev) const {
|
||||
void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputePolar<NEIGHFLAG>, const int &ii, EV_FLOAT_REAX& ev) const {
|
||||
|
||||
const int i = d_ilist[ii];
|
||||
const int itype = type(i);
|
||||
@ -1141,18 +1141,18 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputePolar<NEIGHFLAG,
|
||||
if (acks2_flag)
|
||||
epol += KCALpMOL_to_EV*qi*d_s[NN + i];
|
||||
|
||||
if (eflag) ev.ecoul += epol;
|
||||
if (eflag_global) ev.ecoul += epol;
|
||||
//if (eflag_atom) this->template ev_tally<NEIGHFLAG>(ev,i,i,epol,0.0,0.0,0.0,0.0);
|
||||
if (eflag_atom) this->template e_tally_single<NEIGHFLAG>(ev,i,epol);
|
||||
}
|
||||
|
||||
template<class DeviceType>
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
template<int NEIGHFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputePolar<NEIGHFLAG,EVFLAG>, const int &ii) const {
|
||||
void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputePolar<NEIGHFLAG>, const int &ii) const {
|
||||
EV_FLOAT_REAX ev;
|
||||
this->template operator()<NEIGHFLAG,EVFLAG>(TagPairReaxComputePolar<NEIGHFLAG,EVFLAG>(), ii, ev);
|
||||
}
|
||||
this->template operator()<NEIGHFLAG>(TagPairReaxComputePolar<NEIGHFLAG>(), ii, ev);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -1329,10 +1329,12 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeLJCoulomb<NEIGHF
|
||||
fztmp += delz*ftotal;
|
||||
a_f(j,2) -= delz*ftotal;
|
||||
|
||||
if (eflag) ev.evdwl += evdwl;
|
||||
if (eflag) ev.ecoul += ecoul;
|
||||
if (EVFLAG) {
|
||||
if (eflag_global) ev.evdwl += evdwl;
|
||||
if (eflag_global) ev.ecoul += ecoul;
|
||||
|
||||
if (vflag_either || eflag_atom) this->template ev_tally<NEIGHFLAG>(ev,i,j,evdwl+ecoul,-ftotal,delx,dely,delz);
|
||||
if (vflag_either || eflag_atom) this->template ev_tally<NEIGHFLAG>(ev,i,j,evdwl+ecoul,-ftotal,delx,dely,delz);
|
||||
}
|
||||
}
|
||||
|
||||
a_f(i,0) += fxtmp;
|
||||
@ -1474,10 +1476,12 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeTabulatedLJCoulo
|
||||
a_f(j,1) -= dely*ftotal;
|
||||
a_f(j,2) -= delz*ftotal;
|
||||
|
||||
if (eflag) ev.evdwl += evdwl;
|
||||
if (eflag) ev.ecoul += ecoul;
|
||||
if (EVFLAG) {
|
||||
if (eflag_global) ev.evdwl += evdwl;
|
||||
if (eflag_global) ev.ecoul += ecoul;
|
||||
|
||||
if (vflag_either || eflag_atom) this->template ev_tally<NEIGHFLAG>(ev,i,j,evdwl+ecoul,-ftotal,delx,dely,delz);
|
||||
if (vflag_either || eflag_atom) this->template ev_tally<NEIGHFLAG>(ev,i,j,evdwl+ecoul,-ftotal,delx,dely,delz);
|
||||
}
|
||||
}
|
||||
|
||||
a_f(i,0) += fxtmp;
|
||||
@ -2469,7 +2473,7 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeMulti2<NEIGHFLAG
|
||||
if (numbonds > 0 || enobondsflag)
|
||||
a_CdDelta[i] += CElp;
|
||||
|
||||
if (eflag) ev.ereax[0] += e_lp;
|
||||
if (EVFLAG && eflag_global) ev.ereax[0] += e_lp;
|
||||
//if (vflag_either || eflag_atom) this->template ev_tally<NEIGHFLAG>(ev,i,i,e_lp,0.0,0.0,0.0,0.0);
|
||||
//if (eflag_atom) this->template e_tally<NEIGHFLAG>(ev,i,i,e_lp);
|
||||
|
||||
@ -2485,7 +2489,7 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeMulti2<NEIGHFLAG
|
||||
CEover1 = Delta_lpcorr * DlpVi * inv_exp_ovun2;
|
||||
e_ov = d_sum_ovun(i,1) * CEover1;
|
||||
|
||||
if (eflag) ev.ereax[1] += e_ov;
|
||||
if (EVFLAG && eflag_global) ev.ereax[1] += e_ov;
|
||||
//if (eflag_atom) this->template ev_tally<NEIGHFLAG>(ev,i,i,e_ov,0.0,0.0,0.0,0.0);
|
||||
//if (eflag_atom) this->template e_tally<NEIGHFLAG>(ev,i,i,e_ov);
|
||||
|
||||
@ -2506,7 +2510,7 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeMulti2<NEIGHFLAG
|
||||
if (numbonds > 0 || enobondsflag)
|
||||
e_un = -p_ovun5 * (1.0 - exp_ovun6) * inv_exp_ovun2n * inv_exp_ovun8;
|
||||
|
||||
if (eflag) ev.ereax[2] += e_un;
|
||||
if (EVFLAG && eflag_global) ev.ereax[2] += e_un;
|
||||
//if (eflag_atom) this->template ev_tally<NEIGHFLAG>(ev,i,i,e_un,0.0,0.0,0.0,0.0);
|
||||
//if (eflag_atom) this->template e_tally<NEIGHFLAG>(ev,i,i,e_un);
|
||||
|
||||
@ -2549,8 +2553,10 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeMulti2<NEIGHFLAG
|
||||
d_Cdbo(i,j_index) += deahu2dbo;
|
||||
CdDelta_i += deahu2dsbo;
|
||||
|
||||
if (eflag) ev.ereax[0] += e_lph;
|
||||
if (eflag_atom) this->template e_tally<NEIGHFLAG>(ev,i,j,e_lph);
|
||||
if (EVFLAG) {
|
||||
if (eflag_global) ev.ereax[0] += e_lph;
|
||||
if (eflag_atom) this->template e_tally<NEIGHFLAG>(ev,i,j,e_lph);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2790,7 +2796,7 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeAngular<NEIGHFLA
|
||||
CEval8 = -CEval4 / sin_theta;
|
||||
|
||||
e_ang = f7_ij * f7_jk * f8_Dj * expval12theta;
|
||||
if (eflag) ev.ereax[3] += e_ang;
|
||||
if (EVFLAG && eflag_global) ev.ereax[3] += e_ang;
|
||||
|
||||
// Penalty energy
|
||||
|
||||
@ -2806,7 +2812,7 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeAngular<NEIGHFLA
|
||||
(-p_pen3 * exp_pen3 + p_pen4 * exp_pen4))/(trm_pen34*trm_pen34);
|
||||
|
||||
e_pen = p_pen1 * f9_Dj * exp_pen2ij * exp_pen2jk;
|
||||
if (eflag) ev.ereax[4] += e_pen;
|
||||
if (EVFLAG && eflag_global) ev.ereax[4] += e_pen;
|
||||
|
||||
CEpen1 = e_pen * Cf9j / f9_Dj;
|
||||
temp = -2.0 * p_pen2 * e_pen;
|
||||
@ -2829,7 +2835,7 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeAngular<NEIGHFLA
|
||||
CEcoa4 = -2 * p_coa3 * (d_total_bo[j]-BOA_ij) * e_coa;
|
||||
CEcoa5 = -2 * p_coa3 * (d_total_bo[k]-BOA_ik) * e_coa;
|
||||
|
||||
if (eflag) ev.ereax[5] += e_coa;
|
||||
if (EVFLAG && eflag_global) ev.ereax[5] += e_coa;
|
||||
|
||||
// Forces
|
||||
|
||||
@ -3292,7 +3298,7 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeTorsion<NEIGHFLA
|
||||
CV = 0.5 * (V1 * (1.0 + cos_omega) + V2 * exp_tor1 * (1.0 - cos2omega) + V3 * (1.0 + cos3omega));
|
||||
|
||||
e_tor = fn10 * sin_ijk * sin_jil * CV;
|
||||
if (eflag) ev.ereax[6] += e_tor;
|
||||
if (EVFLAG && eflag_global) ev.ereax[6] += e_tor;
|
||||
|
||||
dfn11 = (-p_tor3 * exp_tor3_DiDj + (p_tor3 * exp_tor3_DiDj - p_tor4 * exp_tor4_DiDj) *
|
||||
(2.0 + exp_tor3_DiDj) * exp_tor34_inv) * exp_tor34_inv;
|
||||
@ -3318,7 +3324,7 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeTorsion<NEIGHFLA
|
||||
|
||||
fn12 = exp_cot2_ik * exp_cot2_ij * exp_cot2_jl;
|
||||
e_con = p_cot1 * fn12 * (1.0 + (SQR(cos_omega) - 1.0) * sin_ijk * sin_jil);
|
||||
if (eflag) ev.ereax[7] += e_con;
|
||||
if (EVFLAG && eflag_global) ev.ereax[7] += e_con;
|
||||
|
||||
Cconj = -2.0 * fn12 * p_cot1 * p_cot2 * (1.0 + (SQR(cos_omega) - 1.0) * sin_ijk * sin_jil);
|
||||
|
||||
@ -3509,7 +3515,7 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeHydrogen<NEIGHFL
|
||||
exp_hb3 = exp(-p_hb3 * (r0_hb/rik + rik/r0_hb - 2.0));
|
||||
|
||||
e_hb = p_hb1 * (1.0 - exp_hb2) * exp_hb3 * sin_xhz4;
|
||||
if (eflag) ev.ereax[8] += e_hb;
|
||||
if (EVFLAG && eflag_global) ev.ereax[8] += e_hb;
|
||||
|
||||
// hydrogen bond forces
|
||||
CEhb1 = p_hb1 * p_hb2 * exp_hb2 * exp_hb3 * sin_xhz4;
|
||||
@ -3533,8 +3539,11 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeHydrogen<NEIGHFL
|
||||
|
||||
for (int d = 0; d < 3; d++) delki[d] = -1.0 * delik[d];
|
||||
for (int d = 0; d < 3; d++) delji[d] = -1.0 * delij[d];
|
||||
if (eflag_atom) this->template e_tally<NEIGHFLAG>(ev,i,j,e_hb);
|
||||
if (vflag_either) this->template v_tally3<NEIGHFLAG>(ev,i,j,k,fj_tmp,fk_tmp,delji,delki);
|
||||
|
||||
if (EVFLAG) {
|
||||
if (eflag_atom) this->template e_tally<NEIGHFLAG>(ev,i,j,e_hb);
|
||||
if (vflag_either) this->template v_tally3<NEIGHFLAG>(ev,i,j,k,fj_tmp,fk_tmp,delji,delki);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int d = 0; d < 3; d++) a_f(i,d) += fitmp[d];
|
||||
@ -3667,7 +3676,7 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeBond1<NEIGHFLAG,
|
||||
-De_p*BO_pi_i
|
||||
-De_pp*BO_pi2_i;
|
||||
|
||||
if (eflag) ev.evdwl += ebond;
|
||||
if (EVFLAG && eflag_global) ev.evdwl += ebond;
|
||||
//if (eflag_atom) this->template ev_tally<NEIGHFLAG>(ev,i,j,ebond,0.0,0.0,0.0,0.0);
|
||||
//if (eflag_atom) this->template e_tally<NEIGHFLAG>(ev,i,j,ebond);
|
||||
|
||||
@ -3689,7 +3698,7 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeBond1<NEIGHFLAG,
|
||||
const F_FLOAT hulpov = 1.0 / (1.0 + 25.0 * exphuov);
|
||||
estriph = gp[10] * exphu * hulpov * (exphua1 + exphub1);
|
||||
|
||||
if (eflag) ev.evdwl += estriph;
|
||||
if (EVFLAG && eflag_global) ev.evdwl += estriph;
|
||||
//if (eflag_atom) this->template ev_tally<NEIGHFLAG>(ev,i,j,estriph,0.0,0.0,0.0,0.0);
|
||||
//if (eflag_atom) this->template e_tally<NEIGHFLAG>(ev,i,j,estriph);
|
||||
|
||||
@ -3826,8 +3835,7 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeBond2<NEIGHFLAG,
|
||||
for (int d = 0; d < 3; d++) temp[d] += coef_C2dbopi2 * dBOp_i[d];
|
||||
for (int d = 0; d < 3; d++) temp[d] += coef_C3dbopi2 * d_dDeltap_self(i,d);
|
||||
|
||||
if (EVFLAG)
|
||||
if (vflag_either) this->template v_tally<NEIGHFLAG>(ev,i,temp,delij);
|
||||
if (EVFLAG && vflag_either) this->template v_tally<NEIGHFLAG>(ev,i,temp,delij);
|
||||
|
||||
fitmp[0] -= temp[0];
|
||||
fitmp[1] -= temp[1];
|
||||
@ -3849,11 +3857,10 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeBond2<NEIGHFLAG,
|
||||
a_f(j,1) -= temp[1];
|
||||
a_f(j,2) -= temp[2];
|
||||
|
||||
if (EVFLAG)
|
||||
if (vflag_either) {
|
||||
for (int d = 0; d < 3; d++) tmpvec[d] = -delij[d];
|
||||
this->template v_tally<NEIGHFLAG>(ev,j,temp,tmpvec);
|
||||
}
|
||||
if (EVFLAG && vflag_either) {
|
||||
for (int d = 0; d < 3; d++) tmpvec[d] = -delij[d];
|
||||
this->template v_tally<NEIGHFLAG>(ev,j,temp,tmpvec);
|
||||
}
|
||||
|
||||
// forces on k: i neighbor
|
||||
for (int kk = j_start; kk < j_end; kk++) {
|
||||
@ -3871,14 +3878,13 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeBond2<NEIGHFLAG,
|
||||
a_f(k,1) -= temp[1];
|
||||
a_f(k,2) -= temp[2];
|
||||
|
||||
if (EVFLAG)
|
||||
if (vflag_either) {
|
||||
delik[0] = x(k,0) - xtmp;
|
||||
delik[1] = x(k,1) - ytmp;
|
||||
delik[2] = x(k,2) - ztmp;
|
||||
for (int d = 0; d < 3; d++) tmpvec[d] = x(j,d) - x(k,d) - delik[d];
|
||||
this->template v_tally<NEIGHFLAG>(ev,k,temp,tmpvec);
|
||||
}
|
||||
if (EVFLAG && vflag_either) {
|
||||
delik[0] = x(k,0) - xtmp;
|
||||
delik[1] = x(k,1) - ytmp;
|
||||
delik[2] = x(k,2) - ztmp;
|
||||
for (int d = 0; d < 3; d++) tmpvec[d] = x(j,d) - x(k,d) - delik[d];
|
||||
this->template v_tally<NEIGHFLAG>(ev,k,temp,tmpvec);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -3898,14 +3904,11 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxComputeBond2<NEIGHFLAG,
|
||||
a_f(k,1) -= temp[1];
|
||||
a_f(k,2) -= temp[2];
|
||||
|
||||
if (EVFLAG) {
|
||||
if (vflag_either) {
|
||||
for (int d = 0; d < 3; d++) deljk[d] = x(k,d) - x(j,d);
|
||||
for (int d = 0; d < 3; d++) tmpvec[d] = x(i,d) - x(k,d) - deljk[d];
|
||||
this->template v_tally<NEIGHFLAG>(ev,k,temp,tmpvec);
|
||||
}
|
||||
if (EVFLAG && vflag_either) {
|
||||
for (int d = 0; d < 3; d++) deljk[d] = x(k,d) - x(j,d);
|
||||
for (int d = 0; d < 3; d++) tmpvec[d] = x(i,d) - x(k,d) - deljk[d];
|
||||
this->template v_tally<NEIGHFLAG>(ev,k,temp,tmpvec);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
for (int d = 0; d < 3; d++) a_f(i,d) += fitmp[d];
|
||||
|
||||
@ -46,7 +46,7 @@ struct LR_lookup_table_kk
|
||||
t_cubic_spline_coef_1d d_ele, d_CEclmb;
|
||||
};
|
||||
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
template<int NEIGHFLAG>
|
||||
struct TagPairReaxComputePolar{};
|
||||
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
@ -138,13 +138,13 @@ class PairReaxFFKokkos : public PairReaxFF {
|
||||
void PackBondBuffer(DAT::tdual_ffloat_1d, int &);
|
||||
void FindBondSpecies();
|
||||
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
template<int NEIGHFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()(TagPairReaxComputePolar<NEIGHFLAG,EVFLAG>, const int&, EV_FLOAT_REAX&) const;
|
||||
void operator()(TagPairReaxComputePolar<NEIGHFLAG>, const int&, EV_FLOAT_REAX&) const;
|
||||
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
template<int NEIGHFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()(TagPairReaxComputePolar<NEIGHFLAG,EVFLAG>, const int&) const;
|
||||
void operator()(TagPairReaxComputePolar<NEIGHFLAG>, const int&) const;
|
||||
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
|
||||
Reference in New Issue
Block a user