OGS
ProcessOutputData.h
Go to the documentation of this file.
1
11#pragma once
12
14
15namespace MeshLib
16{
17struct IntegrationPointWriter;
18} // namespace MeshLib
19
20namespace ProcessLib
21{
22class Process;
23class ProcessVariable;
24class SecondaryVariableCollection;
25
28{
29public:
31 std::vector<std::reference_wrapper<
32 const std::vector<std::reference_wrapper<ProcessVariable>>>>&&
33 process_variables_of_all_processes,
34 const SecondaryVariableCollection& secondary_variables,
35 const std::vector<std::unique_ptr<MeshLib::IntegrationPointWriter>>*
36 integration_point_writers,
37 std::vector<const NumLib::LocalToGlobalIndexMap*>&&
38 bulk_mesh_dof_tables_of_all_processes,
39 std::vector<const NumLib::LocalToGlobalIndexMap*>&&
40 output_mesh_dof_tables_of_all_processes,
41 std::vector<std::unique_ptr<NumLib::LocalToGlobalIndexMap>>&&
42 container_that_owns_output_mesh_dof_tables,
43 MeshLib::Mesh& output_mesh);
44
45 std::vector<std::reference_wrapper<ProcessVariable>> const&
46 getProcessVariables(int const process_id) const
47 {
48 return process_variables_of_all_processes_[process_id].get();
49 }
50
55
56 std::vector<std::unique_ptr<MeshLib::IntegrationPointWriter>> const*
61
63 int const process_id) const
64 {
66 }
67
69 int const process_id) const
70 {
72 }
73
74 std::vector<const NumLib::LocalToGlobalIndexMap*> const&
79
81
82private:
87 std::vector<std::reference_wrapper<
88 const std::vector<std::reference_wrapper<ProcessVariable>>>>
90
92
97 std::vector<std::unique_ptr<MeshLib::IntegrationPointWriter>> const*
99
105 std::vector<NumLib::LocalToGlobalIndexMap const*>
107
115 std::vector<NumLib::LocalToGlobalIndexMap const*>
117
122 std::vector<std::unique_ptr<NumLib::LocalToGlobalIndexMap>>
124
130};
131
134 std::size_t const n_processes,
135 MeshLib::Mesh& output_mesh);
136
137} // namespace ProcessLib
Holds all data of a process that are needed for output.
SecondaryVariableCollection const & getSecondaryVariables() const
std::vector< std::unique_ptr< NumLib::LocalToGlobalIndexMap > > container_that_owns_output_mesh_dof_tables_
std::vector< std::unique_ptr< MeshLib::IntegrationPointWriter > > const * getIntegrationPointWriters() const
SecondaryVariableCollection const & secondary_variables_
std::vector< std::reference_wrapper< ProcessVariable > > const & getProcessVariables(int const process_id) const
std::vector< NumLib::LocalToGlobalIndexMap const * > output_mesh_dof_tables_of_all_processes_
std::vector< std::unique_ptr< MeshLib::IntegrationPointWriter > > const * integration_point_writers_
std::vector< std::reference_wrapper< const std::vector< std::reference_wrapper< ProcessVariable > > > > process_variables_of_all_processes_
MeshLib::Mesh & getOutputMesh() const
NumLib::LocalToGlobalIndexMap const & getOutputMeshDofTable(int const process_id) const
ProcessOutputData(std::vector< std::reference_wrapper< const std::vector< std::reference_wrapper< ProcessVariable > > > > &&process_variables_of_all_processes, const SecondaryVariableCollection &secondary_variables, const std::vector< std::unique_ptr< MeshLib::IntegrationPointWriter > > *integration_point_writers, std::vector< const NumLib::LocalToGlobalIndexMap * > &&bulk_mesh_dof_tables_of_all_processes, std::vector< const NumLib::LocalToGlobalIndexMap * > &&output_mesh_dof_tables_of_all_processes, std::vector< std::unique_ptr< NumLib::LocalToGlobalIndexMap > > &&container_that_owns_output_mesh_dof_tables, MeshLib::Mesh &output_mesh)
std::vector< NumLib::LocalToGlobalIndexMap const * > bulk_mesh_dof_tables_of_all_processes_
std::vector< const NumLib::LocalToGlobalIndexMap * > const & getOutputMeshDofTablesOfAllProcesses() const
NumLib::LocalToGlobalIndexMap const & getBulkMeshDofTable(int const process_id) const
Handles configuration of several secondary variables from the project file.
ProcessOutputData createProcessOutputData(Process const &process, std::size_t const n_processes, MeshLib::Mesh &output_mesh)
Extracts data necessary for output from the given process.