Ray-isovel engine — the boundary shear stress on a channel cross-section, solved on
FEniCSx/dolfinx. Eulerian (robust field-based) and traced (Lagrangian ray) methods,
co-area shear estimators, and terrain-following mesh builders. Knows nothing about
banks or Parker; the parker-banks solvers build on it.
Extracted from the Parker-1978-revisited work (MNiMORPH/gravel-stress-parker), which holds the full development history.
dolfinx is conda-only:
conda create -n fenicsx-env -c conda-forge python=3.12 fenics-dolfinx mpich scipy numpy
conda run -n fenicsx-env pip install -e .
import rayisovel as ri
G = ri.build_section(zbed, y_edge, yj, Dc) # terrain-following mesh
uh = ri.solve_velocity(G["dom"], G["V"], Kf, G["walls"])
foot = ri.eulerian_foot(G["dom"], G["V"], uh, G["walls"], G["wall_s"])
tau = ri.coarea_shear_fem(G["V"], foot, s_query) # clean co-area boundary sheareulerian— velocity solve, ℓ/foot fields, co-area & binned shear, eddy-viscosity closure, constants (g, ρ, κ, S, β)traced— Lagrangian ray tracer,iterate_Kcoarea_fem,raster,traced_shear— shear estimatorsmesh—build_section,make_zbed,build_section_yofz(overhang)
conda run -n fenicsx-env pip install -e .[test]
conda run -n fenicsx-env pytest -q
Physics-invariant tests (momentum conservation of the co-area shear, no-slip, symmetry) plus API and mesh-builder checks.