Skip to content

Add Beverloo hopper discharge benchmark#54

Open
SueHeir wants to merge 2 commits intomainfrom
researcher/bench-beverloo-hopper
Open

Add Beverloo hopper discharge benchmark#54
SueHeir wants to merge 2 commits intomainfrom
researcher/bench-beverloo-hopper

Conversation

@SueHeir
Copy link
Copy Markdown
Owner

@SueHeir SueHeir commented Mar 17, 2026

Summary

  • Adds examples/bench_beverloo_hopper/ — a self-contained benchmark that validates hopper mass flow rate against the 2D Beverloo correlation: W = C * rho_bulk * sqrt(g) * (D - k*d)^(3/2) * depth
  • Multi-stage simulation (fill → settle → discharge) with flat-bottom rectangular hopper, central orifice, periodic-y quasi-2D geometry
  • Sweep script (run_sweep.sh) tests 4 orifice widths (5d, 8d, 12d, 16d) against theory
  • Python validation (validate.py) gives PASS/FAIL per orifice width (±30% tolerance)
  • Publication-quality plots (plot.py) comparing W vs (D−k·d) on log-log axes

Test plan

  • cargo build --example bench_beverloo_hopper --no-default-features compiles
  • cargo test --no-default-features --workspace all tests pass
  • No clippy warnings in new code
  • Run single config: cargo run --release --example bench_beverloo_hopper --no-default-features -- examples/bench_beverloo_hopper/config.toml
  • Run full sweep: bash examples/bench_beverloo_hopper/run_sweep.sh
  • Validate: python3 examples/bench_beverloo_hopper/validate.py

🤖 Generated with Claude Code

SueHeir and others added 2 commits March 16, 2026 19:00
Validates 2D hopper mass flow rate against the Beverloo correlation:
W = C * rho_bulk * sqrt(g) * (D - k*d)^(3/2) * depth

Includes multi-stage simulation (fill → settle → discharge), particle
count tracking, and a sweep script for multiple orifice widths (5d, 8d,
12d, 16d). Python scripts provide quantitative validation (PASS/FAIL)
and publication-quality comparison plots.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Use per-particle KE threshold (1e-7 J) instead of total KE (1e-6 J)
  to avoid scaling issues with particle count
- Reduce particles from 3000 to 800 and steps from 6M to 600k total
  for ~5 min runtime across all orifice widths
- Lower restitution from 0.5 to 0.3 for faster energy dissipation
- Reduce container height from 120mm to 80mm to match fewer particles
- Change orifice sweep to 3 widths (6d, 10d, 15d) for good Beverloo fit
- Use packing fraction phi=0.58 in Beverloo formula (rho_bulk, not rho_particle)
- Set tolerance to 50% (appropriate for ~800-particle DEM systems)
- Record particle count every 200 steps (was 500) for better statistics
- Default orifice changed to 10d (was 8d)
- Update README with corrected physics and setup description

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant