BiGSTARS.jl: A Julia package for bi-global stability analysis for rotating stratified flows
Abstract
BiGSTARS v4.0.0 Diff since v3.0.9 BiGSTARS.jl v4.0.0 — SLEPc/PETSc as the sole eigensolver Breaking release. Every eigenproblem now goes through SLEPc over PETSc — a single, distributed, MPI-parallel eigensolver. The three in-process serial backends are removed. ⚠️ Breaking changes Solvers removed: KrylovKit, ArnoldiMethod, Arpack are no longer dependencies (nor LinearMaps, VectorInterface). API removed: EigenSolver, SolverConfig, solve!, get_results, compare_methods!, solve_mpi (+ legacy solve_eigenvalue_problem/solve_arnoldi/solve_arpack/solve_krylov, get_method_info). solve kwargs removed: method, parallel, sparse (and krylovdim/sortby from the deleted SolverConfig). solve_mpi is renamed to solve — the distributed solve is now the solve. New solve — generalized shift-and-invert eigensolve via SLEPc/PETSc, one pencil per wavenumber distributed across MPI ranks (MatMPIAIJ), with adaptive-σ shift retry (per-attempt EPSSetTarget, rank-0 decision broadcast — collective-safe). Shipped as extension BiGSTARSMPIExt: using BiGSTARS stays light and loads on all platforms; the backend activates when MPI, PetscWrap, SlepcWrap are imported. New blocking CI builds complex PETSc/SLEPc and verifies the solver against an analytic reference (σ_n = k² + (nπ)²) at -n 1 and -n 2. Requirements to solve A complex-scalar PETSc/SLEPc build (--with-scalar-type=complex; PETSC_DIR/PETSC_ARCH/SLEPC_DIR exported), MPI.jl bound to that MPI. Run with mpiexec -n P julia .... Without the backend, solve raises an install hint. Migration ```julia before (v3) solver = EigenSolver(A, B; σ₀=1.0, method=:Krylov, nev=5); solve!(solver) λ, Χ = get_results(solver) after (v4) using BiGSTARS, MPI import PetscWrap, SlepcWrap # import, not using: PetscWrap exports solve results = solve(cache, k_values; sigma_0=0.02, nev=5) # Vector{SolverResults}, populated on rank 0 ``` SLEPc options (nev/which/tol) are set once per process — all solve calls in a session share them; only the σ target varies. Merged pull requests: build(deps): bump actions/cache from 4 to 5 (#66) (@dependabot[bot]) build(deps): bump codecov/codecov-action from 5 to 6 (#67) (@dependabot[bot]) Fix threading workspace sizing; add coverage tests (#70) (@subhk) Update test_coverage_gaps.jl (#71) (@subhk) Update test_coverage_gaps.jl (#72) (@subhk) SLEPc/PETSc as the sole eigensolver (remove KrylovKit/ArnoldiMethod/Arpack) (#73) (@subhk) Fix mpi.yml SLEPc test: MPI init + per-process nev (#74) (@subhk) docs(README): SLEPc/PETSc as the sole eigensolver (#75) (@subhk) Release v4.0.0 — SLEPc/PETSc sole eigensolver (breaking) (#76) (@subhk) fix(docs): allow BiGSTARS v4 in docs env compat (#77) (@subhk)
Fields of Study & Subjects
Fluid Dynamics and Turbulent Flows
Oceanographic and Atmospheric Processes
Meteorological Phenomena and Simulations
Publication details
- Journal / source
- Zenodo (CERN European Organization for Nuclear Research)
- Publication date
- 27 January 2026