{"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/neural-general-circulation-models","title":"Neural General Circulation Models for Weather and Climate","arxiv_id":"2311.07222","date":"2023-11-13","proceeding":null,"authors":["Dmitrii Kochkov","Janni Yuval","Ian Langmore","Peter Norgaard","Jamie Smith","Griffin Mooers","Milan Klöwer","James Lottes","Stephan Rasp","Peter Düben","Sam Hatfield","Peter Battaglia","Alvaro Sanchez-Gonzalez","Matthew Willson","Michael P. Brenner","Stephan Hoyer"],"abstract":"General circulation models (GCMs) are the foundation of weather and climate prediction. GCMs are physics-based simulators which combine a numerical solver for large-scale dynamics with tuned representations for small-scale processes such as cloud formation. Recently, machine learning (ML) models trained on reanalysis data achieved comparable or better skill than GCMs for deterministic weather forecasting. However, these models have not demonstrated improved ensemble forecasts, or shown sufficient stability for long-term weather and climate simulations. Here we present the first GCM that combines a differentiable solver for atmospheric dynamics with ML components, and show that it can generate forecasts of deterministic weather, ensemble weather and climate on par with the best ML and physics-based methods. NeuralGCM is competitive with ML models for 1-10 day forecasts, and with the European Centre for Medium-Range Weather Forecasts ensemble prediction for 1-15 day forecasts. With prescribed sea surface temperature, NeuralGCM can accurately track climate metrics such as global mean temperature for multiple decades, and climate forecasts with 140 km resolution exhibit emergent phenomena such as realistic frequency and trajectories of tropical cyclones. For both weather and climate, our approach offers orders of magnitude computational savings over conventional GCMs. Our results show that end-to-end deep learning is compatible with tasks performed by conventional GCMs, and can enhance the large-scale physical simulations that are essential for understanding and predicting the Earth system.","url_abs":"https://arxiv.org/abs/2311.07222v3","url_pdf":"https://arxiv.org/pdf/2311.07222v3.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":"neural-general-circulation-models","repo_url":"https://github.com/google-research/neuralgcm","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"neural-general-circulation-models","repo_url":"https://github.com/google-research/dinosaur","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"neural-general-circulation-models","repo_url":"https://github.com/neuralgcm/neuralgcm","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":null}],"tasks":[{"task_slug":"physical-simulations","task_name":"Physical Simulations"},{"task_slug":"weather-forecasting","task_name":"Weather Forecasting"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2311.07222","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2311.07222"}},"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/google-research/neuralgcm","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/neuralgcm/neuralgcm","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/google-research/dinosaur","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_draft_wrong":1,"unverified":9},"by_repo_kind":{"listed":{"samples":10,"ran":1,"repositories":2}},"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":"4e71b8bf4cde8432","entry":"flatten_dict","repo":"neuralgcm/neuralgcm","repo_kind":"listed","path":"neuralgcm/reference_code/train_utils.py","file_url":"https://github.com/neuralgcm/neuralgcm/blob/HEAD/neuralgcm/reference_code/train_utils.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":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4e71b8bf4cde8432"}},{"code_sha256_prefix":"ace0bd2565da2c28","entry":"cumsum","repo":"google-research/dinosaur","repo_kind":"listed","path":"dinosaur/jax_numpy_utils.py","file_url":"https://github.com/google-research/dinosaur/blob/HEAD/dinosaur/jax_numpy_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ace0bd2565da2c28"}},{"code_sha256_prefix":"9394ee563dbf5d3e","entry":"equiangular_nodes","repo":"google-research/dinosaur","repo_kind":"listed","path":"dinosaur/associated_legendre.py","file_url":"https://github.com/google-research/dinosaur/blob/HEAD/dinosaur/associated_legendre.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9394ee563dbf5d3e"}},{"code_sha256_prefix":"7466f5a2d81103db","entry":"evaluate","repo":"google-research/dinosaur","repo_kind":"listed","path":"dinosaur/associated_legendre.py","file_url":"https://github.com/google-research/dinosaur/blob/HEAD/dinosaur/associated_legendre.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7466f5a2d81103db"}},{"code_sha256_prefix":"e60fc1a7bd1ab2ff","entry":"gauss_legendre_nodes","repo":"google-research/dinosaur","repo_kind":"listed","path":"dinosaur/associated_legendre.py","file_url":"https://github.com/google-research/dinosaur/blob/HEAD/dinosaur/associated_legendre.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e60fc1a7bd1ab2ff"}},{"code_sha256_prefix":"82750b9b2cc420a1","entry":"nearest_neighbor_indices","repo":"google-research/dinosaur","repo_kind":"listed","path":"dinosaur/horizontal_interpolation.py","file_url":"https://github.com/google-research/dinosaur/blob/HEAD/dinosaur/horizontal_interpolation.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"82750b9b2cc420a1"}},{"code_sha256_prefix":"c0b00f883c840b30","entry":"precise_dot","repo":"google-research/dinosaur","repo_kind":"listed","path":"dinosaur/jax_numpy_utils.py","file_url":"https://github.com/google-research/dinosaur/blob/HEAD/dinosaur/jax_numpy_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c0b00f883c840b30"}},{"code_sha256_prefix":"358e7e8b2be93a29","entry":"real_basis","repo":"google-research/dinosaur","repo_kind":"listed","path":"dinosaur/fourier.py","file_url":"https://github.com/google-research/dinosaur/blob/HEAD/dinosaur/fourier.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"358e7e8b2be93a29"}},{"code_sha256_prefix":"ca155512b0a1bc77","entry":"real_basis_with_zero_imag","repo":"google-research/dinosaur","repo_kind":"listed","path":"dinosaur/fourier.py","file_url":"https://github.com/google-research/dinosaur/blob/HEAD/dinosaur/fourier.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ca155512b0a1bc77"}},{"code_sha256_prefix":"634f706b568deb23","entry":"resolve_dot_precision","repo":"google-research/dinosaur","repo_kind":"listed","path":"dinosaur/jax_numpy_utils.py","file_url":"https://github.com/google-research/dinosaur/blob/HEAD/dinosaur/jax_numpy_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"634f706b568deb23"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}