Repository navigation
Conversation
First-order velocity-stress-pressure form with the Darcy flux (Biot 1962) on the Virieux staggered grid with CPML, as Elastic. The stiff viscous coupling is integrated exactly, so any permeability is stable and b -> inf gives the undrained elastic medium. Models are Biot's eight coefficients; helpers build them from rock properties or Biot's P, Q, R, N. No free surface yet. Checked against Elastic, Dai et al. (1995) velocities and their Fig. 1, and an analytic viscous line-source solution from inviscid to the Darcy limit.
Traction-free total stress and p = 0 on the top row with Elastic's image method (p mirrored like szz, qz evenly). The surface sxx eliminates d vz/dz with sigma_zz = 0 and extrapolates d qz/dz from below, so the surface is as drained as the grid resolves; b -> inf reproduces Elastic's free surface. Checked against a discrete-wavenumber half-space solution from the inviscid to the Darcy limit, a pressure-release image solution and FD gradients.
The viscous drag is dissipative at every node, so stepping back in time multiplies round-off by exp(gamma dt) per step and the reverse-time reconstruction boundary saving needs does not exist (as for the visco equations). A boundary-saving request now raises with that reason instead of asking for an interior_substeps hook.
Notebook 38 reproduces the poroelastic traveltime kernels of Morency et al. (2009) by autograd through Biot (primary, density-normalised and wave-speed families; FD check 1e-4). Notebook 39 compares the first-order Born radiation patterns of Yang et al. (2019)'s rock, four parameterizations, with Biot simulations (corr >= 0.988). Biot gets an API page, an equations-table row and CHANGELOG entries.
Fast P, slow P and S in one snapshot; four viscous regimes against the analytic line-source solution (rel. L2 1e-3); Dai et al. (1995)'s two layers under an open-pore free surface; b -> inf against Elastic (6e-6).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
Biot: 2-D low-frequency Biot poroelastic waves (solid velocity, Darcy flux, total stress, pore pressure), eager only.b → ∞reduces toElastic(undrained).biot_from_rock/biot_from_biot_constantsbuild the eight coefficients.test/test_biot.py: Dai et al. (1995) speeds, viscous analytic solution, discrete-wavenumber half-space, FD gradients, refusals.gate/golden_equations_api.jsonregistersBiot.CPU suite: same results as
devplus the new Biot tests.🤖 Generated with Claude Code