XGCa
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
diagnostics.hpp
Go to the documentation of this file.
1 #ifndef DIAGNOSTICS_HPP
2 #define DIAGNOSTICS_HPP
3 
4 #include "push_diagnostic.hpp"
5 #include "heat_diagnostics.hpp"
7 #include "tracer_diag.hpp"
8 #include "loop_voltage_diag.hpp"
9 #include "particle_stream.hpp"
10 #include <mpi.h>
11 
12 /* Contains all the diagnostics */
13 struct Diagnostics{
20  // Make these use Diagnostic class
21  bool diag_1d_on;
23 
24  bool diag_3d_on;
26 
28 
30 
32  nlr.use_namelist("diag_param");
33  diag_1d_on = nlr.get<bool>("diag_1d_on",true);
34  diag_1d_period = nlr.get<int>("diag_1d_period",10);
35 
36  diag_3d_on = nlr.get<bool>("diag_3d_on",true);
37  diag_3d_period = nlr.get<int>("diag_3d_period",diag_1d_period);
38 
39  nlr.use_namelist("sml_param");
40  int special = nlr.get<int>("sml_special",0);
41  diag_poincare = (special==4);
42  }
43 
44  void open_streams(int step){
47  pseudo_inv_diag.open_stream("xgc.pseudo_inv.bp", mode);
48  }
49  if(loop_vol_diag.is_on){
51 #ifdef USE_MPI
52  loop_vol_diag.open_stream("xgc.loop_vol.bp", mode, MPI_COMM_SELF);
53 #endif
54  }
55  if(tracer_diag.is_on){
56  tracer_diag.open_stream("xgc.particle_stream.bp", XGC_IO_Mode::Write);
57  }
58  }
59 
60  void close_streams(){
64  }
65 };
66 
67 #endif
int diag_1d_period
How many steps between diag_1d output.
Definition: diagnostics.hpp:22
int diag_3d_period
How many steps between diag_3d output.
Definition: diagnostics.hpp:25
T get(const string &param, const T default_val, int val_ind=0)
Definition: NamelistReader.hpp:373
TracerDiagnostics tracer_diag
Definition: diagnostics.hpp:17
Definition: diagnostics.hpp:13
Definition: NamelistReader.hpp:193
Diagnostics(NLReader::NamelistReader &nlr)
Definition: diagnostics.hpp:31
Diagnostics()
Definition: diagnostics.hpp:29
LoopVolDiagnostics loop_vol_diag
Definition: diagnostics.hpp:18
PseudoInvDiagnostics pseudo_inv_diag
Definition: diagnostics.hpp:16
bool is_on
Definition: diagnostic.hpp:19
PushDiagnostic< DeviceType > push_diag
Definition: diagnostics.hpp:14
void close_stream()
Definition: diagnostic.hpp:81
void use_namelist(const string &namelist)
Definition: NamelistReader.hpp:355
Definition: pseudo_inverse_diag.hpp:26
bool diag_1d_on
Whether diag_1d is output.
Definition: diagnostics.hpp:21
void open_stream(const std::string &filename, const XGC_IO_Mode &mode)
Definition: diagnostic.hpp:57
Definition: tracer_diag.hpp:12
void open_streams(int step)
Definition: diagnostics.hpp:44
XGC_IO_Mode
Definition: xgc_io.hpp:12
bool has_been_triggered(int step)
Definition: diagnostic.hpp:29
void close_streams()
Definition: diagnostics.hpp:60
bool diag_poincare
Whether to do poincare output.
Definition: diagnostics.hpp:27
HeatDiagnostics< DeviceType > heat_diag
Definition: diagnostics.hpp:15
ParticleStream particle_stream
Definition: diagnostics.hpp:19
Definition: particle_stream.hpp:6
bool diag_3d_on
Whether diag_3d is output.
Definition: diagnostics.hpp:24
Definition: loop_voltage_diag.hpp:20