OGS
MaterialSpatialDistributionMap.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include <map>
7#include <memory>
8#include <range/v3/view.hpp>
9#include <vector>
10
11namespace MeshLib
12{
13template <typename PROP_VAL_TYPE>
14class PropertyVector;
15} // namespace MeshLib
16
17namespace MaterialPropertyLib
18{
19class Medium;
20
22{
23public:
25 std::map<int, std::shared_ptr<Medium>> const& media,
26 MeshLib::PropertyVector<int> const* const material_ids)
27 : media_(media), material_ids_(material_ids)
28 {
29 }
30
31 auto media() const { return media_ | ranges::views::values; }
32
33 Medium* getMedium(std::size_t element_id);
34 Medium const* getMedium(std::size_t element_id) const;
35 void checkElementHasMedium(std::size_t const element_id) const;
36
37private:
38 std::map<int, std::shared_ptr<Medium>> const& media_;
40};
41} // namespace MaterialPropertyLib
MeshLib::PropertyVector< int > const *const material_ids_
std::map< int, std::shared_ptr< Medium > > const & media_
MaterialSpatialDistributionMap(std::map< int, std::shared_ptr< Medium > > const &media, MeshLib::PropertyVector< int > const *const material_ids)