Skip to content

The nodal semi-Lagrangian stress history carries ~50% too much stress at a no-slip wall: two independent transports converge together, it stays flat elsewhere #735

Description

@lmoresi

What happens

Viscoelastic DFG cylinder, Wi = 1, Maxwell element, uw.systems.NavierStokes (momentum
Eulerian SUPG) with the three stress_transport options, DEVSS eta_a = nu/4 on all
three (so the velocity's response to the stress is stabilised identically), fixed
dt = 1/120, 120 steps to t = 1, meshes 1/20, 1/30, 1/40 (base 10/15/20 refined once).
Settled window = steps 61–120.

h history cd_mean ‖τ_II‖_L2 ‖τ_II‖_L2 within 3R peak τ_II
1/20 integration points 1.839 0.01188 0.00670 0.233
1/20 grid (SUPG) 1.741 0.01186 0.00672 0.235
1/20 nodal trace-back 2.374 0.01388 0.00957 0.412
1/30 integration points 2.315 0.01236 0.00720 0.297
1/30 grid (SUPG) 2.275 0.01237 0.00723 0.293
1/30 nodal trace-back 2.314 0.01397 0.00963 0.419
1/40 integration points 2.513 0.01247 0.00745 0.360
1/40 grid (SUPG) 2.530 0.01251 0.00744 0.340
1/40 nodal trace-back 2.337 0.01400 0.00966 0.417

The grid transport and the integration-point trace-back — an assembled operator with
nodal P1 storage against a characteristic trace-back with quadrature-point storage,
nothing in common — give the same answer at every resolution (stress norms within 0.2%,
near-cylinder norm within 0.4%) and converge together, the increments shrinking 3–4× per
refinement step. The nodal trace-back is flat under refinement to 1% — at a different
answer: 11% above the grid/IP limit on the stress norm, 29% on the near-cylinder norm,
10% on the peak.

Where the difference lives — stress invariant at step 120, 1/40, mean per shell of
distance from the wall, ratio to nodal:

shell grid / nodal IP / nodal
on the wall (< 0.25h) 0.68 0.67
0.25 – 1 h 0.56 0.55
1 – 2 h 0.55 0.55
2 – 4 h 0.76 0.77
4 – 8 h 0.98 0.99

Two cells out the three agree. The nodal history carries about twice the mean stress in
the first two cells off the no-slip wall, and refinement does not move it.

Why this is the nodal scheme's problem and not the other two's

Two independent discretisations agreeing to the percent and converging together is the
stronger evidence; one scheme being flat is consistent with either correctness or a
resolution-independent defect, and here it disagrees with the pair.

The defect is wall-specific. On the rigid-rotation and uniform-translation tests
(tests/test_1059_stress_transport.py, no walls) the nodal trace-back is the most
accurate of the three by 4×, and nothing here contradicts that.

Mechanism — a candidate, not demonstrated

At a no-slip node the velocity is zero, so the departure point is the node itself and
the wall value is carried exactly, with no spatial averaging, every step. The commit is an
L2 projection of the flux onto continuous P1; at a boundary node of a profile that peaks
at the wall, that fit overshoots. The exact carry preserves the overshoot and the memory
term c·σ* re-injects it. The grid transport breaks this loop because its transport is a
solve with the boundary in the weak form; the integration-point history breaks it because
it never reads the wall node directly. Testable: the nodal wall value should exceed the
projected flux's true wall value by a growing margin over the opening steps.

Reproduction

~/+Simulations/stress_transport/cylinder/run_resolution.sh and
run_resolution_grid*.sh (driver dfg_cylinder.py with -uw_devss 0.25),
resolution_table.py for the table. Runs r{20,30,40}_{ip,grid,traced}.

Found while validating the integration-point stress history (#732); the grid transport's
inflow condition (#733) is on in these runs.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions