Demos for symbolic interpolation inside a variational form - #5401
Open
pbrubeck wants to merge 5 commits into
Open
Demos for symbolic interpolation inside a variational form#5401pbrubeck wants to merge 5 commits into
pbrubeck wants to merge 5 commits into
Conversation
Solve a Reissner-Mindlin plate with the Mixed Interpolation of Tensorial Components formulation, which avoids shear locking in the thin-plate limit by projecting the rotations into an edge-conforming Nedelec space. The reduction operator is written as a symbolic interpolate inside the variational form.
Solve the fourth order problem of Wang, Xu and Hu (2006) with the modified Morley element, which keeps Morley for the biharmonic term and replaces the Laplacian term by its linear conforming interpolant so that the method stays uniform as the perturbation parameter vanishes. The reduction operator is a symbolic interpolate of an argument sitting under a gradient inside the form, so it exercises a case the MITC demo does not: the form compiler has to differentiate the fused interpolant in place. The demo checks the degenerate limit, where the reduced solution is the linear conforming solution of the Poisson problem the equation approaches. Boundary conditions are imposed weakly because Firedrake has no strong boundary conditions on the Morley element.
The reduction operator is easier to read as a picture: Morley carries vertex values and averaged edge normal derivatives, P1 carries the vertex values alone, and the operator keeps the ones they share.
The docs Makefile copies every demo's assets into one flat directory, so two demos cannot both ship an elements.svg: the copy refuses to overwrite and the build stops before Sphinx runs.
Both demos rendered without the link to the script pylit generates from them, which is how a reader gets a version they can run. The modified Morley demo named its source in prose rather than citing it, so the references it rests on were absent from the bibliography.
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.
Description
Two demos that write a reduction operator as a symbolic
interpolateof anargument, directly inside a variational form. Both are new files; no existing
demo changes behaviour.
Stacked on #5258, which is what makes a same-mesh
Interpolatecompile intothe surrounding integral instead of assembling a separate operator. Neither
demo runs without it, so this PR targets that branch rather than
main.demos/plate_bending_mitcA Reissner-Mindlin plate discretised with Mixed Interpolation of Tensorial
Components. The rotations are projected into an edge-conforming Nedelec space
inside the shear term, which is what stops the element locking as the plate
gets thin.
demos/modified_morleyThe fourth-order singular perturbation problem
eps^2 Lap^2 u - Lap u = fwiththe modified Morley element of Wang, Xu and Hu (J. Comput. Math. 24 (2006),
113-120). Morley is kept for the biharmonic term and the Laplacian term is
replaced by its linear conforming interpolant, so the method stays uniform as
epsvanishes.This one exercises a case the MITC demo does not: the interpolated argument
sits under a gradient, so the form compiler has to differentiate the fused
interpolant in place. Morley is also physically mapped, so the interpolation
goes through the zany basis transformation. The demo closes by checking the
degenerate limit -- as
eps -> 0the reduced solution becomes the P1 solutionof the Poisson problem the equation approaches, and the difference falls
quadratically:
Boundary conditions are imposed weakly, because
firedrake/bcs.pyraisesNotImplementedErrorfor strong conditions on Morley and the other zanyelements.
Demo asset names
The docs Makefile copies every demo's assets into one flat directory, so two
demos cannot both ship an
elements.svg:cprefuses to overwrite and thebuild stops before Sphinx runs. Each diagram is now named for its demo,
mitc_elements.svgandmorley_elements.svg.Checks
make htmlbuilds clean,make srclintpasses, and both demos passtests/firedrake/demos/test_demos_run.py.