DOI: 10.5061/dryad.m0cfxppf1
title: Optimizing properties on the critical rigidity manifold of underconstrained central-force networks

description: This dataset can be used to generate the figures from the article of the
 same name published in Physical Review E. These include images of examples
 of optimized network configurations, distributions and size scaling of
 several metrics describing network structure and elastic response,
 optimization time series data, and movies of the optimization process for
 several objective functions. Our goal is to develop a design framework for
 multifunctional mechanical metamaterials that can tune their rigidity
 while optimizing other desired properties. Towards this goal, we first
 demonstrate that underconstrained central force networks possess a
 critical rigidity manifold of codimension one in the space of their
 physical constraints. We describe how the geometry of this manifold
 generates a natural parameterization in terms of the states of
 self-stress, and then use this parameterization to numerically generate
 disordered network structures that are on the critical rigidity manifold
 and also optimize various objective functions, such as maximizing the bulk
 stiffness under dilation, or minimizing length variance to find networks
 that can be self-assembled from equal-length parts. This framework can be
 used to design mechanical metamaterials that can tune their rigidity and
 also exhibit other desired properties. 
description: This dataset was generated by in-house simulations and analysis
 of disordered networks written in C++ and Python using standard computing
 packages (Eigen, NumPy, SciPy).
description: # Optimizing properties on the critical rigidity manifold of
 underconstrained central-force networks
 [https://doi.org/10.5061/dryad.m0cfxppf1](https://doi.org/10.5061/dryad.m0cfxppf1) ## Description of the data and file structure This dataset was generated by in-house simulations and analysis of disordered networks written in C++ and Python using standard computing packages (Eigen, NumPy, SciPy). It contains examples of network configurations that have been optimized for various objective functions, distributions and size scaling of several metrics describing network structure and elastic response, optimization time series data, and sequences of configurations from the optimization process. ### Files and variables #### NetworkConfigs/ The directory NetworkConfigs/ contains the data used in Figure 3, which shows multiple optimized configurations of a given network structure. It contains the following files: These two files describe the topology of the network, which is common for all configurations. EdgeVertex.txt contains the connectivity information of the network. Each row corresponds with an edge in the network, and contains the indices of the vertices connected by that edge. For example, edge 0 connects vertex 0 to vertex 31. EdgeWindings.txt contains boundary conditions of the network. Each row correspond with an edge, and gives the x & y indices of the periodic boundary (if any) that is crossed by that edge. For example, edge 0 connects vertex 0 to the copy of vertex 31 across the periodic boundary on the lefthand side of the box. The other files contain the data for individual configurations. There are 13 different configurations, which are denoted by their respective objective function and possibly an index: EqualLength: optimized to have edges with equal length EqualTension_1, EqualTension_2: configurations optimized to have edges with equal tension MaxBulkMod_1, MaxBulkMod_2, MaxBulkMod_3: configurations optimized to have maximum bulk modulus MaxShearMod_1, MaxShearMod_2, MaxShearMod_3: configurations optimized to have maximum shear modulus VolStrain_1, VolStrain_2: configurations obtained by subjecting networks to volumetric strain RandomSS_1, RandomSS_2: configurations obtained by randomly assigning self-stresses For each configuration there are two files: VertexCoords_{configuration name}.txt contains the coordinates of the vertices for the configuration. Each row corresponds with a vertex and the first and second columns contain the x and y coordinates respectively. SelfStress_{configuration name}.txt contains the self-stress of the configuration. Each row corresponds with an edge and gives the force density on that edge (see original article for details). Used here to color the network edges. #### ShearModulusOptimizationData/ The directory ShearModulusOptimizationData/ contains the data used in Figure 4, which shows an ensemble average of several quantities during the unconstrained optimization of the shear modulus, as well as size scaling analysis of the resulting configurations. This contains the following files: ShearModulusOptimization_EnsembleData.txt contains the ensemble averages of several quantities during the unconstrained optimization of shear modulus. Each row corresponds to a particular point in the optimization process, and the columns contain the following: Col 1: Optimization "time" (arbitrary units) Col 2: Ensemble average of the shear modulus G (simulation units, see original article for details) Col 3: Ensemble standard deviation of G Col 4: Ensemble average of the normalized maximum edge length max(L)/\sqrt{V} Col 5: Ensemble standard deviation of max(L)/\sqrt{V} Col 6: Ensemble average of the normalized minimum edge tension min(\tau)/max(|\tau|) Col 7: Ensemble standard deviation of min(\tau)/max(|\tau|) The files Nv_50_Data.txt, Nv_100_Data.txt, Nv_500_Data.txt, Nv_1000_Data.txt contain data for size scaling analysis. Each file corresponds with an ensemble of networks with the given number of vertices (Nv = 50, 100, 500, 1000) that have been optimized for shear modulus without additional constraints. In each file, each row corresponds with a single network in the ensemble, and contains the number of edges with negative tension (Col. 1) and the total length (in simulation units) of edges with negative tension (Col. 2). #### ResponseMetrics/ The directory ResponseMetrics/ contains the data used in Figures 5 and 7, which respectively show the scaling of the shear modulus with system size for all populations of configurations and the dependence on the threshold value r (Fig 5) and the distributions of four response metrics for all populations of configurations (Fig 7). Each file corresponds with an ensemble of configurations with the given system size (Nv = 100,500,1000) and generation protocol. The tags for different populations have the same meanings as in NetworkConfigs (EqualTension, EqualLength, MaxBulkMod, MaxShearMod_{index}, VolStrain, RandomSS). Each row corresponds with a single member of the given ensemble. The files Nv_{size}*MaxShearMod_1.txt, Nv*{size}*MaxShearMod_2.txt, Nv*{size}*MaxShearMod_3.txt, Nv*{size}_MaxShearMod_4.txt correspond with ensembles of networks that were optimized for shear modulus with different values for the self-stress threshold r (additional details in original text). As they are used only for Fig 5B they have only two columns: the bulk moduli (Col. 1) and shear moduli (Col. 2) of each respective ensemble. All other files in this directory were used for Fig 5A and Fig 7 and have 4 columns: Col. 1: values of bulk modulus B for each member of ensemble Col. 2: values of second order bulk modulus coefficient C_B for each member of ensemble Col. 3: values of shear modulus G for each member of ensemble Col. 4: values of second order shear modulus coefficient C_G for each member of ensemble #### StructuralMetrics/ The directory StructuralMetrics/ contains the data used in Figure 6, which shows the distributions of four structural metrics for all populations of configurations. As we do no size scaling of these metrics there is only a single system size (Nv = 1000). The tags for different populations are the same as above (EqualTension, EqualLength, MaxBulkMod, MaxShearMod, VolStrain, RandomSS). Again each file corresponds with the given ensemble and each row corresponds with one member of the ensemble. All files in this directory contain four data columns: Col. 1: values of edge length variance V(L) Col. 2: values of physical network asphericity &lt;\kappa_{phys}&gt; Col. 3: values of edge tension variance V(\tau) Col. 4: values of force network asphericity &lt;\kappa_{force}&gt; #### MovieData/ The directory MovieData/ contains the data used to render the videos from the Supplemental Material of the article which animate the optimzation procedure for maximizing bulk modulus (in MovieData/BulkModulus/), maximizing shear modulus with constraints (in MovieData/ShearModulus_constrained/), and maximizing shear modulus with constraints (in MovieData/ShearModulus_unconstrained/). MovieData/ also contains two files that describe the network topology being optimized (MovieData/EdgeVertex.txt, MovieData/EdgeWindings.txt), which have the same structure as the similarly named files in NetworkConfigs/ (but describe a different network topology). Each of the subdirectories (MovieData/BulkModulus/, MovieData/ShearModulus_constrained/, MovieData/ShearModulus_unconstrained/) contains a file called TimeSeries.txt which contains the time series data for the optimization in question. Each row in this file corresponds with a single point in the optimization process and contains two data columns: Col. 1: the current optimization "time" (arbitrary units) Col. 2: The elastic modulus being optimized, either bulk or shear The subdirectories also each have a folder Configs/ that contains a network configuration for each point in the optimization. Similarly to NetworkConfigs/ these configurations are described by two files: Configs/VertexCoords_{index}.txt, Configs/SelfStress_{index}.txt, which contain the coordinates of the vertices and the values of the self-stress respectively. For example, BulkModulus/TimeSeries.txt has 115 rows, and BulkModulus/Configs/ contains VertexCoords_{index}.txt and SelfStress_{index}.txt for index = 0, 1, 2,... 114. The 5th row of BulkModulus/TimeSeries.txt corresponds with the same point in the optimization as BulkModulus/Configs/VertexCoords_4.txt and BulkModulus/Configs/SelfStress_4.txt. ## Code/software This dataset also includes a number of simple Python scripts that generate the figures and movies when run in their home directory. They utilize the common packages NumPy and Matplotlib, and the three scripts beginning with "RenderMovie_" also require the command line multimedia toolkit FFmpeg. ##### NetworkClass.py: Defines the class `Network` used by other scripts to visualize network configurations. This file doesn't do anything when run. ##### Fig3.py: Generates each panel of Figure 3 as a separate image, showing various optimized configurations of a single network structure. ##### Fig4-AB.py: Generates Figure 4A-B of the unconstrained optimization of the shear modulus of an ensemble of networks. ##### Fig4-FG.py: Generates Figure 4F-G of the size scaling of the number and length of edges with negative tensions in networks optimized for shear modulus without putting a lower bound on the geometric stresses. ##### Fig5-A.py: Generates Figure 5A of the size scaling of the shear modulus for all populations of configurations. ##### Fig5-B.py: Generates Figure 5B of the scaling of the shear modulus for optimized configurations with different values of the geometric stress threshold r. ##### Fig6.py: Generates Figure 6 of the distributions of structural metrics for the various populations of critical configurations. ##### Fig7.py: Generates Figure 7 of the distributions of response metrics for the various populations of critical configurations. ##### RenderMovie\_BulkModulus.py: Script for generating a movie of the bulk modulus optimization process. ##### RenderMovie\_ShearModulus\_constrained.py: Script for generating a movie of the shear modulus optimization process with additional constraints on the geometric stresses. ##### RenderMovie\_ShearModulus\_unconstrained.py: Script for generating a movie of the shear modulus optimization process without additional constraints on the geometric stresses.