Skip to content

Zhong 2008 isoviscous response: constrained vs Nitsche free-slip behavior #248

Description

@gthyagi

Summary

While reproducing the Zhong et al. (2008) isoviscous Stokes response benchmark in UW3, constrained and Nitsche free-slip boundary conditions match different diagnostics:

  • Constrained free slip provides useful built-in multiplier/topography diagnostics, but the official 8-rank 1/8 run overpredicts characteristic velocities.
  • Nitsche free slip matches the Zhong Table 2 characteristic velocities well at 8 ranks, but raw boundary sigma_rr is not sufficient for dynamic-topography recovery.

This is related to the broader free-slip discussion in #104, but this issue is specifically about the Zhong 2008 spherical-shell response benchmark.

Benchmark script:

https://github.com/gthyagi/uw3-mantle-convection-benchmarks/blob/main/benchmarks/010_stokes_response_isoviscous.py

Benchmark setup

Default comparison case:

  • Zhong et al. (2008) Table 2, first Stokes-flow set
  • l = 2, m = 0, depth 0.5d
  • r_b = 0.55, r_t = 1.0, r0 = 0.775
  • uniform viscosity, eta = 1
  • internal spherical-boundary load equivalent to delta(r-r0) P_l^0(theta) e_r
  • response coefficients normalized by the measured angular norm of P_l^0
  • serial validation: -uw_cellsize 1/4
  • parallel validation: mpirun -np 8 ... -uw_cellsize 1/8

Zhong analytical references for this case:

Quantity Reference
surface topography s 4.998e-01
CMB topography b 9.313e-01
surface characteristic velocity ` Ut
CMB characteristic velocity ` Ub

Results

Error summary

BC / run Surface topo error CMB topo error Surface velocity error CMB velocity error
constrained, serial 1/4 15.8% 16.4% 1.68% 3.88%
constrained, 8-rank 1/8 13.0% 7.66% 25.1% 63.1%
Nitsche gamma 10, serial 1/4 10.6% 15.5% 0.257% 5.87%
Nitsche gamma 10, 8-rank 1/8 48.0% 52.4% 0.654% 0.243%
Nitsche gamma 100, 8-rank 1/8 47.9% 51.5% 0.146% 0.038%

Serial actual response values

BC / serial 1/4 Surface topo CMB topo Surface velocity CMB velocity
constrained 4.2090356241027566e-01 7.786127017538488e-01 1.0228577582537592e-02 1.2320478342852333e-02
Nitsche gamma 10 4.4705955177993373e-01 7.87091287177956e-01 1.0034120263339545e-02 1.2556363891469484e-02

8-rank actual response values

BC / 8-rank 1/8 Surface topo CMB topo Surface velocity CMB velocity
constrained 5.648430331865263e-01 1.0026232680557212e+00 1.2584202252522738e-02 1.9340833150169143e-02
Nitsche gamma 10 2.5978694927744095e-01 4.43175114203523e-01 1.0125825484077849e-02 1.1888840166227975e-02
Nitsche gamma 100 2.6026572894429606e-01 4.517496256438572e-01 1.0074644204660118e-02 1.1855484341433173e-02

Interpretation

This appears to split into two issues:

  1. Velocity response: Nitsche free slip is currently the better match to Zhong Table 2. The 8-rank 1/8 Nitsche run is below 1% error for both surface and CMB characteristic velocity. Constrained free slip overpredicts these velocities at 8 ranks.
  2. Dynamic topography: constrained multiplier topography is useful, but constrained velocity response does not match the benchmark. Nitsche velocity is correct, but raw direct boundary sigma_rr is not enough for topography. This likely needs a CBF-style or projected boundary traction recovery path for Nitsche runs.

Current benchmark script behavior

010_stokes_response_isoviscous.py now defaults to:

  • Zhong-style P_l^0 forcing
  • measured angular-norm response normalization
  • Nitsche free slip for the Zhong velocity comparison
  • direct-stress topography diagnostics for non-constrained runs
  • constrained free slip remains available with -uw_freeslip_type constrained for multiplier/topography diagnostics

Suggested next steps

  • Investigate why constrained free slip overpredicts the 8-rank velocity response.
  • Keep Nitsche as the default for Zhong Table 2 velocity-response comparison unless/until constrained velocity behavior is explained.
  • Implement/test a Nitsche-compatible dynamic-topography recovery method, preferably CBF-style or projected boundary traction.
  • After topography recovery is fixed, run the full Table 2 matrix for l = 2, 5, 8, 15 and depths 0.25d, 0.5d, 0.75d.

Activity

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

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions