NetGen.py generates a set of vertex locations and edges that can be analyzed using the SpectrumScript.m MATLAB script (along with the QGLAB software) to compute the spectrum of the differential Laplacian on a metric network generated from the files output by NetGen.py.
Also included is QGLAB.cmd, which is an example slurm script for running this code on a computer cluster.
Ensure that within the directory containing the files listed above the following is set up:
1 - a directory named "configs" containing two subdirectories named "configs" and "edgelists".
2 - Quantum-Graphs-master from https://github.com/manroygood/Quantum-Graphs is downloaded and set up (see the relevant documentation).
3 - SpectrumScript.m is moved into the Quantum-Graphs-master directory.
For additional information on the QGLAB software, please see the associated publication: https://doi.org/10.1137/23M1627729.
For the definitions of the tesselation types, network boundary types, point pattern types, etc., please see the associated manuscript (DOI TBD).
sbatch QGLAB.cmd conf N tess bdry name equi p1 p2
conf - (string) the type of configuration desired. This includes:
1 - 'URL' for the Z2 uniformly randomized lattice.
2 - 'A2' for the A2 uniformly randomized lattice.
3 - 'Ge' for loading in a "Ge-type" configuration file (defined below).
4 - 'TJ' for loading in a "TJ-type" configuration file (defined below).
5 - 'Ti' for a tiling-type configuration.
N - (integer) number of particles in the configuration (either prescribed (and rounded to the nearest square number) for the Z2 URL, or needed as an input for Ge/TJ filetypes). In instances where the number of particles is hard-coded (A2 URL, Lattices) this parameter is not used.
tess - (string) the type of tessellation used. This includes:
1 - 'D' for Delaunay.
2 - 'C' for Delaunay Centroidal.
3 - 'G' for Gabriel.
bdry - (string) the type of network boundary desired. This includes:
1 - 'delete' for delete boundary conditions.
2 - 'prune' for prune boundary conditions.
3 - 'clip' for clip boundary conditions.
name - (string) a name assigned to this particular simulation.
equi - (string) 'True' if the network is equilateral, 'False' if not.
p1 - If generating a URL this is a float and the value of a used in the construction of the point pattern. If loading a configuration this is a string and the path to the configuration file. If generating a lattice this is a string and denotes the kind of lattice, including:
1 - 'Kago' for the trihexagonal (kagome) lattice.
2 - 'Hex' for the hexagonal lattice.
3 - 'Z2D_*' for the square lattice with triangular defects where * is replaced by the fraction of squares to be filled (e.g., 0.05 for 5% defects).
p2 - If loading a configuration this allows you to include additional information about the configuration in the saved file name. E.g., "phi0.65" for an equilibrium disk configuration with a packing fraction of 0.65.
A "Ge-type" file is structured as follows:
The first line contains the space dimension (here it is assumed this is 2).
The next two lines contain the lattice vectors for the simulation box containing the points.
The next N lines contain the coordinates of the points.
It is assumed that values on the same line are separated by spaces.
A "TJ-type" file is structured as follows (some of these lines simply contain information that gets thrown out by design--this file format was originally used for something else):
The first line contains the string 'mono'.
The next three lines get thrown out (but must contain something to get thrown out).
The next two lines contain the lattice vectors for the simulation box containing the points.
The next line gets thrown out (but must contain something to get thrown out).
The next N lines contain the coordinates of the points.
It is assumed that these points are also in two dimensions and that all values on the same line are separated by '\t'.
Three files:
1 - A .txt file containing the locations of vertices of the network generated by NetGen.py placed in the configs/configs directory.
2 - A .txt file containing the pair indices of vertices that make up the edges of the network and their Euclidean lengths generated by NetGen.py placed in the configs/edgelists directory.
3 - A .mat file containing the eigenvalues, eigenmodes, and a quantum graph object.