{"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/predicting-change-not-states-an-alternate","title":"Predicting Change, Not States: An Alternate Framework for Neural PDE Surrogates","arxiv_id":"2412.13074","date":"2024-12-17","proceeding":null,"authors":["Anthony Zhou","Amir Barati Farimani"],"abstract":"Neural surrogates for partial differential equations (PDEs) have become popular due to their potential to quickly simulate physics. With a few exceptions, neural surrogates generally treat the forward evolution of time-dependent PDEs as a black box by directly predicting the next state. While this is a natural and easy framework for applying neural surrogates, it can be an over-simplified and rigid framework for predicting physics. In this work, we evaluate an alternate framework in which neural solvers predict the temporal derivative and an ODE integrator forwards the solution in time, which has little overhead and is broadly applicable across model architectures and PDEs. We find that by simply changing the training target and introducing numerical integration during inference, neural surrogates can gain accuracy and stability in finely-discretized regimes. Predicting temporal derivatives also allows models to not be constrained to a specific temporal discretization, allowing for flexible time-stepping during inference or training on higher-resolution PDE data. Lastly, we investigate why this framework can be beneficial and in what situations does it work well.","url_abs":"https://arxiv.org/abs/2412.13074v2","url_pdf":"https://arxiv.org/pdf/2412.13074v2.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":"predicting-change-not-states-an-alternate","repo_url":"https://github.com/anthonyzhou-1/temporal_pdes","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"numerical-integration","task_name":"Numerical Integration"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2412.13074","atlas_url":"https://app.syntology.ai/?focus=2412.13074","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2412.13074"}},"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/anthonyzhou-1/temporal_pdes","reach":{"status":"ok"}}],"summary":{"unverified":8},"by_repo_kind":{"official":{"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":8,"samples":[{"code_sha256_prefix":"b3860e5353e6413d","entry":"batchmul1d","repo":"anthonyzhou-1/temporal_pdes","repo_kind":"official","path":"modules/models/FNO1Dcond.py","file_url":"https://github.com/anthonyzhou-1/temporal_pdes/blob/HEAD/modules/models/FNO1Dcond.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":"b3860e5353e6413d"}},{"code_sha256_prefix":"1a880298ea7678d5","entry":"batchmul2d","repo":"anthonyzhou-1/temporal_pdes","repo_kind":"official","path":"modules/models/FNO2Dcond.py","file_url":"https://github.com/anthonyzhou-1/temporal_pdes/blob/HEAD/modules/models/FNO2Dcond.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":"1a880298ea7678d5"}},{"code_sha256_prefix":"86d0930a8092c898","entry":"custommse_loss","repo":"anthonyzhou-1/temporal_pdes","repo_kind":"official","path":"common/loss.py","file_url":"https://github.com/anthonyzhou-1/temporal_pdes/blob/HEAD/common/loss.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":"86d0930a8092c898"}},{"code_sha256_prefix":"558815dbae7baf0e","entry":"forward_difference","repo":"anthonyzhou-1/temporal_pdes","repo_kind":"official","path":"common/utils.py","file_url":"https://github.com/anthonyzhou-1/temporal_pdes/blob/HEAD/common/utils.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":"558815dbae7baf0e"}},{"code_sha256_prefix":"824001d2dcb7d74a","entry":"get_yaml","repo":"anthonyzhou-1/temporal_pdes","repo_kind":"official","path":"common/utils.py","file_url":"https://github.com/anthonyzhou-1/temporal_pdes/blob/HEAD/common/utils.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":"824001d2dcb7d74a"}},{"code_sha256_prefix":"5ac79cc5c3d8f7fa","entry":"pearson_correlation","repo":"anthonyzhou-1/temporal_pdes","repo_kind":"official","path":"common/loss.py","file_url":"https://github.com/anthonyzhou-1/temporal_pdes/blob/HEAD/common/loss.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":"5ac79cc5c3d8f7fa"}},{"code_sha256_prefix":"85fc41048fade072","entry":"scaledlp_loss","repo":"anthonyzhou-1/temporal_pdes","repo_kind":"official","path":"common/loss.py","file_url":"https://github.com/anthonyzhou-1/temporal_pdes/blob/HEAD/common/loss.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":"85fc41048fade072"}},{"code_sha256_prefix":"b0b86a592994f5d2","entry":"sinusoidal_embedding","repo":"anthonyzhou-1/temporal_pdes","repo_kind":"official","path":"common/utils.py","file_url":"https://github.com/anthonyzhou-1/temporal_pdes/blob/HEAD/common/utils.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":"b0b86a592994f5d2"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}