R1: three approaches in order, and say what the note leaves out - #24
Open
lmoresi wants to merge 5 commits into
Open
R1: three approaches in order, and say what the note leaves out#24lmoresi wants to merge 5 commits into
lmoresi wants to merge 5 commits into
Conversation
Direct penalty and Nitsche were one bullet. They are different in the way that matters: a direct penalty is consistent only in the limit, so closing the leak means conditioning the operator badly, while Nitsche carries the boundary traction terms and is consistent for any stabilisation above a threshold. That difference is the reason the note has an order to it -- each approach answers the previous one's weakness, ending at the strong rotated constraint. Also records what the note deliberately does not cover: solving in spherical or cylindrical components, where the normal is a coordinate direction again. It is a real answer for a sphere and no answer at all for topography or a moved mesh, so it is excluded on purpose and the note should say so rather than leave the gap looking accidental. Underworld development team with AI support from Claude Code
…bliography This note cannot be carried by measurements the way the recent ones have been. The three approaches differ in their weak forms and those differences are the argument, so the entry now records what has to be written out: where the boundary term comes from, that free slip is two conditions and the tangential one is natural, the penalty perturbation, Nitsche's consistency and adjoint-consistency terms with gamma's threshold, the rotation and its reaction, and the derivation of the facet-measure normal. Three references verified rather than recalled. Engelman, Sani & Gresho (1982) is the classic statement of rotated degrees of freedom — our approach is that idea and the note should say so. Behr (2004) is the 'which normal' question on a curved boundary; its details are confirmed but it has not been read, and whether it reaches the same measure-weighted normal decides whether #560 was a rediscovery. Nitsche (1971) for the original. Underworld development team with AI support from Claude Code
The difficulty with this note is that the three approaches usually agree. A 1e-3 leak in the normal velocity is invisible to anything that consumes the velocity field, which is most of a model, and a comparison staged on a problem where the methods agree is worth nothing. So the note is organised around the case where they separate: surface stress. When the wall-normal traction is the answer rather than a by-product, a penalty or Nitsche condition hands you a traction recovered from a constraint that was only approximately satisfied, whereas the rotated constraint's reaction is sigma_nn itself — already computed, not post-processed. That contrast is the worked example and it should be measured against a known answer rather than described. Also records the secondary discriminators (deformed boundaries, transverse isotropy, conditioning) and, said early, that a model which only consumes the velocity should use the simplest thing that works. A note is more useful if it tells the reader when to stop reading. Underworld development team with AI support from Claude Code
The rotated boundary conditions were not built to tidy up free slip on an annulus. They were built because a free surface evolves under the traction it carries, so the wall-normal stress stops being a diagnostic and becomes the thing driving the model — which is the strongest case there is for a constraint whose reaction is sigma_nn exactly rather than recovered from a condition that was only approximately satisfied. R1 should lead with that rather than arrive at it, and the free-surface entries now record the dependency from their side. It runs one way: R1 is the machinery, S1 and S2 are what it was for, so R1 goes first or they go together. M1 and G1 are noted there as the cautionary example — meant to publish together, went four days apart, and now owe a v2 for a cross-link that could have been in v1. Underworld development team with AI support from Claude Code
Two corrections to the entry's framing. Rotating the degrees of freedom is not a new idea. It is in the early finite-element texts and Engelman, Sani & Gresho were reviewing the alternatives in 1982, so the note should present it as the textbook method recovered and then answer the obvious question: why is the least accurate option still the common one. The answer is structural rather than numerical. A per-node rotation leaves the discrete vector in a mixed basis — interior nodes in Cartesian components, constrained nodes in normal/tangential — and every piece of machinery downstream has to know which is which. Ours pays for it in specific places: the multigrid prolongation has to be rotated, so the rotated path cannot use the DM-coupled hierarchy and needs custom-P transfers; the rotated solve builds its own KSP under a per-solve prefix, so the solver's own options object does not reach it; the Schur block and preconditioner both needed revisiting. And a coordinate-system formulation is not a fourth approach to be excluded — it is the same rotation applied globally, which is why it is attractive (no mixed basis, none of the structural cost) and why it fails as soon as the boundary stops lying along a coordinate surface. Recorded as the third approach's special case. Underworld development team with AI support from Claude Code
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follows the rescope of R1 to Boundary conditions on non-planar boundaries.
Direct penalty and Nitsche were one bullet. They differ in the way that decides the note's structure: a direct penalty is consistent only in the limit, so closing the leak means conditioning the operator badly, whereas Nitsche carries the boundary traction terms and is consistent for any stabilisation above a threshold — optimal order, no conditioning price, still a weak imposition that leaks.
That gives the note a spine rather than a list. Each approach answers the previous one's weakness:
The leak numbers are the argument for that ordering, so the note should measure them rather than assert them.
Also records what the note deliberately excludes: solving in spherical or cylindrical components, where the wall normal becomes a coordinate direction again and the constraint goes back to holding one component. That is a real answer for a sphere or an annulus, and no answer at all for topography, a deformed mesh, or a tilted internal surface — which is the general case the note is about. Stated once, so its absence reads as a choice rather than an oversight.
Opened as a PR rather than pushed to
main: the previous plan update went in directly and bypassed this repo's branch protection, which it should not have.Underworld development team with AI support from Claude Code