{"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/solver-in-the-loop-learning-from","title":"Solver-in-the-Loop: Learning from Differentiable Physics to Interact with Iterative PDE-Solvers","arxiv_id":"2007.00016","date":"2020-06-30","proceeding":"NeurIPS 2020 12","authors":["Kiwon Um","Robert Brand","Yun","Fei","Philipp Holl","Nils Thuerey"],"abstract":"Finding accurate solutions to partial differential equations (PDEs) is a crucial task in all scientific and engineering disciplines. It has recently been shown that machine learning methods can improve the solution accuracy by correcting for effects not captured by the discretized PDE. We target the problem of reducing numerical errors of iterative PDE solvers and compare different learning approaches for finding complex correction functions. We find that previously used learning approaches are significantly outperformed by methods that integrate the solver into the training loop and thereby allow the model to interact with the PDE during training. This provides the model with realistic input distributions that take previous corrections into account, yielding improvements in accuracy with stable rollouts of several hundred recurrent evaluation steps and surpassing even tailored supervised variants. We highlight the performance of the differentiable physics networks for a wide variety of PDEs, from non-linear advection-diffusion systems to three-dimensional Navier-Stokes flows.","url_abs":"https://arxiv.org/abs/2007.00016v2","url_pdf":"https://arxiv.org/pdf/2007.00016v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"solver-in-the-loop-learning-from","repo_url":"https://github.com/tum-pbs/Solver-in-the-Loop","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"solver-in-the-loop-learning-from","repo_url":"https://github.com/Ceyron/exponax","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"solver-in-the-loop-learning-from","repo_url":"https://github.com/tum-pbs/CG-Solver-in-the-Loop","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"solver-in-the-loop-learning-from","repo_url":"https://github.com/tum-pbs/PhiFlow","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2007.00016","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2007.00016"}},"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":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/tum-pbs/PhiFlow","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/tum-pbs/Solver-in-the-Loop","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Ceyron/exponax","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/tum-pbs/CG-Solver-in-the-Loop","reach":null}],"summary":{"unverified":6},"by_repo_kind":{"official":{"samples":2,"ran":0,"repositories":1},"listed":{"samples":4,"ran":0,"repositories":1}},"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":"d3de82e465406025","entry":"downsample4x","repo":"tum-pbs/Solver-in-the-Loop","repo_kind":"official","path":"karman-2d/karman.py","file_url":"https://github.com/tum-pbs/Solver-in-the-Loop/blob/HEAD/karman-2d/karman.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":"d3de82e465406025"}},{"code_sha256_prefix":"b23fcd97e5033eaa","entry":"downsample4xSMAC","repo":"tum-pbs/Solver-in-the-Loop","repo_kind":"official","path":"burgers-tf2/burgers.py","file_url":"https://github.com/tum-pbs/Solver-in-the-Loop/blob/HEAD/burgers-tf2/burgers.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":"b23fcd97e5033eaa"}},{"code_sha256_prefix":"302b08116ecaba59","entry":"normalize","repo":"tum-pbs/CG-Solver-in-the-Loop","repo_kind":"listed","path":"nn/nn_supervised_v3.py","file_url":"https://github.com/tum-pbs/CG-Solver-in-the-Loop/blob/HEAD/nn/nn_supervised_v3.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":"302b08116ecaba59"}},{"code_sha256_prefix":"8fe4282fff5ba204","entry":"random_density","repo":"tum-pbs/CG-Solver-in-the-Loop","repo_kind":"listed","path":"nn/datagen_v3.py","file_url":"https://github.com/tum-pbs/CG-Solver-in-the-Loop/blob/HEAD/nn/datagen_v3.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":"8fe4282fff5ba204"}},{"code_sha256_prefix":"f9305478f0c57e4a","entry":"random_velocity","repo":"tum-pbs/CG-Solver-in-the-Loop","repo_kind":"listed","path":"nn/datagen_v3.py","file_url":"https://github.com/tum-pbs/CG-Solver-in-the-Loop/blob/HEAD/nn/datagen_v3.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":"f9305478f0c57e4a"}},{"code_sha256_prefix":"d32638ed45551998","entry":"subtract_mean","repo":"tum-pbs/CG-Solver-in-the-Loop","repo_kind":"listed","path":"nn/nn_supervised_v3.py","file_url":"https://github.com/tum-pbs/CG-Solver-in-the-Loop/blob/HEAD/nn/nn_supervised_v3.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":"d32638ed45551998"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}