This is a follow-up on the spherical Thieulot benchmark. Both m = -1 and m = 3 cases are now running without the earlier implementation bug. The earlier m = 3 failure was traced to an incorrect term in the manufactured body force in the benchmark script and is now fixed.
The remaining issue is the pressure mismatch at the inner boundary.
Reproduction scripts:
Tests performed:
- Used the
essential BC solution as the baseline/reference.
- Compared against:
natural_full
natural_normal_petsc
natural_normal_analytic
natural_normal_projected
- Ran the comparison for
m = -1 and m = 3 at cellsize = 1/8, Q2/Q1, p_bc = False.
- For
m = 3, also retested the PETSc-normal case with a much larger BC penalty and a tighter Stokes tolerance.
Observed outcomes:
natural_full stays very close to the essential baseline:
m = -1: p_inner_l2(base) = 0.023663
m = 3: p_inner_l2(base) = 0.00880887
- The normal-only BC does not improve the inner-boundary pressure:
m = -1:
- PETSc normals:
p_inner_l2(base) = 2.23654
- Analytical normals:
p_inner_l2(base) = 12.985
- Projected normals:
p_inner_l2(base) = 13.2424
m = 3:
- PETSc normals:
p_inner_l2(base) = 0.805627
- Analytical normals:
p_inner_l2(base) = 3.60611
- Projected normals:
p_inner_l2(base) = 3.87889
- For
m = 3, increasing the PETSc-normal penalty to 1e10 or tightening the Stokes tolerance to 1e-8 did not materially change the PETSc-normal result.
Interpretation:
- Pressure appears highly sensitive at the inner boundary, likely because of the strong radial dependence there (roughly
r^-n behavior).
- Swapping PETSc facet normals for analytical normals does not fix the remaining pressure mismatch at the inner boundary.
- In these tests, analytical/projected normals actually make the normal-only case worse relative to the
essential baseline.
- This suggests the dominant effect is not just facet-normal accuracy. The bigger change is the BC class itself:
natural_normal behaves like a free-slip-style normal-only condition, whereas essential / natural_full enforce the full benchmark velocity.
cc @lmoresi for visibility.
This is a follow-up on the spherical Thieulot benchmark. Both
m = -1andm = 3cases are now running without the earlier implementation bug. The earlierm = 3failure was traced to an incorrect term in the manufactured body force in the benchmark script and is now fixed.The remaining issue is the pressure mismatch at the inner boundary.
Reproduction scripts:
ex_stokes_thieulot.pythieulot_field_plots.pyTests performed:
essentialBC solution as the baseline/reference.natural_fullnatural_normal_petscnatural_normal_analyticnatural_normal_projectedm = -1andm = 3atcellsize = 1/8,Q2/Q1,p_bc = False.m = 3, also retested the PETSc-normal case with a much larger BC penalty and a tighter Stokes tolerance.Observed outcomes:
natural_fullstays very close to theessentialbaseline:m = -1:p_inner_l2(base) = 0.023663m = 3:p_inner_l2(base) = 0.00880887m = -1:p_inner_l2(base) = 2.23654p_inner_l2(base) = 12.985p_inner_l2(base) = 13.2424m = 3:p_inner_l2(base) = 0.805627p_inner_l2(base) = 3.60611p_inner_l2(base) = 3.87889m = 3, increasing the PETSc-normal penalty to1e10or tightening the Stokes tolerance to1e-8did not materially change the PETSc-normal result.Interpretation:
r^-nbehavior).essentialbaseline.natural_normalbehaves like a free-slip-style normal-only condition, whereasessential/natural_fullenforce the full benchmark velocity.cc @lmoresi for visibility.