diff --git a/framework/src/meshgenerators/LowerDBlockFromSidesetGenerator.C b/framework/src/meshgenerators/LowerDBlockFromSidesetGenerator.C index 768ef9ade734..ba591531215f 100644 --- a/framework/src/meshgenerators/LowerDBlockFromSidesetGenerator.C +++ b/framework/src/meshgenerators/LowerDBlockFromSidesetGenerator.C @@ -150,8 +150,16 @@ LowerDBlockFromSidesetGenerator::generate() if (sidesets.count(std::get<2>(triple))) { if (auto elem = mesh->query_elem_ptr(std::get<0>(triple))) + { + if (!elem->active()) + mooseError( + "Only active, level 0 elements can be made interior parents of new level 0 lower-d " + "elements. Make sure that ", + type(), + "s are run before any refinement generators"); element_sides_on_boundary.push_back( std::make_pair(counter, ElemSideDouble(elem, std::get<1>(triple)))); + } ++counter; } diff --git a/test/tests/meshgenerators/lower_d_block_generator/refine-error.i b/test/tests/meshgenerators/lower_d_block_generator/refine-error.i new file mode 100644 index 000000000000..aec75c70af78 --- /dev/null +++ b/test/tests/meshgenerators/lower_d_block_generator/refine-error.i @@ -0,0 +1,20 @@ +[Mesh] + [gmg] + type = GeneratedMeshGenerator + dim = 2 + nx = 10 + ny = 10 + [] + [refine] + type = RefineSidesetGenerator + boundaries = 'left' + refinement = '1' + input = gmg + [] + [lower_d_block] + type = LowerDBlockFromSidesetGenerator + input = refine + new_block_id = 10 + sidesets = 'bottom right top left' + [] +[] diff --git a/test/tests/meshgenerators/lower_d_block_generator/tests b/test/tests/meshgenerators/lower_d_block_generator/tests index c905a4224dfc..0fc879dd1fd3 100644 --- a/test/tests/meshgenerators/lower_d_block_generator/tests +++ b/test/tests/meshgenerators/lower_d_block_generator/tests @@ -20,7 +20,7 @@ recover = false [] [] - + [second_order] requirement = "The system shall support the creation of lower dimensional elements on an " "existing sideset of second-order elements." @@ -32,4 +32,12 @@ cli_args = 'Mesh/second_order=true Outputs/file_base=lower_d_second_order_out ' 'GlobalParams/order=SECOND Mesh/gmg/nx=5 Mesh/gmg/ny=5' [] + [dont_refine_before] + requirement = 'The system shall error if refinement generators are executed before lower dimensional elements are added.' + issues = '#24638' + type = 'RunException' + cli_args = '--mesh-only' + expect_err = 'Make sure that LowerDBlockFromSidesetGenerators are run before any refinement generators' + input = 'refine-error.i' + [] []