/* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain rights in this software. This software is distributed under the GNU General Public License. See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ #ifdef PAIR_CLASS // clang-format off PairStyle(lj/cut/coul/dsf/kk,PairLJCutCoulDSFKokkos); PairStyle(lj/cut/coul/dsf/kk/device,PairLJCutCoulDSFKokkos); PairStyle(lj/cut/coul/dsf/kk/host,PairLJCutCoulDSFKokkos); // clang-format on #else // clang-format off #ifndef LMP_PAIR_LJ_CUT_COUL_DSF_KOKKOS_H #define LMP_PAIR_LJ_CUT_COUL_DSF_KOKKOS_H #include "pair_kokkos.h" #include "pair_lj_cut_coul_dsf.h" #include "neigh_list_kokkos.h" namespace LAMMPS_NS { template class PairLJCutCoulDSFKokkos : public PairLJCutCoulDSF { public: enum {EnabledNeighFlags=FULL|HALFTHREAD|HALF}; enum {COUL_FLAG=1}; typedef DeviceType device_type; typedef ArrayTypes AT; PairLJCutCoulDSFKokkos(class LAMMPS *); ~PairLJCutCoulDSFKokkos(); void compute(int, int); void init_style(); double init_one(int, int); protected: template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fcoul(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype, const F_FLOAT& factor_coul, const F_FLOAT& qtmp) const; template KOKKOS_INLINE_FUNCTION F_FLOAT compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; template KOKKOS_INLINE_FUNCTION F_FLOAT compute_ecoul(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype, const F_FLOAT& factor_coul, const F_FLOAT& qtmp) const; Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; // hardwired to space for 12 atom types params_lj_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cut_ljsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cut_coulsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; typename AT::t_x_array_randomread x; typename AT::t_x_array c_x; typename AT::t_f_array f; typename AT::t_int_1d_randomread type; typename AT::t_float_1d_randomread q; DAT::tdual_efloat_1d k_eatom; DAT::tdual_virial_array k_vatom; typename AT::t_efloat_1d d_eatom; typename AT::t_virial_array d_vatom; int newton_pair; typename AT::tdual_ffloat_2d k_cutsq; typename AT::t_ffloat_2d d_cutsq; typename AT::tdual_ffloat_2d k_cut_ljsq; typename AT::t_ffloat_2d d_cut_ljsq; typename AT::t_ffloat_2d d_cut_coulsq; int neighflag; int nlocal,nall,eflag,vflag; double special_coul[4]; double special_lj[4]; double qqrd2e; void allocate(); friend struct PairComputeFunctor; friend struct PairComputeFunctor; friend struct PairComputeFunctor; friend struct PairComputeFunctor; friend struct PairComputeFunctor; friend struct PairComputeFunctor; friend EV_FLOAT pair_compute_neighlist(PairLJCutCoulDSFKokkos*,NeighListKokkos*); friend EV_FLOAT pair_compute_neighlist(PairLJCutCoulDSFKokkos*,NeighListKokkos*); friend EV_FLOAT pair_compute_neighlist(PairLJCutCoulDSFKokkos*,NeighListKokkos*); friend EV_FLOAT pair_compute(PairLJCutCoulDSFKokkos*, NeighListKokkos*); friend void pair_virial_fdotr_compute(PairLJCutCoulDSFKokkos*); }; } #endif #endif /* ERROR/WARNING messages: E: Cannot use Kokkos pair style with rRESPA inner/middle Self-explanatory. E: Cannot use chosen neighbor list style with lj/cut/coul/cut/kk That style is not supported by Kokkos. */