{"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/learning-distributions-of-complex-fluid","title":"Learning Distributions of Complex Fluid Simulations with Diffusion Graph Networks","arxiv_id":"2504.02843","date":"2025-03-19","proceeding":null,"authors":["Mario Lino","Tobias Pfaff","Nils Thuerey"],"abstract":"Physical systems with complex unsteady dynamics, such as fluid flows, are often poorly represented by a single mean solution. For many practical applications, it is crucial to access the full distribution of possible states, from which relevant statistics (e.g., RMS and two-point correlations) can be derived. Here, we propose a graph-based latent diffusion (or alternatively, flow-matching) model that enables direct sampling of states from their equilibrium distribution, given a mesh discretization of the system and its physical parameters. This allows for the efficient computation of flow statistics without running long and expensive numerical simulations. The graph-based structure enables operations on unstructured meshes, which is critical for representing complex geometries with spatially localized high gradients, while latent-space diffusion modeling with a multi-scale GNN allows for efficient learning and inference of entire distributions of solutions. A key finding is that the proposed networks can accurately learn full distributions even when trained on incomplete data from relatively short simulations. We apply this method to a range of fluid dynamics tasks, such as predicting pressure distributions on 3D wing models in turbulent flow, demonstrating both accuracy and computational efficiency in challenging scenarios. The ability to directly sample accurate solutions, and capturing their diversity from short ground-truth simulations, is highly promising for complex scientific modeling tasks.","url_abs":"https://arxiv.org/abs/2504.02843v1","url_pdf":"https://arxiv.org/pdf/2504.02843v1.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":[],"tasks":[{"task_slug":"computational-efficiency","task_name":"Computational Efficiency"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2504.02843","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2504.02843"}},"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":"deterministic:regex_extraction","url":"https://github.com/tum-pbs/dgn4cfd","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":8},"by_repo_kind":{"found_in_text":{"samples":8,"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":"9ebf7e67cb7dfe19","entry":"batch_wise_mean","repo":"tum-pbs/dgn4cfd","repo_kind":"found_in_text","path":"dgn4cfd/nn/losses.py","file_url":"https://github.com/tum-pbs/dgn4cfd/blob/HEAD/dgn4cfd/nn/losses.py","link_basis":"harvester_set","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":"9ebf7e67cb7dfe19"}},{"code_sha256_prefix":"10940efa7e6571ba","entry":"normal_kl_divergence","repo":"tum-pbs/dgn4cfd","repo_kind":"found_in_text","path":"dgn4cfd/nn/losses.py","file_url":"https://github.com/tum-pbs/dgn4cfd/blob/HEAD/dgn4cfd/nn/losses.py","link_basis":"harvester_set","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":"10940efa7e6571ba"}},{"code_sha256_prefix":"9c8c6f1f0871a13f","entry":"pos","repo":"tum-pbs/dgn4cfd","repo_kind":"found_in_text","path":"dgn4cfd/plot.py","file_url":"https://github.com/tum-pbs/dgn4cfd/blob/HEAD/dgn4cfd/plot.py","link_basis":"harvester_set","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":"9c8c6f1f0871a13f"}},{"code_sha256_prefix":"05c9b91a4687aebf","entry":"pos_field","repo":"tum-pbs/dgn4cfd","repo_kind":"found_in_text","path":"dgn4cfd/plot.py","file_url":"https://github.com/tum-pbs/dgn4cfd/blob/HEAD/dgn4cfd/plot.py","link_basis":"harvester_set","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":"05c9b91a4687aebf"}},{"code_sha256_prefix":"831042cc276fe5a0","entry":"r2_accuracy","repo":"tum-pbs/dgn4cfd","repo_kind":"found_in_text","path":"dgn4cfd/metrics.py","file_url":"https://github.com/tum-pbs/dgn4cfd/blob/HEAD/dgn4cfd/metrics.py","link_basis":"harvester_set","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":"831042cc276fe5a0"}},{"code_sha256_prefix":"94a0396473bcdf96","entry":"triangulation","repo":"tum-pbs/dgn4cfd","repo_kind":"found_in_text","path":"dgn4cfd/plot.py","file_url":"https://github.com/tum-pbs/dgn4cfd/blob/HEAD/dgn4cfd/plot.py","link_basis":"harvester_set","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":"94a0396473bcdf96"}},{"code_sha256_prefix":"71346a2ff65f1846","entry":"w2_distance_1d","repo":"tum-pbs/dgn4cfd","repo_kind":"found_in_text","path":"dgn4cfd/metrics.py","file_url":"https://github.com/tum-pbs/dgn4cfd/blob/HEAD/dgn4cfd/metrics.py","link_basis":"harvester_set","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":"71346a2ff65f1846"}},{"code_sha256_prefix":"bf3ae595878378d2","entry":"w2_distance_nd","repo":"tum-pbs/dgn4cfd","repo_kind":"found_in_text","path":"dgn4cfd/metrics.py","file_url":"https://github.com/tum-pbs/dgn4cfd/blob/HEAD/dgn4cfd/metrics.py","link_basis":"harvester_set","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":"bf3ae595878378d2"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}