MSc Physics · Physics educator · Preparing for a PhD in Computational Physics & Nonlinear Dynamics · Nepal Website · rcgiri.physics@gmail.com · ORCID 0009-0008-7149-7938
I model non-linear and chaotic systems with my own integrators, and I check every result against a conservation law or an independent reference. Each repository is written up like a lab entry: the system, the method, and the check used to trust it.
Research interests: Hamiltonian and dissipative chaos, symplectic integration, verification of scientific software.
| Status · Oct 2026 | |
|---|---|
| Physics projects | 5 completed (MSc dissertation: driven LCR circuits, Fortran 90, 2023) |
| Research software | physverify v0.4.2 (PyPI, DOI) |
| Next | Computational linear algebra, from Nov 2026 |
| Hardware | 8 GB laptop, CPU-only |
physverify checks that a simulation solves the equations it claims, at the order of accuracy it claims, not just that it runs. PyPI · Docs · doi:10.5281/zenodo.23534512 · GitHub Action
- Convergence-order, conservation and manufactured-solution checks for ODE and 1D PDE solvers; static
scanof Runge-Kutta tables, grid spacings and physical constants. Needs only NumPy. - Flagged 35 of 37 seeded bugs, with no false alarms (bugs and checks written by the same person, so this shows it works as designed).
- Applied to public physics repositories: 74 defects reported to their authors (which method found each).
- Limits are stated plainly: works best for ODEs, and a PASS means "these checks found nothing", not "proven correct".
| Project | Method | Check used to trust it |
|---|---|---|
| 3-Body Laboratory | Symplectic Velocity-Verlet; Sun-Earth-Jupiter over 12 years | Relative energy error ~10⁻⁹; ejection threshold δ ≈ 0.5 |
| Lorenz Attractor | Adaptive RK4; bifurcation sweep over ρ | λ_max > 0 from twin trajectories at δ ~ 10⁻⁸ |
| Double Pendulum | Euler-Lagrange in (θ₁, θ₂) | Poincaré sections: invariant tori breaking into chaos |
| Driven LCR Circuit | 2023 Fortran 90 dissertation rebuilt in vectorised Python | Residual vs SciPy < 10⁻⁷; matches legacy Fortran output |
| Projectile Simulation | Vacuum to linear + quadratic drag; fixed vs adaptive steps | Spatial residual maps |
Every push to these five repos runs physverify in GitHub Actions. Latest results on main: 40 of 40 checks pass.
| Project | What CI checks | Result |
|---|---|---|
| 3-Body | Velocity-Verlet order; momentum, angular momentum, time reversal; README energy claim | Order 2.00; conserved to ~10⁻¹⁵; |ΔE/E₀| = 6.4×10⁻⁹ · 9/9 |
| Lorenz | Equations at RK4 order; phase-space contraction −(σ+1+β); Jacobian; Lyapunov sum = trace | Order 3.97–4.28; all match · 8/8 |
| Double Pendulum | Equations at RK4 order; README energy-drift benchmark | Order 3.78–4.73; drift 7.8×10⁻¹² over 30 s · 7/7 |
| Projectile | Euler and RK4 vs exact solutions (vacuum, linear drag) and quadratic drag | Euler 1.00, RK4 3.97–4.04 · 9/9 |
| LCR Circuit | RK4 vs exact solution at R = 10, 40, 100 Ω; README SciPy claim | Order 4.00–4.25; 9.9×10⁻⁸ vs exact · 7/7 |
For Lorenz and the double pendulum, CI checks the equations of motion with physverify's own RK4; their adaptive solvers are not order-checked (the double pendulum's is checked through its energy benchmark).
| Month | Work | Status |
|---|---|---|
| Jan–Feb | Projectile v1.0 → v2.1: Euler, then RK4 validated against SciPy | Done |
| Apr | LCR modernisation; chaotic 3-body dynamics | Done |
| May | Double pendulum; Lorenz attractor | Done |
| Jun–Sep | MCQplex (NEB exam prep), school routine planner, llm-free-cascade, pdf-render-pool, mongo-job-lock | Live / released |
| Oct | physverify 0.1 → 0.4.2: verification tool for simulations | Released |
| Nov → | Computational linear algebra: eigenvalue problems, Lanczos, normal modes | Next |
Toward PhD-level work: compiled acceleration (Numba, C++) → PDEs and lattice systems → multi-core parameter sweeps.
- MCQplex: adaptive NEB exam prep for low-end Android and patchy networks, with teacher analytics and practice duels.
- Routine & Substitution Planner: offline-first school timetable with a tiered teacher-substitution engine.
- Open curricula (v0.1, not yet piloted in a classroom): git-for-schools (offline-first Git, Grades 8–12) · data-science-nepal (bilingual, Nepali datasets).
- Utilities: llm-free-cascade (free-tier LLM fallback) · pdf-render-pool (Puppeteer HTML→PDF pool) · mongo-job-lock (run a clustered cron job once).



