diff --git a/examples/PACKAGES/cgspica/sds-monolayer/in.sds-regular b/examples/PACKAGES/cgspica/sds-monolayer/in.sds-regular index 2f80847fe0..fef6b80eca 100644 --- a/examples/PACKAGES/cgspica/sds-monolayer/in.sds-regular +++ b/examples/PACKAGES/cgspica/sds-monolayer/in.sds-regular @@ -5,7 +5,7 @@ dimension 3 atom_style full processors * * 1 -pair_style lj/spica/coul/long 15.0 +pair_style lj/spica/coul/long 15.0 bond_style harmonic angle_style spica special_bonds lj/coul 0.0 0.0 1.0 diff --git a/src/KOKKOS/angle_spica_kokkos.cpp b/src/KOKKOS/angle_spica_kokkos.cpp index e423d1d0b5..782517e58a 100644 --- a/src/KOKKOS/angle_spica_kokkos.cpp +++ b/src/KOKKOS/angle_spica_kokkos.cpp @@ -87,14 +87,27 @@ void AngleSPICAKokkos::compute(int eflag_in, int vflag_in) d_vatom = k_vatom.template view(); } + atomKK->sync(execution_space,datamask_read); k_k.template sync(); k_theta0.template sync(); + k_repscale.template sync(); + k_lj_type.template sync(); + k_lj1.template sync(); + k_lj2.template sync(); + k_lj3.template sync(); + k_lj4.template sync(); + k_rminsq.template sync(); + k_emin.template sync(); + + if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); + else atomKK->modified(execution_space,F_MASK); x = atomKK->k_x.template view(); f = atomKK->k_f.template view(); neighborKK->k_anglelist.template sync(); anglelist = neighborKK->k_anglelist.template view(); int nanglelist = neighborKK->nanglelist; + atomKK->k_type.template sync(); d_type = atomKK->k_type.template view(); nlocal = atom->nlocal; newton_bond = force->newton_bond; @@ -312,9 +325,13 @@ void AngleSPICAKokkos::allocate() int nangletypes = atom->nangletypes; k_k = typename ArrayTypes::tdual_ffloat_1d("AngleSPICA::k",nangletypes+1); k_theta0 = typename ArrayTypes::tdual_ffloat_1d("AngleSPICA::theta0",nangletypes+1); + k_repscale = typename ArrayTypes::tdual_ffloat_1d("AngleSPICA::repscale",nangletypes+1); + k_setflag = typename ArrayTypes::tdual_int_1d("AngleSPICA::setflag",nangletypes+1); d_k = k_k.template view(); d_theta0 = k_theta0.template view(); + d_repscale = k_repscale.template view(); + d_setflag = k_setflag.template view(); int ntypes = atom->ntypes; k_lj_type = typename ArrayTypes::tdual_int_2d("AngleSPICA::lj_type",ntypes+1,ntypes+1); @@ -332,7 +349,6 @@ void AngleSPICAKokkos::allocate() d_lj4 = k_lj4.template view(); d_rminsq = k_rminsq.template view(); d_emin = k_emin.template view(); - } /* ---------------------------------------------------------------------- @@ -373,14 +389,6 @@ void AngleSPICAKokkos::init_style() k_lj4.template modify(); k_rminsq.template modify(); k_emin.template modify(); - - k_lj_type.template sync(); - k_lj1.template sync(); - k_lj2.template sync(); - k_lj3.template sync(); - k_lj4.template sync(); - k_rminsq.template sync(); - k_emin.template sync(); } /* ---------------------------------------------------------------------- @@ -396,10 +404,17 @@ void AngleSPICAKokkos::coeff(int narg, char **arg) for (int i = 1; i <= n; i++) { k_k.h_view[i] = k[i]; k_theta0.h_view[i] = theta0[i]; + k_repscale.h_view[i] = repscale[i]; + k_setflag.h_view[i] = setflag[i]; } k_k.template modify(); k_theta0.template modify(); + k_repscale.template modify(); + k_setflag.template modify(); + + Kokkos::printf("*** AngleSPICAKokkos::coeff\n"); + } /* ---------------------------------------------------------------------- @@ -415,10 +430,14 @@ void AngleSPICAKokkos::read_restart(FILE *fp) for (int i = 1; i <= n; i++) { k_k.h_view[i] = k[i]; k_theta0.h_view[i] = theta0[i]; + k_repscale.h_view[i] = repscale[i]; + k_setflag.h_view[i] = setflag[i]; } k_k.template modify(); k_theta0.template modify(); + k_repscale.template modify(); + k_setflag.template modify(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/angle_spica_kokkos.h b/src/KOKKOS/angle_spica_kokkos.h index 4670bdabf0..4865c684a2 100644 --- a/src/KOKKOS/angle_spica_kokkos.h +++ b/src/KOKKOS/angle_spica_kokkos.h @@ -81,10 +81,11 @@ class AngleSPICAKokkos : public AngleSPICA { int nlocal,newton_bond; int eflag,vflag; - typename ArrayTypes::t_int_1d d_type; - - typename ArrayTypes::tdual_ffloat_1d k_k, k_theta0; - typename ArrayTypes::t_ffloat_1d d_k, d_theta0; + typename ArrayTypes::tdual_int_1d k_setflag; + typename ArrayTypes::t_int_1d d_setflag, d_type; + + typename ArrayTypes::tdual_ffloat_1d k_k, k_theta0, k_repscale; + typename ArrayTypes::t_ffloat_1d d_k, d_theta0, d_repscale; typename ArrayTypes::tdual_int_2d k_lj_type; typename ArrayTypes::t_int_2d d_lj_type;