{"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/learned-turbulence-modelling-with","title":"Learned Turbulence Modelling with Differentiable Fluid Solvers: Physics-based Loss-functions and Optimisation Horizons","arxiv_id":"2202.06988","date":"2022-02-14","proceeding":null,"authors":["Björn List","Li-Wei Chen","Nils Thuerey"],"abstract":"In this paper, we train turbulence models based on convolutional neural networks. These learned turbulence models improve under-resolved low resolution solutions to the incompressible Navier-Stokes equations at simulation time. Our study involves the development of a differentiable numerical solver that supports the propagation of optimisation gradients through multiple solver steps. The significance of this property is demonstrated by the superior stability and accuracy of those models that unroll more solver steps during training. Furthermore, we introduce loss terms based on turbulence physics that further improve the model accuracy. This approach is applied to three two-dimensional turbulence flow scenarios, a homogeneous decaying turbulence case, a temporally evolving mixing layer, and a spatially evolving mixing layer. Our models achieve significant improvements of long-term a-posteriori statistics when compared to no-model simulations, without requiring these statistics to be directly included in the learning targets. At inference time, our proposed method also gains substantial performance improvements over similarly accurate, purely numerical methods.","url_abs":"https://arxiv.org/abs/2202.06988v2","url_pdf":"https://arxiv.org/pdf/2202.06988v2.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":"learned-turbulence-modelling-with","repo_url":"https://github.com/tum-pbs/differentiable-piso","is_official":1,"mentioned_in_paper":1,"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=2202.06988","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2202.06988"}},"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/differentiable-piso","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":6},"by_repo_kind":{"official":{"samples":6,"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":"71e17729d456fdde","entry":"L2_field_loss","repo":"tum-pbs/differentiable-piso","repo_kind":"official","path":"diffpiso/losses.py","file_url":"https://github.com/tum-pbs/differentiable-piso/blob/HEAD/diffpiso/losses.py","link_basis":"harvester_set","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":"71e17729d456fdde"}},{"code_sha256_prefix":"d042f413529cba04","entry":"boundary_perturbation_fun","repo":"tum-pbs/differentiable-piso","repo_kind":"official","path":"spatial_mixing_layer.py","file_url":"https://github.com/tum-pbs/differentiable-piso/blob/HEAD/spatial_mixing_layer.py","link_basis":"harvester_set","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":"d042f413529cba04"}},{"code_sha256_prefix":"1cd877dc5a19672d","entry":"network","repo":"tum-pbs/differentiable-piso","repo_kind":"official","path":"PhiFlow/demos/simple_tfmodel.py","file_url":"https://github.com/tum-pbs/differentiable-piso/blob/HEAD/PhiFlow/demos/simple_tfmodel.py","link_basis":"harvester_set","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":"1cd877dc5a19672d"}},{"code_sha256_prefix":"191c6a75c7c88461","entry":"pressure_extrapolation","repo":"tum-pbs/differentiable-piso","repo_kind":"official","path":"diffpiso/piso_tf.py","file_url":"https://github.com/tum-pbs/differentiable-piso/blob/HEAD/diffpiso/piso_tf.py","link_basis":"harvester_set","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":"191c6a75c7c88461"}},{"code_sha256_prefix":"041c836ce955d04e","entry":"strain_rate_loss","repo":"tum-pbs/differentiable-piso","repo_kind":"official","path":"diffpiso/losses.py","file_url":"https://github.com/tum-pbs/differentiable-piso/blob/HEAD/diffpiso/losses.py","link_basis":"harvester_set","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":"041c836ce955d04e"}},{"code_sha256_prefix":"5ea0231f40a1e9f0","entry":"update_dirichlet_values","repo":"tum-pbs/differentiable-piso","repo_kind":"official","path":"diffpiso/piso_helpers.py","file_url":"https://github.com/tum-pbs/differentiable-piso/blob/HEAD/diffpiso/piso_helpers.py","link_basis":"harvester_set","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":"5ea0231f40a1e9f0"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}