{"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/symmetric-basis-convolutions-for-learning","title":"Symmetric Basis Convolutions for Learning Lagrangian Fluid Mechanics","arxiv_id":"2403.16680","date":"2024-03-25","proceeding":null,"authors":["Rene Winchenbach","Nils Thuerey"],"abstract":"Learning physical simulations has been an essential and central aspect of many recent research efforts in machine learning, particularly for Navier-Stokes-based fluid mechanics. Classic numerical solvers have traditionally been computationally expensive and challenging to use in inverse problems, whereas Neural solvers aim to address both concerns through machine learning. We propose a general formulation for continuous convolutions using separable basis functions as a superset of existing methods and evaluate a large set of basis functions in the context of (a) a compressible 1D SPH simulation, (b) a weakly compressible 2D SPH simulation, and (c) an incompressible 2D SPH Simulation. We demonstrate that even and odd symmetries included in the basis functions are key aspects of stability and accuracy. Our broad evaluation shows that Fourier-based continuous convolutions outperform all other architectures regarding accuracy and generalization. Finally, using these Fourier-based networks, we show that prior inductive biases, such as window functions, are no longer necessary. An implementation of our approach, as well as complete datasets and solver implementations, is available at https://github.com/tum-pbs/SFBC.","url_abs":"https://arxiv.org/abs/2403.16680v1","url_pdf":"https://arxiv.org/pdf/2403.16680v1.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":"symmetric-basis-convolutions-for-learning","repo_url":"https://github.com/tum-pbs/sfbc","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"physical-simulations","task_name":"Physical Simulations"}],"methods":[{"method_slug":"set","method_name":"SET"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2403.16680","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2403.16680"}},"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/SFBC","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/tum-pbs/sfbc","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":2,"ran_fixture":2,"ran":8,"unverified":7},"by_repo_kind":{"official":{"samples":19,"ran":12,"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":"01098f7fb5af8aca","entry":"buildMLP","repo":"tum-pbs/sfbc","repo_kind":"official","path":"src/BasisConvolution/convLayerv2.py","file_url":"https://github.com/tum-pbs/sfbc/blob/HEAD/src/BasisConvolution/convLayerv2.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"01098f7fb5af8aca"}},{"code_sha256_prefix":"73dad65c3366c0d6","entry":"buildMLPwActivation","repo":"tum-pbs/sfbc","repo_kind":"official","path":"src/BasisConvolution/convNetv2.py","file_url":"https://github.com/tum-pbs/sfbc/blob/HEAD/src/BasisConvolution/convNetv2.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"73dad65c3366c0d6"}},{"code_sha256_prefix":"4b944e56a24334ac","entry":"buildMLPwActivation","repo":"tum-pbs/SFBC","repo_kind":"official","path":"src/BasisConvolution/convNetv2.py","file_url":"https://github.com/tum-pbs/SFBC/blob/HEAD/src/BasisConvolution/convNetv2.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":"4b944e56a24334ac"}},{"code_sha256_prefix":"e12dd94211676bc2","entry":"buildMLPwDict","repo":"tum-pbs/sfbc","repo_kind":"official","path":"src/BasisConvolution/convNetv2.py","file_url":"https://github.com/tum-pbs/sfbc/blob/HEAD/src/BasisConvolution/convNetv2.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e12dd94211676bc2"}},{"code_sha256_prefix":"48f466cb501e970c","entry":"buildMLPwDict","repo":"tum-pbs/SFBC","repo_kind":"official","path":"src/BasisConvolution/convNetv2.py","file_url":"https://github.com/tum-pbs/SFBC/blob/HEAD/src/BasisConvolution/convNetv2.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":"48f466cb501e970c"}},{"code_sha256_prefix":"416ab51cf7beeb85","entry":"generateParticles","repo":"tum-pbs/SFBC","repo_kind":"official","path":"eval/performanceMeasurement.py","file_url":"https://github.com/tum-pbs/SFBC/blob/HEAD/eval/performanceMeasurement.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"416ab51cf7beeb85"}},{"code_sha256_prefix":"3233434225504ec6","entry":"getActivationLayer","repo":"tum-pbs/sfbc","repo_kind":"official","path":"src/BasisConvolution/convNetv2.py","file_url":"https://github.com/tum-pbs/sfbc/blob/HEAD/src/BasisConvolution/convNetv2.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3233434225504ec6"}},{"code_sha256_prefix":"fa19f4aff56b0e77","entry":"getActivationLayer","repo":"tum-pbs/SFBC","repo_kind":"official","path":"src/BasisConvolution/convNetv2.py","file_url":"https://github.com/tum-pbs/SFBC/blob/HEAD/src/BasisConvolution/convNetv2.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":"fa19f4aff56b0e77"}},{"code_sha256_prefix":"bab05c8bf9da0a70","entry":"interpolant","repo":"tum-pbs/SFBC","repo_kind":"official","path":"eval/noise/perlin.py","file_url":"https://github.com/tum-pbs/SFBC/blob/HEAD/eval/noise/perlin.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":"bab05c8bf9da0a70"}},{"code_sha256_prefix":"d607897d6ca51fd7","entry":"pdf","repo":"tum-pbs/SFBC","repo_kind":"official","path":"datasets/generate_test_case_I.py","file_url":"https://github.com/tum-pbs/SFBC/blob/HEAD/datasets/generate_test_case_I.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d607897d6ca51fd7"}},{"code_sha256_prefix":"948426e08e8e096a","entry":"perlinNoise2D","repo":"tum-pbs/SFBC","repo_kind":"official","path":"eval/noise/perlin.py","file_url":"https://github.com/tum-pbs/SFBC/blob/HEAD/eval/noise/perlin.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":"948426e08e8e096a"}},{"code_sha256_prefix":"12f727770539acfe","entry":"perlinNoise3D","repo":"tum-pbs/SFBC","repo_kind":"official","path":"eval/noise/perlin.py","file_url":"https://github.com/tum-pbs/SFBC/blob/HEAD/eval/noise/perlin.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":"12f727770539acfe"}},{"code_sha256_prefix":"0acf386a76e369ea","entry":"generateSimplex","repo":"tum-pbs/SFBC","repo_kind":"official","path":"eval/noise/generator.py","file_url":"https://github.com/tum-pbs/SFBC/blob/HEAD/eval/noise/generator.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":"0acf386a76e369ea"}},{"code_sha256_prefix":"e43814b5b0bb50d9","entry":"get_analytical_jacobian","repo":"tum-pbs/SFBC","repo_kind":"official","path":"eval/gradcheck.py","file_url":"https://github.com/tum-pbs/SFBC/blob/HEAD/eval/gradcheck.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":"e43814b5b0bb50d9"}},{"code_sha256_prefix":"64a48db8e27bbcf2","entry":"get_numerical_jacobian","repo":"tum-pbs/SFBC","repo_kind":"official","path":"eval/gradcheck.py","file_url":"https://github.com/tum-pbs/SFBC/blob/HEAD/eval/gradcheck.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":"64a48db8e27bbcf2"}},{"code_sha256_prefix":"301b0e6586be3e19","entry":"get_numerical_jacobian_wrt_specific_input","repo":"tum-pbs/SFBC","repo_kind":"official","path":"eval/gradcheck.py","file_url":"https://github.com/tum-pbs/SFBC/blob/HEAD/eval/gradcheck.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":"301b0e6586be3e19"}},{"code_sha256_prefix":"004b54582bca041e","entry":"initializeWeights2D","repo":"tum-pbs/sfbc","repo_kind":"official","path":"src/BasisConvolution/convLayerv2.py","file_url":"https://github.com/tum-pbs/sfbc/blob/HEAD/src/BasisConvolution/convLayerv2.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":"004b54582bca041e"}},{"code_sha256_prefix":"99edd179c77682a7","entry":"neighSearch","repo":"tum-pbs/SFBC","repo_kind":"official","path":"eval/performanceMeasurement.py","file_url":"https://github.com/tum-pbs/SFBC/blob/HEAD/eval/performanceMeasurement.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":"99edd179c77682a7"}},{"code_sha256_prefix":"a59b6f0cab7277f5","entry":"supportFromVolume","repo":"tum-pbs/SFBC","repo_kind":"official","path":"eval/performanceMeasurement.py","file_url":"https://github.com/tum-pbs/SFBC/blob/HEAD/eval/performanceMeasurement.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":"a59b6f0cab7277f5"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}