15 #include "libmesh/boundary_info.h" 24 params.
addRequiredParam<MeshGeneratorName>(
"input",
"The mesh we want to modify");
26 MooseEnum(getOrderConversionTypeOptions(),
"FIRST_ORDER"),
27 "The type of element order conversion to perform");
33 _input(getMesh(
"input")),
34 _conversion_type(getParam<
MooseEnum>(
"conversion_type").template getEnum<OrderConversionType>())
38 std::unique_ptr<MeshBase>
41 std::unique_ptr<MeshBase>
mesh = std::move(
_input);
45 case OrderConversionType::FIRST_ORDER:
46 mesh->all_first_order();
48 case OrderConversionType::SECOND_ORDER_NONFULL:
49 mesh->all_second_order(
false);
51 case OrderConversionType::SECOND_ORDER:
52 mesh->all_second_order();
54 case OrderConversionType::COMPLETE_ORDER:
55 mesh->all_complete_order();
61 mesh->unset_is_prepared();
static InputParameters validParams()
const OrderConversionType _conversion_type
Type of Element Order Conversion.
registerMooseObject("MooseApp", ElementOrderConversionGenerator)
std::unique_ptr< T_DEST, T_DELETER > dynamic_pointer_cast(std::unique_ptr< T_SRC, T_DELETER > &src)
These are reworked from https://stackoverflow.com/a/11003103.
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
static InputParameters validParams()
ElementOrderConversionGenerator(const InputParameters ¶meters)
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
virtual std::unique_ptr< MeshBase > generate() override
Generate / modify the mesh.
std::unique_ptr< MeshBase > & _input
The input mesh.
MeshGenerators are objects that can modify or add to an existing mesh.