OGS
MaterialPropertyLib::MaterialSpatialDistributionMap Class Reference

Detailed Description

Definition at line 21 of file MaterialSpatialDistributionMap.h.

#include <MaterialSpatialDistributionMap.h>

Collaboration diagram for MaterialPropertyLib::MaterialSpatialDistributionMap:
[legend]

Public Member Functions

 MaterialSpatialDistributionMap (std::map< int, std::shared_ptr< Medium > > const &media, MeshLib::PropertyVector< int > const *const material_ids)
auto media () const
MediumgetMedium (std::size_t element_id)
Medium const * getMedium (std::size_t element_id) const
void checkElementHasMedium (std::size_t const element_id) const

Private Attributes

std::map< int, std::shared_ptr< Medium > > const & media_
MeshLib::PropertyVector< int > const *const material_ids_

Constructor & Destructor Documentation

◆ MaterialSpatialDistributionMap()

MaterialPropertyLib::MaterialSpatialDistributionMap::MaterialSpatialDistributionMap ( std::map< int, std::shared_ptr< Medium > > const & media,
MeshLib::PropertyVector< int > const *const material_ids )
inline

Definition at line 24 of file MaterialSpatialDistributionMap.h.

References material_ids_, media(), and media_.

Referenced by getMedium().

Member Function Documentation

◆ checkElementHasMedium()

void MaterialPropertyLib::MaterialSpatialDistributionMap::checkElementHasMedium ( std::size_t const element_id) const

Definition at line 59 of file MaterialSpatialDistributionMap.cpp.

61{
62 auto const material_id =
63 material_ids_ == nullptr ? 0 : (*material_ids_)[element_id];
64 if (media_.find(material_id) == media_.end())
65 {
67 "There is no medium definition for element {:d} with material "
68 "ID {:d}. Please define a medium for each material.",
69 element_id, material_id);
70 }
71}
#define OGS_FATAL(...)
Definition Error.h:19

References material_ids_, media_, and OGS_FATAL.

◆ getMedium() [1/2]

Medium * MaterialPropertyLib::MaterialSpatialDistributionMap::getMedium ( std::size_t element_id)

Definition at line 14 of file MaterialSpatialDistributionMap.cpp.

15{
16 return const_cast<Medium*>(
17 static_cast<MaterialSpatialDistributionMap const&>(*this).getMedium(
18 element_id));
19}
MaterialSpatialDistributionMap(std::map< int, std::shared_ptr< Medium > > const &media, MeshLib::PropertyVector< int > const *const material_ids)

References MaterialSpatialDistributionMap().

Referenced by MaterialPropertyLib::checkMaterialSpatialDistributionMap(), ProcessLib::ComponentTransport::checkMPLProperties(), and ProcessLib::RichardsComponentTransport::anonymous_namespace{CreateRichardsComponentTransportProcess.cpp}::checkMPLProperties().

◆ getMedium() [2/2]

Medium const * MaterialPropertyLib::MaterialSpatialDistributionMap::getMedium ( std::size_t element_id) const

Definition at line 21 of file MaterialSpatialDistributionMap.cpp.

23{
24 auto const material_id =
25 material_ids_ == nullptr ? 0 : (*material_ids_)[element_id];
26
27 assert(!media_.empty());
28
29 if (auto const it = media_.find(material_id); it != media_.end())
30 {
31 return it->second.get();
32 }
33
34 //
35 // Error handling until end of the function.
36 //
37
38 if (material_ids_ == nullptr)
39 {
40 assert(material_id == 0);
41 ERR("No MaterialIDs given in the mesh therefore default material id = "
42 "0 is used.");
43 }
44 auto keys = media_ | ranges::views::keys;
45
46 if (media_.size() == 1)
47 {
48 ERR("Single medium for material id {} is defined.",
49 fmt::join(keys, ", "));
50 }
51 else
52 {
53 ERR("Media for material ids {} are defined.", fmt::join(keys, ", "));
54 }
55 OGS_FATAL("No medium for material id {} found for element {}.", material_id,
56 element_id);
57}
void ERR(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:40

References ERR(), material_ids_, media_, and OGS_FATAL.

◆ media()

auto MaterialPropertyLib::MaterialSpatialDistributionMap::media ( ) const
inline

Member Data Documentation

◆ material_ids_

MeshLib::PropertyVector<int> const* const MaterialPropertyLib::MaterialSpatialDistributionMap::material_ids_
private

◆ media_

std::map<int, std::shared_ptr<Medium> > const& MaterialPropertyLib::MaterialSpatialDistributionMap::media_
private

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