XGCa
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
pushe_diagnostics.hpp
Go to the documentation of this file.
1 #ifndef PUSHE_DIAGNOSTICS_HPP
2 #define PUSHE_DIAGNOSTICS_HPP
3 
4 #include "electric_field.hpp"
5 #include "perturbed_B_field.hpp"
6 
7 // Diagnostics class
8 template<class Device>
9 class Diagnostics {
10  public:
11 
12  // Used in diag_1d_port1 (in pushe)
13  int d1d_period;
14  int d1d_npsi;
15  double d1d_pin;
16  double d1d_dp_inv;
17 
18  // Arrays
19  Kokkos::View<double****,Kokkos::LayoutRight,Device> d1d_f_pv1;
20  Kokkos::View<double****,Kokkos::LayoutRight,Device> d1d_df_pv1;
21 
22  // Constructor
23  Diagnostics(int d1d_period_in, int d1d_npsi_in, double d1d_pin_in, double d1d_dp_inv_in, bool allocate_df_diagnostic, int np, int nspecies, int nthreads);
24 
25  // Null constructor
27 
28  // Check whether to record diagnostics
29  inline bool determine_diag_on(int istep,int ipc);
30 
31  // General 1D push diagnostics
32  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;
33 
34 };
35 
36 template<class Device>
37 KOKKOS_INLINE_FUNCTION void push_diagnostics_c(const TmpSpecies<Device>& tmp_species, const Grid<Device> &grid,
38  const MagneticField<Device> &magnetic_field, const ElectricField<Device> &electric_field,
39  const Diagnostics<Device> &diag, const Simulation<Device> &sml, const Species<Device> &species,
40  const PerturbedBField<Device> &perturbed_B_field, int);
41 
42 #include "pushe_diagnostics.tpp"
43 #endif
Definition: perturbed_B_field.hpp:12
double d1d_dp_inv
Inverse of the psi bin size.
Definition: pushe_diagnostics.hpp:16
Definition: sml.hpp:8
Definition: magnetic_field.hpp:9
Definition: electric_field.hpp:35
Definition: grid.hpp:10
KOKKOS_INLINE_FUNCTION void push_diagnostics_c(const TmpSpecies< Device > &tmp_species, const Grid< Device > &grid, const MagneticField< Device > &magnetic_field, const ElectricField< Device > &electric_field, const Diagnostics< Device > &diag, const Simulation< Device > &sml, const Species< Device > &species, const PerturbedBField< Device > &perturbed_B_field, int)
Definition: pushe_diagnostics.tpp:35
int d1d_period
steps between diag recording
Definition: pushe_diagnostics.hpp:13
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: pushe_diagnostics.tpp:70
Definition: particles.hpp:28
Diagnostics()
Definition: pushe_diagnostics.hpp:26
Definition: magnetic_field.F90:1
Definition: particles.hpp:11
Definition: species.hpp:13
Definition: species.hpp:47
Definition: pushe_diagnostics.hpp:9
int d1d_npsi
Number of psi bins.
Definition: pushe_diagnostics.hpp:14
Kokkos::View< double ****, Kokkos::LayoutRight, Device > d1d_df_pv1
Array of delta f diagnostic quantities (optional)
Definition: pushe_diagnostics.hpp:20
Kokkos::View< double ****, Kokkos::LayoutRight, Device > d1d_f_pv1
Array of diagnostic quantities.
Definition: pushe_diagnostics.hpp:19
bool determine_diag_on(int istep, int ipc)
Definition: pushe_diagnostics.tpp:26
double d1d_pin
?
Definition: pushe_diagnostics.hpp:15