12#include "libmesh/mesh_modification.h"
21 "Removes the refinement tree of an h-refined mesh, keeping only the finest "
22 "elements as unrefined (level-0) elements.");
24 "The mesh whose refinement will be flattened");
28 "Whether to also convert the flattened mesh to first-order elements. If false, the element "
29 "order of the input mesh is preserved.");
34 :
MeshGenerator(parameters), _input(getMesh(
"input")), _first_order(getParam<bool>(
"first_order"))
38std::unique_ptr<MeshBase>
41 std::unique_ptr<MeshBase>
mesh = std::move(
_input);
45 if (!
mesh->is_prepared())
46 mesh->prepare_for_use();
49 MeshTools::Modification::flatten(*
mesh);
53 mesh->all_first_order();
56 mooseAssert(
mesh->is_prepared(),
"Mesh should already be prepared after flattening");
registerMooseObject("MooseApp", FlattenRefinementGenerator)
Removes the refinement tree of an h-refined input mesh, keeping only the finest (active) elements as ...
std::unique_ptr< MeshBase > & _input
The input mesh whose refinement will be flattened.
FlattenRefinementGenerator(const InputParameters ¶meters)
static InputParameters validParams()
virtual std::unique_ptr< MeshBase > generate() override
Generate / modify the mesh.
const bool _first_order
Whether to also convert the flattened mesh to first order.
MeshGenerators are objects that can modify or add to an existing mesh.
static InputParameters validParams()