19 double borehole_length,
21 std::vector<MeshLib::Node*>
const& bhe_nodes)
26 std::vector<double> diameters;
27 diameters.reserve(bhe_nodes.size());
28 for (
auto const*
const node : bhe_nodes)
33 auto const diameter = diameter_parameter(0.0 , pos)[0];
37 "Non-positive borehole diameter {:g} at node {:d} "
38 "(x={:g}, y={:g}, z={:g}).",
39 diameter, node->getID(), (*node)[0], (*node)[1], (*node)[2]);
41 diameters.push_back(diameter);
44 auto [section_boundaries, section_diameters] =
47 return {borehole_length,
48 {std::move(section_boundaries), std::move(section_diameters)},
53 std::vector<MeshLib::Node*>
const& new_nodes)
const
58 "Cannot rebuild borehole geometry: no diameter parameter stored. "
59 "This geometry was not created from a parameter-based config.");
66 std::vector<std::unique_ptr<ParameterLib::ParameterBase>>& parameters,
67 std::vector<MeshLib::Node*>
const& bhe_nodes)
69 const auto borehole_length =
72 if (borehole_length <= 0)
74 OGS_FATAL(
"Borehole length must be positive, got {:g}.",
78 auto const diameter_parameter_or_value =
81 auto const& diameter_parameter =
83 diameter_parameter_or_value, parameters,
"borehole_diameter",
T getConfigParameter(std::string const ¶m) const
void setNodeID(std::size_t node_id)
void setCoordinates(MathLib::Point3d const &coordinates)
Parameter< double > & getNamedOrCreateInlineParameter(std::string const ¶meter_or_value, std::vector< std::unique_ptr< ParameterBase > > ¶meters, std::string const &property_name, std::string const &inline_suffix)
BoreholeGeometry createBoreholeGeometry(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > ¶meters, std::vector< MeshLib::Node * > const &bhe_nodes)
std::pair< std::vector< double >, std::vector< double > > groupSections(std::vector< double > const &distances, std::vector< double > const &diameters)
std::vector< double > cumulativeDistances(std::vector< MeshLib::Node * > const &sorted_nodes)
Compute cumulative arc-length distances from the first node.
static BoreholeGeometry buildBoreholeGeometry(double borehole_length, ParameterLib::Parameter< double > const &diameter_parameter, std::vector< MeshLib::Node * > const &bhe_nodes)
ParameterLib::Parameter< double > const * diameter_param
BoreholeGeometry rebuildForNodes(std::vector< MeshLib::Node * > const &new_nodes) const