Source code for cgexplore._internal.topologies.graphs

"""New stk topologies of cages."""

from collections import abc

import numpy as np
import stk


[docs] def stoich_map(tstr: str) -> int: """The total number of building blocks in a topology graph. Available graphs: `2P3`, `4P6`, `4P62`, `6P9`, `8P12`, `2P4`, `3P6`, `4P8`, `4P82`, `6P12`, `8P16`, `6P122`, `8P162`, `12P24`, `6P8` Parameters: tstr: The string for the topology. """ return { "2P3": 5, "4P6": 10, "4P62": 10, "6P9": 15, "8P12": 20, "2P4": 6, "3P6": 9, "4P8": 12, "4P82": 12, "6P12": 18, "8P16": 24, "6P122": 18, "8P162": 24, "12P24": 36, "6P8": 14, }[tstr]
[docs] class UnalignedM1L2(stk.cage.Cage): """New topology definition.""" _vertex_prototypes = ( stk.cage.UnaligningVertex(0, np.array([0, 0, 0])), stk.cage.UnaligningVertex( 1, np.array([-3, 0, 0]), use_neighbor_placement=False ), stk.cage.UnaligningVertex( 2, np.array([3, 0, 0]), use_neighbor_placement=False ), ) _edge_prototypes = ( stk.Edge(0, _vertex_prototypes[0], _vertex_prototypes[1]), stk.Edge(1, _vertex_prototypes[0], _vertex_prototypes[2]), stk.Edge(2, _vertex_prototypes[0], _vertex_prototypes[1]), stk.Edge(3, _vertex_prototypes[0], _vertex_prototypes[2]), )
[docs] class M4L82(stk.cage.Cage): """Cage topology.""" _non_linears = ( stk.cage.NonLinearVertex(0, np.array([0, 0, np.sqrt(6) / 2])), stk.cage.NonLinearVertex( 1, np.array([-1, -np.sqrt(3) / 3, -np.sqrt(6) / 6]) ), stk.cage.NonLinearVertex( 2, np.array([1, -np.sqrt(3) / 3, -np.sqrt(6) / 6]) ), stk.cage.NonLinearVertex( 3, np.array([0, 2 * np.sqrt(3) / 3, -np.sqrt(6) / 6]) ), ) paired_wall_1_coord = ( sum( vertex.get_position() for vertex in (_non_linears[0], _non_linears[1]) ) / 2 ) wall_1_shift = np.array((0.2, 0.2, 0)) paired_wall_2_coord = ( sum( vertex.get_position() for vertex in (_non_linears[2], _non_linears[3]) ) / 2 ) wall_2_shift = np.array((0.2, 0.2, 0)) _vertex_prototypes = ( *_non_linears, stk.cage.LinearVertex( id=4, position=paired_wall_1_coord + wall_1_shift, use_neighbor_placement=False, ), stk.cage.LinearVertex.init_at_center( id=5, vertices=(_non_linears[0], _non_linears[2]), ), stk.cage.LinearVertex.init_at_center( id=6, vertices=(_non_linears[0], _non_linears[3]), ), stk.cage.LinearVertex.init_at_center( id=7, vertices=(_non_linears[1], _non_linears[2]), ), stk.cage.LinearVertex.init_at_center( id=8, vertices=(_non_linears[1], _non_linears[3]), ), stk.cage.LinearVertex( id=9, position=paired_wall_2_coord + wall_2_shift, use_neighbor_placement=False, ), stk.cage.LinearVertex( id=10, position=paired_wall_1_coord - wall_1_shift, use_neighbor_placement=False, ), stk.cage.LinearVertex( id=11, position=paired_wall_2_coord - wall_2_shift, use_neighbor_placement=False, ), ) _edge_prototypes = ( stk.Edge(0, _vertex_prototypes[0], _vertex_prototypes[4]), stk.Edge(1, _vertex_prototypes[0], _vertex_prototypes[5]), stk.Edge(2, _vertex_prototypes[0], _vertex_prototypes[6]), stk.Edge(3, _vertex_prototypes[0], _vertex_prototypes[10]), stk.Edge(4, _vertex_prototypes[1], _vertex_prototypes[4]), stk.Edge(5, _vertex_prototypes[1], _vertex_prototypes[7]), stk.Edge(6, _vertex_prototypes[1], _vertex_prototypes[8]), stk.Edge(7, _vertex_prototypes[1], _vertex_prototypes[10]), stk.Edge(8, _vertex_prototypes[2], _vertex_prototypes[5]), stk.Edge(9, _vertex_prototypes[2], _vertex_prototypes[7]), stk.Edge(10, _vertex_prototypes[2], _vertex_prototypes[9]), stk.Edge(11, _vertex_prototypes[2], _vertex_prototypes[11]), stk.Edge(12, _vertex_prototypes[3], _vertex_prototypes[6]), stk.Edge(13, _vertex_prototypes[3], _vertex_prototypes[8]), stk.Edge(14, _vertex_prototypes[3], _vertex_prototypes[9]), stk.Edge(15, _vertex_prototypes[3], _vertex_prototypes[11]), )
[docs] class CGM4L8(stk.cage.M4L8): """New topology definition.""" _vertex_prototypes = ( stk.cage.NonLinearVertex(0, np.array([2, 0, 0])), stk.cage.NonLinearVertex(1, np.array([0, 2, 0])), stk.cage.NonLinearVertex(2, np.array([-2, 0, 0])), stk.cage.NonLinearVertex(3, np.array([0, -2, 0])), stk.cage.LinearVertex( 4, np.array([1, 1, 0.5]), use_neighbor_placement=False ), stk.cage.LinearVertex( 5, np.array([1, 1, -0.5]), use_neighbor_placement=False ), stk.cage.LinearVertex( 6, np.array([1, -1, 0.5]), use_neighbor_placement=False ), stk.cage.LinearVertex( 7, np.array([1, -1, -0.5]), use_neighbor_placement=False ), stk.cage.LinearVertex( 8, np.array([-1, -1, 0.5]), use_neighbor_placement=False ), stk.cage.LinearVertex( 9, np.array([-1, -1, -0.5]), use_neighbor_placement=False ), stk.cage.LinearVertex( 10, np.array([-1, 1, 0.5]), use_neighbor_placement=False ), stk.cage.LinearVertex( 11, np.array([-1, 1, -0.5]), use_neighbor_placement=False ), ) _edge_prototypes = ( stk.Edge(0, _vertex_prototypes[0], _vertex_prototypes[4]), stk.Edge(1, _vertex_prototypes[0], _vertex_prototypes[5]), stk.Edge(2, _vertex_prototypes[0], _vertex_prototypes[6]), stk.Edge(3, _vertex_prototypes[0], _vertex_prototypes[7]), stk.Edge(4, _vertex_prototypes[1], _vertex_prototypes[4]), stk.Edge(5, _vertex_prototypes[1], _vertex_prototypes[5]), stk.Edge(6, _vertex_prototypes[1], _vertex_prototypes[10]), stk.Edge(7, _vertex_prototypes[1], _vertex_prototypes[11]), stk.Edge(8, _vertex_prototypes[2], _vertex_prototypes[10]), stk.Edge(9, _vertex_prototypes[2], _vertex_prototypes[11]), stk.Edge(10, _vertex_prototypes[2], _vertex_prototypes[8]), stk.Edge(11, _vertex_prototypes[2], _vertex_prototypes[9]), stk.Edge(12, _vertex_prototypes[3], _vertex_prototypes[8]), stk.Edge(13, _vertex_prototypes[3], _vertex_prototypes[9]), stk.Edge(14, _vertex_prototypes[3], _vertex_prototypes[6]), stk.Edge(15, _vertex_prototypes[3], _vertex_prototypes[7]), )
[docs] class CGM12L24(stk.cage.M12L24): """New topology definition.""" _vertex_prototypes = ( stk.cage.NonLinearVertex(0, np.array([1.25, 0, 0])), stk.cage.NonLinearVertex(1, np.array([-1.25, 0, 0])), stk.cage.NonLinearVertex(2, np.array([0, 1.25, 0])), stk.cage.NonLinearVertex(3, np.array([0, -1.25, 0])), stk.cage.NonLinearVertex(4, np.array([0.625, 0.625, 0.88])), stk.cage.NonLinearVertex(5, np.array([0.625, -0.625, 0.88])), stk.cage.NonLinearVertex(6, np.array([-0.625, 0.625, 0.88])), stk.cage.NonLinearVertex(7, np.array([-0.625, -0.625, 0.88])), stk.cage.NonLinearVertex(8, np.array([0.625, 0.625, -0.88])), stk.cage.NonLinearVertex(9, np.array([0.625, -0.625, -0.88])), stk.cage.NonLinearVertex(10, np.array([-0.625, 0.625, -0.88])), stk.cage.NonLinearVertex(11, np.array([-0.625, -0.625, -0.88])), stk.cage.LinearVertex( 12, np.array([0.9, 0.31, 0.31]), use_neighbor_placement=False ), stk.cage.LinearVertex( 13, np.array([0.9, 0.31, -0.31]), use_neighbor_placement=False ), stk.cage.LinearVertex( 14, np.array([0.9, -0.31, 0.31]), use_neighbor_placement=False ), stk.cage.LinearVertex( 15, np.array([0.9, -0.31, -0.31]), use_neighbor_placement=False ), stk.cage.LinearVertex( 16, np.array([-0.9, 0.31, 0.31]), use_neighbor_placement=False ), stk.cage.LinearVertex( 17, np.array([-0.9, 0.31, -0.31]), use_neighbor_placement=False ), stk.cage.LinearVertex( 18, np.array([-0.9, -0.31, 0.31]), use_neighbor_placement=False ), stk.cage.LinearVertex( 19, np.array([-0.9, -0.31, -0.31]), use_neighbor_placement=False ), stk.cage.LinearVertex( 20, np.array([0.31, 0.9, 0.31]), use_neighbor_placement=False ), stk.cage.LinearVertex( 21, np.array([0.31, 0.9, -0.31]), use_neighbor_placement=False ), stk.cage.LinearVertex( 22, np.array([-0.31, 0.9, 0.31]), use_neighbor_placement=False ), stk.cage.LinearVertex( 23, np.array([-0.31, 0.9, -0.31]), use_neighbor_placement=False ), stk.cage.LinearVertex( 24, np.array([0.31, -0.9, 0.31]), use_neighbor_placement=False ), stk.cage.LinearVertex( 25, np.array([0.31, -0.9, -0.31]), use_neighbor_placement=False ), stk.cage.LinearVertex( 26, np.array([-0.31, -0.9, 0.31]), use_neighbor_placement=False ), stk.cage.LinearVertex( 27, np.array([-0.31, -0.9, -0.31]), use_neighbor_placement=False ), stk.cage.LinearVertex( 28, np.array([0.58, 0, 0.82]), use_neighbor_placement=False ), stk.cage.LinearVertex( 29, np.array([-0.58, 0, 0.82]), use_neighbor_placement=False ), stk.cage.LinearVertex( 30, np.array([0, 0.58, 0.82]), use_neighbor_placement=False ), stk.cage.LinearVertex( 31, np.array([0, -0.58, 0.82]), use_neighbor_placement=False ), stk.cage.LinearVertex( 32, np.array([0.58, 0, -0.82]), use_neighbor_placement=False ), stk.cage.LinearVertex( 33, np.array([-0.58, 0, -0.82]), use_neighbor_placement=False ), stk.cage.LinearVertex( 34, np.array([0, 0.58, -0.82]), use_neighbor_placement=False ), stk.cage.LinearVertex( 35, np.array([0, -0.58, -0.82]), use_neighbor_placement=False ), ) _edge_prototypes = ( stk.Edge(0, _vertex_prototypes[0], _vertex_prototypes[12]), stk.Edge(1, _vertex_prototypes[0], _vertex_prototypes[13]), stk.Edge(2, _vertex_prototypes[0], _vertex_prototypes[14]), stk.Edge(3, _vertex_prototypes[0], _vertex_prototypes[15]), stk.Edge(4, _vertex_prototypes[1], _vertex_prototypes[16]), stk.Edge(5, _vertex_prototypes[1], _vertex_prototypes[17]), stk.Edge(6, _vertex_prototypes[1], _vertex_prototypes[18]), stk.Edge(7, _vertex_prototypes[1], _vertex_prototypes[19]), stk.Edge(8, _vertex_prototypes[2], _vertex_prototypes[20]), stk.Edge(9, _vertex_prototypes[2], _vertex_prototypes[21]), stk.Edge(10, _vertex_prototypes[2], _vertex_prototypes[22]), stk.Edge(11, _vertex_prototypes[2], _vertex_prototypes[23]), stk.Edge(12, _vertex_prototypes[3], _vertex_prototypes[24]), stk.Edge(13, _vertex_prototypes[3], _vertex_prototypes[25]), stk.Edge(14, _vertex_prototypes[3], _vertex_prototypes[26]), stk.Edge(15, _vertex_prototypes[3], _vertex_prototypes[27]), stk.Edge(16, _vertex_prototypes[4], _vertex_prototypes[28]), stk.Edge(17, _vertex_prototypes[4], _vertex_prototypes[30]), stk.Edge(18, _vertex_prototypes[4], _vertex_prototypes[12]), stk.Edge(19, _vertex_prototypes[4], _vertex_prototypes[20]), stk.Edge(20, _vertex_prototypes[5], _vertex_prototypes[14]), stk.Edge(21, _vertex_prototypes[5], _vertex_prototypes[24]), stk.Edge(22, _vertex_prototypes[5], _vertex_prototypes[28]), stk.Edge(23, _vertex_prototypes[5], _vertex_prototypes[31]), stk.Edge(24, _vertex_prototypes[6], _vertex_prototypes[16]), stk.Edge(25, _vertex_prototypes[6], _vertex_prototypes[29]), stk.Edge(26, _vertex_prototypes[6], _vertex_prototypes[30]), stk.Edge(27, _vertex_prototypes[6], _vertex_prototypes[22]), stk.Edge(28, _vertex_prototypes[7], _vertex_prototypes[18]), stk.Edge(29, _vertex_prototypes[7], _vertex_prototypes[26]), stk.Edge(30, _vertex_prototypes[7], _vertex_prototypes[31]), stk.Edge(31, _vertex_prototypes[7], _vertex_prototypes[29]), stk.Edge(32, _vertex_prototypes[8], _vertex_prototypes[13]), stk.Edge(33, _vertex_prototypes[8], _vertex_prototypes[32]), stk.Edge(34, _vertex_prototypes[8], _vertex_prototypes[34]), stk.Edge(35, _vertex_prototypes[8], _vertex_prototypes[21]), stk.Edge(36, _vertex_prototypes[9], _vertex_prototypes[15]), stk.Edge(37, _vertex_prototypes[9], _vertex_prototypes[32]), stk.Edge(38, _vertex_prototypes[9], _vertex_prototypes[35]), stk.Edge(39, _vertex_prototypes[9], _vertex_prototypes[25]), stk.Edge(40, _vertex_prototypes[10], _vertex_prototypes[17]), stk.Edge(41, _vertex_prototypes[10], _vertex_prototypes[23]), stk.Edge(42, _vertex_prototypes[10], _vertex_prototypes[34]), stk.Edge(43, _vertex_prototypes[10], _vertex_prototypes[33]), stk.Edge(44, _vertex_prototypes[11], _vertex_prototypes[19]), stk.Edge(45, _vertex_prototypes[11], _vertex_prototypes[33]), stk.Edge(46, _vertex_prototypes[11], _vertex_prototypes[27]), stk.Edge(47, _vertex_prototypes[11], _vertex_prototypes[35]), ) @staticmethod def _get_scale( building_block_vertices: dict[ # noqa: ARG004 stk.BuildingBlock, abc.Sequence[stk.Vertex] ], scale_multiplier: float, # noqa: ARG004 ) -> float: return 10
[docs] def get_vertex_alignments(self) -> dict[int, int]: """Get the vertex alignments.""" return self._vertex_alignments
[docs] class M6L122(stk.cage.Cage): """Cage topology.""" _x = 2 * np.sqrt(3) / 4 _y = 2 _non_linears = ( stk.cage.NonLinearVertex(0, np.array([0, _x, 1])), stk.cage.NonLinearVertex(1, np.array([_y / 2, -_x, 1])), stk.cage.NonLinearVertex(2, np.array([-_y / 2, -_x, 1])), stk.cage.NonLinearVertex(3, np.array([0, _x, -1])), stk.cage.NonLinearVertex(4, np.array([_y / 2, -_x, -1])), stk.cage.NonLinearVertex(5, np.array([-_y / 2, -_x, -1])), ) paired_wall_1_coord = ( sum( vertex.get_position() for vertex in (_non_linears[0], _non_linears[1]) ) / 2 ) wall_1_shift = np.array((0.2, 0.2, 0)) paired_wall_2_coord = ( sum( vertex.get_position() for vertex in (_non_linears[2], _non_linears[3]) ) / 2 ) wall_2_shift = np.array((0.2, 0.2, 0)) paired_wall_3_coord = ( sum( vertex.get_position() for vertex in (_non_linears[4], _non_linears[5]) ) / 2 ) wall_3_shift = np.array((0.2, 0.2, 0)) _vertex_prototypes = ( *_non_linears, stk.cage.LinearVertex( 6, np.array([0, _x, 0]) + wall_1_shift, use_neighbor_placement=False, ), stk.cage.LinearVertex( 7, np.array([0, _x, 0]) - wall_1_shift, use_neighbor_placement=False, ), stk.cage.LinearVertex( 8, np.array([_y / 2, -_x, 0]) + wall_2_shift, use_neighbor_placement=False, ), stk.cage.LinearVertex( 9, np.array([_y / 2, -_x, 0]) - wall_2_shift, use_neighbor_placement=False, ), stk.cage.LinearVertex( 10, np.array([-_y / 2, -_x, 0]) + wall_3_shift, use_neighbor_placement=False, ), stk.cage.LinearVertex( 11, np.array([-_y / 2, -_x, 0]) - wall_3_shift, use_neighbor_placement=False, ), ## stk.cage.LinearVertex.init_at_center( id=12, vertices=(_non_linears[0], _non_linears[1]), ), stk.cage.LinearVertex.init_at_center( id=13, vertices=(_non_linears[1], _non_linears[2]), ), stk.cage.LinearVertex.init_at_center( id=14, vertices=(_non_linears[2], _non_linears[0]), ), stk.cage.LinearVertex.init_at_center( id=15, vertices=(_non_linears[3], _non_linears[4]), ), stk.cage.LinearVertex.init_at_center( id=16, vertices=(_non_linears[4], _non_linears[5]), ), stk.cage.LinearVertex.init_at_center( id=17, vertices=(_non_linears[5], _non_linears[3]), ), ) _edge_prototypes = ( stk.Edge(0, _vertex_prototypes[0], _vertex_prototypes[12]), stk.Edge(1, _vertex_prototypes[0], _vertex_prototypes[14]), stk.Edge(2, _vertex_prototypes[0], _vertex_prototypes[6]), stk.Edge(3, _vertex_prototypes[0], _vertex_prototypes[7]), stk.Edge(4, _vertex_prototypes[1], _vertex_prototypes[12]), stk.Edge(5, _vertex_prototypes[1], _vertex_prototypes[13]), stk.Edge(6, _vertex_prototypes[1], _vertex_prototypes[8]), stk.Edge(7, _vertex_prototypes[1], _vertex_prototypes[9]), stk.Edge(8, _vertex_prototypes[2], _vertex_prototypes[13]), stk.Edge(9, _vertex_prototypes[2], _vertex_prototypes[14]), stk.Edge(10, _vertex_prototypes[2], _vertex_prototypes[10]), stk.Edge(11, _vertex_prototypes[2], _vertex_prototypes[11]), stk.Edge(12, _vertex_prototypes[3], _vertex_prototypes[15]), stk.Edge(13, _vertex_prototypes[3], _vertex_prototypes[17]), stk.Edge(14, _vertex_prototypes[3], _vertex_prototypes[6]), stk.Edge(15, _vertex_prototypes[3], _vertex_prototypes[7]), stk.Edge(16, _vertex_prototypes[4], _vertex_prototypes[15]), stk.Edge(17, _vertex_prototypes[4], _vertex_prototypes[16]), stk.Edge(18, _vertex_prototypes[4], _vertex_prototypes[8]), stk.Edge(19, _vertex_prototypes[4], _vertex_prototypes[9]), stk.Edge(20, _vertex_prototypes[5], _vertex_prototypes[16]), stk.Edge(21, _vertex_prototypes[5], _vertex_prototypes[17]), stk.Edge(22, _vertex_prototypes[5], _vertex_prototypes[10]), stk.Edge(23, _vertex_prototypes[5], _vertex_prototypes[11]), )
[docs] class M8L162(stk.cage.Cage): """Cage topology.""" _non_linears = ( stk.cage.NonLinearVertex(0, np.array([1, 1, 1])), stk.cage.NonLinearVertex(1, np.array([1, -1, 1])), stk.cage.NonLinearVertex(2, np.array([-1, -1, 1])), stk.cage.NonLinearVertex(3, np.array([-1, 1, 1])), stk.cage.NonLinearVertex(4, np.array([1, 1, -1])), stk.cage.NonLinearVertex(5, np.array([1, -1, -1])), stk.cage.NonLinearVertex(6, np.array([-1, -1, -1])), stk.cage.NonLinearVertex(7, np.array([-1, 1, -1])), ) paired_wall_1_coord = ( sum( vertex.get_position() for vertex in (_non_linears[0], _non_linears[1]) ) / 2 ) wall_1_shift = np.array((0.2, 0.2, 0)) paired_wall_2_coord = ( sum( vertex.get_position() for vertex in (_non_linears[2], _non_linears[3]) ) / 2 ) wall_2_shift = np.array((0.2, 0.2, 0)) paired_wall_3_coord = ( sum( vertex.get_position() for vertex in (_non_linears[4], _non_linears[5]) ) / 2 ) wall_3_shift = np.array((0.2, 0.2, 0)) paired_wall_4_coord = ( sum( vertex.get_position() for vertex in (_non_linears[6], _non_linears[7]) ) / 2 ) wall_4_shift = np.array((0.2, 0.2, 0)) _vertex_prototypes = ( *_non_linears, stk.cage.LinearVertex( 8, np.array([1, 1, 0]) + wall_1_shift, use_neighbor_placement=False, ), stk.cage.LinearVertex( 9, np.array([1, 1, 0]) - wall_1_shift, use_neighbor_placement=False, ), stk.cage.LinearVertex( 10, np.array([1, -1, 0]) + wall_2_shift, use_neighbor_placement=False, ), stk.cage.LinearVertex( 11, np.array([1, -1, 0]) - wall_2_shift, use_neighbor_placement=False, ), stk.cage.LinearVertex( 12, np.array([-1, -1, 0]) + wall_3_shift, use_neighbor_placement=False, ), stk.cage.LinearVertex( 13, np.array([-1, -1, 0]) - wall_3_shift, use_neighbor_placement=False, ), stk.cage.LinearVertex( 14, np.array([-1, 1, 0]) + wall_4_shift, use_neighbor_placement=False, ), stk.cage.LinearVertex( 15, np.array([-1, 1, 0]) - wall_4_shift, use_neighbor_placement=False, ), stk.cage.LinearVertex.init_at_center( id=16, vertices=(_non_linears[0], _non_linears[1]), ), stk.cage.LinearVertex.init_at_center( id=17, vertices=(_non_linears[1], _non_linears[2]), ), stk.cage.LinearVertex.init_at_center( id=18, vertices=(_non_linears[2], _non_linears[3]), ), stk.cage.LinearVertex.init_at_center( id=19, vertices=(_non_linears[3], _non_linears[0]), ), stk.cage.LinearVertex.init_at_center( id=20, vertices=(_non_linears[4], _non_linears[5]), ), stk.cage.LinearVertex.init_at_center( id=21, vertices=(_non_linears[5], _non_linears[6]), ), stk.cage.LinearVertex.init_at_center( id=22, vertices=(_non_linears[6], _non_linears[7]), ), stk.cage.LinearVertex.init_at_center( id=23, vertices=(_non_linears[7], _non_linears[4]), ), ) _edge_prototypes = ( stk.Edge(0, _vertex_prototypes[0], _vertex_prototypes[16]), stk.Edge(1, _vertex_prototypes[0], _vertex_prototypes[19]), stk.Edge(2, _vertex_prototypes[0], _vertex_prototypes[8]), stk.Edge(3, _vertex_prototypes[0], _vertex_prototypes[9]), stk.Edge(4, _vertex_prototypes[1], _vertex_prototypes[16]), stk.Edge(5, _vertex_prototypes[1], _vertex_prototypes[17]), stk.Edge(6, _vertex_prototypes[1], _vertex_prototypes[10]), stk.Edge(7, _vertex_prototypes[1], _vertex_prototypes[11]), stk.Edge(8, _vertex_prototypes[2], _vertex_prototypes[17]), stk.Edge(9, _vertex_prototypes[2], _vertex_prototypes[18]), stk.Edge(10, _vertex_prototypes[2], _vertex_prototypes[12]), stk.Edge(11, _vertex_prototypes[2], _vertex_prototypes[13]), stk.Edge(12, _vertex_prototypes[3], _vertex_prototypes[18]), stk.Edge(13, _vertex_prototypes[3], _vertex_prototypes[19]), stk.Edge(14, _vertex_prototypes[3], _vertex_prototypes[14]), stk.Edge(15, _vertex_prototypes[3], _vertex_prototypes[15]), stk.Edge(16, _vertex_prototypes[4], _vertex_prototypes[20]), stk.Edge(17, _vertex_prototypes[4], _vertex_prototypes[23]), stk.Edge(18, _vertex_prototypes[4], _vertex_prototypes[8]), stk.Edge(19, _vertex_prototypes[4], _vertex_prototypes[9]), stk.Edge(20, _vertex_prototypes[5], _vertex_prototypes[20]), stk.Edge(21, _vertex_prototypes[5], _vertex_prototypes[21]), stk.Edge(22, _vertex_prototypes[5], _vertex_prototypes[10]), stk.Edge(23, _vertex_prototypes[5], _vertex_prototypes[11]), stk.Edge(24, _vertex_prototypes[6], _vertex_prototypes[21]), stk.Edge(25, _vertex_prototypes[6], _vertex_prototypes[22]), stk.Edge(26, _vertex_prototypes[6], _vertex_prototypes[12]), stk.Edge(27, _vertex_prototypes[6], _vertex_prototypes[13]), stk.Edge(28, _vertex_prototypes[7], _vertex_prototypes[22]), stk.Edge(29, _vertex_prototypes[7], _vertex_prototypes[23]), stk.Edge(30, _vertex_prototypes[7], _vertex_prototypes[14]), stk.Edge(31, _vertex_prototypes[7], _vertex_prototypes[15]), )