22 std::vector<GeoLib::Raster const*>
const& rasters,
23 double minimum_thickness,
24 double noDataReplacementValue)
31 auto const elem_count =
35 ERR(
"Input mesh contains QUAD-elements. Please use input mesh "
36 "containing LINE and TRIANGLE elements only.");
41 mesh, rasters, minimum_thickness, noDataReplacementValue);
42 std::for_each(rasters.begin(),
49 std::string
const& mesh_name)
const
53 WARN(
"LayeredMeshGenerator has not created any nodes.");
58 WARN(
"LayeredMeshGenerator has not created any elements.");
67 assert(materials !=
nullptr);
73 "Skipping MaterialID information, number of entries does not match "
77 std::unique_ptr<MeshLib::Mesh> result(
96 const double max(*std::max_element(high.
begin(), high.
end()));
97 const double min(*std::min_element(low.
begin(), low.
end()));
98 return ((max - min) * 1e-07);
105 std::size_t new_node_id)
const
107 double const elevation =
111 std::numeric_limits<double>::epsilon()) ||
117 return new MeshLib::Node(dem_node[0], dem_node[1], elevation, new_node_id);
void ERR(fmt::format_string< Args... > fmt, Args &&... args)
void WARN(fmt::format_string< Args... > fmt, Args &&... args)
Class Raster is used for managing raster data.
std::vector< double >::const_iterator begin() const
double interpolateValueAtPoint(const MathLib::Point3d &pnt) const
RasterHeader const & getHeader() const
Returns the complete header information.
std::vector< double >::const_iterator end() const
virtual bool createLayers(MeshLib::Mesh const &mesh, std::vector< GeoLib::Raster const * > const &rasters, double minimum_thickness, double noDataReplacementValue=0.0) final
double _minimum_thickness
std::vector< int > _materials
static double calcEpsilon(GeoLib::Raster const &low, GeoLib::Raster const &high)
Calculates a data-dependent epsilon value.
MeshLib::Node * getNewLayerNode(MeshLib::Node const &dem_node, MeshLib::Node const &last_layer_node, GeoLib::Raster const &raster, std::size_t new_node_id) const
std::vector< MeshLib::Node * > _nodes
virtual bool createRasterLayers(MeshLib::Mesh const &mesh, std::vector< GeoLib::Raster const * > const &rasters, double minimum_thickness, double noDataReplacementValue)=0
std::unique_ptr< MeshLib::Mesh > getMesh(std::string const &mesh_name) const
Returns a mesh of the subsurface representation.
std::vector< MeshLib::Element * > _elements
unsigned getDimension() const
Returns the dimension of the mesh (determined by the maximum dimension over all elements).
const std::vector< std::size_t > & getSearchedNodeIDs() const
return marked node IDs
std::size_t searchUnused()
Marks all unused nodes.
Property manager on mesh items. Class Properties manages scalar, vector or matrix properties....
PropertyVector< T > * createNewPropertyVector(std::string_view name, MeshItemType mesh_item_type, std::size_t n_components=1)