OGS
LayeredVolume.h
Go to the documentation of this file.
1 
15 #pragma once
16 
17 #include <string>
18 #include <vector>
19 
20 #include "MeshLib/Node.h"
21 #include "LayeredMeshGenerator.h"
22 
23 namespace GeoLib {
24  class GEOObjects;
25  class Surface;
26 }
27 
32 {
33 public:
34  LayeredVolume() = default;
35  ~LayeredVolume() override = default;
36 
56  bool createRasterLayers(const MeshLib::Mesh& mesh,
57  const std::vector<GeoLib::Raster const*>& rasters,
58  double minimum_thickness,
59  double noDataReplacementValue = 0.0) override;
60 
63  std::vector<MeshLib::Node> getAttributePoints() const
64  {
65  return _attribute_points;
66  }
67 
68 private:
70  void addLayerToMesh(const MeshLib::Mesh& dem_mesh,
71  unsigned layer_id,
72  GeoLib::Raster const& raster) override;
73 
75  void addLayerBoundaries(const MeshLib::Mesh &layer, std::size_t nLayers);
76 
78  void removeCongruentElements(std::size_t nLayers, std::size_t nElementsPerLayer);
79 
80  std::vector<MeshLib::Node> _attribute_points;
81 };
Definition of the SubsurfaceMapper class.
Definition of the Node class.
Class Raster is used for managing raster data.
Definition: Raster.h:42
Base class for creation of 3D subsurface meshes based on raster data.
Creates a volume geometry from 2D mesh layers based on raster data.
Definition: LayeredVolume.h:32
void removeCongruentElements(std::size_t nLayers, std::size_t nElementsPerLayer)
Removes duplicate 2D elements (possible due to outcroppings)
~LayeredVolume() override=default
std::vector< MeshLib::Node > _attribute_points
Definition: LayeredVolume.h:80
void addLayerToMesh(const MeshLib::Mesh &dem_mesh, unsigned layer_id, GeoLib::Raster const &raster) override
Adds another layer to the subsurface mesh.
bool createRasterLayers(const MeshLib::Mesh &mesh, const std::vector< GeoLib::Raster const * > &rasters, double minimum_thickness, double noDataReplacementValue=0.0) override
std::vector< MeshLib::Node > getAttributePoints() const
Definition: LayeredVolume.h:63
void addLayerBoundaries(const MeshLib::Mesh &layer, std::size_t nLayers)
Creates boundary surfaces between the mapped layers to make the volumes watertight.
LayeredVolume()=default