WarpX
Diagnostics.H
Go to the documentation of this file.
1 #ifndef WARPX_DIAGNOSTICS_H_
2 #define WARPX_DIAGNOSTICS_H_
3 
5 
11 
12 #include <AMReX_IntVect.H>
13 #include <AMReX_REAL.H>
14 #include <AMReX_Vector.H>
15 #include <AMReX_AmrParticles.H>
16 
17 #include <AMReX_BaseFwd.H>
18 
19 #include <map>
20 #include <memory>
21 #include <string>
22 #include <vector>
23 
31 {
32 public:
38  Diagnostics (int i, std::string name);
39 
41  virtual ~Diagnostics ();
42 
47  void ComputeAndPack ();
48 
62  virtual void Flush (int i_buffer) = 0;
64  void InitData ();
73  virtual void InitializeFieldFunctors (int lev) = 0;
80  virtual void InitializeFieldFunctorsRZopenPMD ([[maybe_unused]] int lev) { }
82  virtual void InitializeParticleFunctors () {}
88  virtual bool DoComputeAndPack(int step, bool force_flush=false) = 0;
95  virtual bool DoDump (int step, int i_buffer, bool force_flush=false) = 0;
97  void NewIteration () {m_already_done = false;}
104  void FilterComputePackFlush (int step, bool force_flush=false);
106  bool DoDumpLastTimestep () const {return m_dump_last_timestep;}
107 
108 protected:
110  bool BaseReadParameters ();
112  void InitBaseData ();
117  virtual void InitializeBufferData (int i_buffer, int lev) = 0;
121  virtual void DerivedInitData () {}
123  virtual void InitializeParticleBuffer () = 0;
127  virtual void PrepareBufferData () {}
131  virtual void UpdateBufferData () {}
135  virtual void PrepareFieldDataForOutput () {}
137  virtual void PrepareParticleDataForOutput () {}
143  virtual void MovingWindowAndGalileanDomainShift (int step) { amrex::ignore_unused(step); }
145  std::string m_diag_name;
147  std::string m_file_prefix;
159 
163  std::vector< std::string > m_pfield_species;
165  std::vector< bool > m_pfield_do_average;
167  std::vector< int > m_pfield_species_index;
169  std::vector< std::string > m_pfield_strings;
171  std::vector< bool> m_pfield_dofilter;
173  std::vector< std::string > m_pfield_filter_strings;
174 
176  bool m_dump_last_timestep = true;
180  std::string m_format = "plotfile";
182  int m_already_done = false;
184  std::unique_ptr<FlushFormat> m_flush_format;
191 
199  // a particle buffer here?
200  int nlev;
201  int nmax_lev;
205  std::vector< std::string > m_output_species_names;
207  std::vector< std::string > m_all_species_names;
233 
244 
245 };
246 
247 #endif // WARPX_DIAGNOSTICS_H_
std::string m_diag_name
Definition: Diagnostics.H:145
void FilterComputePackFlush(int step, bool force_flush=false)
Definition: Diagnostics.cpp:475
int nlev_output
Definition: Diagnostics.H:203
std::vector< bool > m_pfield_dofilter
Definition: Diagnostics.H:171
virtual void PrepareFieldDataForOutput()
Definition: Diagnostics.H:135
bool DoDumpLastTimestep() const
Definition: Diagnostics.H:106
virtual void InitializeParticleFunctors()
Definition: Diagnostics.H:82
std::vector< std::string > m_pfield_filter_strings
Definition: Diagnostics.H:173
std::vector< int > m_pfield_species_index
Definition: Diagnostics.H:167
void InitBaseData()
Definition: Diagnostics.cpp:365
bool BaseReadParameters()
Definition: Diagnostics.cpp:48
amrex::Vector< amrex::Vector< int > > m_totalParticles_flushed_already
Definition: Diagnostics.H:238
void ComputeAndPack()
Definition: Diagnostics.cpp:430
amrex::Vector< int > m_rho_per_species_index
Definition: Diagnostics.H:228
amrex::Vector< amrex::Real > m_lo
Definition: Diagnostics.H:222
void InitData()
Definition: Diagnostics.cpp:290
std::string m_format
Definition: Diagnostics.H:180
virtual void InitializeParticleBuffer()=0
Diagnostics(int i, std::string name)
Definition: Diagnostics.cpp:40
std::vector< std::string > m_output_species_names
Definition: Diagnostics.H:205
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void ignore_unused(const Ts &...)
virtual void MovingWindowAndGalileanDomainShift(int step)
Definition: Diagnostics.H:143
virtual void DerivedInitData()
Definition: Diagnostics.H:121
virtual ~Diagnostics()
amrex::Vector< std::unique_ptr< ComputeParticleDiagFunctor > > m_all_particle_functors
Definition: Diagnostics.H:232
std::vector< bool > m_pfield_do_average
Definition: Diagnostics.H:165
int m_already_done
Definition: Diagnostics.H:182
i
Definition: check_interp_points_and_weights.py:173
amrex::Vector< std::string > m_varnames_fields
Definition: Diagnostics.H:158
int m_num_buffers
Definition: Diagnostics.H:226
int nmax_lev
Definition: Diagnostics.H:201
amrex::Vector< std::string > m_pfield_varnames
Definition: Diagnostics.H:161
virtual bool DoDump(int step, int i_buffer, bool force_flush=false)=0
virtual void PrepareParticleDataForOutput()
Definition: Diagnostics.H:137
virtual void UpdateBufferData()
Definition: Diagnostics.H:131
string name
Definition: Stencil.py:485
amrex::Vector< amrex::Vector< int > > m_totalParticles_in_buffer
Definition: Diagnostics.H:243
amrex::Vector< amrex::Vector< ParticleDiag > > m_output_species
Definition: Diagnostics.H:211
void NewIteration()
Definition: Diagnostics.H:97
virtual bool DoComputeAndPack(int step, bool force_flush=false)=0
virtual void InitializeFieldFunctors(int lev)=0
int m_diag_index
Definition: Diagnostics.H:151
std::vector< std::string > m_pfield_strings
Definition: Diagnostics.H:169
int m_file_min_digits
Definition: Diagnostics.H:149
std::vector< std::string > m_pfield_species
Definition: Diagnostics.H:163
amrex::Vector< amrex::Real > m_hi
Definition: Diagnostics.H:224
amrex::IntVect m_crse_ratio
Definition: Diagnostics.H:220
amrex::Vector< amrex::Vector< amrex::MultiFab > > m_mf_output
Definition: Diagnostics.H:190
std::unique_ptr< FlushFormat > m_flush_format
Definition: Diagnostics.H:184
bool m_dump_last_timestep
Definition: Diagnostics.H:176
int nlev
Definition: Diagnostics.H:200
amrex::Vector< std::string > m_varnames
Definition: Diagnostics.H:156
amrex::Vector< amrex::Vector< std::unique_ptr< ComputeDiagFunctor > > > m_all_field_functors
Definition: Diagnostics.H:217
virtual void InitializeBufferData(int i_buffer, int lev)=0
virtual void PrepareBufferData()
Definition: Diagnostics.H:127
std::string m_file_prefix
Definition: Diagnostics.H:147
virtual void InitializeFieldFunctorsRZopenPMD([[maybe_unused]] int lev)
Definition: Diagnostics.H:80
std::vector< std::string > m_all_species_names
Definition: Diagnostics.H:207
virtual void Flush(int i_buffer)=0
Flush particle and field buffers to file using the FlushFormat member variable.
amrex::Vector< amrex::Vector< std::unique_ptr< PinnedMemoryParticleContainer > > > m_particles_buffer
Definition: Diagnostics.H:230
base class for diagnostics. Contains main routines to filter, compute and flush diagnostics.
Definition: Diagnostics.H:30
amrex::Vector< amrex::Vector< amrex::Geometry > > m_geom_output
Definition: Diagnostics.H:198