1 /* ----------------------------------------------------------------------
2    SPARTA - Stochastic PArallel Rarefied-gas Time-accurate Analyzer
3    http://sparta.sandia.gov
4    Steve Plimpton, sjplimp@sandia.gov, Michael Gallis, magalli@sandia.gov
5    Sandia National Laboratories
6 
7    Copyright (2014) Sandia Corporation.  Under the terms of Contract
8    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
9    certain rights in this software.  This software is distributed under
10    the GNU General Public License.
11 
12    See the README file in the top-level SPARTA directory.
13 ------------------------------------------------------------------------- */
14 
15 #ifdef SURF_COLLIDE_CLASS
16 
17 SurfCollideStyle(vanish/kk,SurfCollideVanishKokkos)
18 
19 #else
20 
21 #ifndef SPARTA_SURF_COLLIDE_VANISH_KOKKOS_H
22 #define SPARTA_SURF_COLLIDE_VANISH_KOKKOS_H
23 
24 #include "surf_collide_vanish.h"
25 #include "kokkos_type.h"
26 
27 namespace SPARTA_NS {
28 
29 class SurfCollideVanishKokkos : public SurfCollideVanish {
30  public:
31 
32   SurfCollideVanishKokkos(class SPARTA *, int, char **);
33   SurfCollideVanishKokkos(class SPARTA *);
34   ~SurfCollideVanishKokkos() {}
35 
36   DAT::tdual_int_scalar k_nsingle;
37   DAT::t_int_scalar d_nsingle;
38   HAT::t_int_scalar h_nsingle;
39 
40   /* ----------------------------------------------------------------------
41      particle collision with surface with optional chemistry
42      ip = particle with current x = collision pt, current v = incident v
43      norm = surface normal unit vector
44      simply return ip = NULL to delete particle
45      return reaction = 0 = no reaction took place
46   ------------------------------------------------------------------------- */
47 
48   KOKKOS_INLINE_FUNCTION
49   Particle::OnePart*
50   collide_kokkos(Particle::OnePart *&ip, const double *, double &, int, int&) const
51   {
52     Kokkos::atomic_fetch_add(&d_nsingle(),1);
53 
54     ip = NULL;
55     return NULL;
56   }
57 };
58 
59 }
60 
61 #endif
62 #endif
63 
64 /* ERROR/WARNING messages:
65 
66 E: Illegal ... command
67 
68 Self-explanatory.  Check the input script syntax and compare to the
69 documentation for the command.  You can use -echo screen as a
70 command-line option when running SPARTA to see the offending line.
71 
72 */
73