XGC1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
push_diagnostic.hpp
Go to the documentation of this file.
1 #ifndef PUSH_DIAGNOSTIC_HPP
2 #define PUSH_DIAGNOSTIC_HPP
3 
4 #include "push_controls.hpp"
5 #include "electric_field.hpp"
6 #include "perturbed_B_field.hpp"
7 
8 namespace Diag{
9  enum VF_DIAG{
11  };
12 
13  enum D1D_PV1{
14  D1D_NPV1 = 19
15  };
16 }
17 
18 // PushDiagnostic class
19 template<class Device>
21  public:
22 
23  // Used in diag_1d_port1 (in pushe)
24  int d1d_period;
25 
26  // Arrays
27  Kokkos::View<double****,Kokkos::LayoutRight,Device> d1d_f_pv1;
28  Kokkos::View<double****,Kokkos::LayoutRight,Device> d1d_df_pv1;
29 
30  // Constructor
31  PushDiagnostic(NLReader::NamelistReader& nlr, bool allocate_df_diagnostic, int np, int nspecies, int nthreads);
32 
33  // Null constructor
35 
36  // Check whether to record diagnostics
37  inline bool determine_diag_on(int istep,int ipc);
38 
39  // General 1D push diagnostics
40  KOKKOS_INLINE_FUNCTION void d1d_port1(const Grid<Device> &grid, const Species<Device> &species, const MagneticField<Device> &magnetic_field, const SimdParticles &part,const SimdPhase &derivs,int sp_type, const Simd<double> *vd) const;
41 
42 };
43 
44 template<class Device>
45 KOKKOS_INLINE_FUNCTION void push_diagnostics_c(const Grid<Device> &grid,
46  const MagneticField<Device> &magnetic_field, const ElectricField<Device> &electric_field,
47  const PushDiagnostic<Device> &diag, const PushControls &push_controls, const Species<Device> &species,
48  const PerturbedBField<Device> &perturbed_B_field, int);
49 
50 #include "push_diagnostic.tpp"
51 #endif
Definition: perturbed_B_field.hpp:11
Definition: push_diagnostic.hpp:10
Definition: push_controls.hpp:9
Definition: NamelistReader.hpp:193
Definition: magnetic_field.hpp:12
Definition: electric_field.hpp:37
Definition: grid.hpp:67
int d1d_period
steps between diag recording
Definition: push_diagnostic.hpp:24
subroutine derivs(x, phi, dx)
Definition: field_following.F90:97
D1D_PV1
Definition: push_diagnostic.hpp:13
Kokkos::View< double ****, Kokkos::LayoutRight, Device > d1d_df_pv1
Array of delta f diagnostic quantities (optional)
Definition: push_diagnostic.hpp:28
KOKKOS_INLINE_FUNCTION void push_diagnostics_c(const Grid< Device > &grid, const MagneticField< Device > &magnetic_field, const ElectricField< Device > &electric_field, const PushDiagnostic< Device > &diag, const PushControls &push_controls, const Species< Device > &species, const PerturbedBField< Device > &perturbed_B_field, int)
PushDiagnostic()
Definition: push_diagnostic.hpp:34
Definition: particles.hpp:58
KOKKOS_INLINE_FUNCTION void d1d_port1(const Grid< Device > &grid, const Species< Device > &species, const MagneticField< Device > &magnetic_field, const SimdParticles &part, const SimdPhase &derivs, int sp_type, const Simd< double > *vd) const
Definition: push_diagnostic.tpp:63
Definition: magnetic_field.F90:1
Definition: particles.hpp:17
Definition: push_diagnostic.hpp:20
Definition: push_diagnostic.hpp:14
bool determine_diag_on(int istep, int ipc)
Definition: push_diagnostic.tpp:24
Definition: species.hpp:75
Kokkos::View< double ****, Kokkos::LayoutRight, Device > d1d_f_pv1
Array of diagnostic quantities.
Definition: push_diagnostic.hpp:27
VF_DIAG
Definition: push_diagnostic.hpp:9