Skip to content

Add ResolutionInvariantReadout with FNO integration and gallery examples#719

Open
JoshBeacom wants to merge 1 commit intoneuraloperator:mainfrom
JoshBeacom:resolution-invariant-readout
Open

Add ResolutionInvariantReadout with FNO integration and gallery examples#719
JoshBeacom wants to merge 1 commit intoneuraloperator:mainfrom
JoshBeacom:resolution-invariant-readout

Conversation

@JoshBeacom
Copy link
Copy Markdown

Adds ResolutionInvariantReadout, which maps FNO field outputs (B, C, *spatial) to scalar or vector quantities of interest (B, out_dim) via spatial pooling (mean or physical integral) and a linear or MLP head.

FNO integration

  • Adds an optional readout parameter to FNO
  • Validates compatibility at construction time (readout.in_channels == out_channels; complex_data=True is rejected)
  • OTNO rejects readout because its output shape is incompatible

Gallery examples

  • Darcy scalar QoI: trains an FNO to predict the spatial mean of the pressure field; evaluates at the training resolution and zero-shot at 32x32 after training at 16x16
  • Linearized Poisson-Boltzmann screened electrostatic energy: a 3-D FNO predicts a scalar energy from charge density and inverse Debye length; uses reduce="integral" with a physical domain measure and evaluates the same latent test systems at 16^3 and 24^3 to demonstrate resolution invariance directly

Tests

Tests cover output shapes, gradients, measure scaling, constructor/forward validation, and OTNO rejection of incompatible readouts.

- ResolutionInvariantReadout maps field outputs to scalar QoIs via spatial
  reduction (mean/integral) and a linear/MLP projection head
- Integrated as optional readout parameter on FNO with in_channels
  validation; OTNO guards against readout use due to incompatible output shape
- Two gallery examples: Darcy scalar QoI and 3-D Poisson-Boltzmann
  screened energy demonstrating resolution invariance
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant