03 August 2025 08:04:14 PM rcm_test(): C version Test rcm(). TEST01 ADJ_SET sets up an adjacency matrix incrementally. ADJ_SET():: Initializing adjacency information. Number of nodes NODE_NUM = 10 Maximum adjacency ADJ_MAX = 90 Creating and recording adjacency information: 4 8 8 10 2 4 8 3 6 5 7 4 6 10 10 7 8 2 7 1 3 2 9 2 5 2 2 10 3 6 9 7 3 7 6 5 10 3 8 6 8 5 9 3 4 9 10 1 10 6 1 2 7 9 4 1 1 5 1 3 10 10 9 3 6 4 8 6 7 6 1 5 10 10 8 3 8 7 4 7 2 5 9 9 4 3 9 4 7 10 6 7 9 5 10 4 9 7 10 5 3 10 10 2 9 7 5 7 3 8 4 5 3 2 3 6 5 2 10 2 2 5 8 10 10 7 4 8 4 3 3 6 3 2 8 2 8 2 8 1 10 1 6 2 3 8 8 7 10 7 8 1 Random adjacency matrix: Sparse adjacency structure: Number of nodes = 10 Number of adjacencies = 76 Node Min Max Nonzeros 1 1 7 2 3 4 5 7 8 10 2 8 15 1 3 4 5 6 8 9 10 3 16 23 1 2 4 6 7 8 9 10 4 24 32 1 2 3 5 6 7 8 9 10 5 33 40 1 2 4 6 7 8 9 10 6 41 47 2 3 4 5 7 8 10 7 48 55 1 3 4 5 6 8 9 10 8 56 63 1 2 3 4 5 6 7 10 9 64 68 2 3 4 5 7 10 69 76 1 2 3 4 5 6 7 8 Nonzero structure of matrix: 1 D X X X X . X X . X 2 X D X X X X . X X X 3 X X D X . X X X X X 4 X X X D X X X X X X 5 X X . X D X X X X X 6 . X X X X D X X . X 7 X . X X X X D X X X 8 X X X X X X X D . X 9 . X X X X . X . D . 10 X X X X X X X X . D Lower bandwidth = 9 Lower envelope contains 38 TEST02 GENRCM reorders the nodes in a graph using the Reverse Cuthill McKee algorithm. Adjacency matrix: Sparse adjacency structure: Number of nodes = 10 Number of adjacencies = 28 Node Min Max Nonzeros 1 1 2 4 6 2 3 6 3 5 7 10 3 7 9 2 4 5 4 10 13 1 3 6 9 5 14 16 2 3 7 6 17 20 1 4 7 8 7 21 24 2 5 6 8 8 25 26 6 7 9 27 27 4 10 28 28 2 Nonzero structure of matrix: 1 D . . X . X . . . . 2 . D X . X . X . . X 3 . X D X X . . . . . 4 X . X D . X . . X . 5 . X X . D . X . . . 6 X . . X . D X X . . 7 . X . . X X D X . . 8 . . . . . X X D . . 9 . . . X . . . . D . 10 . X . . . . . . . D Lower bandwidth = 8 Lower envelope contains 14 ADJ bandwidth = 17 The RCM permutation and inverse: 1 9 2 2 1 9 3 8 8 4 6 5 5 4 7 6 7 4 7 5 6 8 3 3 9 2 1 10 10 10 Permuted adjacency matrix: Nonzero structure of matrix: 1 D . . . X . . . . . 2 . D . X X . . . . . 3 . . D X . X . . . . 4 . X X D X X . . . . 5 X X . X D . . X . . 6 . . X X . D X . X . 7 . . . . . X D X X . 8 . . . . X . X D X . 9 . . . . . X X X D X 10 . . . . . . . . X D Lower bandwidth = 4 Lower envelope contains 14 nonzeros. ADJ (permuted) bandwidth = 9 TEST03 GENRCM generates the Reverse Cuthill McKee ordering. Do the test twice. On the second test, randomly permute the initial nodes. TRIANGLE_NODE: Row: 0 1 2 Col 0: 1 2 6 1: 7 6 2 2: 2 3 7 3: 8 7 3 4: 3 4 8 5: 9 8 4 6: 4 5 9 7: 10 9 5 8: 6 7 11 9: 12 11 7 10: 7 8 12 11: 13 12 8 12: 8 9 13 13: 14 13 9 14: 9 10 14 15: 15 14 10 16: 11 12 16 17: 17 16 12 18: 12 13 17 19: 18 17 13 20: 13 14 18 21: 19 18 14 22: 14 15 19 23: 20 19 15 24: 16 17 21 25: 22 21 17 26: 17 18 22 27: 23 22 18 28: 18 19 23 29: 24 23 19 30: 19 20 24 31: 25 24 20 ADJ array: Sparse adjacency structure: Number of nodes = 25 Number of adjacencies = 137 Node Min Max Nonzeros 1 1 3 1 2 6 2 4 8 1 2 3 6 7 3 9 13 2 3 4 7 8 4 14 18 3 4 5 8 9 5 19 22 4 5 9 10 6 23 27 1 2 6 7 11 7 28 34 2 3 6 7 8 11 12 8 35 41 3 4 7 8 9 12 13 9 42 48 4 5 8 9 10 13 14 10 49 53 5 9 10 14 15 11 54 58 6 7 11 12 16 12 59 65 7 8 11 12 13 16 17 13 66 72 8 9 12 13 14 17 18 14 73 79 9 10 13 14 15 18 19 15 80 84 10 14 15 19 20 16 85 89 11 12 16 17 21 17 90 96 12 13 16 17 18 21 22 18 97 103 13 14 17 18 19 22 23 19 104 110 14 15 18 19 20 23 24 20 111 115 15 19 20 24 25 21 116 119 16 17 21 22 22 120 124 17 18 21 22 23 23 125 129 18 19 22 23 24 24 130 134 19 20 23 24 25 25 135 137 20 24 25 ADJ bandwidth = 11 The RCM permutation: 0: 1 1: 6 2: 2 3: 11 4: 7 5: 3 6: 16 7: 12 8: 8 9: 4 10: 21 11: 17 12: 13 13: 9 14: 5 15: 22 16: 18 17: 14 18: 10 19: 23 20: 19 21: 15 22: 24 23: 20 24: 25 Permuted ADJ bandwidth = 11 The random permutation: 0: 4 1: 14 2: 1 3: 5 4: 9 5: 15 6: 22 7: 18 8: 21 9: 10 10: 13 11: 25 12: 6 13: 24 14: 16 15: 12 16: 17 17: 2 18: 19 19: 20 20: 11 21: 8 22: 23 23: 7 24: 3 TRIANGLE_NODE: Row: 0 1 2 Col 0: 4 14 15 1: 22 15 14 2: 14 1 22 3: 18 22 1 4: 1 5 18 5: 21 18 5 6: 5 9 21 7: 10 21 9 8: 15 22 13 9: 25 13 22 10: 22 18 25 11: 6 25 18 12: 18 21 6 13: 24 6 21 14: 21 10 24 15: 16 24 10 16: 13 25 12 17: 17 12 25 18: 25 6 17 19: 2 17 6 20: 6 24 2 21: 19 2 24 22: 24 16 19 23: 20 19 16 24: 12 17 11 25: 8 11 17 26: 17 2 8 27: 23 8 2 28: 2 19 23 29: 7 23 19 30: 19 20 7 31: 3 7 20 ADJ array: Sparse adjacency structure: Number of nodes = 25 Number of adjacencies = 137 Node Min Max Nonzeros 1 1 5 1 5 14 18 22 2 6 12 2 6 8 17 19 23 24 3 13 15 3 7 20 4 16 18 4 14 15 5 19 23 1 5 9 18 21 6 24 30 2 6 17 18 21 24 25 7 31 35 3 7 19 20 23 8 36 40 2 8 11 17 23 9 41 44 5 9 10 21 10 45 49 9 10 16 21 24 11 50 53 8 11 12 17 12 54 58 11 12 13 17 25 13 59 63 12 13 15 22 25 14 64 68 1 4 14 15 22 15 69 73 4 13 14 15 22 16 74 78 10 16 19 20 24 17 79 85 2 6 8 11 12 17 25 18 86 92 1 5 6 18 21 22 25 19 93 99 2 7 16 19 20 23 24 20 100 104 3 7 16 19 20 21 105 111 5 6 9 10 18 21 24 22 112 118 1 13 14 15 18 22 25 23 119 123 2 7 8 19 23 24 124 130 2 6 10 16 19 21 24 25 131 137 6 12 13 17 18 22 25 ADJ bandwidth = 45 The RCM permutation: 0: 3 1: 7 2: 20 3: 23 4: 19 5: 16 6: 8 7: 2 8: 24 9: 10 10: 11 11: 17 12: 6 13: 21 14: 9 15: 12 16: 25 17: 18 18: 5 19: 13 20: 22 21: 1 22: 15 23: 14 24: 4 Permuted ADJ bandwidth = 11 TEST04 GENRCM generates the Reverse Cuthill McKee ordering. The random permutation: 0: 23 1: 21 2: 11 3: 16 4: 17 5: 15 6: 20 7: 9 8: 18 9: 22 10: 6 11: 25 12: 7 13: 24 14: 1 15: 10 16: 5 17: 3 18: 14 19: 12 20: 13 21: 2 22: 4 23: 8 24: 19 Permuted TRIANGLE_NODE Row: 0 1 2 3 4 5 Col 0: 23 11 6 21 20 15 1: 7 6 11 25 20 9 2: 11 17 7 16 18 9 3: 1 7 17 24 18 22 4: 6 7 13 25 5 10 5: 4 13 7 2 5 3 6: 7 1 4 24 14 3 7: 19 4 1 8 14 12 ADJ array: Sparse adjacency structure: Number of nodes = 25 Number of adjacencies = 217 Node Min Max Nonzeros 1 1 12 1 3 4 7 8 12 14 17 18 19 22 24 2 13 18 2 3 4 5 7 13 3 19 27 1 2 3 4 5 7 13 14 24 4 28 39 1 2 3 4 5 7 8 12 13 14 19 24 5 40 48 2 3 4 5 6 7 10 13 25 6 49 60 5 6 7 9 10 11 13 15 20 21 23 25 7 61 79 1 2 3 4 5 6 7 9 10 11 13 14 16 17 18 20 22 24 25 8 80 85 1 4 8 12 14 19 9 86 94 6 7 9 11 16 17 18 20 25 10 95 100 5 6 7 10 13 25 11 101 112 6 7 9 11 15 16 17 18 20 21 23 25 12 113 118 1 4 8 12 14 19 13 119 127 2 3 4 5 6 7 10 13 25 14 128 136 1 3 4 7 8 12 14 19 24 15 137 142 6 11 15 20 21 23 16 143 148 7 9 11 16 17 18 17 149 157 1 7 9 11 16 17 18 22 24 18 158 166 1 7 9 11 16 17 18 22 24 19 167 172 1 4 8 12 14 19 20 173 181 6 7 9 11 15 20 21 23 25 21 182 187 6 11 15 20 21 23 22 188 193 1 7 17 18 22 24 23 194 199 6 11 15 20 21 23 24 200 208 1 3 4 7 14 17 18 22 24 25 209 217 5 6 7 9 10 11 13 20 25 ADJ bandwidth = 47 The RCM permutation: 0: 23 1: 21 2: 15 3: 25 4: 20 5: 10 6: 6 7: 11 8: 16 9: 9 10: 13 11: 5 12: 2 13: 7 14: 24 15: 18 16: 17 17: 22 18: 3 19: 4 20: 14 21: 19 22: 12 23: 1 24: 8 Permuted ADJ bandwidth = 21 TEST05 GRAPH_01_SIZE returns the sizes for graph 1. GRAPH_01_ADJ returns the adjacency for graph 1. ADJ_PRINT prints the adjacency information. Adjacency for GRAPH_01: Sparse adjacency structure: Number of nodes = 10 Number of adjacencies = 28 Node Min Max Nonzeros 1 1 2 4 6 2 3 6 3 5 7 10 3 7 9 2 4 5 4 10 13 1 3 6 9 5 14 16 2 3 7 6 17 20 1 4 7 8 7 21 24 2 5 6 8 8 25 26 6 7 9 27 27 4 10 28 28 2 Nonzero structure of matrix: 1 D . . X . X . . . . 2 . D X . X . X . . X 3 . X D X X . . . . . 4 X . X D . X . . X . 5 . X X . D . X . . . 6 X . . X . D X X . . 7 . X . . X X D X . . 8 . . . . . X X D . . 9 . . . X . . . . D . 10 . X . . . . . . . D Lower bandwidth = 8 Lower envelope contains 14 TEST06 LEVEL_SET computes the level sets of a graph, given a root node (which defines level 1). Adjacency matrix: Sparse adjacency structure: Number of nodes = 10 Number of adjacencies = 28 Node Min Max Nonzeros 1 1 2 4 6 2 3 6 3 5 7 10 3 7 9 2 4 5 4 10 13 1 3 6 9 5 14 16 2 3 7 6 17 20 1 4 7 8 7 21 24 2 5 6 8 8 25 26 6 7 9 27 27 4 10 28 28 2 Nonzero structure of matrix: 1 D . . X . X . . . . 2 . D X . X . X . . X 3 . X D X X . . . . . 4 X . X D . X . . X . 5 . X X . D . X . . . 6 X . . X . D X X . . 7 . X . . X X D X . . 8 . . . . . X X D . . 9 . . . X . . . . D . 10 . X . . . . . . . D Lower bandwidth = 8 Lower envelope contains 14 LEVEL_SET_PRINT(): Show the level set structure of a rooted graph. The number of nodes is 10 The number of levels is 5 Level Min Max Nonzeros 1 1 1 10 2 2 2 2 3 3 5 3 5 7 4 6 8 4 6 8 5 9 10 1 9 LEVEL_SET_PRINT(): Show the level set structure of a rooted graph. The number of nodes is 10 The number of levels is 4 Level Min Max Nonzeros 1 1 1 7 2 2 5 2 5 6 8 3 6 9 3 10 1 4 4 10 10 9 LEVEL_SET_PRINT(): Show the level set structure of a rooted graph. The number of nodes is 10 The number of levels is 4 Level Min Max Nonzeros 1 1 1 5 2 2 4 2 3 7 3 5 8 10 4 6 8 4 9 10 1 9 TEST07 ROOT_FIND is given a node in the graph, and returns a better node to use as a starting point for reordering. Adjacency matrix: Sparse adjacency structure: Number of nodes = 10 Number of adjacencies = 28 Node Min Max Nonzeros 1 1 2 4 6 2 3 6 3 5 7 10 3 7 9 2 4 5 4 10 13 1 3 6 9 5 14 16 2 3 7 6 17 20 1 4 7 8 7 21 24 2 5 6 8 8 25 26 6 7 9 27 27 4 10 28 28 2 Nonzero structure of matrix: 1 D . . X . X . . . . 2 . D X . X . X . . X 3 . X D X X . . . . . 4 X . X D . X . . X . 5 . X X . D . X . . . 6 X . . X . D X X . . 7 . X . . X X D X . . 8 . . . . . X X D . . 9 . . . X . . . . D . 10 . X . . . . . . . D Lower bandwidth = 8 Lower envelope contains 14 Starting root = 1 Suggested root = 10 Number of levels = 5 Starting root = 2 Suggested root = 10 Number of levels = 5 Starting root = 3 Suggested root = 8 Number of levels = 4 Starting root = 4 Suggested root = 9 Number of levels = 5 Starting root = 5 Suggested root = 10 Number of levels = 5 Starting root = 6 Suggested root = 9 Number of levels = 5 Starting root = 7 Suggested root = 10 Number of levels = 5 Starting root = 8 Suggested root = 10 Number of levels = 5 Starting root = 9 Suggested root = 10 Number of levels = 5 Starting root = 10 Suggested root = 9 Number of levels = 5 TEST08 TRIANGULATION_ORDER3_ADJ_COUNT counts the (lower) adjacencies defined by a triangulation. TRIANGLE_NODE Row: 0 1 2 Col 0: 1 2 6 1: 7 6 2 2: 2 3 7 3: 8 7 3 4: 3 4 8 5: 9 8 4 6: 4 5 9 7: 10 9 5 8: 6 7 11 9: 12 11 7 10: 7 8 12 11: 13 12 8 12: 8 9 13 13: 14 13 9 14: 9 10 14 15: 15 14 10 16: 11 12 16 17: 17 16 12 18: 12 13 17 19: 18 17 13 20: 13 14 18 21: 19 18 14 22: 14 15 19 23: 20 19 15 24: 16 17 21 25: 22 21 17 26: 17 18 22 27: 23 22 18 28: 18 19 23 29: 24 23 19 30: 19 20 24 31: 25 24 20 ADJ_ROW 0: 1 1: 4 2: 9 3: 14 4: 19 5: 23 6: 28 7: 35 8: 42 9: 49 10: 54 11: 59 12: 66 13: 73 14: 80 15: 85 16: 90 17: 97 18: 104 19: 111 20: 116 21: 120 22: 125 23: 130 24: 135 25: 138 TEST09 TRIANGULATION_ORDER3_ADJ_SET sets the (lower) adjacencies defined by a triangulation. TRIANGLE_NODE Row: 0 1 2 Col 0: 1 2 6 1: 7 6 2 2: 2 3 7 3: 8 7 3 4: 3 4 8 5: 9 8 4 6: 4 5 9 7: 10 9 5 8: 6 7 11 9: 12 11 7 10: 7 8 12 11: 13 12 8 12: 8 9 13 13: 14 13 9 14: 9 10 14 15: 15 14 10 16: 11 12 16 17: 17 16 12 18: 12 13 17 19: 18 17 13 20: 13 14 18 21: 19 18 14 22: 14 15 19 23: 20 19 15 24: 16 17 21 25: 22 21 17 26: 17 18 22 27: 23 22 18 28: 18 19 23 29: 24 23 19 30: 19 20 24 31: 25 24 20 ADJ array: Sparse adjacency structure: Number of nodes = 25 Number of adjacencies = 137 Node Min Max Nonzeros 1 1 3 1 2 6 2 4 8 1 2 3 6 7 3 9 13 2 3 4 7 8 4 14 18 3 4 5 8 9 5 19 22 4 5 9 10 6 23 27 1 2 6 7 11 7 28 34 2 3 6 7 8 11 12 8 35 41 3 4 7 8 9 12 13 9 42 48 4 5 8 9 10 13 14 10 49 53 5 9 10 14 15 11 54 58 6 7 11 12 16 12 59 65 7 8 11 12 13 16 17 13 66 72 8 9 12 13 14 17 18 14 73 79 9 10 13 14 15 18 19 15 80 84 10 14 15 19 20 16 85 89 11 12 16 17 21 17 90 96 12 13 16 17 18 21 22 18 97 103 13 14 17 18 19 22 23 19 104 110 14 15 18 19 20 23 24 20 111 115 15 19 20 24 25 21 116 119 16 17 21 22 22 120 124 17 18 21 22 23 23 125 129 18 19 22 23 24 24 130 134 19 20 23 24 25 25 135 137 20 24 25 ADJ bandwidth = 11 TEST10 For a triangulation of a set of nodes, TRIANGULATION_NEIGHBOR_TRIANGLES determines the adjacency relationships between triangles. Triangles: Row: 0 1 2 Col 0: 3 4 1 1: 3 1 2 2: 3 2 8 3: 2 1 5 4: 8 2 13 5: 8 13 9 6: 3 8 9 7: 13 2 5 8: 9 13 7 9: 7 13 5 10: 6 7 5 11: 9 7 6 12: 10 9 6 13: 6 5 12 14: 11 6 12 15: 10 6 11 Triangle neighbors: Row: 0 1 2 Col 0: -1 2 -1 1: 4 3 1 2: 5 7 2 3: -1 8 2 4: 8 6 3 5: 9 7 5 6: 6 -1 3 7: 4 10 5 8: 10 12 6 9: 8 11 9 10: 10 14 12 11: 11 13 9 12: 12 16 -1 13: -1 15 11 14: 14 -1 16 15: 15 -1 13 TEST11 TRIANGULATION_ORDER6_ADJ_COUNT counts the (lower) adjacencies defined by a triangulation. ADJ_ROW 0: 1 1: 7 2: 13 3: 25 4: 31 5: 40 6: 46 7: 55 8: 64 9: 73 10: 79 11: 91 12: 100 13: 119 14: 128 15: 140 16: 146 17: 155 18: 164 19: 173 20: 179 21: 188 22: 194 23: 206 24: 212 25: 218 TEST12 TRIANGULATION_ORDER6_ADJ_SET sets the (lower) adjacencies defined by a triangulation. TRIANGLE_NODE Row: 0 1 2 3 4 5 Col 0: 1 3 11 2 7 6 1: 13 11 3 12 7 8 2: 3 5 13 4 9 8 3: 15 13 5 14 9 10 4: 11 13 21 12 17 16 5: 23 21 13 22 17 18 6: 13 15 23 14 19 18 7: 25 23 15 24 19 20 ADJ array: Sparse adjacency structure: Number of nodes = 25 Number of adjacencies = 217 Node Min Max Nonzeros 1 1 6 1 2 3 6 7 11 2 7 12 1 2 3 6 7 11 3 13 24 1 2 3 4 5 6 7 8 9 11 12 13 4 25 30 3 4 5 8 9 13 5 31 39 3 4 5 8 9 10 13 14 15 6 40 45 1 2 3 6 7 11 7 46 54 1 2 3 6 7 8 11 12 13 8 55 63 3 4 5 7 8 9 11 12 13 9 64 72 3 4 5 8 9 10 13 14 15 10 73 78 5 9 10 13 14 15 11 79 90 1 2 3 6 7 8 11 12 13 16 17 21 12 91 99 3 7 8 11 12 13 16 17 21 13 100 118 3 4 5 7 8 9 10 11 12 13 14 15 16 17 18 19 21 22 23 14 119 127 5 9 10 13 14 15 18 19 23 15 128 139 5 9 10 13 14 15 18 19 20 23 24 25 16 140 145 11 12 13 16 17 21 17 146 154 11 12 13 16 17 18 21 22 23 18 155 163 13 14 15 17 18 19 21 22 23 19 164 172 13 14 15 18 19 20 23 24 25 20 173 178 15 19 20 23 24 25 21 179 187 11 12 13 16 17 18 21 22 23 22 188 193 13 17 18 21 22 23 23 194 205 13 14 15 17 18 19 20 21 22 23 24 25 24 206 211 15 19 20 23 24 25 25 212 217 15 19 20 23 24 25 ADJ bandwidth = 21 rcm_test(): Normal end of execution. 03 August 2025 08:04:14 PM