XGC1
diag_1d.hpp
Go to the documentation of this file.
1 #ifndef DIAG_1D_HPP
2 #define DIAG_1D_HPP
3 
4 #include "diagnostic.hpp"
5 #include "grid.hpp"
6 #include "plasma.hpp"
7 #include "charge.hpp"
8 #include "perturbed_B_field.hpp"
9 
10 class Diag1D : public Diagnostic{
11 
12  enum VarNames{
32  NVARS
33  };
34 
35  std::vector<std::string> var_names;
36 
38  bool f0_diag_on;
39 
40  View<double***,CLayout,HostType> d1d_f_pv1_h;
41  View<double***,CLayout,HostType> d1d_df_pv1_h;
42 
43  View<double*,CLayout,HostType> diag_1d_vol_h;
44 
45  // Precalculated values
46  View<double*, CLayout, DeviceType> v_curv_rad_fsa;
47  View<double*, CLayout, DeviceType> v_grad_B_rad_fsa;
48 
49  public:
50 
51  Diag1D() : Diagnostic() {}
52 
53  void write_volume(const VolumesAndAreas& volumes_and_areas);
54 
55  void init(NLReader::NamelistReader& nlr, const DomainDecomposition<DeviceType>& pol_decomp, const Grid<DeviceType>& grid, const MagneticField<DeviceType>& magnetic_field, const Plasma& plasma, bool allocate_df_diagnostic);
56 
57  View<double***,CLayout,HostType> diag_1d_f0(const Grid<DeviceType>& grid, const MagneticField<DeviceType>& magnetic_field, const DomainDecomposition<DeviceType>& pol_decomp, const VelocityGrid& vgrid, Plasma& plasma, PerturbedBField<DeviceType> &perturbed_B_field, const ElectricField<DeviceType>& electric_field, const Simulation<DeviceType>& sml);
58 
59  void write(const Grid<DeviceType>& grid, const MagneticField<DeviceType>& magnetic_field, const DomainDecomposition<DeviceType>& pol_decomp, const VelocityGrid& vgrid, Plasma& plasma, const Charges& charges, const ElectricField<DeviceType>& electric_field, PerturbedBField<DeviceType> &perturbed_B_field, const Simulation<DeviceType>& sml, double time, int gstep);
60 
61  void reduce_and_copy_to_host(const View<double****,CLayout,DeviceType>& d1d_f_pv1, const View<double****,CLayout,DeviceType>& d1d_df_pv1) const;
62 
63  void clear();
64 };
65 
66 #endif
Definition: diag_1d.hpp:10
void reduce_and_copy_to_host(const View< double ****, CLayout, DeviceType > &d1d_f_pv1, const View< double ****, CLayout, DeviceType > &d1d_df_pv1) const
Definition: diag_1d.cpp:544
View< double *, CLayout, DeviceType > v_grad_B_rad_fsa
Definition: diag_1d.hpp:47
bool f0_diag_on
Definition: diag_1d.hpp:38
View< double *, CLayout, DeviceType > v_curv_rad_fsa
Definition: diag_1d.hpp:46
bool deltaf_diag_on
Definition: diag_1d.hpp:37
Diag1D()
Definition: diag_1d.hpp:51
void write_volume(const VolumesAndAreas &volumes_and_areas)
Definition: diag_1d.cpp:310
View< double *, CLayout, HostType > diag_1d_vol_h
Definition: diag_1d.hpp:43
View< double ***, CLayout, HostType > d1d_df_pv1_h
Definition: diag_1d.hpp:41
View< double ***, CLayout, HostType > diag_1d_f0(const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const DomainDecomposition< DeviceType > &pol_decomp, const VelocityGrid &vgrid, Plasma &plasma, PerturbedBField< DeviceType > &perturbed_B_field, const ElectricField< DeviceType > &electric_field, const Simulation< DeviceType > &sml)
Definition: diag_1d.cpp:7
void write(const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const DomainDecomposition< DeviceType > &pol_decomp, const VelocityGrid &vgrid, Plasma &plasma, const Charges &charges, const ElectricField< DeviceType > &electric_field, PerturbedBField< DeviceType > &perturbed_B_field, const Simulation< DeviceType > &sml, double time, int gstep)
Definition: diag_1d.cpp:380
VarNames
Definition: diag_1d.hpp:12
@ RadialFluxExB
Definition: diag_1d.hpp:24
@ GC_Density
Definition: diag_1d.hpp:13
@ RadialEnFlux
Definition: diag_1d.hpp:21
@ ParallelMeanEnergy
Definition: diag_1d.hpp:19
@ GC_ToroidalFlow
Definition: diag_1d.hpp:14
@ RadialEnFluxExB
Definition: diag_1d.hpp:25
@ MarkerDensity
Definition: diag_1d.hpp:31
@ RadialFlux
Definition: diag_1d.hpp:18
@ VParxB
Definition: diag_1d.hpp:27
@ GradPsiSqr
Definition: diag_1d.hpp:28
@ RadialMomFlux
Definition: diag_1d.hpp:23
@ ParallelFlow
Definition: diag_1d.hpp:16
@ RadialEnFlux3DB
Definition: diag_1d.hpp:30
@ PerpTemp
Definition: diag_1d.hpp:20
@ GC_PoloidalFlow
Definition: diag_1d.hpp:15
@ TorAngMom
Definition: diag_1d.hpp:17
@ NVARS
Definition: diag_1d.hpp:32
@ RadialMomFluxExB
Definition: diag_1d.hpp:22
@ PoloidalExBFlow
Definition: diag_1d.hpp:26
@ RadialFlux3DB
Definition: diag_1d.hpp:29
void clear()
Definition: diag_1d.cpp:553
View< double ***, CLayout, HostType > d1d_f_pv1_h
Definition: diag_1d.hpp:40
void init(NLReader::NamelistReader &nlr, const DomainDecomposition< DeviceType > &pol_decomp, const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const Plasma &plasma, bool allocate_df_diagnostic)
Definition: diag_1d.cpp:324
std::vector< std::string > var_names
Definition: diag_1d.hpp:35
Definition: diagnostic.hpp:10
Definition: magnetic_field.hpp:12
Definition: NamelistReader.hpp:193
Definition: perturbed_B_field.hpp:12
Definition: plasma.hpp:13
Definition: sml.hpp:9
Definition: magnetic_field.F90:1
subroutine plasma(grid, itr, p, dene_out, deni_out, Te_out, Ti_out, Vparai_out, ignore_vacuum)
Calculate the plasma density, temperature, and parallel velocity for a point in triangle itr using pl...
Definition: neutral_totalf.F90:1548
Definition: charge.hpp:66
Definition: electric_field.hpp:76
Definition: velocity_grid.hpp:8
Definition: volumes_and_areas.hpp:8