-
Notifications
You must be signed in to change notification settings - Fork 232
/
hdf5.h
141 lines (121 loc) · 4.14 KB
/
hdf5.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/*
Copyright (C) 2015 - 2016 by the authors of the ASPECT code.
This file is part of ASPECT.
ASPECT is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
ASPECT is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with ASPECT; see the file doc/COPYING. If not see
<http://www.gnu.org/licenses/>.
*/
#ifndef _aspect_particle_output_hdf5_h
#define _aspect_particle_output_hdf5_h
#include <aspect/particle/output/interface.h>
#include <aspect/simulator_access.h>
#include <deal.II/base/data_out_base.h>
namespace aspect
{
namespace Particle
{
namespace Output
{
/**
* Class that outputs particles and their properties in hdf5 format.
*
* @ingroup ParticleOutput
*/
template <int dim>
class HDF5Output : public Interface<dim>,
public SimulatorAccess<dim>
{
public:
/**
* Constructor.
*
*/
HDF5Output();
/**
* Initialization function. This function is called once at the
* beginning of the program after parse_parameters is run and after the
* SimulatorAccess (if applicable) is initialized.
*/
virtual
void
initialize ();
/**
* Write data about the particles specified in the first argument
* to a file. If possible, encode the current simulation time
* into this file using the data provided in the last argument.
*
* @param[in] particles The set of particles to generate a graphical
* representation for.
*
* @param [in] property_information Information object containing names and number
* of components of each property.
*
* @param[in] current_time Current time of the simulation, given as either
* years or seconds, as selected in the input file. In other words,
* output writers do not need to know the units in which time is
* described.
*
* @return The name of the file that was written, or any other
* information that describes what output was produced if for example
* multiple files were created.
*/
virtual
std::string
output_particle_data(const std::multimap<types::LevelInd, Particle<dim> > &particles,
const Property::ParticlePropertyInformation &property_information,
const double current_time);
/**
* Read or write the data of this object for serialization
*/
template <class Archive>
void serialize(Archive &ar, const unsigned int version);
/**
* Save the state of the object.
*/
virtual
void
save (std::ostringstream &os) const;
/**
* Restore the state of the object.
*/
virtual
void
load (std::istringstream &is);
/**
* Returns a constructed filename.
*/
const std::string
get_file_name();
/**
* Get the absolute path where the specified particle output will be generated.
*/
const std::string
get_particle_output_location();
/**
* Get the current file index.
*/
const std::string
get_file_index();
private:
/**
* Internal index of file output number.
*/
unsigned int file_index;
/**
* Vector of so far created xdmf_entries (one per written output
* file).
*/
std::vector<XDMFEntry> xdmf_entries;
};
}
}
}
#endif