{"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-graph-neural-network-approach-to-dispersed","title":"A Graph Neural Network Simulation of Dispersed Systems","arxiv_id":"2412.02967","date":"2024-12-04","proceeding":null,"authors":["Aref Hashemi","Aliakbar Izadkhah"],"abstract":"We present a Graph Neural Network (GNN) that accurately simulates a multidisperse suspension of interacting spherical particles. Our machine learning framework is built upon the recent work of Sanchez-Gonzalez et al. ICML, PMLR, 119, 8459-8468 (2020) on graph network simulators, and efficiently learns the intricate dynamics of the interacting particles. Nodes and edges of the GNN correspond, respectively, to the particles with their individual properties/data (e.g., radius, position, velocity) and the pairwise interactions between the particles (e.g., electrostatics, hydrodynamics). A key contribution of our work is to account for the finite dimensions of the particles and their impact on the system dynamics. We test our GNN against a representative case study of a multidisperse mixture of two-dimensional spheres sedimenting under gravity in a liquid and interacting with each other by a Lennard-Jones potential. The present GNN framework offers a fast and accurate method for the theoretical study of complex physical systems such as field-induced behavior of colloidal suspensions and ionic liquids. Our implementation of the GNN is available on GitHub at github.com/rfjd/GNS-DispersedSystems.","url_abs":"https://arxiv.org/abs/2412.02967v3","url_pdf":"https://arxiv.org/pdf/2412.02967v3.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-graph-neural-network-approach-to-dispersed","repo_url":"https://github.com/rfjd/gns-dispersedsystems","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":null,"mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2412.02967"}},"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/rfjd/GNS-DispersedSystems","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/rfjd/gns-dispersedsystems","reach":{"status":"ok"}}],"summary":{"unverified":14},"by_repo_kind":{"official":{"samples":14,"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":14,"samples":[{"code_sha256_prefix":"4a59c54dfd157ec5","entry":"FVec","repo":"rfjd/GNS-DispersedSystems","repo_kind":"official","path":"data-generator/InteractingParticles-Box/simulation.py","file_url":"https://github.com/rfjd/GNS-DispersedSystems/blob/HEAD/data-generator/InteractingParticles-Box/simulation.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":"4a59c54dfd157ec5"}},{"code_sha256_prefix":"dea0f16189fcd03b","entry":"Fi","repo":"rfjd/GNS-DispersedSystems","repo_kind":"official","path":"data-generator/InteractingParticles-Box/simulation-multidisperse.py","file_url":"https://github.com/rfjd/GNS-DispersedSystems/blob/HEAD/data-generator/InteractingParticles-Box/simulation-multidisperse.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":"dea0f16189fcd03b"}},{"code_sha256_prefix":"ac389bbdde94fb54","entry":"Fi","repo":"rfjd/GNS-DispersedSystems","repo_kind":"official","path":"data-generator/InteractingParticles-Box/simulation.py","file_url":"https://github.com/rfjd/GNS-DispersedSystems/blob/HEAD/data-generator/InteractingParticles-Box/simulation.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":"ac389bbdde94fb54"}},{"code_sha256_prefix":"bdfc81fb319771c3","entry":"build_mlp","repo":"rfjd/GNS-DispersedSystems","repo_kind":"official","path":"gns/network_architecture.py","file_url":"https://github.com/rfjd/GNS-DispersedSystems/blob/HEAD/gns/network_architecture.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":"bdfc81fb319771c3"}},{"code_sha256_prefix":"10d4ddc0d667a1f3","entry":"collate_fn","repo":"rfjd/GNS-DispersedSystems","repo_kind":"official","path":"gns/data_loader.py","file_url":"https://github.com/rfjd/GNS-DispersedSystems/blob/HEAD/gns/data_loader.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":"10d4ddc0d667a1f3"}},{"code_sha256_prefix":"633b768b1e4bc3cf","entry":"compute_mean_std","repo":"rfjd/GNS-DispersedSystems","repo_kind":"official","path":"data-generator/InteractingParticles-Box/stats-calc.py","file_url":"https://github.com/rfjd/GNS-DispersedSystems/blob/HEAD/data-generator/InteractingParticles-Box/stats-calc.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":"633b768b1e4bc3cf"}},{"code_sha256_prefix":"1e68426c2b011d56","entry":"dUdr","repo":"rfjd/GNS-DispersedSystems","repo_kind":"official","path":"data-generator/InteractingParticles-Box/simulation-multidisperse.py","file_url":"https://github.com/rfjd/GNS-DispersedSystems/blob/HEAD/data-generator/InteractingParticles-Box/simulation-multidisperse.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":"1e68426c2b011d56"}},{"code_sha256_prefix":"20c21c8b993b17d0","entry":"flags_to_dict","repo":"rfjd/GNS-DispersedSystems","repo_kind":"official","path":"gns/reading_utils.py","file_url":"https://github.com/rfjd/GNS-DispersedSystems/blob/HEAD/gns/reading_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":"20c21c8b993b17d0"}},{"code_sha256_prefix":"5c7af771aaff3711","entry":"generate_disk_positions","repo":"rfjd/GNS-DispersedSystems","repo_kind":"official","path":"data-generator/InteractingParticles-Box/simulation-multidisperse.py","file_url":"https://github.com/rfjd/GNS-DispersedSystems/blob/HEAD/data-generator/InteractingParticles-Box/simulation-multidisperse.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":"5c7af771aaff3711"}},{"code_sha256_prefix":"2441c80808f15990","entry":"generate_equispaced_positions","repo":"rfjd/GNS-DispersedSystems","repo_kind":"official","path":"data-generator/InteractingParticles-Box/simulation.py","file_url":"https://github.com/rfjd/GNS-DispersedSystems/blob/HEAD/data-generator/InteractingParticles-Box/simulation.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":"2441c80808f15990"}},{"code_sha256_prefix":"41af2cb32ed06217","entry":"get_data_loader_by_samples","repo":"rfjd/GNS-DispersedSystems","repo_kind":"official","path":"gns/data_loader.py","file_url":"https://github.com/rfjd/GNS-DispersedSystems/blob/HEAD/gns/data_loader.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":"41af2cb32ed06217"}},{"code_sha256_prefix":"106fcf30b37fe53e","entry":"get_random_walk_noise_for_position_sequence","repo":"rfjd/GNS-DispersedSystems","repo_kind":"official","path":"gns/noise_utils.py","file_url":"https://github.com/rfjd/GNS-DispersedSystems/blob/HEAD/gns/noise_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":"106fcf30b37fe53e"}},{"code_sha256_prefix":"5fbef2b13104b759","entry":"load_npz_data","repo":"rfjd/GNS-DispersedSystems","repo_kind":"official","path":"gns/data_loader.py","file_url":"https://github.com/rfjd/GNS-DispersedSystems/blob/HEAD/gns/data_loader.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":"5fbef2b13104b759"}},{"code_sha256_prefix":"a21c8d26e73666c4","entry":"read_metadata","repo":"rfjd/GNS-DispersedSystems","repo_kind":"official","path":"gns/reading_utils.py","file_url":"https://github.com/rfjd/GNS-DispersedSystems/blob/HEAD/gns/reading_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":"a21c8d26e73666c4"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}