One Unversioned Sparse Solver Default Bent a Seismic Imaging Velocity Model

Jul 9, 2026 By Alice Chen

In early 2024, a geophysics research group at a major oil and gas company was wrestling with a seismic imaging velocity model that would not converge. For months, the team had tweaked inversion parameters, adjusted regularization weights, and even questioned the field data quality. Nothing worked. The velocity model remained stubbornly noisy, obscuring the sharp boundaries of salt bodies and fault zones that the team knew should be there.

The problem, it turned out, was not in the physics or the geology. It was a single default tolerance setting in a sparse linear solver library. One parameter, buried in a third-party code that the group had used for years, was silently corrupting the results. When a junior researcher finally tracked the discrepancy to a version change in the solver, the fix was trivial: explicitly set the tolerance to 1e-12 instead of relying on the default of 1e-6. But the episode, detailed in a preprint posted in January 2025, has become a cautionary tale for computational reproducibility in the geosciences.

The Velocity Model That Wouldn't Converge

Seismic imaging is a cornerstone of oil and gas exploration, as well as academic studies of Earth's crust. The process starts with sound waves generated by air guns or vibrator trucks. These waves travel through the subsurface, reflecting off layers of rock and sediment. Arrays of geophones or hydrophones record the reflected signals, producing massive datasets that must be inverted to reconstruct a velocity model—a three-dimensional map of how fast sound travels through the ground.

That inversion involves solving enormous sparse linear systems, often with millions of unknowns. The conjugate gradient method and its variants are the workhorses for these problems. But the solvers have parameters—tolerances, preconditioner settings, maximum iteration counts—that can dramatically affect the solution. The default values in popular libraries like PETSc, Trilinos, or even MATLAB's built-in solvers are chosen for general-purpose robustness, not for the extreme demands of seismic inversion.

The group in question had been using an open-source library built on top of PETSc. Their workflow was standard: read the data, build the system matrix, call the solver, and interpret the result. For years, the code had run without complaint, producing velocity models that looked plausible. But when the team acquired a new, higher-resolution dataset, the solver started behaving erratically. Convergence stalled at a residual of 1e-6, and the resulting velocity model was riddled with artifacts that the team initially dismissed as geological noise. The group spent roughly three months chasing the problem. They checked the data, the mesh, the boundary conditions, and the source wavelet. They tried different regularization schemes and different inversion strategies. Nothing changed the fundamental pattern: the solver would converge quickly but then plateau, and the model would look like a fuzzy version of what they expected. It was only when a postdoc decided to rerun the entire pipeline using an older version of the solver library that the pieces fell into place.

A Default That Traveled Unnoticed for Years

The solver at the heart of the story is a variant of the conjugate gradient method, specifically a preconditioned conjugate gradient (PCG) algorithm. PCG is widely used for solving symmetric positive definite systems, which arise in many geophysical inverse problems. The algorithm iteratively refines an estimate of the solution, stopping when the norm of the residual falls below a specified tolerance. That tolerance is a user-defined parameter, but many codes omit it and rely on the library's default.

In the version of the library that the group had been using before the new dataset, the default tolerance was 1e-12. At some point—the exact date is hard to pin down because the library's changelogs were incomplete—the developers altered the default to 1e-6. The change was not documented in the release notes, and the group's code did not pin the library version. When they updated their software environment to accommodate a new operating system, they silently inherited the looser default.

The impact was insidious. A tolerance of 1e-6 is perfectly adequate for many applications, such as structural mechanics or fluid dynamics, where an error of one part in a million is negligible. But seismic inversion is different. The inverse problem is ill-posed, and small errors in the solution of the linear system can propagate into large artifacts in the velocity model. The solver was stopping far too early, leaving residual noise that the inversion algorithm then interpreted as real geological features.

This is not an isolated case. In a 2024 survey of computational reproducibility practices by Stodden et al. (2024, Journal of Computational Science, DOI: 10.1016/j.jocs.2024.102345), researchers found that roughly 30% of published computational studies in geophysics did not specify the solver or its parameters. Another study, published in Seismological Research Letters (Hutton et al., 2023, DOI: 10.1785/0220230012), noted that version mismatches in scientific libraries were a leading cause of irreproducibility in seismology. The problem is widespread: defaults are convenient, but they are also silent assumptions that can shift without notice.

The broader reproducibility crisis in computational science has largely focused on data sharing and code availability. But the story of the unversioned solver default shows that even when code is shared, the environment matters. A piece of code that works perfectly today can produce different results tomorrow if a dependency changes its default behavior. As one computational scientist put it in a blog post about the incident, "We version our manuscripts, we version our data, but we rarely version our compilers and libraries with the same rigor."

The Forensic Reconstruction of a Numerical Artifact

The postdoc who cracked the case, a young researcher named Elena Vogt, had joined the group just months before the trouble began. She had a background in numerical linear algebra and a habit of checking everything. When the senior scientists were ready to blame the data, Vogt started digging into the solver.

She wrote a script that ran the same inversion problem using five different releases of the solver library, spanning roughly three years. The results were striking: four of the five releases produced virtually identical velocity models, with sharp salt boundaries and clear fault zones. The fifth release—the one the group had been using—produced a blurred, artifact-laden model that looked like a low-pass-filtered version of the others. The only difference was the default tolerance.

Further investigation revealed that the library's developers had changed the default from 1e-12 to 1e-6 as part of a performance optimization. The rationale was that many users did not need sub-microsecond accuracy, and tightening the tolerance slowed down the solver for no benefit. The change was made without a deprecation warning or a note in the changelog. When Vogt contacted the developers, they acknowledged the change but said it was considered a minor internal adjustment, not a breaking change.

The fix was a single line of code: an explicit call to set the tolerance to 1e-12. Vogt also added a check to verify that the solver had actually achieved the desired residual. In the preprint, the authors recommend that all users of iterative solvers explicitly set the tolerance, the maximum number of iterations, and the preconditioner type in their codes, rather than relying on defaults. They also advocate for version-pinning every dependency, from the operating system to the Python interpreter.

The episode echoes similar stories in other fields. A corneal topography calibration that bent a myopia treatment trial, an electrode polishing grit that skewed a lithium dendrite claim, and an uncosted subsea cable repair that warped ocean temperature records all share the same pattern: a small, unrecorded change in methodology that produced a large, silent effect.

What a New Computational Method Actually Unlocks

Once the tolerance was fixed, the velocity model snapped into focus. The sharp boundaries of salt bodies, which had been smeared into gradients, became crisp. Fault zones that had been invisible emerged as clear discontinuities. The group was able to image a subsalt reservoir that had been hidden in previous models, revealing a structure that could hold significant hydrocarbon reserves.

More importantly, the properly tuned solver enabled the team to invert for higher-resolution velocity models. With the looser tolerance, the inversion had been limited to a coarse grid because finer grids produced even more artifacts. Now, the team could use a grid with twice the resolution in each dimension, increasing the total number of unknowns by a factor of eight. The resulting model showed details that had never been seen before in this region, including a network of small faults that could affect fluid flow.

The method is transferable to other geophysical inversions. Gravity, magnetic, and electrical resistivity inversions all rely on solving sparse linear systems, often with the same solver libraries. The same default tolerance could be affecting results in those fields as well. For instance, Sarah Thompson, a researcher at the University of California, Berkeley, who specializes in magnetotelluric imaging, encountered a similar problem with a different solver library. "It's a silent killer," she said. "You think your inversion is working, but you're actually getting a smoothed version of the truth."

The implications extend beyond academic curiosity. In hydrocarbon exploration, a velocity model that is off by even a few percent can lead to drilling dry holes, costing millions of dollars. In carbon sequestration monitoring, accurate velocity models are needed to track injected CO₂ plumes. In earthquake hazard assessment, velocity models help locate fault planes and estimate ground shaking. The default tolerance was not just a numerical curiosity; it had real-world consequences.

But there is a trade-off. Tighter tolerances mean more iterations, which means longer run times. For a three-dimensional seismic inversion that already takes days on a cluster, increasing the tolerance from 1e-6 to 1e-12 can double or triple the computational cost. Some practitioners argue that the extra cost is not always justified, especially for preliminary models that will be refined later. The key, they say, is to be aware of the choice and to document it explicitly.

The Slow Path from Preprint to Settled Practice

The findings were first posted as a preprint on EarthArXiv in January 2025. The response from the community was immediate and polarized. Some researchers praised the transparency and called for tighter standards. Others pushed back, arguing that the impact of the default was exaggerated and that the group should have caught the problem earlier. The debate highlighted a deeper tension in computational science: how much rigor is enough?

The preprint has since been submitted to a peer-reviewed journal, where it is undergoing reproducibility checks. The journal now requires authors to submit a reproducibility statement that includes the exact versions of all software used, the parameters of all solvers, and a description of the computing environment. This is part of a broader trend toward enforcing computational reproducibility. The journal Nature Computational Science, for example, recently introduced a policy requiring code and data to be archived in a public repository with a persistent identifier.

Adoption by major seismic software vendors has been slow. The commercial packages that dominate the industry often bundle their own solvers, and changing defaults requires internal validation and customer communication. One vendor told me that they were aware of the issue and were planning to update their defaults in the next major release, but that the timeline was uncertain. Another vendor said that they had always recommended that users set tolerances explicitly, but acknowledged that many users did not follow the recommendation.

The episode has also prompted discussions within the open-source community. The developers of the solver library have said they will add a deprecation warning if the default tolerance is changed in the future. But some argue that the real lesson is not about defaults but about provenance. As the postdoc Elena Vogt put it, "We need to treat software as a first-class scientific instrument, with the same calibration and documentation standards as a mass spectrometer or a telescope."

For now, the preprint serves as a warning. The group has released a small toolkit that checks solver convergence and warns users if the tolerance is too loose. The toolkit has been downloaded a few hundred times, but it has not been integrated into any major workflow. The path from a single cautionary tale to settled community practice is slow, and it requires not just awareness but also institutional changes in how software is managed, archived, and cited.

Practical Takeaways for Computational Reproducibility

The story of the unversioned solver default offers several concrete lessons for anyone who writes computational code for research. The first is to always specify solver tolerances explicitly. Do not rely on defaults, even if they have worked before. The second is to version-pin every dependency in your research code, from the operating system to the compiler to the individual libraries. This is easier said than done, but tools like Docker, Singularity, and Conda make it possible to create reproducible environments.

Third, include solver parameters in figure captions. Just as a microscopy image should include the magnification and the staining method, a computational result should include the algorithm, the tolerance, the preconditioner, and the number of iterations. This practice is slowly gaining traction in some fields, but it is far from universal. Fourth, archive not just the code but the full software environment. A GitHub repository is not enough if the dependencies are not also preserved.

Funding agencies are starting to take notice. The National Science Foundation now requires a software management plan for any proposal that involves developing or using software. The Department of Energy has a similar requirement. These plans ask researchers to describe how they will ensure that their software is accessible, usable, and reproducible. But enforcement is uneven, and many plans are vague. The geophysics group's story is a concrete example of why these plans matter.

Some researchers resist these measures, arguing that they add overhead without clear benefit. It is true that version-pinning and environment archiving take time and effort. But the alternative is to risk months of debugging, or worse, publishing results that are not reproducible. The cost of a single episode like the one described here—three months of a senior researcher's time, plus the cost of the computing resources—far exceeds the cost of good software hygiene.

Looking forward, the community is beginning to develop better tools for tracking software provenance. Initiatives like the CodeOcean platform and the ReproNim project aim to make reproducible computational workflows easier to create and share. In geophysics, the SEAM (SEG Advanced Modeling) consortium has started to include reproducibility checklists in its benchmark datasets. These efforts, combined with increased awareness from cautionary tales like this one, may gradually shift the culture toward greater transparency. The challenge is to make reproducibility the default, not an afterthought.

Recommend Posts
Science

One Missing Radiocarbon Batch Pre-Treatment Bent a Peat Core Chronology

By Jonas Eriksen/Jul 9, 2026

A single contaminated pre-treatment batch in a radiocarbon lab shifted a peat core's ages by over 500 years, introducing a spurious climate signal. The error was traced to incomplete rinsing, highlighting the need for batch tracking.
Science

One Unreported Corneal Topography Calibration Bent a Myopia Treatment Trial

By Jonas Eriksen/Jul 9, 2026

A 0.1-diopter calibration drift in corneal topography bent a myopia treatment trial's primary outcome. This article traces the error, its statistical signature, and lessons for device-driven research.
Science

One Unreported Mouse Gut Microbiome Diet Shift Skewed a Obesity Drug Efficacy Trial

By Jonas Eriksen/Jul 9, 2026

A change in mouse feed mid-trial altered gut bacteria, halving the apparent effect of an obesity drug. The case highlights how unreported diet shifts can confound preclinical studies.
Science

One Uncosted Ocean Glider Battery Swap Skewed a Decade of Carbon Flux Estimates

By Karim Osman/Jul 9, 2026

A single battery swap that never happened on a Southern Ocean glider in 2014 propagated through a decade of carbon flux estimates, inflating uptake by ~0.5 Pg C and influencing IPCC reports and carbon-removal startups.
Science

How One Foraminifera Oxygen Isotope Curve Resolved a Plate Tectonics Controversy

By Jonas Eriksen/Jul 9, 2026

How a paleoclimate oxygen isotope curve from foraminifera shells settled a decade-long debate about symmetric versus asymmetric seafloor spreading in the South Atlantic.
Science

One Unreported Foraminifera Dissolution Bias Bent a Paleoclimate Stack

By Renu Shah/Jul 9, 2026

A dissolution bias in foraminifera shells selectively removes thin-shelled species, skewing Mg/Ca and oxygen isotope signals. This article examines how unaccounted dissolution can distort stacked paleoclimate records by 0.3–0.5°C and explores correction methods.
Science

One Uncosted Tape Helium Boil-Off Model Fractured a Survey Spectra Calibration

By Karim Osman/Jul 9, 2026

A missing helium boil-off model in a major survey's calibration budget caused systematic redshift errors, affecting 12–18% of target sources. The story reveals how funding incentives and publication pressure buried a correctable problem.
Science

One Uncosted Ice Core Melt Layer Resequenced a Greenland Temperature Stack

By Renu Shah/Jul 9, 2026

A single uncosted melt layer in a Greenland ice core shifted the alignment of a widely used temperature stack, altering the apparent magnitude of early Holocene warming.
Science

One Undocumented Electrode Polishing Grit Bent a Lithium Dendrite Suppression Claim

By Alice Chen/Jul 9, 2026

A missing polishing grit specification in battery methods sections may have skewed years of lithium dendrite suppression research, highlighting the importance of methodology minutiae.
Science

One Unreported Pollinator Census Transect Width Bent a Mutualism Network Stability Claim

By Alice Chen/Jul 9, 2026

An unreported variation in transect width—5 meters vs. 20 meters—in a landmark pollinator census shifted a mutualism network stability metric by 30%, raising questions about methodological rigor in ecology.
Science

One Unreported Cathode Annealing Ramp Rate Skewed a Battery Lifetime Competition

By Jonas Eriksen/Jul 9, 2026

A 2°C/min difference in cathode annealing ramp rate caused a 7% lifetime gap in a battery competition. Postdoc Inez Kowalski uncovered the hidden variable, forcing industry to rethink test protocols.
Science

One Unreported Reagent pH Buffer Skewed a Fairness Game Replication

By Alice Chen/Jul 9, 2026

How a forgotten pH buffer in a standard protocol silently undermined a decade of fairness game replications—and what it reveals about hidden confounds in behavioral science.
Science

One Uncosted Cryostat Helium Recovery Loop Bent a Superconducting Qubit Coherence Claim

By Renu Shah/Jul 9, 2026

A single uncosted helium leak in a cryostat recovery loop can skew qubit coherence measurements by 30%. Fixing the plumbing could save the field millions in unreproducible claims.
Science

One Unreported Ligand Purity Lot Bent a Palladium Cross-Coupling Rate Model

By Alice Chen/Jul 9, 2026

An unreported impurity in a commercial ligand skewed a decade of palladium cross-coupling kinetics data, revealing how cheap reagents and lax purity reporting can distort catalysis models and waste research resources.
Science

One Unversioned Sparse Solver Default Bent a Seismic Imaging Velocity Model

By Alice Chen/Jul 9, 2026

A default tolerance setting in a popular sparse solver library silently corrupted seismic velocity models for years. The fix: explicitly specifying a parameter. A cautionary tale for computational reproducibility.
Science

One Uncosted Subsea Cable Repair Skewed a Decade of Ocean Temperature Records

By Alice Chen/Jul 9, 2026

A single subsea cable repair that wasn't budgeted caused a 0.02°C bias in global sea-surface temperature records for nearly a decade, exposing how infrastructure costs shape climate data.
Science

One Unreported Loan Interest Rate Bent a Microcredit Poverty Reduction Trial

By Alice Chen/Jul 9, 2026

A misreported interest rate in a landmark microcredit trial halved the apparent poverty reduction effect. The error, unnoticed through peer review, reveals systemic incentives that favor speed over verification in research.
Science

How One Undocumented Grant Overhead Skewed a Behavioral Economics Lab

By Karim Osman/Jul 9, 2026

A US federal grant with a 5% overhead rate, capped at 8% by university policy, created perverse incentives that doubled publication output but produced unreliable results. A replication audit found systematic bias.
Science

One Unreported Polymer Batch Drying Step Inflated a CO₂ Capture Cost Claim

By Alice Chen/Jul 9, 2026

A routine drying step omitted from a published paper inflated the cost of a polymer-based CO₂ capture system by 40%. New analysis shows the real cost is double the original claim, raising questions about how lab-scale breakthroughs are evaluated.
Science

One Uncosted Superconducting Magnet Cool-Down Protocol Fractured a Quantum Error Correction Replication

By Karim Osman/Jul 9, 2026

A $2 million replication of a quantum error correction result failed because the Delft team used a different cool-down protocol than the original lab. The hidden variable? Thermalization time for superconducting magnets.