20 #ifndef LIBMESH_MESH_SMOOTHER_VSMOOTHER_H    21 #define LIBMESH_MESH_SMOOTHER_VSMOOTHER_H    23 #include "libmesh/libmesh_config.h"    24 #if defined(LIBMESH_ENABLE_VSMOOTHER)    27 #include "libmesh/libmesh_common.h"    28 #include "libmesh/mesh_smoother.h"    29 #include "libmesh/variational_smoother_system.h"    30 #include "libmesh/variational_smoother_constraint.h"    32 #include "libmesh/distributed_mesh.h"    33 #include "libmesh/equation_systems.h"    45 class UnstructuredMesh;
    91                           Real dilation_weight = 0.5,
    92                           const bool preserve_subdomain_boundaries = 
true,
    95                           const bool solver_quiet = 
true,
    96                           const bool solver_verbose = 
false);
   107   virtual void setup();
   122   void smooth(
unsigned int n_iterations);
   208 #endif // defined(LIBMESH_ENABLE_VSMOOTHER)   210 #endif // LIBMESH_MESH_SMOOTHER_VSMOOTHER_H const Real _dilation_weight
Smoother control variables. 
bool _solver_verbose
Solver verbose setting. 
virtual ~VariationalMeshSmoother()=default
Destructor. 
std::unique_ptr< EquationSystems > _equation_systems
EquationsSystems object associated with the smoother. 
static constexpr Real TOLERANCE
const MeshQualityInfo & get_mesh_info() const
Getter for the _system's _mesh_info attribute. 
VariationalSmootherSystem * _system
VariationalSmootherSystem * system() const
Getter for _system to protect against dangling pointers. 
The libMesh namespace provides an interface to certain functionality in the library. 
std::unique_ptr< VariationalSmootherConstraint > _constraint
Constraints imposed on the smoothing process. 
std::unique_ptr< DistributedMesh > _mesh_copy
Mesh copy to avoid multiple EquationSystems. 
Struct to hold smoother-relevant information about the mesh quality. 
double _absolute_residual_tolerance
Solver absolute residual tolerance. 
bool _setup_called
Attribute the keep track of whether the setup method has been called. 
The UnstructuredMesh class is derived from the MeshBase class. 
VariationalMeshSmoother(UnstructuredMesh &mesh, Real dilation_weight=0.5, const bool preserve_subdomain_boundaries=true, const double relative_residual_tolerance=TOLERANCE *TOLERANCE, const double absolute_residual_tolerance=TOLERANCE *TOLERANCE, const bool solver_quiet=true, const bool solver_verbose=false)
Constructor. 
bool _solver_quiet
Solver quiet setting. 
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
This is an implementation of Larisa Branets' smoothing algorithms. 
double _relative_residual_tolerance
Solver relative residual tolerance. 
This class provides the necessary interface for mesh smoothing. 
virtual void setup()
Setup method that creates equation systems, system, and constraints, to be called just prior to smoot...
const bool _preserve_subdomain_boundaries
Whether subdomain boundaries are subject to change via smoothing. 
virtual void smooth() override
Redefinition of the smooth function from the base class.