/* *********************************************************************** // // Copyright (C) 2025 -- The 4D-STAR Collaboration // File Author: Emily Boudreaux // Last Modified: March 18, 2025 // // 4DSSE is free software; you can use it and/or modify // it under the terms and restrictions the GNU General Library Public // License version 3 (GPLv3) as published by the Free Software Foundation. // // 4DSSE is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU Library General Public License for more details. // // You should have received a copy of the GNU Library General Public License // along with this software; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // *********************************************************************** */ #ifndef MESHIO_H #define MESHIO_H #include "mfem.hpp" #include /** * @brief Class for handling mesh input/output operations. */ class MeshIO { private: bool loaded_; ///< Flag to indicate if the mesh is loaded std::string mesh_file_; ///< Filename of the mesh file mfem::Mesh mesh_; ///< The mesh object public: /** * @brief Constructor that initializes the MeshIO object with a mesh file. * @param mesh_file The name of the mesh file. */ MeshIO(const std::string &mesh_file, double scale_factor = 1.0); /** * @brief Destructor for the MeshIO class. */ ~MeshIO(); /** * @brief Rescale the mesh by a linear factor. * @param scale_factor The factor by which to scale the mesh. */ void LinearRescale(double scale_factor); /** * @brief Get the mesh object. * @return Reference to the mesh object. */ mfem::Mesh& GetMesh(); /** * @brief Check if the mesh is loaded. * @return True if the mesh is loaded, false otherwise. */ bool IsLoaded() const; }; #endif // MESHIO_H