Summary
PR #119 switches the default Nitsche surface normals from Gamma_N to Gamma_P1 (projected P1 normals). This causes ValueError: cannot contract or diagonalize between axes of different dimension in sympy tensor operations during solver assembly.
Failing tests (CI on PR #119)
test_0504_projections.py — scalar projection, gradient recovery
test_0720_coordinate_units_gradients.py — all gradient tests
test_1050_VEstokesCart.py — all VE Stokes box mesh tests
All fail with the same error from sympy.tensor.array.arrayop.py:105.
Root cause
The Gamma_P1 components likely have a different sympy array shape/rank than Gamma_N, so when they're substituted into constitutive model tensor expressions (which expect the Gamma_N shape), the contraction dimensions don't match.
Context
PR #119 bundles several independent features:
- Submesh infrastructure (
DMPlexFilter wrapper, region DS)
- Region labels for internal boundaries
mesh.Gamma_P1 projected normals
- Default normals switch from
Gamma_N to Gamma_P1
Items 1-2 are independent and working. Items 3-4 need the tensor shape issue resolved before merging.
Suggestion
Either fix the Gamma_P1 shape to match Gamma_N's tensor structure, or split PR #119 so the working submesh/region infrastructure can merge independently.
Underworld development team with AI support from Claude Code
Summary
PR #119 switches the default Nitsche surface normals from
Gamma_NtoGamma_P1(projected P1 normals). This causesValueError: cannot contract or diagonalize between axes of different dimensionin sympy tensor operations during solver assembly.Failing tests (CI on PR #119)
test_0504_projections.py— scalar projection, gradient recoverytest_0720_coordinate_units_gradients.py— all gradient teststest_1050_VEstokesCart.py— all VE Stokes box mesh testsAll fail with the same error from
sympy.tensor.array.arrayop.py:105.Root cause
The
Gamma_P1components likely have a different sympy array shape/rank thanGamma_N, so when they're substituted into constitutive model tensor expressions (which expect theGamma_Nshape), the contraction dimensions don't match.Context
PR #119 bundles several independent features:
DMPlexFilterwrapper, region DS)mesh.Gamma_P1projected normalsGamma_NtoGamma_P1Items 1-2 are independent and working. Items 3-4 need the tensor shape issue resolved before merging.
Suggestion
Either fix the
Gamma_P1shape to matchGamma_N's tensor structure, or split PR #119 so the working submesh/region infrastructure can merge independently.Underworld development team with AI support from Claude Code