{"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/accelerating-simulation-of-two-phase-flows","title":"Accelerating Simulation of Two-Phase Flows with Neural PDE Surrogates","arxiv_id":"2405.17260","date":"2024-05-27","proceeding":null,"authors":["Yoeri Poels","Koen Minartz","Harshit Bansal","Vlado Menkovski"],"abstract":"Simulation is a powerful tool to better understand physical systems, but generally requires computationally expensive numerical methods. Downstream applications of such simulations can become computationally infeasible if they require many forward solves, for example in the case of inverse design with many degrees of freedom. In this work, we investigate and extend neural PDE solvers as a tool to aid in scaling simulations for two-phase flow problems, and simulations of oil expulsion from a pore specifically. We extend existing numerical methods for this problem to a more complex setting involving varying geometries of the domain to generate a challenging dataset. Further, we investigate three prominent neural PDE solver methods, namely the UNet, DRN, and U-FNO, and extend them for characteristics of the oil-expulsion problem: (1) spatial conditioning on the geometry; (2) periodicity in the boundary; (3) approximate mass conservation. We scale all methods and benchmark their speed-accuracy trade-off, evaluate qualitative properties, and perform an ablation study. We find that the investigated methods can accurately model the droplet dynamics with up to three orders of magnitude speed-up, that our extensions improve performance over the baselines, and that the introduced varying geometries constitute a significantly more challenging setting over the previously considered oil expulsion problem.","url_abs":"https://arxiv.org/abs/2405.17260v2","url_pdf":"https://arxiv.org/pdf/2405.17260v2.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":"accelerating-simulation-of-two-phase-flows","repo_url":"https://github.com/yoeripoels/neural-pde-surrogates","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2405.17260","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2405.17260"}},"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/yoeripoels/neural-pde-surrogates","reach":{"status":"ok"}}],"summary":{"ran":6},"by_repo_kind":{"official":{"samples":6,"ran":6,"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":6,"samples":[{"code_sha256_prefix":"316a9326719b9e90","entry":"crop_Nd","repo":"yoeripoels/neural-pde-surrogates","repo_kind":"official","path":"src/models/common.py","file_url":"https://github.com/yoeripoels/neural-pde-surrogates/blob/HEAD/src/models/common.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"316a9326719b9e90"}},{"code_sha256_prefix":"915a44b427e97e71","entry":"flatten","repo":"yoeripoels/neural-pde-surrogates","repo_kind":"official","path":"src/configs/parse.py","file_url":"https://github.com/yoeripoels/neural-pde-surrogates/blob/HEAD/src/configs/parse.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"915a44b427e97e71"}},{"code_sha256_prefix":"9efb7e7f050781fc","entry":"get_conv_with_right_spatial_dim","repo":"yoeripoels/neural-pde-surrogates","repo_kind":"official","path":"src/models/common.py","file_url":"https://github.com/yoeripoels/neural-pde-surrogates/blob/HEAD/src/models/common.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9efb7e7f050781fc"}},{"code_sha256_prefix":"ab082378cd409d35","entry":"get_custom_group_titles","repo":"yoeripoels/neural-pde-surrogates","repo_kind":"official","path":"src/configs/parse.py","file_url":"https://github.com/yoeripoels/neural-pde-surrogates/blob/HEAD/src/configs/parse.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ab082378cd409d35"}},{"code_sha256_prefix":"98fbf2da5e4e6451","entry":"get_maxpool_with_right_spatial_dim","repo":"yoeripoels/neural-pde-surrogates","repo_kind":"official","path":"src/models/common.py","file_url":"https://github.com/yoeripoels/neural-pde-surrogates/blob/HEAD/src/models/common.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"98fbf2da5e4e6451"}},{"code_sha256_prefix":"db911965df5b896c","entry":"load_module_safe","repo":"yoeripoels/neural-pde-surrogates","repo_kind":"official","path":"src/configs/module_loader.py","file_url":"https://github.com/yoeripoels/neural-pde-surrogates/blob/HEAD/src/configs/module_loader.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"db911965df5b896c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}