Skip to content

MeshTools::all_rbb() to generate IGA rational quadratic meshes#4442

Open
roystgnr wants to merge 19 commits into
libMesh:develfrom
roystgnr:nurbs_generation
Open

MeshTools::all_rbb() to generate IGA rational quadratic meshes#4442
roystgnr wants to merge 19 commits into
libMesh:develfrom
roystgnr:nurbs_generation

Conversation

@roystgnr
Copy link
Copy Markdown
Member

This needs proper test coverage before merging but I've been letting it sit in a separate branch for too long and I want to at least make sure it's not interfering with any CI builds.

This takes an interpolated quadratic Lagrange mesh and turns it into an
IGA (Rational Bezier-Bernstein) mapped mesh, assuming that all curves
are intended to be circular/cylindrical/spherical.
1D on the X axis is pointless, but 1D meshes embedded in 2D or 3D space
may still benefit from perfect circles.
@moosebuild
Copy link
Copy Markdown

moosebuild commented Apr 23, 2026

Job Coverage, step Generate coverage on 2ebc531 wanted to post the following:

Coverage

5b75aa #4442 2ebc53
Total Total +/- New
Rate 65.53% 65.58% +0.05% 100.00%
Hits 78420 78594 +174 166
Misses 41257 41249 -8 0

Diff coverage report

Full coverage report

This comment will be updated on new commits.

roystgnr added 2 commits May 19, 2026 10:49
I was about to stop capturing it, to fix an unused var warning, but this
is better.
@roystgnr roystgnr marked this pull request as ready for review May 20, 2026 14:14
Comment thread tests/mesh/all_rbb.C
Comment on lines +17 to +22
/**
* The goal of this test is to verify proper operation of the Mesh Extruder
* with the optional object callback for setting custom subdomain IDs.
* We pass a custom object for generating subdomains based on the old element
* ID and the current layer and assert the proper values.
*/
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/**
* The goal of this test is to verify proper operation of the Mesh Extruder
* with the optional object callback for setting custom subdomain IDs.
* We pass a custom object for generating subdomains based on the old element
* ID and the current layer and assert the proper values.
*/

or update

Comment thread tests/mesh/all_rbb.C
const Real w = node->get_extra_datum<Real>(weight_index);

CPPUNIT_ASSERT_EQUAL(Real(1), w);
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

volume should be easy to check too
as well as hmin/hmax ? these change with the mapping right

Comment thread tests/mesh/all_rbb.C
MeshTools::Generation::build_sphere (interior_mesh, radius,
n_refinements, QUAD9);

// Get just the outer EDGE9 circle mesh
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// Get just the outer EDGE9 circle mesh
// Get just the outer EDGE3 circle mesh


// We only use [4,8) but matching indices is nice and stack is
// cheap.
// that we're only using what we set, though.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?

almost_equal(w[22], w[24]))
extrude_dir = 0;

if (almost_equal(w[0], w[3]) &&
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

else?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

elif

almost_equal(w[21], w[23]))
extrude_dir = 1;

if (almost_equal(w[0], w[4]) &&
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

else

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants