OGS
CellAverageData.cpp
Go to the documentation of this file.
1
11
#include "
CellAverageData.h
"
12
13
#include "
MeshLib/Utils/getOrCreateMeshProperty.h
"
14
15
namespace
ProcessLib
16
{
17
MeshLib::PropertyVector<double>
&
CellAverageData::getOrCreatePropertyVector
(
18
std::string
const
& name,
unsigned
const
num_comp)
19
{
20
if
(
auto
const
it =
cell_averages_
.find(name); it !=
cell_averages_
.end())
21
{
22
auto
& prop_vec = *it->second;
23
auto
const
num_comp_mesh = prop_vec.getNumberOfGlobalComponents();
24
if
(num_comp_mesh ==
static_cast<
int
>
(num_comp))
25
{
26
return
prop_vec;
27
}
28
29
OGS_FATAL
(
30
"The requested property '{}' has {} components, but the one "
31
"present in the mesh has {} components."
,
32
name, num_comp, num_comp_mesh);
33
}
34
35
auto
const
name_in_mesh = name +
"_avg"
;
36
auto
[it, emplaced] =
cell_averages_
.emplace(
37
name,
MeshLib::getOrCreateMeshProperty<double>
(
38
const_cast<
MeshLib::Mesh
&
>
(
mesh_
), name_in_mesh,
39
MeshLib::MeshItemType::Cell
, num_comp));
40
41
if
(!it->second)
42
{
43
OGS_FATAL
(
"The cell property '{}' could not be added to the mesh."
,
44
name_in_mesh);
45
}
46
47
if
(!emplaced)
48
{
49
OGS_FATAL
(
50
"Internal logic error. Something very bad happened. The cell "
51
"property '{}' was not added to the list of cell averages to "
52
"compute. There is some very strange inconsistency in the "
53
"code. Trouble ahead!"
,
54
name_in_mesh);
55
}
56
57
return
*it->second;
58
}
59
}
// namespace ProcessLib
CellAverageData.h
OGS_FATAL
#define OGS_FATAL(...)
Definition
Error.h:26
MeshLib::Mesh
Definition
Mesh.h:43
MeshLib::PropertyVector
Definition
TwoPhaseFlowWithPrhoMaterialProperties.h:28
getOrCreateMeshProperty.h
MeshLib::getOrCreateMeshProperty
PropertyVector< T > * getOrCreateMeshProperty(Mesh &mesh, std::string const &property_name, MeshItemType const item_type, int const number_of_components)
Definition
getOrCreateMeshProperty.h:25
MeshLib::MeshItemType::Cell
@ Cell
ProcessLib
Definition
ProjectData.h:51
ProcessLib::CellAverageData::mesh_
MeshLib::Mesh const & mesh_
Definition
CellAverageData.h:26
ProcessLib::CellAverageData::getOrCreatePropertyVector
MeshLib::PropertyVector< double > & getOrCreatePropertyVector(std::string const &name, unsigned const num_comp)
Definition
CellAverageData.cpp:17
ProcessLib::CellAverageData::cell_averages_
std::map< std::string, MeshLib::PropertyVector< double > * > cell_averages_
Definition
CellAverageData.h:27
ProcessLib
Output
CellAverageData.cpp
Generated by
1.12.0