#ifdef FIX_CLASS
FixStyle(gravity/kk,FixGravityKokkos<LMPDeviceType>)
FixStyle(gravity/kk/device,FixGravityKokkos<LMPDeviceType>)
FixStyle(gravity/kk/host,FixGravityKokkos<LMPHostType>)
#else
#ifndef LMP_FIX_GRAVITY_KOKKOS_H
#define LMP_FIX_GRAVITY_KOKKOS_H
#include "fix_gravity.h"
#include "kokkos_type.h"
namespace LAMMPS_NS {
struct TagFixGravityRMass {};
struct TagFixGravityMass {};
template<class DeviceType>
class FixGravityKokkos : public FixGravity {
public:
FixGravityKokkos(class LAMMPS *, int, char **);
virtual ~FixGravityKokkos() {}
void post_force(int);
KOKKOS_INLINE_FUNCTION
void operator()(TagFixGravityRMass, const int, double &) const;
KOKKOS_INLINE_FUNCTION
void operator()(TagFixGravityMass, const int, double &) const;
private:
typename ArrayTypes<DeviceType>::t_x_array x;
typename ArrayTypes<DeviceType>::t_f_array f;
typename ArrayTypes<DeviceType>::t_float_1d_randomread rmass;
typename ArrayTypes<DeviceType>::t_float_1d_randomread mass;
typename ArrayTypes<DeviceType>::t_int_1d type;
typename ArrayTypes<DeviceType>::t_int_1d mask;
};
}
#endif #endif