OGS
ProcessLib::CellAverageData Struct Reference

Detailed Description

Definition at line 11 of file CellAverageData.h.

#include <CellAverageData.h>

Collaboration diagram for ProcessLib::CellAverageData:
[legend]

Public Member Functions

 CellAverageData (MeshLib::Mesh &mesh)
MeshLib::PropertyVector< double > & getOrCreatePropertyVector (std::string const &name, unsigned const num_comp)

Private Attributes

MeshLib::Mesh const & mesh_
std::map< std::string, MeshLib::PropertyVector< double > * > cell_averages_

Constructor & Destructor Documentation

◆ CellAverageData()

ProcessLib::CellAverageData::CellAverageData ( MeshLib::Mesh & mesh)
inlineexplicit

Definition at line 13 of file CellAverageData.h.

13: mesh_{mesh} {}
MeshLib::Mesh const & mesh_

References mesh_.

Member Function Documentation

◆ getOrCreatePropertyVector()

MeshLib::PropertyVector< double > & ProcessLib::CellAverageData::getOrCreatePropertyVector ( std::string const & name,
unsigned const num_comp )

Definition at line 10 of file CellAverageData.cpp.

12{
13 if (auto const it = cell_averages_.find(name); it != cell_averages_.end())
14 {
15 auto& prop_vec = *it->second;
16 auto const num_comp_mesh = prop_vec.getNumberOfGlobalComponents();
17 if (num_comp_mesh == static_cast<int>(num_comp))
18 {
19 return prop_vec;
20 }
21
23 "The requested property '{}' has {} components, but the one "
24 "present in the mesh has {} components.",
25 name, num_comp, num_comp_mesh);
26 }
27
28 auto const name_in_mesh = name + "_avg";
29 auto [it, emplaced] = cell_averages_.emplace(
31 const_cast<MeshLib::Mesh&>(mesh_), name_in_mesh,
33
34 if (!it->second)
35 {
36 OGS_FATAL("The cell property '{}' could not be added to the mesh.",
37 name_in_mesh);
38 }
39
40 if (!emplaced)
41 {
43 "Internal logic error. Something very bad happened. The cell "
44 "property '{}' was not added to the list of cell averages to "
45 "compute. There is some very strange inconsistency in the "
46 "code. Trouble ahead!",
47 name_in_mesh);
48 }
49
50 return *it->second;
51}
#define OGS_FATAL(...)
Definition Error.h:19
PropertyVector< T > * getOrCreateMeshProperty(Mesh &mesh, std::string const &property_name, MeshItemType const item_type, int const number_of_components)
std::map< std::string, MeshLib::PropertyVector< double > * > cell_averages_

References MeshLib::Cell, cell_averages_, MeshLib::getOrCreateMeshProperty(), mesh_, and OGS_FATAL.

Referenced by ProcessLib::detail::computeCellAverages().

Member Data Documentation

◆ cell_averages_

std::map<std::string, MeshLib::PropertyVector<double>*> ProcessLib::CellAverageData::cell_averages_
private

Definition at line 20 of file CellAverageData.h.

Referenced by getOrCreatePropertyVector().

◆ mesh_

MeshLib::Mesh const& ProcessLib::CellAverageData::mesh_
private

Definition at line 19 of file CellAverageData.h.

Referenced by CellAverageData(), and getOrCreatePropertyVector().


The documentation for this struct was generated from the following files: