ASPECT
particles.h
Go to the documentation of this file.
1 // ------------------------------------------------------
2 //
3 // SPDX-License-Identifier: GPL-2.0-or-later
4 //
5 // SPDX-FileCopyrightText: Copyright (C) 2011-2026 by the ASPECT authors.
6 //
7 // This file is part of ASPECT.
8 //
9 // Detailed license information governing the source code and
10 // contributions can be found in the folder LICENSES and in
11 // LICENSE and CONTRIBUTING.md at the top level directory.
12 //
13 // ------------------------------------------------------
14 
15 #ifndef _aspect_postprocess_particle_h
16 #define _aspect_postprocess_particle_h
17 
19 
22 
25 
26 #include <thread>
27 #include <tuple>
28 
29 
30 namespace aspect
31 {
32  namespace Postprocess
33  {
34  namespace internal
35  {
43  template <int dim>
44  class ParticleOutput : public ::DataOutInterface<0,dim>
45  {
46  public:
53  void build_patches(const Particles::ParticleHandler<dim> &particle_handler,
55  const std::vector<std::string> &exclude_output_properties,
56  const bool only_group_3d_vectors);
57 
58  private:
62  const std::vector<DataOutBase::Patch<0,dim>> &
63  get_patches () const override;
64 
68  std::vector<std::string>
69  get_dataset_names () const override;
70 
74  std::vector<
75  std::tuple<unsigned int,
76  unsigned int,
77  std::string,
79  get_nonscalar_data_ranges () const override;
80 
85  std::vector<DataOutBase::Patch<0,dim>> patches;
86 
90  std::vector<std::string> dataset_names;
91 
95  std::vector<
96  std::tuple<unsigned int,
97  unsigned int,
98  std::string,
101  };
102  }
103 
113  template <int dim>
114  class Particles : public Interface<dim>, public ::aspect::SimulatorAccess<dim>
115  {
116  public:
120  Particles();
121 
125  ~Particles() override;
126 
144  std::pair<std::string,std::string> execute (TableHandler &statistics) override;
145 
149  void save (std::map<std::string, std::string> &status_strings) const override;
150 
154  void load (const std::map<std::string, std::string> &status_strings) override;
155 
160  template <class Archive>
161  void serialize (Archive &ar, const unsigned int version);
162 
166  static
167  void
169 
173  void
174  parse_parameters (ParameterHandler &prm) override;
175 
176  private:
183  std::vector<double> output_interval;
184 
188  std::vector<double> last_output_time;
189 
199  void set_last_output_time (const unsigned int particle_manager,
200  const double current_time);
201 
206  std::vector<unsigned int> output_file_number;
207 
211  std::vector<std::vector<std::string>> output_formats;
212 
224  std::map<std::string,std::vector<std::pair<double,std::string>>> times_and_pvtu_file_names;
225 
235  std::map<std::string,std::vector<std::vector<std::string>>> output_file_names_by_timestep;
236 
245  std::map<std::string,std::vector<XDMFEntry>> xdmf_entries;
246 
254  unsigned int group_files;
255 
265 
274 
279  std::thread background_thread;
280 
287  std::vector<std::vector<std::string>> exclude_output_properties;
288 
296  static
297  void writer (const std::string &filename,
298  const std::string &temporary_filename,
299  const std::string &file_contents);
300 
320  void write_description_files (const internal::ParticleOutput<dim> &data_out,
321  const std::string &description_file_prefix,
322  const std::string &solution_file_directory,
323  const std::string &solution_file_prefix,
324  const std::vector<std::string> &filenames);
325  };
326  }
327 }
328 
329 #endif
static void declare_parameters(ParameterHandler &prm)
std::map< std::string, std::vector< XDMFEntry > > xdmf_entries
Definition: particles.h:245
std::vector< std::tuple< unsigned int, unsigned int, std::string, DataComponentInterpretation::DataComponentInterpretation > > get_nonscalar_data_ranges() const override
const std::vector< DataOutBase::Patch< 0, dim > > & get_patches() const override
std::vector< std::vector< std::string > > output_formats
Definition: particles.h:211
std::vector< DataOutBase::Patch< 0, dim > > patches
Definition: particles.h:85
void parse_parameters(ParameterHandler &prm)
std::vector< std::vector< std::string > > exclude_output_properties
Definition: particles.h:287
std::vector< std::string > get_dataset_names() const override
void build_patches(const Particles::ParticleHandler< dim > &particle_handler, const aspect::Particle::Property::ParticlePropertyInformation &property_information, const std::vector< std::string > &exclude_output_properties, const bool only_group_3d_vectors)
std::vector< double > last_output_time
Definition: particles.h:188
std::vector< double > output_interval
Definition: particles.h:183
std::map< std::string, std::vector< std::vector< std::string > > > output_file_names_by_timestep
Definition: particles.h:235
std::vector< std::string > dataset_names
Definition: particles.h:90
std::vector< unsigned int > output_file_number
Definition: particles.h:206
std::string temporary_output_location
Definition: particles.h:264
std::map< std::string, std::vector< std::pair< double, std::string > > > times_and_pvtu_file_names
Definition: particles.h:224
std::vector< std::tuple< unsigned int, unsigned int, std::string, DataComponentInterpretation::DataComponentInterpretation > > vector_datasets
Definition: particles.h:100