{"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/flow-reconstruction-by-multiresolution","title":"Flow reconstruction by multiresolution optimization of a discrete loss with automatic differentiation","arxiv_id":"2303.04679","date":"2023-03-08","proceeding":null,"authors":["Petr Karnakov","Sergey Litvinov","Petros Koumoutsakos"],"abstract":"We present a potent computational method for the solution of inverse problems in fluid mechanics. We consider inverse problems formulated in terms of a deterministic loss function that can accommodate data and regularization terms. We introduce a multigrid decomposition technique that accelerates the convergence of gradient-based methods for optimization problems with parameters on a grid. We incorporate this multigrid technique to the ODIL (Optimizing a DIscrete Loss) framework. The multiresolution ODIL (mODIL) accelerates by an order of magnitude the original formalism and improves the avoidance of local minima. Moreover, mODIL accommodates the use of automatic differentiation for calculating the gradients of the loss function, thus facilitating the implementation of the framework. We demonstrate the capabilities of mODIL on a variety of inverse and flow reconstruction problems: solution reconstruction for the Burgers equation, inferring conductivity from temperature measurements, and inferring the body shape from wake velocity measurements in three dimensions. We also provide a comparative study with the related, popular Physics-Informed Neural Networks (PINNs) method. We demonstrate that mODIL has three to five orders of magnitude lower computational cost than PINNs in benchmark problems including simple PDEs and lid-driven cavity problems. Our results suggest that mODIL is a very potent, fast and consistent method for solving inverse problems in fluid mechanics.","url_abs":"https://arxiv.org/abs/2303.04679v2","url_pdf":"https://arxiv.org/pdf/2303.04679v2.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":"links_only","authors_date_abstract":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license), from the Kaggle arXiv metadata snapshot of 2026-09-12"},"code_links":[{"paper_slug":"flow-reconstruction-by-multiresolution","repo_url":"https://github.com/cselab/odil","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2303.04679","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2303.04679"}},"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/cselab/odil","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":16},"by_repo_kind":{"official":{"samples":16,"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":"4273b21d2936b32b","entry":"cache_to_file","repo":"cselab/odil","repo_kind":"official","path":"src/odil/cache.py","file_url":"https://github.com/cselab/odil/blob/HEAD/src/odil/cache.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":"4273b21d2936b32b"}},{"code_sha256_prefix":"a8278e57206d1bfa","entry":"get_cmap","repo":"cselab/odil","repo_kind":"official","path":"src/odil/plot.py","file_url":"https://github.com/cselab/odil/blob/HEAD/src/odil/plot.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":"a8278e57206d1bfa"}},{"code_sha256_prefix":"21d1a888b6d64ab7","entry":"get_colormap_data","repo":"cselab/odil","repo_kind":"official","path":"src/odil/plot.py","file_url":"https://github.com/cselab/odil/blob/HEAD/src/odil/plot.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":"21d1a888b6d64ab7"}},{"code_sha256_prefix":"9c50d0e45ae4e4e4","entry":"get_error","repo":"cselab/odil","repo_kind":"official","path":"src/odil/util.py","file_url":"https://github.com/cselab/odil/blob/HEAD/src/odil/util.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":"9c50d0e45ae4e4e4"}},{"code_sha256_prefix":"59e3a2251adc7b83","entry":"interp_to_finer","repo":"cselab/odil","repo_kind":"official","path":"src/odil/core.py","file_url":"https://github.com/cselab/odil/blob/HEAD/src/odil/core.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":"59e3a2251adc7b83"}},{"code_sha256_prefix":"6bdfc895e1593b47","entry":"make_neural_net","repo":"cselab/odil","repo_kind":"official","path":"src/odil/core.py","file_url":"https://github.com/cselab/odil/blob/HEAD/src/odil/core.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":"6bdfc895e1593b47"}},{"code_sha256_prefix":"e1e44850adde7fe3","entry":"make_optimizer","repo":"cselab/odil","repo_kind":"official","path":"src/odil/optimizer.py","file_url":"https://github.com/cselab/odil/blob/HEAD/src/odil/optimizer.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":"e1e44850adde7fe3"}},{"code_sha256_prefix":"e88c87222c6454f6","entry":"optimize_grad","repo":"cselab/odil","repo_kind":"official","path":"src/odil/util.py","file_url":"https://github.com/cselab/odil/blob/HEAD/src/odil/util.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":"e88c87222c6454f6"}},{"code_sha256_prefix":"9e6f094c159099b8","entry":"optimize_newton","repo":"cselab/odil","repo_kind":"official","path":"src/odil/util.py","file_url":"https://github.com/cselab/odil/blob/HEAD/src/odil/util.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":"9e6f094c159099b8"}},{"code_sha256_prefix":"8c8dbcafe7fc36fc","entry":"parse_raw_xmf","repo":"cselab/odil","repo_kind":"official","path":"src/odil/io.py","file_url":"https://github.com/cselab/odil/blob/HEAD/src/odil/io.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":"8c8dbcafe7fc36fc"}},{"code_sha256_prefix":"f368b17e2b766e97","entry":"plot_1d","repo":"cselab/odil","repo_kind":"official","path":"src/odil/plot.py","file_url":"https://github.com/cselab/odil/blob/HEAD/src/odil/plot.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":"f368b17e2b766e97"}},{"code_sha256_prefix":"6cfbfd3990e106d9","entry":"read_raw","repo":"cselab/odil","repo_kind":"official","path":"src/odil/io.py","file_url":"https://github.com/cselab/odil/blob/HEAD/src/odil/io.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":"6cfbfd3990e106d9"}},{"code_sha256_prefix":"c9b49d097355788c","entry":"read_raw_with_xmf","repo":"cselab/odil","repo_kind":"official","path":"src/odil/io.py","file_url":"https://github.com/cselab/odil/blob/HEAD/src/odil/io.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":"c9b49d097355788c"}},{"code_sha256_prefix":"f51ce2d92462204c","entry":"restrict_to_coarser","repo":"cselab/odil","repo_kind":"official","path":"src/odil/core.py","file_url":"https://github.com/cselab/odil/blob/HEAD/src/odil/core.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":"f51ce2d92462204c"}},{"code_sha256_prefix":"853fdbdeaddf52b4","entry":"savefig","repo":"cselab/odil","repo_kind":"official","path":"src/odil/plotutil.py","file_url":"https://github.com/cselab/odil/blob/HEAD/src/odil/plotutil.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":"853fdbdeaddf52b4"}},{"code_sha256_prefix":"98b02d0c221514de","entry":"solve","repo":"cselab/odil","repo_kind":"official","path":"src/odil/linsolver.py","file_url":"https://github.com/cselab/odil/blob/HEAD/src/odil/linsolver.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":"98b02d0c221514de"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}