Skip to content

Add CylindricalEqualValueBoundaryConstraint#442

Open
maxnezdyur wants to merge 2 commits into
idaholab:develfrom
maxnezdyur:cylinder-equal-val
Open

Add CylindricalEqualValueBoundaryConstraint#442
maxnezdyur wants to merge 2 commits into
idaholab:develfrom
maxnezdyur:cylinder-equal-val

Conversation

@maxnezdyur

@maxnezdyur maxnezdyur commented May 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds CylindricalEqualValueBoundaryConstraint, a NodalConstraint that enforces equal radial displacement and zero circumferential displacement on a cylindrical surface. Inherits MOOSE's EqualValueBoundaryConstraint for node-set construction, primary-node selection, ghosting, and adaptivity hooks; replaces the scalar-equality residual with a 2x2 rotation-matrix coupling on the in-plane Cartesian displacement components. Penalty formulation, non-AD.

This is the 3D analogue of the 2D trick of applying EqualValueBoundaryConstraint to a single displacement component on a curved arc to mimic an infinitely long cylinder (modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/hoop_strain_comparison.i).

Closes #443.

Files added

  • include/constraints/CylindricalEqualValueBoundaryConstraint.h
  • src/constraints/CylindricalEqualValueBoundaryConstraint.C
  • doc/content/source/constraints/CylindricalEqualValueBoundaryConstraint.md
  • test/tests/constraints/cylindrical_evbc/ -- 9 regression tests with 7 gold files

Test plan

Validates against the closed-form Lame thick-walled cylinder solution:

  • 5 Lame-validated configurations (all within ~2% of analytical at the chosen mesh resolution):
    • 90 deg quarter wedge with Cartesian-aligned cuts
    • 60 deg wedge with one inclined cut (paired with PenaltyInclinedNoDisplacementBC)
    • 120 deg wedge with one inclined cut
    • 90 deg wedge rotated 30 deg so both cuts are inclined
    • Full 360 deg ring with axis along z, and along x (exercises axis-permutation paths)
  • 1 axis-permutation smoke test (axis = x)
  • 1 asymmetric-pressure mode-suppression test -- mode-2 cosine pressure on the inner surface; the constraint must suppress non-axisymmetric deformation on the constrained outer surface (without it, the four cardinal angular probes spread by ~3.8x)
  • 1 RunException test for r=0 nodes on the constrained surface (clear mooseError)

All 9 tests pass.

Notes for reviewers

  • The doc page documents two implementation details required for the analytical Lame match at finite displacement: use_displaced_mesh = false on the internal Pressure BC, and a penalty >~ 100*E rule of thumb (applies to the constraint penalty and to any inclined cut-face BC penalty).
  • Out of scope, by design: AD variant, Lagrange-multiplier formulation, axial constraint (layer a separate EqualValueBoundaryConstraint on disp_z), non-Cartesian-aligned axes.

@maxnezdyur

Copy link
Copy Markdown
Collaborator Author

ok @lynnmunday
Look at this and let me know what you think. This is with minimal human involvement. This is just for testing the pipeline from spec to PR for a small feature addition. Put an concerns you have here. I can try to use it to update the skills and subagents I have that created this.

@maxnezdyur

Copy link
Copy Markdown
Collaborator Author

I already see some things that I would do different in comments and the markdown that I need to call out.

@maxnezdyur maxnezdyur force-pushed the cylinder-equal-val branch from 3875b64 to 1322f93 Compare May 6, 2026 12:26
@moosebuild

moosebuild commented May 6, 2026

Copy link
Copy Markdown

Job Documentation, step Sync to remote on c3de2c7 wanted to post the following:

View the site here

This comment will be updated on new commits.

@moosebuild

moosebuild commented May 6, 2026

Copy link
Copy Markdown

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

Coverage

643ca1 #442 c3de2c
Total Total +/- New
Rate 93.14% 93.18% +0.03% 100.00%
Hits 2200 2294 +94 100
Misses 162 168 +6 0

Diff coverage report

Full coverage report

This comment will be updated on new commits.

@lynnmunday

Copy link
Copy Markdown
Collaborator

Since it can add all these tests, can it write up a pdf with some figures and equations? I would still need to go thorugh all these tests with you and look at the fields that it is matching. It would be nice if it automatically made those figures.

…undaryConstraint idaholab#443

Replace the inline HIT code blocks in the doc page with !listing shortcodes
that pull from the existing regression inputs (quarter_cylinder_z_axis,
full_ring_z_axis, full_ring_x_axis, sixth_cylinder_z_axis). Keeps the
documentation examples in lockstep with what the test suite actually runs.
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.

Add CylindricalEqualValueBoundaryConstraint

3 participants