29 const std::vector<std::pair<std::size_t, double>>&
31 const std::string& filename)
39 ERR(
"Error in DirectConditionGenerator::directToSurfaceNodes() - "
40 "could not load raster file.");
44 Eigen::Vector3d
const dir = -Eigen::Vector3d::UnitZ();
45 const std::vector<MeshLib::Node*> surface_nodes(
49 for (
auto const* surface_node : surface_nodes)
52 val = (val == no_data) ? 0 : val;
57 std::for_each(surface_nodes.begin(), surface_nodes.end(),
58 std::default_delete<MeshLib::Node>());
61 ERR(
"Error in DirectConditionGenerator::directToSurfaceNodes() - Data "
62 "vector contains outdated values.");
67 const std::vector<std::pair<std::size_t, double>>&
69 MeshLib::Mesh& mesh,
const std::string& filename,
double scaling)
73 ERR(
"Error in DirectConditionGenerator::directWithSurfaceIntegration()"
74 "- Data vector contains outdated values...");
78 std::unique_ptr<GeoLib::Raster> raster(
82 ERR(
"Error in DirectConditionGenerator::directWithSurfaceIntegration()"
83 "- could not load raster file.");
87 Eigen::Vector3d
const dir({0.0, 0.0, -1.0});
88 double const angle(90);
89 std::string
const prop_name(
"bulk_node_ids");
90 std::unique_ptr<MeshLib::Mesh> surface_mesh(
94 std::vector<double> node_area_vec =
96 const std::vector<MeshLib::Node*>& surface_nodes(surface_mesh->getNodes());
97 const std::size_t nNodes(surface_mesh->getNumberOfNodes());
98 const double no_data(raster->getHeader().no_data);
103 node_id_pv = surface_mesh->getProperties().getPropertyVector<
int>(
106 catch (std::runtime_error
const& e)
108 WARN(
"{:s}", e.what());
113 for (std::size_t i = 0; i < nNodes; ++i)
115 double val(raster->getValueAtPoint(*surface_nodes[i]));
116 val = (val == no_data) ? 0 : ((val * node_area_vec[i]) / scaling);
125 std::ofstream out(
name.c_str(), std::ios::out);
131 out << direct_value.first <<
"\t" << direct_value.second <<
"\n";
Definition of the AsciiRasterInterface class.
Definition of the DirectConditionGenerator class.
void ERR(char const *fmt, Args const &... args)
void WARN(char const *fmt, Args const &... args)
Definition of the Mesh class.
Definition of the Node class.
Definition of the GeoLib::Raster class.
const std::vector< std::pair< std::size_t, double > > & directToSurfaceNodes(const MeshLib::Mesh &mesh, const std::string &filename)
std::vector< std::pair< std::size_t, double > > _direct_values
int writeToFile(const std::string &name) const
const std::vector< std::pair< std::size_t, double > > & directWithSurfaceIntegration(MeshLib::Mesh &mesh, const std::string &filename, double scaling)
static GeoLib::Raster * readRaster(std::string const &fname)
Reads raster file by detecting type based on extension and then calling the appropriate method.
Class Raster is used for managing raster data.
double getValueAtPoint(const MathLib::Point3d &pnt) const
RasterHeader const & getHeader() const
Returns the complete header information.