From 83ee05272cefc0ac067e06cae5b7f09582733647 Mon Sep 17 00:00:00 2001 From: Emily Boudreaux Date: Fri, 28 Feb 2025 09:47:15 -0500 Subject: [PATCH] feat(probe): vector overload for glVisView glVisView can now also be called with a vector and finite element space as opposed to just a grid function and mesh --- src/probe/meson.build | 2 +- src/probe/private/probe.cpp | 11 +++++++++++ src/probe/public/probe.h | 14 +++++++++++--- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/probe/meson.build b/src/probe/meson.build index 59f951e..8d6c069 100644 --- a/src/probe/meson.build +++ b/src/probe/meson.build @@ -13,7 +13,7 @@ libprobe = static_library('probe', include_directories: include_directories('public'), cpp_args: ['-fvisibility=default'], install : true, - dependencies: [config_dep, mfem_dep, quill_dep] + dependencies: [config_dep, mfem_dep, quill_dep, warning_control_dep] ) probe_dep = declare_dependency( diff --git a/src/probe/private/probe.cpp b/src/probe/private/probe.cpp index 1f00e22..4f38045 100644 --- a/src/probe/private/probe.cpp +++ b/src/probe/private/probe.cpp @@ -15,6 +15,8 @@ #include "config.h" #include "probe.h" +#include "warning_control.h" + namespace Probe { @@ -43,6 +45,15 @@ void glVisView(mfem::GridFunction& u, mfem::Mesh& mesh, } } +void glVisView(mfem::Vector &vec, mfem::FiniteElementSpace &fes, const std::string &windowTitle) { + mfem::GridFunction gf(&fes); + + DEPRECATION_WARNING_OFF + gf.SetData(vec); + DEPRECATION_WARNING_ON + glVisView(gf, *fes.GetMesh(), windowTitle); +} + double getMeshRadius(mfem::Mesh& mesh) { int numVertices = mesh.GetNV(); // Number of vertices double maxRadius = 0.0; diff --git a/src/probe/public/probe.h b/src/probe/public/probe.h index abd19ca..af178a0 100644 --- a/src/probe/public/probe.h +++ b/src/probe/public/probe.h @@ -32,13 +32,21 @@ namespace Probe { * @param windowTitle The title of the visualization window. */ void glVisView(mfem::GridFunction& u, mfem::Mesh& mesh, - const std::string& windowTitle = "solution"); + const std::string& windowTitle = "grid function"); + + /** + * @brief Visualize a vector using GLVis. + * @param vec The vector to visualize. + * @param mesh The mesh associated with the vector. + * @param windowTitle The title of the visualization window. + */ + void glVisView(mfem::Vector &vec, mfem::FiniteElementSpace &fes, + const std::string &windowTitle = "vector"); double getMeshRadius(mfem::Mesh& mesh); std::vector getRaySolution(mfem::GridFunction& u, mfem::Mesh& mesh, - const std::vector& rayDirection, - int numSamples); + const std::vector& rayDirection, int numSamples); /** * @brief Class to manage logging operations.