Repository navigation
sem: Biot poroelastic waves (2-D) - #129
Merged
Merged
Conversation
BiotVSSEM2DDeformed solves the FD Biot's velocity-stress-pressure form on the Quad9 mesh, with its eight coefficients and source/receiver names via PropSEM. The pore pressure is continuous and the Darcy flux element-local, so the fluid is the acoustic pressure SEM: with a continuous flux, as in SPECFEM2D, a point source excites grid-line modes (p up to 14x on the source's row, growing like 1/dh). The drag is integrated exactly per node over the flux copies; C-PML; open-pore surface, topography included; boundary saving refused. Receivers read element-local fields. Checked against analytic and wavenumber-integration solutions, FD Biot, SPECFEM2D (4e-4) and finite-difference gradients.
Point force fx/fz and flux sources qx/qz; BiotAnisoPermSEM2DDeformed (drag tensor); viscous attenuation via equation_options viscous_q (standard linear solid). Fluid (rho = 0) and dry elastic (M = 0) regions in one model: open pores to a fluid, sealed to a dry solid, the interface terms exact transposes; sources load only their medium's fields; absent coefficients get no gradient. sweep.equations.biot_params: drag tensor, fluid/dry coefficients, Morency 2009 families and kernels. PropSEM(equation_options=...). Checked against analytic solutions, AcousticElasticSEM2D / ElasticVS (round-off), reciprocity and SPECFEM2D (features 0.02-0.2%, couplings 0.01-0.08%).
The FD gradient checks passed through pytest.approx's default abs=1e-12 (|J' dm| ~ 1e-17): now rel 1e-6 with abs 0, a 1e-5 step, the C-PML speed held and the bump off the edge cells (measured 1e-10 - 1e-7). The batch-vs-loop receiver check is to rounding (2e-6 of the peak on CPU torch 2.14). Thinner C-PML where it is not under test, cached and merged runs, a compact open-pore case, the FD match uncompiled: 235 -> 111 s.
`sweep show` prints the source_type names an equation declares for PropSEM (Biot's force, moment and injections) instead of its source fields, and docs/api/sem/equations.md documents the two Biot classes.
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.
BiotVSSEM2DDeformed: 2-D Biot poroelastic waves on the SEM, the FDBiot's velocity-stress-pressure form with a continuous pore pressure, an element-local Darcy flux and the drag integrated exactly per node; C-PML and an open-pore free surface. With SPECFEM2D's poroelastic features: a point force (fx/fz) and flux sources, an anisotropic permeability (BiotAnisoPermSEM2DDeformed), the viscous attenuation (equation_options={"viscous_q": (Q0, f0)}), and fluid (rho = 0) and dry elastic (M = 0) regions in one model, coupled as in SPECFEM2D.sweep.equations.biot_params: the drag tensor, the fluid and dry-solid coefficients, and the parameter families of Morency, Luo & Tromp (2009) with their kernels.PropSEM(equation_options=...).sweep showprints the Biot classes'source_typenames, and the API reference lists both classes.Checked against analytic line sources and an open-pore half-space, the FD
Biot,ElasticVSSEM2DDeformed(dry solid) andAcousticElasticSEM2D(water over a dry solid) to round-off, reciprocity across the interfaces to 1e-15, finite-difference gradients, and SPECFEM2D runs of its poroelastic examples and of each feature (test/sem/specfem_compare/, 0.01-0.2 %). 2-D, eager only.Stacked on #128: once that merges, change this PR's base to
dev.🤖 Generated with Claude Code