9#include <kernel/geometry/export_vtk.hpp> 
   10#include <kernel/geometry/mesh_node.hpp> 
   11#include <kernel/lafem/dense_vector_blocked.hpp> 
   12#include <kernel/meshopt/base.hpp> 
   13#include <kernel/space/lagrange1/element.hpp> 
   14#include <kernel/trafo/standard/mapping.hpp> 
   33    template<
typename MeshType_>
 
   75            XASSERTM(mesh_node_ != 
nullptr, 
"MeshNode must not be nullptr.");
 
  111          return "MeshQualityFunctional<"+MeshType_::name()+
">";
 
  148          const typename MeshType::VertexSetType& vertex_set = 
get_mesh()->get_vertex_set();
 
  157          typename MeshType::VertexSetType& vertex_set = 
get_mesh()->get_vertex_set();
 
#define XASSERT(expr)
Assertion macro definition.
#define XASSERTM(expr, msg)
Assertion macro definition with custom message.
VTK exporter class template.
MeshType * get_mesh()
Returns the mesh of this node.
Root mesh node class template.
virtual void clear()
Free all allocated arrays.
Blocked Dense data vector class template.
Baseclass for mesh optimization algorithms.
Index get_num_grad_evals() const
virtual ~MeshQualityFunctional()
Virtual destructor.
const CoordsBufferType & get_coords() const
Gets the coords buffer.
virtual void init()=0
Performs one-time initializations.
static String name()
The class name.
virtual void mesh_to_buffer()
Gets the coordinates from the underlying mesh and saves them in _coords_buffer.
const MeshType * get_mesh() const
MeshType::CoordType CoordType
Our datatype.
Geometry::RootMeshNode< MeshType > * _mesh_node
The mesh for the underlying transformation.
Index _num_func_evals
Counter for number of function evaluations.
MeshType::ShapeType ShapeType
The shape type.
CoordsBufferType & get_coords()
Gets the coords buffer.
LAFEM::DenseVectorBlocked< CoordType, Index, MeshType::world_dim > CoordsBufferType
Type for the vectors to hold coordinates etc.
MeshQualityFunctional(Geometry::RootMeshNode< MeshType > *mesh_node_)
Constructor.
MeshQualityFunctional()
Empty standard constructor.
Geometry::RootMeshNode< MeshType > * get_mesh_node() const
MeshType_ MeshType
Type of the mesh to optimize.
Index get_num_hess_evals() const
Index _num_grad_evals
Counter for number of gradient evaluations.
void reset_num_evals()
Resets all evaluation counts.
Index get_num_func_evals() const
virtual CoordType compute_cell_size_defect(CoordType &lambda_min, CoordType &lambda_max, CoordType &vol_min, CoordType &vol_max, CoordType &vol) const =0
Computes a quality indicator concerning the cell sizes.
virtual void buffer_to_mesh()
Sets the coordinates in the underlying mesh to _coords_buffer.
virtual void add_to_vtk_exporter(Geometry::ExportVTK< MeshType > &exporter) const
Adds relevant quantities of this object to a VTK exporter.
CoordsBufferType _coords_buffer
Coordinates, used for setting new boundary values etc.
Index _num_hess_evals
Counter for number of hessian evaluations.
String class implementation.
std::uint64_t Index
Index data type.