{"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/a-solver-for-subsonic-flow-around-airfoils","title":"A solver for subsonic flow around airfoils based on physics-informed neural networks and mesh transformation","arxiv_id":"2401.08705","date":"2024-01-15","proceeding":null,"authors":["Wenbo Cao","Jiahao Song","Weiwei Zhang"],"abstract":"Physics-informed neural networks (PINNs) have recently become a new popular method for solving forward and inverse problems governed by partial differential equations (PDEs). However, in the flow around airfoils, the fluid is greatly accelerated near the leading edge, resulting in a local sharper transition, which is difficult to capture by PINNs. Therefore, PINNs are still rarely used to solve the flow around airfoils. In this study, we combine physical-informed neural networks with mesh transformation, using neural network to learn the flow in the uniform computational space instead of physical space. Mesh transformation avoids the network from capturing the local sharper transition and learning flow with internal boundary (wall boundary). We successfully solve inviscid flow and provide an open-source subsonic flow solver for arbitrary airfoils. Our results show that the solver exhibits higher-order attributes, achieving nearly an order of magnitude error reduction over second-order finite volume methods (FVM) on very sparse meshes. Limited by the learning ability and optimization difficulties of neural network, the accuracy of this solver will not improve significantly with mesh refinement. Nevertheless, it achieves comparable accuracy and efficiency to second-order FVM on fine meshes. Finally, we highlight the significant advantage of the solver in solving parametric problems, as it can efficiently obtain solutions in the continuous parameter space about the angle of attack.","url_abs":"https://arxiv.org/abs/2401.08705v1","url_pdf":"https://arxiv.org/pdf/2401.08705v1.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":"a-solver-for-subsonic-flow-around-airfoils","repo_url":"https://github.com/cao-wenbo/nnfoil","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2401.08705","atlas_url":"https://app.syntology.ai/?focus=2401.08705","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2401.08705"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/cao-wenbo/nnfoil","reach":{"status":"ok"}}],"summary":{"ran":4,"unverified":2},"by_repo_kind":{"official":{"samples":6,"ran":4,"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":"785d580f5c9600cd","entry":"coeff","repo":"cao-wenbo/nnfoil","repo_kind":"official","path":"util.py","file_url":"https://github.com/cao-wenbo/nnfoil/blob/HEAD/util.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"785d580f5c9600cd"}},{"code_sha256_prefix":"73bb38fe55f489a1","entry":"coeff","repo":"cao-wenbo/nnfoil","repo_kind":"official","path":"mesh_generation/differ.py","file_url":"https://github.com/cao-wenbo/nnfoil/blob/HEAD/mesh_generation/differ.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":"73bb38fe55f489a1"}},{"code_sha256_prefix":"77f1caeee499f19b","entry":"diff1d","repo":"cao-wenbo/nnfoil","repo_kind":"official","path":"mesh_generation/differ.py","file_url":"https://github.com/cao-wenbo/nnfoil/blob/HEAD/mesh_generation/differ.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":"77f1caeee499f19b"}},{"code_sha256_prefix":"b443bd11719dcfc3","entry":"diff2d","repo":"cao-wenbo/nnfoil","repo_kind":"official","path":"mesh_generation/differ.py","file_url":"https://github.com/cao-wenbo/nnfoil/blob/HEAD/mesh_generation/differ.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":"b443bd11719dcfc3"}},{"code_sha256_prefix":"62ab7238a3243631","entry":"boundary_2nd","repo":"cao-wenbo/nnfoil","repo_kind":"official","path":"util.py","file_url":"https://github.com/cao-wenbo/nnfoil/blob/HEAD/util.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"62ab7238a3243631"}},{"code_sha256_prefix":"91f91c0ac8de5a2d","entry":"fwd_gradients","repo":"cao-wenbo/nnfoil","repo_kind":"official","path":"util.py","file_url":"https://github.com/cao-wenbo/nnfoil/blob/HEAD/util.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"91f91c0ac8de5a2d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}