Summary
Please consider adding IFWI (Implicit Full Waveform Inversion) support to SWEEP, where the inversion model is parameterized by an implicit neural representation (INR), such as an MLP/SIREN coordinate network, instead of directly optimizing a grid tensor.
Motivation
SWEEP already provides differentiable wave-equation propagators and FWI examples for Torch/JAX/C++/CUDA backends. An IFWI example would make it easier to use SWEEP as the physics engine while optimizing neural model parameters through autograd.
Potential use cases:
- velocity-model parameterization with coordinate networks
- implicit regularization for ill-posed FWI
- compact model representation for 2D/3D inversion
- comparison between grid-parameter FWI and neural-parameter IFWI
Proposed scope
A minimal implementation could include:
- A small INR model module, e.g. coordinate MLP or SIREN.
- A mapping from normalized spatial coordinates to model tensors, e.g.
vp = f_theta(z, x) for 2D acoustic FWI.
- A Torch IFWI example based on the existing Marmousi acoustic FWI workflow.
- Clear parameter constraints, e.g. bounded velocity via sigmoid or clamp.
- A documented training loop showing gradients flowing through
PropTorch into the INR parameters.
- Optional comparison plots against direct grid-tensor FWI.
Suggested example API
coords = make_normalized_grid(shape, device=device)
net = SirenVelocityModel(...).to(device)
raw = net(coords).reshape(shape)
vp = vmin + (vmax - vmin) * torch.sigmoid(raw)
syn = solver(wavelet, sources, receivers, models=[vp])
loss = torch.mean((syn - observed) ** 2)
loss.backward()
optimizer.step()
Acceptance criteria
- A runnable 2D acoustic IFWI example.
- Documentation explaining how IFWI differs from the existing grid-based FWI examples.
- Works at least with
PropTorch(..., backend="torch", impl="eager").
- Notes on compatibility or limitations for
impl="c", CUDA boundary saving, and JAX.
Related existing functionality
Current SWEEP examples cover conventional acoustic/elastic FWI, source-encoding FWI, and multi-GPU FWI, but there does not appear to be an IFWI/INR/SIREN-style model-parameterization example yet.
Summary
Please consider adding IFWI (Implicit Full Waveform Inversion) support to SWEEP, where the inversion model is parameterized by an implicit neural representation (INR), such as an MLP/SIREN coordinate network, instead of directly optimizing a grid tensor.
Motivation
SWEEP already provides differentiable wave-equation propagators and FWI examples for Torch/JAX/C++/CUDA backends. An IFWI example would make it easier to use SWEEP as the physics engine while optimizing neural model parameters through autograd.
Potential use cases:
Proposed scope
A minimal implementation could include:
vp = f_theta(z, x)for 2D acoustic FWI.PropTorchinto the INR parameters.Suggested example API
Acceptance criteria
PropTorch(..., backend="torch", impl="eager").impl="c", CUDA boundary saving, and JAX.Related existing functionality
Current SWEEP examples cover conventional acoustic/elastic FWI, source-encoding FWI, and multi-GPU FWI, but there does not appear to be an IFWI/INR/SIREN-style model-parameterization example yet.