DiFfRG
Loading...
Searching...
No Matches
fe_output.hh
Go to the documentation of this file.
1#pragma once
2
3// standard library
4#include <thread>
5
6// external libraries
7#include <deal.II/dofs/dof_handler.h>
8#include <deal.II/lac/vector_memory.h>
9#include <deal.II/numerics/data_out.h>
10
11// DiFfRG
13
14namespace DiFfRG
15{
16 using namespace dealii;
17
24 template <uint dim, typename VectorType> class FEOutput
25 {
26 public:
36 FEOutput(std::string top_folder, std::string output_name, std::string output_folder, const JSONValue &json);
37
40
48 void attach(const DoFHandler<dim> &dof_handler, const VectorType &solution, const std::string &name);
49
57 void attach(const DoFHandler<dim> &dof_handler, const VectorType &solution, const std::vector<std::string> &names);
58
64 void flush(double time);
65
66 private:
67 const std::string top_folder;
68 const std::string output_name;
69 const std::string output_folder;
70 constexpr static uint safe_dim = dim == 0 ? 1 : dim;
71 DataOut<safe_dim> data_out;
72
74 std::vector<std::pair<double, std::string>> time_series;
75
76 std::thread output_thread;
77 std::vector<typename VectorMemory<VectorType>::Pointer> attached_solutions;
78
79 GrowingVectorMemory<VectorType> mem;
80 };
81
82 template <> class FEOutput<0, Vector<double>>
83 {
84 public:
85 void attach(const DoFHandler<0> &dof_handler, const Vector<double> &solution, const std::string &name);
86 void attach(const DoFHandler<0> &dof_handler, const Vector<double> &solution,
87 const std::vector<std::string> &names);
88
89 void flush(double time);
90 };
91
92} // namespace DiFfRG
void attach(const DoFHandler< 0 > &dof_handler, const Vector< double > &solution, const std::vector< std::string > &names)
void attach(const DoFHandler< 0 > &dof_handler, const Vector< double > &solution, const std::string &name)
A class to output finite element data to disk as .vtu files and .pvd time series.
Definition fe_output.hh:25
void attach(const DoFHandler< dim > &dof_handler, const VectorType &solution, const std::vector< std::string > &names)
Attach a solution to the output.
uint series_number
Definition fe_output.hh:73
const std::string output_name
Definition fe_output.hh:68
const std::string output_folder
Definition fe_output.hh:69
uint subdivisions
Definition fe_output.hh:73
const std::string top_folder
Definition fe_output.hh:67
void flush(double time)
Flush all attached solutions to disk.
FEOutput(std::string top_folder, std::string output_name, std::string output_folder, const JSONValue &json)
Construct a new FEOutput object.
std::vector< std::pair< double, std::string > > time_series
Definition fe_output.hh:74
std::vector< typename VectorMemory< VectorType >::Pointer > attached_solutions
Definition fe_output.hh:77
GrowingVectorMemory< VectorType > mem
Definition fe_output.hh:79
void attach(const DoFHandler< dim > &dof_handler, const VectorType &solution, const std::string &name)
Attach a solution to the output.
static constexpr uint safe_dim
Definition fe_output.hh:70
std::thread output_thread
Definition fe_output.hh:76
DataOut< safe_dim > data_out
Definition fe_output.hh:71
A wrapper around the boost json value class.
Definition json.hh:19
Definition complex_math.hh:14
unsigned int uint
Definition utils.hh:22