{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2608-24547","title":"From Numerical Simulators of PDEs to Neural Emulators and Back","arxiv_id":"2608.24547","date":"2026-08-25","proceeding":null,"authors":["Felix Koehler"],"abstract":"Simulation is central to modern engineering and science, but the cost of numerical solvers for partial differential equations (PDEs) remains a bottleneck whenever fast or many-query evaluations are required. Neural emulators trained on solver-generated data promise significant speedups, yet they are usually framed as opaque alternatives to the very methods that produce their training signal. This thesis argues the two paradigms are more alike than different: neural architectures mirror classical discretizations, their errors are amenable to the same spectral analysis, and insight flows profitably in both directions. We approach the relationship by disentangling the multiple roles a solver plays in the emulator learning pipeline. Mode-wise Fourier analysis then provides a common language in which solver errors, architectural inductive biases, and training objectives can all be read off simultaneously. Taken together, this allows synthesizing three contributions. (1) APEBench, a comprehensive benchmarking suite for autoregressive neural emulators of PDEs that uses fast differentiable pseudo-spectral solvers in JAX. (2) Progressively Refined Differentiable Physics, an investigation of the effect of unconverged solvers on surrogate training. (3) Neural Emulator Superiority, an analysis of the influence of numerical errors and architectural inductive biases.","url_abs":"https://arxiv.org/abs/2608.24547","url_pdf":"https://arxiv.org/pdf/2608.24547","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":null,"mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2608.24547"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/Ceyron/apebench","reach":null},{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/Ceyron/exponax","reach":{"status":"ok","spdx":"MIT"}},{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/Ceyron/pdequinox","reach":null},{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/Ceyron/trainax","reach":null},{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/tum-pbs/PRDP","reach":null}],"summary":{"ran":12,"ran_draft_wrong":3,"ran_violates":1,"ran_honours":1,"ran_fixture":1,"unverified":16},"by_repo_kind":{"found_in_text":{"samples":34,"ran":18,"repositories":5}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"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"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"1c010c0a738cc15c","entry":"MSELoss","repo":"Ceyron/trainax","repo_kind":"found_in_text","path":"trainax/configuration/_diverted_chain.py","file_url":"https://github.com/Ceyron/trainax/blob/HEAD/trainax/configuration/_diverted_chain.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1c010c0a738cc15c"}},{"code_sha256_prefix":"0bdc4e280816adff","entry":"_ntuple","repo":"Ceyron/pdequinox","repo_kind":"found_in_text","path":"pdequinox/conv/_physics_conv.py","file_url":"https://github.com/Ceyron/pdequinox/blob/HEAD/pdequinox/conv/_physics_conv.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0bdc4e280816adff"}},{"code_sha256_prefix":"75df3d0ac2737257","entry":"all_sequences","repo":"Ceyron/pdequinox","repo_kind":"found_in_text","path":"pdequinox/conv/_physics_conv.py","file_url":"https://github.com/Ceyron/pdequinox/blob/HEAD/pdequinox/conv/_physics_conv.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"75df3d0ac2737257"}},{"code_sha256_prefix":"973093de2cab964c","entry":"compute_same_padding","repo":"Ceyron/pdequinox","repo_kind":"found_in_text","path":"pdequinox/conv/_physics_conv.py","file_url":"https://github.com/Ceyron/pdequinox/blob/HEAD/pdequinox/conv/_physics_conv.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"973093de2cab964c"}},{"code_sha256_prefix":"7b6c512cf85c031c","entry":"extract_ic_and_trj","repo":"Ceyron/trainax","repo_kind":"found_in_text","path":"trainax/configuration/_diverted_chain.py","file_url":"https://github.com/Ceyron/trainax/blob/HEAD/trainax/configuration/_diverted_chain.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7b6c512cf85c031c"}},{"code_sha256_prefix":"4c4eb8afaec4196f","entry":"melt_concat_metrics_from_list","repo":"Ceyron/apebench","repo_kind":"found_in_text","path":"apebench/_run.py","file_url":"https://github.com/Ceyron/apebench/blob/HEAD/apebench/_run.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4c4eb8afaec4196f"}},{"code_sha256_prefix":"75da3fa003941472","entry":"melt_data","repo":"Ceyron/apebench","repo_kind":"found_in_text","path":"apebench/_utils.py","file_url":"https://github.com/Ceyron/apebench/blob/HEAD/apebench/_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"75da3fa003941472"}},{"code_sha256_prefix":"475460bfbeda49ad","entry":"melt_loss","repo":"Ceyron/apebench","repo_kind":"found_in_text","path":"apebench/_utils.py","file_url":"https://github.com/Ceyron/apebench/blob/HEAD/apebench/_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"475460bfbeda49ad"}},{"code_sha256_prefix":"805be06d74072db3","entry":"melt_metrics","repo":"Ceyron/apebench","repo_kind":"found_in_text","path":"apebench/_utils.py","file_url":"https://github.com/Ceyron/apebench/blob/HEAD/apebench/_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"805be06d74072db3"}},{"code_sha256_prefix":"ba36c22fafe97643","entry":"numpy_ewma","repo":"tum-pbs/PRDP","repo_kind":"found_in_text","path":"experiments/src/prdp.py","file_url":"https://github.com/tum-pbs/PRDP/blob/HEAD/experiments/src/prdp.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ba36c22fafe97643"}},{"code_sha256_prefix":"b0622565ca198ea8","entry":"outer_optimisation","repo":"tum-pbs/PRDP","repo_kind":"found_in_text","path":"experiments/src/linear_solvers_scan.py","file_url":"https://github.com/tum-pbs/PRDP/blob/HEAD/experiments/src/linear_solvers_scan.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b0622565ca198ea8"}},{"code_sha256_prefix":"63c94fe495fcdf2e","entry":"outer_optimisation_3","repo":"tum-pbs/PRDP","repo_kind":"found_in_text","path":"experiments/src/linear_solvers_scan.py","file_url":"https://github.com/tum-pbs/PRDP/blob/HEAD/experiments/src/linear_solvers_scan.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"63c94fe495fcdf2e"}},{"code_sha256_prefix":"f53048b4af176878","entry":"plot_jac_subopt_3","repo":"tum-pbs/PRDP","repo_kind":"found_in_text","path":"experiments/src/poisson_utilities.py","file_url":"https://github.com/tum-pbs/PRDP/blob/HEAD/experiments/src/poisson_utilities.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f53048b4af176878"}},{"code_sha256_prefix":"00497c23b6d3ddcc","entry":"plot_loss_and_gradient","repo":"tum-pbs/PRDP","repo_kind":"found_in_text","path":"experiments/src/poisson_utilities.py","file_url":"https://github.com/tum-pbs/PRDP/blob/HEAD/experiments/src/poisson_utilities.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"00497c23b6d3ddcc"}},{"code_sha256_prefix":"2e9131694a21aea3","entry":"plot_loss_and_gradient_3","repo":"tum-pbs/PRDP","repo_kind":"found_in_text","path":"experiments/src/poisson_utilities.py","file_url":"https://github.com/tum-pbs/PRDP/blob/HEAD/experiments/src/poisson_utilities.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2e9131694a21aea3"}},{"code_sha256_prefix":"4b611ae53765d928","entry":"rhs_sine_fn","repo":"tum-pbs/PRDP","repo_kind":"found_in_text","path":"experiments/src/poisson_problem_definition.py","file_url":"https://github.com/tum-pbs/PRDP/blob/HEAD/experiments/src/poisson_problem_definition.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4b611ae53765d928"}},{"code_sha256_prefix":"9a8932a5e8ef0cbc","entry":"rhs_step_fn","repo":"tum-pbs/PRDP","repo_kind":"found_in_text","path":"experiments/src/poisson_problem_definition.py","file_url":"https://github.com/tum-pbs/PRDP/blob/HEAD/experiments/src/poisson_problem_definition.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9a8932a5e8ef0cbc"}},{"code_sha256_prefix":"6d023282f18197aa","entry":"should_refine","repo":"tum-pbs/PRDP","repo_kind":"found_in_text","path":"experiments/src/prdp.py","file_url":"https://github.com/tum-pbs/PRDP/blob/HEAD/experiments/src/prdp.py","link_basis":"plan_row","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6d023282f18197aa"}},{"code_sha256_prefix":"a68d3c0a669807c2","entry":"A_matrix","repo":"tum-pbs/PRDP","repo_kind":"found_in_text","path":"experiments/src/poisson_problem_definition.py","file_url":"https://github.com/tum-pbs/PRDP/blob/HEAD/experiments/src/poisson_problem_definition.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a68d3c0a669807c2"}},{"code_sha256_prefix":"2e5bef41fe752d0d","entry":"BaseConfiguration","repo":"Ceyron/trainax","repo_kind":"found_in_text","path":"trainax/configuration/_diverted_chain.py","file_url":"https://github.com/Ceyron/trainax/blob/HEAD/trainax/configuration/_diverted_chain.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2e5bef41fe752d0d"}},{"code_sha256_prefix":"4c6c2852b24a7cb4","entry":"BaseLoss","repo":"Ceyron/trainax","repo_kind":"found_in_text","path":"trainax/configuration/_diverted_chain.py","file_url":"https://github.com/Ceyron/trainax/blob/HEAD/trainax/configuration/_diverted_chain.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4c6c2852b24a7cb4"}},{"code_sha256_prefix":"5257d728585afaf6","entry":"DivertedChain","repo":"Ceyron/trainax","repo_kind":"found_in_text","path":"trainax/configuration/_diverted_chain.py","file_url":"https://github.com/Ceyron/trainax/blob/HEAD/trainax/configuration/_diverted_chain.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5257d728585afaf6"}},{"code_sha256_prefix":"a51ea803fb2f11f8","entry":"MorePaddingConv","repo":"Ceyron/pdequinox","repo_kind":"found_in_text","path":"pdequinox/conv/_physics_conv.py","file_url":"https://github.com/Ceyron/pdequinox/blob/HEAD/pdequinox/conv/_physics_conv.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a51ea803fb2f11f8"}},{"code_sha256_prefix":"58a910b3532ea18f","entry":"PhysicsConv","repo":"Ceyron/pdequinox","repo_kind":"found_in_text","path":"pdequinox/conv/_physics_conv.py","file_url":"https://github.com/Ceyron/pdequinox/blob/HEAD/pdequinox/conv/_physics_conv.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"58a910b3532ea18f"}},{"code_sha256_prefix":"ed447291aef09b40","entry":"build_derivative_operator","repo":"Ceyron/exponax","repo_kind":"found_in_text","path":"exponax/_spectral.py","file_url":"https://github.com/Ceyron/exponax/blob/HEAD/exponax/_spectral.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ed447291aef09b40"}},{"code_sha256_prefix":"cc5459039fd5c9dc","entry":"build_scaled_wavenumbers","repo":"Ceyron/exponax","repo_kind":"found_in_text","path":"exponax/_spectral.py","file_url":"https://github.com/Ceyron/exponax/blob/HEAD/exponax/_spectral.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cc5459039fd5c9dc"}},{"code_sha256_prefix":"acdea5aa83b60afb","entry":"build_wavenumbers","repo":"Ceyron/exponax","repo_kind":"found_in_text","path":"exponax/_spectral.py","file_url":"https://github.com/Ceyron/exponax/blob/HEAD/exponax/_spectral.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"acdea5aa83b60afb"}},{"code_sha256_prefix":"c5f29bd14f3dbcbd","entry":"make_grid","repo":"Ceyron/exponax","repo_kind":"found_in_text","path":"exponax/_utils.py","file_url":"https://github.com/Ceyron/exponax/blob/HEAD/exponax/_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c5f29bd14f3dbcbd"}},{"code_sha256_prefix":"d303e7ad024b4bdd","entry":"map_between_resolutions","repo":"Ceyron/exponax","repo_kind":"found_in_text","path":"exponax/_interpolation.py","file_url":"https://github.com/Ceyron/exponax/blob/HEAD/exponax/_interpolation.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d303e7ad024b4bdd"}},{"code_sha256_prefix":"88559da7c982793c","entry":"melt_concat_loss_from_list","repo":"Ceyron/apebench","repo_kind":"found_in_text","path":"apebench/_run.py","file_url":"https://github.com/Ceyron/apebench/blob/HEAD/apebench/_run.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"88559da7c982793c"}},{"code_sha256_prefix":"25aebcd4baee8be5","entry":"rollout","repo":"Ceyron/exponax","repo_kind":"found_in_text","path":"exponax/_utils.py","file_url":"https://github.com/Ceyron/exponax/blob/HEAD/exponax/_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"25aebcd4baee8be5"}},{"code_sha256_prefix":"40b8776824a39847","entry":"scrape_data_and_metadata","repo":"Ceyron/apebench","repo_kind":"found_in_text","path":"apebench/_scraper.py","file_url":"https://github.com/Ceyron/apebench/blob/HEAD/apebench/_scraper.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"40b8776824a39847"}},{"code_sha256_prefix":"30b6b00a026f9a36","entry":"squareloss_fn","repo":"tum-pbs/PRDP","repo_kind":"found_in_text","path":"experiments/src/linear_solvers_scan.py","file_url":"https://github.com/tum-pbs/PRDP/blob/HEAD/experiments/src/linear_solvers_scan.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"30b6b00a026f9a36"}},{"code_sha256_prefix":"927b0cb9412f263f","entry":"wrap_bc","repo":"Ceyron/exponax","repo_kind":"found_in_text","path":"exponax/_utils.py","file_url":"https://github.com/Ceyron/exponax/blob/HEAD/exponax/_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"927b0cb9412f263f"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}