Files
SERiF/src/meshIO/public/meshIO.h
Emily Boudreaux 2b3330b4f6 feat(meshIO): added linear rescale capability to meshIO
loaded meshes can be linearly rescaled (so for example a unit sphere can be rescaled to a sphere of any radius)
2025-04-25 11:13:15 -04:00

68 lines
2.0 KiB
C++

/* ***********************************************************************
//
// 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 <string>
/**
* @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