Papers › Neural Stochastic PDEs: Resolution-Invariant Learning of Continuous Spatiotemporal Dynamics

Neural Stochastic PDEs: Resolution-Invariant Learning of Continuous Spatiotemporal Dynamics

19 Oct 2021arXiv:2110.10249archive 2025-07-28

Cristopher Salvi, Maud Lemercier, Andris Gerasimovics

Stochastic partial differential equations (SPDEs) are the mathematical tool of choice for modelling spatiotemporal PDE-dynamics under the influence of randomness. Based on the notion of mild solution of an SPDE, we introduce a novel neural architecture to learn solution operators of PDEs with (possibly stochastic) forcing from partially observed data. The proposed Neural SPDE model provides an extension to two popular classes of physics-inspired architectures. On the one hand, it extends Neural CDEs and variants -- continuous-time analogues of RNNs -- in that it is capable of processing incoming sequential information arriving at arbitrary spatial resolutions. On the other hand, it extends Neural Operators -- generalizations of neural networks to model mappings between spaces of functions -- in that it can parameterize solution operators of SPDEs depending simultaneously on the initial condition and a realization of the driving noise. By performing operations in the spectral domain, we show how a Neural SPDE can be evaluated in two ways, either by calling an ODE solver (emulating a spectral Galerkin scheme), or by solving a fixed point problem. Experiments on various semilinear SPDEs, including the stochastic Navier-Stokes equations, demonstrate how the Neural SPDE model is capable of learning complex spatiotemporal dynamics in a resolution-invariant way, with better accuracy and lighter training data requirements compared to alternative models, and up to 3 orders of magnitude faster than traditional solvers.

PaperPDFCodeCode Syntology ran

In Syntology Open this paper in Syntology's Atlas, the map of the papers in Syntology's graph and their citations.

For agents, Syntology's MCP tool lists every function and class Syntology harvested from this paper and whether it ran (how to connect): get_harvested_code_for_paper(arxiv_id="2110.10249")

Code

Syntology Ran 1 of 29 code samples harvested from 2 repositories linked to this paper; 28 have no recorded run. Of those that ran: 1 ran · honoured contract.

By repository: community (archive-listed): 29 samples from 2 repositories, 1 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

crispitagorico/neural-spdes mentioned on GitHubpytorchApache-2.0 report
crispitagorico/torchspde mentioned on GitHubpytorchApache-2.0 report

Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

29 samples harvested; 1 ran; 1 honoured the contract we drafted; 28 have no recorded run. Read from Syntology's graph 2026-09-24; that is when this build read the record, not when the samples ran.

1ran · honoured contract
28unverified

Licence: 0 of the 29 samples are pointer only, meaning Syntology does not serve that copy's text. This page shows no code text for any sample; each one links to its file in the repository.

Harvested from 2 repositories linked to this paper, official or community; each sample names its own and says which. “Ran” means the sample executed on a synthesized input. It does not mean the output is correct, and nothing here reproduces the paper's results. “Honoured” and “violated” refer to a contract Syntology drafted from the code itself; “our draft was wrong” and “fixture could not drive it” are failures of Syntology's instrument, not of the code.

Each sample ends with its code_sha256, Syntology's identity for that exact code. An agent fetches the stored sample with Syntology's MCP tool get_code(code_sha256="…") (how to connect); click an identity to copy that call.

Repository labels, per sample. official repository: The archive marks this repository official for the paper. named in the paper: The archive records that the paper mentions this repository; it is not marked official. community (archive-listed): In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper. found in paper text by Syntology: Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted. community: Not in the archive's code links for this paper; a community repository Syntology harvested. Samples from a repository marked official are listed first. Licence labels name the repository's licence as recorded at harvest. “Pointer only” means Syntology does not serve that copy's text, for one of four reasons: no licence file was found; the licence was not identified; the licence is recorded as permissive but that copy's record is not marked cleared; or the licence is outside the permissive list Syntology serves text under (MIT, Apache-2.0, BSD and similar). Some licences outside that list permit redistribution, such as WTFPL, and GPL-3.0 under its conditions; they are simply not on the list. Hover a licence label for the reason. File links open the file on GitHub at the default branch, which may have changed since the harvest.

scalar_search_armijo crispitagorico/neural-spdes/torchspde/root_finding_algorithms.py community (archive-listed) ran · honoured contract Apache-2.0 (permissive) · b2b5022f654ee4d3 · report
compl_mat_vec_mul_1d crispitagorico/neural-spdes/torchspde/diffeq_solver.py community (archive-listed) unverified Apache-2.0 (permissive) · 94effb2bae1b9106 · report
compl_mat_vec_mul_2d crispitagorico/neural-spdes/torchspde/diffeq_solver.py community (archive-listed) unverified Apache-2.0 (permissive) · c608b1fc1a12ef8c · report
compl_mul1d_spatial crispitagorico/neural-spdes/baselines/NCDEFNO_1D.py community (archive-listed) unverified Apache-2.0 (permissive) · 0bf977a8ba73d4a0 · report
compl_mul1d_time crispitagorico/torchspde/torchspde/fixed_point_solver.py community (archive-listed) unverified Apache-2.0 (permissive) · 78f8021598bf8e54 · report
compl_mul2d crispitagorico/torchspde/torchspde/fixed_point_solver.py community (archive-listed) unverified Apache-2.0 (permissive) · 43acc1a91197c15d · report
compl_mul2d_spatial crispitagorico/neural-spdes/baselines/NCDEFNO_2D.py community (archive-listed) unverified Apache-2.0 (permissive) · d25f0fa34864d956 · report
compl_mul3d crispitagorico/torchspde/torchspde/fixed_point_solver.py community (archive-listed) unverified Apache-2.0 (permissive) · 6ed35ce88ea0e5a4 · report
dataloader_deeponet_1d_u0 crispitagorico/neural-spdes/baselines/deepOnet.py community (archive-listed) unverified Apache-2.0 (permissive) · d2a5e667ead26109 · report
dataloader_deeponet_1d_xi crispitagorico/neural-spdes/baselines/deepOnet.py community (archive-listed) unverified Apache-2.0 (permissive) · ed6e3890adf18ecf · report
dataloader_deeponet_2d_xi crispitagorico/neural-spdes/baselines/deepOnet.py community (archive-listed) unverified Apache-2.0 (permissive) · 4bd6cbbe9a02195d · report
dataloader_fno_1d_u0 crispitagorico/neural-spdes/baselines/FNO1D.py community (archive-listed) unverified Apache-2.0 (permissive) · 085a0d28f9a3a9f3 · report
dataloader_fno_1d_xi crispitagorico/neural-spdes/baselines/FNO1D.py community (archive-listed) unverified Apache-2.0 (permissive) · 187a227e60c70db7 · report
dataloader_fno_2d_u0 crispitagorico/neural-spdes/baselines/FNO2D.py community (archive-listed) unverified Apache-2.0 (permissive) · 08cf6f83101d2749 · report
dataloader_fno_2d_xi crispitagorico/neural-spdes/baselines/FNO2D.py community (archive-listed) unverified Apache-2.0 (permissive) · 0a4f8df0cdd397a5 · report
dataloader_nspde_1d crispitagorico/neural-spdes/utilities.py community (archive-listed) unverified Apache-2.0 (permissive) · e04f786b5b09a1a4 · report
dataloader_nspde_2d crispitagorico/neural-spdes/utilities.py community (archive-listed) unverified Apache-2.0 (permissive) · db77f51860f997f3 · report
eval_fno_1d crispitagorico/neural-spdes/baselines/FNO1D.py community (archive-listed) unverified Apache-2.0 (permissive) · 1c6595e56a3b5ae9 · report
eval_ncde crispitagorico/neural-spdes/baselines/NCDE.py community (archive-listed) unverified Apache-2.0 (permissive) · 39f9eef0e43e9a68 · report
eval_ncdeinf_1d crispitagorico/neural-spdes/baselines/NCDEFNO_1D.py community (archive-listed) unverified Apache-2.0 (permissive) · e3e8efa5e8efb67c · report
eval_nrde_1d crispitagorico/neural-spdes/baselines/NRDE.py community (archive-listed) unverified Apache-2.0 (permissive) · 669c9bae6c4e3862 · report
eval_nspde crispitagorico/neural-spdes/utilities.py community (archive-listed) unverified Apache-2.0 (permissive) · 0eaa5e38d1dc5ea8 · report
forward_iteration crispitagorico/neural-spdes/torchspde/root_finding_algorithms.py community (archive-listed) unverified Apache-2.0 (permissive) · f786d04157be4dec · report
grad_space crispitagorico/torchspde/torchspde/gradients.py community (archive-listed) unverified Apache-2.0 (permissive) · d9a8a84a3606f245 · report
grad_space_perp crispitagorico/torchspde/torchspde/gradients.py community (archive-listed) unverified Apache-2.0 (permissive) · 0389361f6c547465 · report
grad_var crispitagorico/torchspde/torchspde/gradients.py community (archive-listed) unverified Apache-2.0 (permissive) · 3bfc2050cef8f89f · report
line_search crispitagorico/neural-spdes/torchspde/root_finding_algorithms.py community (archive-listed) unverified Apache-2.0 (permissive) · 2e551f7f67056cb3 · report
train_fno_2d crispitagorico/neural-spdes/baselines/FNO2D.py community (archive-listed) unverified Apache-2.0 (permissive) · edc4e5ae89c52d98 · report
train_ncdeinf_2d crispitagorico/neural-spdes/baselines/NCDEFNO_2D.py community (archive-listed) unverified Apache-2.0 (permissive) · b4119fee460e85ef · report

Results from the paper archive 2025-07-28

No leaderboard rows for this paper in the archive.

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections