From d188e8c6fa4c0642a7b2dffc9aa5ba0a60c026e2 Mon Sep 17 00:00:00 2001 From: Henry <henry.korb@geo.uu.se> Date: Mon, 19 Dec 2022 18:02:15 +0100 Subject: [PATCH] add function to add single point in point probe --- pythonbindings/pyfluids-stubs/bindings/gpu/probes.pyi | 1 + pythonbindings/src/gpu/submodules/probes.cpp | 1 + .../PreCollisionInteractor/Probes/PointProbe.cu | 7 +++++++ .../PreCollisionInteractor/Probes/PointProbe.h | 3 ++- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pythonbindings/pyfluids-stubs/bindings/gpu/probes.pyi b/pythonbindings/pyfluids-stubs/bindings/gpu/probes.pyi index af9c40078..1454ed538 100644 --- a/pythonbindings/pyfluids-stubs/bindings/gpu/probes.pyi +++ b/pythonbindings/pyfluids-stubs/bindings/gpu/probes.pyi @@ -45,6 +45,7 @@ class PlaneProbe(Probe): class PointProbe(Probe): def __init__(self, probe_name: str, output_path: str, t_start_avg: int, t_avg: int, t_start_out: int, t_out: int, output_timeseries: bool) -> None: ... + def add_probe_point(self, point_coord_x: float, point_coord_y: float, point_coord_z: float) -> None: ... def add_probe_points_from_list(self, point_coords_x: List[float], point_coords_y: List[float], point_coords_z: List[float]) -> None: ... def add_probe_points_from_x_normal_plane(self, pos_x: float, pos0_y: float, pos0_z: float, pos1_y: float, pos1_z: float, n_y: int, n_z: int) -> None: ... diff --git a/pythonbindings/src/gpu/submodules/probes.cpp b/pythonbindings/src/gpu/submodules/probes.cpp index dc9677092..9c3fc8ab1 100644 --- a/pythonbindings/src/gpu/submodules/probes.cpp +++ b/pythonbindings/src/gpu/submodules/probes.cpp @@ -81,6 +81,7 @@ namespace probes py::arg("t_start_out"), py::arg("t_out"), py::arg("output_timeseries")) + .def("add_probe_point", &PointProbe::addProbePoint, py::arg("point_coord_x"), py::arg("point_coord_y"), py::arg("point_coord_z")) .def("add_probe_points_from_list", &PointProbe::addProbePointsFromList, py::arg("point_coords_x"), py::arg("point_coords_y"), py::arg("point_coords_z")) .def("add_probe_points_from_x_normal_plane", &PointProbe::addProbePointsFromXNormalPlane, py::arg("pos_x"), py::arg("pos0_y"), py::arg("pos0_z"), py::arg("pos1_y"), py::arg("pos1_z"), py::arg("n_y"), py::arg("n_z")); diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.cu b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.cu index 6e896651a..4c97e9355 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.cu +++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.cu @@ -110,6 +110,13 @@ void PointProbe::calculateQuantities(SPtr<ProbeStruct> probeStruct, Parameter* p probeStruct->quantitiesD, probeStruct->arrayOffsetsD, probeStruct->quantitiesArrayD, this->outputTimeSeries); } +void PointProbe::addProbePoint(real pointCoordX, real pointCoordY, real pointCoordZ) +{ + this->pointCoordsX.push_back(pointCoordX); + this->pointCoordsY.push_back(pointCoordY); + this->pointCoordsZ.push_back(pointCoordZ); +} + void PointProbe::addProbePointsFromList(std::vector<real>& _pointCoordsX, std::vector<real>& _pointCoordsY, std::vector<real>& _pointCoordsZ) { bool isSameLength = ( (_pointCoordsX.size()==_pointCoordsY.size()) && (_pointCoordsY.size()==_pointCoordsZ.size())); diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.h b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.h index 6000e967a..b26211dc8 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.h +++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.h @@ -51,7 +51,7 @@ public: uint _tAvg, uint _tStartOut, uint _tOut, - bool _outputTimeseries + bool _outputTimeseries = false ): Probe(_probeName, _outputPath, _tStartAvg, @@ -63,6 +63,7 @@ public: _outputTimeseries) {} + void addProbePoint(real pointCoordX, real pointCoordY, real pointCoordZ); void addProbePointsFromList(std::vector<real>& _pointCoordsX, std::vector<real>& _pointCoordsY, std::vector<real>& _pointCoordsZ); void addProbePointsFromXNormalPlane(real pos_x, real pos0_y, real pos0_z, real pos1_y, real pos1_z, uint n_y, uint n_z); void getTaggedFluidNodes(Parameter *para, GridProvider* gridProvider) override; -- GitLab