WarpX
Diagnostics.H
Go to the documentation of this file.
1 #ifndef WARPX_DIAGNOSTICS_H_
2 #define WARPX_DIAGNOSTICS_H_
3 
5 
8 
9 #include <AMReX_IntVect.H>
10 #include <AMReX_REAL.H>
11 #include <AMReX_Vector.H>
12 
13 #include <AMReX_BaseFwd.H>
14 
15 #include <memory>
16 #include <string>
17 #include <vector>
18 
26 {
27 public:
28  Diagnostics (int i, std::string name);
30  virtual ~Diagnostics () ;
35  void ComputeAndPack ();
49  virtual void Flush (int i_buffer) = 0;
51  void InitData ();
60  virtual void InitializeFieldFunctors (int lev) = 0;
66  virtual bool DoComputeAndPack(int step, bool force_flush=false) = 0;
72  virtual bool DoDump (int step, int i_buffer, bool force_flush=false) = 0;
74  void NewIteration () {m_already_done = false;}
81  void FilterComputePackFlush (int step, bool force_flush=false);
83  bool DoDumpLastTimestep () const {return m_dump_last_timestep;}
84 
85 protected:
87  bool BaseReadParameters ();
89  void InitBaseData ();
94  virtual void InitializeFieldBufferData (int i_buffer, int lev) = 0;
98  virtual void DerivedInitData () {}
100  virtual void InitializeParticleBuffer () = 0;
104  virtual void PrepareFieldDataForOutput () {}
110  virtual void MovingWindowAndGalileanDomainShift (int /*step*/) {}
112  std::string m_diag_name;
114  std::string m_file_prefix;
122  amrex::Vector< std::string > m_varnames;
124  bool m_dump_last_timestep = true;
128  std::string m_format = "plotfile";
130  int m_already_done = false;
132  std::unique_ptr<FlushFormat> m_flush_format;
138  amrex::Vector< amrex::Vector< amrex::MultiFab > > m_mf_output;
139 
146  amrex::Vector< amrex::Vector <amrex::Geometry> > m_geom_output;
147  // a particle buffer here?
148  int nlev;
149  int nmax_lev;
153  std::vector< std::string > m_output_species_names;
155  std::vector< std::string > m_all_species_names;
157  amrex::Vector< ParticleDiag > m_output_species;
163  amrex::Vector< amrex::Vector <std::unique_ptr<ComputeDiagFunctor > > > m_all_field_functors;
166  amrex::IntVect m_crse_ratio = amrex::IntVect(1);
168  amrex::Vector< amrex::Real> m_lo;
170  amrex::Vector< amrex::Real> m_hi;
174  amrex::Vector<int> m_rho_per_species_index;
176  virtual void TMP_ClearSpeciesDataForBTD() {}
177 };
178 
179 #endif // WARPX_DIAGNOSTICS_H_
std::string m_diag_name
Definition: Diagnostics.H:112
void FilterComputePackFlush(int step, bool force_flush=false)
Definition: Diagnostics.cpp:329
int nlev_output
Definition: Diagnostics.H:151
virtual void PrepareFieldDataForOutput()
Definition: Diagnostics.H:104
bool DoDumpLastTimestep() const
Definition: Diagnostics.H:83
virtual void InitializeFieldBufferData(int i_buffer, int lev)=0
void InitBaseData()
Definition: Diagnostics.cpp:238
bool BaseReadParameters()
Definition: Diagnostics.cpp:44
virtual void TMP_ClearSpeciesDataForBTD()
Definition: Diagnostics.H:176
virtual void MovingWindowAndGalileanDomainShift(int)
Definition: Diagnostics.H:110
void ComputeAndPack()
Definition: Diagnostics.cpp:297
amrex::Vector< int > m_rho_per_species_index
Definition: Diagnostics.H:174
amrex::Vector< amrex::Real > m_lo
Definition: Diagnostics.H:168
void InitData()
Definition: Diagnostics.cpp:184
std::string m_format
Definition: Diagnostics.H:128
virtual void InitializeParticleBuffer()=0
Diagnostics(int i, std::string name)
Definition: Diagnostics.cpp:34
std::vector< std::string > m_output_species_names
Definition: Diagnostics.H:153
virtual void DerivedInitData()
Definition: Diagnostics.H:98
virtual ~Diagnostics()
Definition: Diagnostics.cpp:39
int m_already_done
Definition: Diagnostics.H:130
amrex::Vector< ParticleDiag > m_output_species
Definition: Diagnostics.H:157
i
Definition: check_interp_points_and_weights.py:171
int m_num_buffers
Definition: Diagnostics.H:172
int nmax_lev
Definition: Diagnostics.H:149
name
Definition: run_automated.py:204
virtual bool DoDump(int step, int i_buffer, bool force_flush=false)=0
void NewIteration()
Definition: Diagnostics.H:74
virtual bool DoComputeAndPack(int step, bool force_flush=false)=0
virtual void InitializeFieldFunctors(int lev)=0
int m_diag_index
Definition: Diagnostics.H:118
int m_file_min_digits
Definition: Diagnostics.H:116
amrex::Vector< amrex::Real > m_hi
Definition: Diagnostics.H:170
amrex::IntVect m_crse_ratio
Definition: Diagnostics.H:166
amrex::Vector< amrex::Vector< amrex::MultiFab > > m_mf_output
Definition: Diagnostics.H:138
std::unique_ptr< FlushFormat > m_flush_format
Definition: Diagnostics.H:132
bool m_dump_last_timestep
Definition: Diagnostics.H:124
int nlev
Definition: Diagnostics.H:148
amrex::Vector< std::string > m_varnames
Definition: Diagnostics.H:122
amrex::Vector< amrex::Vector< std::unique_ptr< ComputeDiagFunctor > > > m_all_field_functors
Definition: Diagnostics.H:163
std::string m_file_prefix
Definition: Diagnostics.H:114
std::vector< std::string > m_all_species_names
Definition: Diagnostics.H:155
virtual void Flush(int i_buffer)=0
Flush particle and field buffers to file using the FlushFormat member variable.
base class for diagnostics. Contains main routines to filter, compute and flush diagnostics.
Definition: Diagnostics.H:25
amrex::Vector< amrex::Vector< amrex::Geometry > > m_geom_output
Definition: Diagnostics.H:146