{"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/similarity-equivariant-graph-neural-networks","title":"Similarity Equivariant Graph Neural Networks for Homogenization of Metamaterials","arxiv_id":"2404.17365","date":"2024-04-26","proceeding":null,"authors":["Fleur Hendriks","Vlado Menkovski","Martin Doškář","Marc G. D. Geers","Ondřej Rokoš"],"abstract":"Soft, porous mechanical metamaterials exhibit pattern transformations that may have important applications in soft robotics, sound reduction and biomedicine. To design these innovative materials, it is important to be able to simulate them accurately and quickly, in order to tune their mechanical properties. Since conventional simulations using the finite element method entail a high computational cost, in this article we aim to develop a machine learning-based approach that scales favorably to serve as a surrogate model. To ensure that the model is also able to handle various microstructures, including those not encountered during training, we include the microstructure as part of the network input. Therefore, we introduce a graph neural network that predicts global quantities (energy, stress stiffness) as well as the pattern transformations that occur (the kinematics). To make our model as accurate and data-efficient as possible, various symmetries are incorporated into the model. The starting point is an E(n)-equivariant graph neural network (which respects translation, rotation and reflection) that has periodic boundary conditions (i.e., it is in-/equivariant with respect to the choice of RVE), is scale in-/equivariant, can simulate large deformations, and can predict scalars, vectors as well as second and fourth order tensors (specifically energy, stress and stiffness). The incorporation of scale equivariance makes the model equivariant with respect to the similarities group, of which the Euclidean group E(n) is a subgroup. We show that this network is more accurate and data-efficient than graph neural networks with fewer symmetries. To create an efficient graph representation of the finite element discretization, we use only the internal geometrical hole boundaries from the finite element mesh to achieve a better speed-up and scaling with the mesh size.","url_abs":"https://arxiv.org/abs/2404.17365v3","url_pdf":"https://arxiv.org/pdf/2404.17365v3.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":"similarity-equivariant-graph-neural-networks","repo_url":"https://github.com/fhendriks11/simegnn","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"}],"methods":[{"method_slug":"graph-neural-network","method_name":"Graph Neural Network"}],"datasets_introduced":[{"slug":"mechanical-metamaterial-square-array-of","name":"Mechanical Metamaterial: Square Array of Circular Holes Under Deformation","full_name":""}],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2404.17365","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2404.17365"}},"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/fhendriks11/simegnn","reach":{"status":"ok"}}],"summary":{"ran":6,"unverified":3},"by_repo_kind":{"official":{"samples":9,"ran":6,"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":9,"samples":[{"code_sha256_prefix":"c286094af10478b0","entry":"new_path","repo":"fhendriks11/simegnn","repo_kind":"official","path":"funcs_helpers.py","file_url":"https://github.com/fhendriks11/simegnn/blob/HEAD/funcs_helpers.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":"c286094af10478b0"}},{"code_sha256_prefix":"f7c88ee07ca32ae9","entry":"orientation","repo":"fhendriks11/simegnn","repo_kind":"official","path":"funcs_helpers.py","file_url":"https://github.com/fhendriks11/simegnn/blob/HEAD/funcs_helpers.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":"f7c88ee07ca32ae9"}},{"code_sha256_prefix":"5647194b5b4da1ef","entry":"plot_D","repo":"fhendriks11/simegnn","repo_kind":"official","path":"funcs_plotting.py","file_url":"https://github.com/fhendriks11/simegnn/blob/HEAD/funcs_plotting.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":"5647194b5b4da1ef"}},{"code_sha256_prefix":"0677b0a3c254d7a6","entry":"plot_P","repo":"fhendriks11/simegnn","repo_kind":"official","path":"funcs_plotting.py","file_url":"https://github.com/fhendriks11/simegnn/blob/HEAD/funcs_plotting.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":"0677b0a3c254d7a6"}},{"code_sha256_prefix":"8bfc77aee8136e83","entry":"plot_W","repo":"fhendriks11/simegnn","repo_kind":"official","path":"funcs_plotting.py","file_url":"https://github.com/fhendriks11/simegnn/blob/HEAD/funcs_plotting.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":"8bfc77aee8136e83"}},{"code_sha256_prefix":"f3a4d399006030ec","entry":"split_trajs","repo":"fhendriks11/simegnn","repo_kind":"official","path":"funcs_helpers.py","file_url":"https://github.com/fhendriks11/simegnn/blob/HEAD/funcs_helpers.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":"f3a4d399006030ec"}},{"code_sha256_prefix":"1efdfd3cb0dac960","entry":"train_loop_stress_stiffness","repo":"fhendriks11/simegnn","repo_kind":"official","path":"funcs_training.py","file_url":"https://github.com/fhendriks11/simegnn/blob/HEAD/funcs_training.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":"1efdfd3cb0dac960"}},{"code_sha256_prefix":"59bf1848d6936bf0","entry":"triplets","repo":"fhendriks11/simegnn","repo_kind":"official","path":"fleur_GNN.py","file_url":"https://github.com/fhendriks11/simegnn/blob/HEAD/fleur_GNN.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":"59bf1848d6936bf0"}},{"code_sha256_prefix":"38a339ffcef5387b","entry":"val_loop_stress_stiffness","repo":"fhendriks11/simegnn","repo_kind":"official","path":"funcs_training.py","file_url":"https://github.com/fhendriks11/simegnn/blob/HEAD/funcs_training.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":"38a339ffcef5387b"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}