Actual source code: ex2.c

  1: static char help[] = "Directly check a DMStag local-to-global scatter";

  3: #include <petscdm.h>
  4: #include <petscdmstag.h>

  6: static PetscErrorCode Test_3d_4x4x4_3x3x3(DM dmstag);

  8: int main(int argc, char **argv)
  9: {
 10:   DM       dmstag;
 11:   PetscInt dim, dof[4], i, elx, ely, elz;

 13:   PetscFunctionBeginUser;
 14:   PetscCall(PetscInitialize(&argc, &argv, (char *)0, help));
 15:   dim = 3;
 16:   for (i = 0; i < 4; ++i) dof[i] = 1;
 17:   elx = ely = elz = 4;
 18:   switch (dim) {
 19:   case 3:
 20:     PetscCall(DMStagCreate3d(PETSC_COMM_WORLD, DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, elx, ely, elz, PETSC_DECIDE, PETSC_DECIDE, PETSC_DECIDE, dof[0], dof[1], dof[2], dof[3], DMSTAG_STENCIL_BOX, 1, NULL, NULL, NULL, &dmstag));
 21:     break;
 22:   default:
 23:     SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_SUP, "No support for dimension %" PetscInt_FMT, dim);
 24:   }
 25:   PetscCall(DMSetFromOptions(dmstag));
 26:   PetscCall(DMSetUp(dmstag));
 27:   PetscCall(Test_3d_4x4x4_3x3x3(dmstag));
 28:   PetscCall(DMDestroy(&dmstag));
 29:   PetscCall(PetscFinalize());
 30:   return 0;
 31: }

 33: static PetscErrorCode Test_3d_4x4x4_3x3x3(DM dmstag)
 34: {
 35:   Vec          vecLocal, vecGlobal;
 36:   PetscInt     i, low, high, n;
 37:   PetscScalar *arr;

 39:   PetscFunctionBeginUser;

 41:   /* Check that grid and rank grid is as expected for this test */
 42:   {
 43:     PetscInt nRanks[3], n[3], dim;
 44:     PetscCall(DMGetDimension(dmstag, &dim));
 45:     PetscCheck(dim == 3, PetscObjectComm((PetscObject)dmstag), PETSC_ERR_SUP, "This is a 3d test");
 46:     PetscCall(DMStagGetNumRanks(dmstag, &nRanks[0], &nRanks[1], &nRanks[2]));
 47:     for (i = 0; i < 3; ++i) PetscCheck(nRanks[i] == 3, PetscObjectComm((PetscObject)dmstag), PETSC_ERR_SUP, "This test requires a 3x3x3 rank grid (run on 27 ranks)");
 48:     PetscCall(DMStagGetGlobalSizes(dmstag, &n[0], &n[1], &n[2]));
 49:     for (i = 0; i < 3; ++i) PetscCheck(n[i] == 4, PetscObjectComm((PetscObject)dmstag), PETSC_ERR_SUP, "This test requires a 4x4x4 element grid");
 50:   }

 52:   /* Populate global vector by converting the global index number to a scalar value. */
 53:   PetscCall(DMCreateGlobalVector(dmstag, &vecGlobal));
 54:   PetscCall(VecGetOwnershipRange(vecGlobal, &low, &high));
 55:   n = high - low;
 56:   PetscCall(VecGetArray(vecGlobal, &arr));
 57:   for (i = 0; i < n; ++i) arr[i] = (PetscScalar)(i + low);
 58:   PetscCall(VecRestoreArray(vecGlobal, &arr));

 60:   /* Populate a local vector initially with -1, then glocal->local scatter */
 61:   PetscCall(DMCreateLocalVector(dmstag, &vecLocal));
 62:   PetscCall(VecSet(vecLocal, -1.0));
 63:   PetscCall(DMGlobalToLocalBegin(dmstag, vecGlobal, INSERT_VALUES, vecLocal));
 64:   PetscCall(DMGlobalToLocalEnd(dmstag, vecGlobal, INSERT_VALUES, vecLocal));

 66:   /* Check that entries are as expected */
 67:   {
 68:     PetscInt           entriesGhost, nerr;
 69:     const PetscInt     maxErrPerRank = 3;
 70:     PetscScalar       *arrLocalExpected;
 71:     const PetscScalar *arrLocal;
 72:     PetscMPIInt        rank;

 74:     PetscCallMPI(MPI_Comm_rank(PetscObjectComm((PetscObject)dmstag), &rank));
 75:     PetscCall(VecGetSize(vecLocal, &entriesGhost)); /* entriesGhost happens to always be 216 here */
 76:     PetscCall(PetscMalloc1(entriesGhost, &arrLocalExpected));

 78:     /* Hand-computed expected entries (27 blocks of 8 in all cases) */
 79:     if (rank == 0) {
 80:       const PetscScalar arrLocalExpectedHere[] = {
 81:         0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,  15,  64,  65,  66,  67,  68,  69,  70,  71,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,  72,  73,  74,  75,
 82:         76,  77,  78,  79,  144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 176, 177, 178, 179, 180, 181, 182, 183, 32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
 83:         80,  81,  82,  83,  84,  85,  86,  87,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  88,  89,  90,  91,  92,  93,  94,  95,  160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
 84:         172, 173, 174, 175, 184, 185, 186, 187, 188, 189, 190, 191, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 356, 357, 358, 359, 360, 361, 362, 363, 340, 341, 342, 343, 344, 345, 346, 347,
 85:         348, 349, 350, 351, 352, 353, 354, 355, 364, 365, 366, 367, 368, 369, 370, 371, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
 86:       };
 87:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
 88:     } else if (rank == 1) {
 89:       const PetscScalar arrLocalExpectedHere[] = {
 90:         8,   9,   10,  11,  12,  13,  14,  15,  64,  65,  66,  67,  68,  69,  70,  71,  96,  97,  98,  99,  100, 101, 102, 103, 24,  25,  26,  27,  28,  29,  30,  31,  72,  73,  74,  75,  76,  77,  78,  79,  108, 109, 110, 111,
 91:         112, 113, 114, 115, 152, 153, 154, 155, 156, 157, 158, 159, 176, 177, 178, 179, 180, 181, 182, 183, 192, 193, 194, 195, 196, 197, 198, 199, 40,  41,  42,  43,  44,  45,  46,  47,  80,  81,  82,  83,  84,  85,  86,  87,
 92:         120, 121, 122, 123, 124, 125, 126, 127, 56,  57,  58,  59,  60,  61,  62,  63,  88,  89,  90,  91,  92,  93,  94,  95,  132, 133, 134, 135, 136, 137, 138, 139, 168, 169, 170, 171, 172, 173, 174, 175, 184, 185, 186, 187,
 93:         188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 210, 211, 332, 333, 334, 335, 336, 337, 338, 339, 356, 357, 358, 359, 360, 361, 362, 363, 372, 373, 374, 375, 376, 377, 378, 379, 348, 349, 350, 351, 352, 353, 354, 355,
 94:         364, 365, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 390, 391, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
 95:       };
 96:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
 97:     } else if (rank == 2) {
 98:       const PetscScalar arrLocalExpectedHere[] = {
 99:         64,  65,  66,  67,  68,  69,  70,  71,  96,  97,  98,  99,  100, 101, 102, 103, 104, -1,  105, -1,  106, -1,  107, -1,  72,  73,  74,  75,  76,  77,  78,  79,  108, 109, 110, 111, 112, 113, 114, 115, 116, -1,  117, -1,
100:         118, -1,  119, -1,  176, 177, 178, 179, 180, 181, 182, 183, 192, 193, 194, 195, 196, 197, 198, 199, 200, -1,  201, -1,  202, -1,  203, -1,  80,  81,  82,  83,  84,  85,  86,  87,  120, 121, 122, 123, 124, 125, 126, 127,
101:         128, -1,  129, -1,  130, -1,  131, -1,  88,  89,  90,  91,  92,  93,  94,  95,  132, 133, 134, 135, 136, 137, 138, 139, 140, -1,  141, -1,  142, -1,  143, -1,  184, 185, 186, 187, 188, 189, 190, 191, 204, 205, 206, 207,
102:         208, 209, 210, 211, 212, -1,  213, -1,  214, -1,  215, -1,  356, 357, 358, 359, 360, 361, 362, 363, 372, 373, 374, 375, 376, 377, 378, 379, 380, -1,  381, -1,  382, -1,  383, -1,  364, 365, 366, 367, 368, 369, 370, 371,
103:         384, 385, 386, 387, 388, 389, 390, 391, 392, -1,  393, -1,  394, -1,  395, -1,  412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1,  429, -1,  430, -1,  431, -1,
104:       };
105:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
106:     } else if (rank == 3) {
107:       const PetscScalar arrLocalExpectedHere[] = {
108:         16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,  72,  73,  74,  75,  76,  77,  78,  79,  144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 176, 177, 178, 179,
109:         180, 181, 182, 183, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 264, 265, 266, 267, 268, 269, 270, 271, 48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
110:         88,  89,  90,  91,  92,  93,  94,  95,  160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 184, 185, 186, 187, 188, 189, 190, 191, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
111:         252, 253, 254, 255, 276, 277, 278, 279, 280, 281, 282, 283, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 364, 365, 366, 367, 368, 369, 370, 371, 396, 397, 398, 399, 400, 401, 402, 403,
112:         404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 456, 457, 458, 459, 460, 461, 462, 463,
113:       };
114:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
115:     } else if (rank == 4) {
116:       const PetscScalar arrLocalExpectedHere[] = {
117:         24,  25,  26,  27,  28,  29,  30,  31,  72,  73,  74,  75,  76,  77,  78,  79,  108, 109, 110, 111, 112, 113, 114, 115, 152, 153, 154, 155, 156, 157, 158, 159, 176, 177, 178, 179, 180, 181, 182, 183, 192, 193, 194, 195,
118:         196, 197, 198, 199, 224, 225, 226, 227, 228, 229, 230, 231, 264, 265, 266, 267, 268, 269, 270, 271, 288, 289, 290, 291, 292, 293, 294, 295, 56,  57,  58,  59,  60,  61,  62,  63,  88,  89,  90,  91,  92,  93,  94,  95,
119:         132, 133, 134, 135, 136, 137, 138, 139, 168, 169, 170, 171, 172, 173, 174, 175, 184, 185, 186, 187, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 210, 211, 248, 249, 250, 251, 252, 253, 254, 255, 276, 277, 278, 279,
120:         280, 281, 282, 283, 306, 307, 308, 309, 310, 311, 312, 313, 348, 349, 350, 351, 352, 353, 354, 355, 364, 365, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 390, 391, 404, 405, 406, 407, 408, 409, 410, 411,
121:         412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 440, 441, 442, 443, 444, 445, 446, 447, 456, 457, 458, 459, 460, 461, 462, 463, 468, 469, 470, 471, 472, 473, 474, 475,
122:       };
123:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
124:     } else if (rank == 5) {
125:       const PetscScalar arrLocalExpectedHere[] = {
126:         72,  73,  74,  75,  76,  77,  78,  79,  108, 109, 110, 111, 112, 113, 114, 115, 116, -1,  117, -1,  118, -1,  119, -1,  176, 177, 178, 179, 180, 181, 182, 183, 192, 193, 194, 195, 196, 197, 198, 199, 200, -1,  201, -1,
127:         202, -1,  203, -1,  264, 265, 266, 267, 268, 269, 270, 271, 288, 289, 290, 291, 292, 293, 294, 295, 296, -1,  297, -1,  298, -1,  299, -1,  88,  89,  90,  91,  92,  93,  94,  95,  132, 133, 134, 135, 136, 137, 138, 139,
128:         140, -1,  141, -1,  142, -1,  143, -1,  184, 185, 186, 187, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 210, 211, 212, -1,  213, -1,  214, -1,  215, -1,  276, 277, 278, 279, 280, 281, 282, 283, 306, 307, 308, 309,
129:         310, 311, 312, 313, 314, -1,  315, -1,  316, -1,  317, -1,  364, 365, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1,  393, -1,  394, -1,  395, -1,  412, 413, 414, 415, 416, 417, 418, 419,
130:         420, 421, 422, 423, 424, 425, 426, 427, 428, -1,  429, -1,  430, -1,  431, -1,  456, 457, 458, 459, 460, 461, 462, 463, 468, 469, 470, 471, 472, 473, 474, 475, 476, -1,  477, -1,  478, -1,  479, -1,
131:       };
132:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
133:     } else if (rank == 6) {
134:       const PetscScalar arrLocalExpectedHere[] = {
135:         144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 176, 177, 178, 179, 180, 181, 182, 183, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 264, 265, 266, 267,
136:         268, 269, 270, 271, 232, 233, -1,  -1,  234, 235, -1,  -1,  236, 237, -1,  -1,  238, 239, -1,  -1,  272, 273, -1,  -1,  274, 275, -1,  -1,  160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
137:         184, 185, 186, 187, 188, 189, 190, 191, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 276, 277, 278, 279, 280, 281, 282, 283, 256, 257, -1,  -1,  258, 259, -1,  -1,  260, 261, -1,  -1,
138:         262, 263, -1,  -1,  284, 285, -1,  -1,  286, 287, -1,  -1,  396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 438, 439,
139:         440, 441, 442, 443, 444, 445, 446, 447, 456, 457, 458, 459, 460, 461, 462, 463, 448, 449, -1,  -1,  450, 451, -1,  -1,  452, 453, -1,  -1,  454, 455, -1,  -1,  464, 465, -1,  -1,  466, 467, -1,  -1,
140:       };
141:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
142:     } else if (rank == 7) {
143:       const PetscScalar arrLocalExpectedHere[] = {
144:         152, 153, 154, 155, 156, 157, 158, 159, 176, 177, 178, 179, 180, 181, 182, 183, 192, 193, 194, 195, 196, 197, 198, 199, 224, 225, 226, 227, 228, 229, 230, 231, 264, 265, 266, 267, 268, 269, 270, 271, 288, 289, 290, 291,
145:         292, 293, 294, 295, 236, 237, -1,  -1,  238, 239, -1,  -1,  272, 273, -1,  -1,  274, 275, -1,  -1,  300, 301, -1,  -1,  302, 303, -1,  -1,  168, 169, 170, 171, 172, 173, 174, 175, 184, 185, 186, 187, 188, 189, 190, 191,
146:         204, 205, 206, 207, 208, 209, 210, 211, 248, 249, 250, 251, 252, 253, 254, 255, 276, 277, 278, 279, 280, 281, 282, 283, 306, 307, 308, 309, 310, 311, 312, 313, 260, 261, -1,  -1,  262, 263, -1,  -1,  284, 285, -1,  -1,
147:         286, 287, -1,  -1,  318, 319, -1,  -1,  320, 321, -1,  -1,  404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 440, 441, 442, 443, 444, 445, 446, 447,
148:         456, 457, 458, 459, 460, 461, 462, 463, 468, 469, 470, 471, 472, 473, 474, 475, 452, 453, -1,  -1,  454, 455, -1,  -1,  464, 465, -1,  -1,  466, 467, -1,  -1,  480, 481, -1,  -1,  482, 483, -1,  -1,
149:       };
150:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
151:     } else if (rank == 8) {
152:       const PetscScalar arrLocalExpectedHere[] = {
153:         176, 177, 178, 179, 180, 181, 182, 183, 192, 193, 194, 195, 196, 197, 198, 199, 200, -1,  201, -1,  202, -1,  203, -1,  264, 265, 266, 267, 268, 269, 270, 271, 288, 289, 290, 291, 292, 293, 294, 295, 296, -1,  297, -1,
154:         298, -1,  299, -1,  272, 273, -1,  -1,  274, 275, -1,  -1,  300, 301, -1,  -1,  302, 303, -1,  -1,  304, -1,  -1,  -1,  305, -1,  -1,  -1,  184, 185, 186, 187, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 210, 211,
155:         212, -1,  213, -1,  214, -1,  215, -1,  276, 277, 278, 279, 280, 281, 282, 283, 306, 307, 308, 309, 310, 311, 312, 313, 314, -1,  315, -1,  316, -1,  317, -1,  284, 285, -1,  -1,  286, 287, -1,  -1,  318, 319, -1,  -1,
156:         320, 321, -1,  -1,  322, -1,  -1,  -1,  323, -1,  -1,  -1,  412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1,  429, -1,  430, -1,  431, -1,  456, 457, 458, 459, 460, 461, 462, 463,
157:         468, 469, 470, 471, 472, 473, 474, 475, 476, -1,  477, -1,  478, -1,  479, -1,  464, 465, -1,  -1,  466, 467, -1,  -1,  480, 481, -1,  -1,  482, 483, -1,  -1,  484, -1,  -1,  -1,  485, -1,  -1,  -1,
158:       };
159:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
160:     } else if (rank == 9) {
161:       const PetscScalar arrLocalExpectedHere[] = {
162:         32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  80,  81,  82,  83,  84,  85,  86,  87,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  88,  89,  90,  91,
163:         92,  93,  94,  95,  160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 184, 185, 186, 187, 188, 189, 190, 191, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
164:         356, 357, 358, 359, 360, 361, 362, 363, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 364, 365, 366, 367, 368, 369, 370, 371, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
165:         408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 534, 535, 536, 537, 538, 539, 540, 541, 502, 503, 504, 505, 506, 507, 508, 509,
166:         510, 511, 512, 513, 514, 515, 516, 517, 542, 543, 544, 545, 546, 547, 548, 549, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 618, 619, 620, 621, 622, 623, 624, 625,
167:       };
168:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
169:     } else if (rank == 10) {
170:       const PetscScalar arrLocalExpectedHere[] = {
171:         40,  41,  42,  43,  44,  45,  46,  47,  80,  81,  82,  83,  84,  85,  86,  87,  120, 121, 122, 123, 124, 125, 126, 127, 56,  57,  58,  59,  60,  61,  62,  63,  88,  89,  90,  91,  92,  93,  94,  95,  132, 133, 134, 135,
172:         136, 137, 138, 139, 168, 169, 170, 171, 172, 173, 174, 175, 184, 185, 186, 187, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 210, 211, 332, 333, 334, 335, 336, 337, 338, 339, 356, 357, 358, 359, 360, 361, 362, 363,
173:         372, 373, 374, 375, 376, 377, 378, 379, 348, 349, 350, 351, 352, 353, 354, 355, 364, 365, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 390, 391, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
174:         416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 494, 495, 496, 497, 498, 499, 500, 501, 534, 535, 536, 537, 538, 539, 540, 541, 558, 559, 560, 561, 562, 563, 564, 565, 510, 511, 512, 513, 514, 515, 516, 517,
175:         542, 543, 544, 545, 546, 547, 548, 549, 570, 571, 572, 573, 574, 575, 576, 577, 602, 603, 604, 605, 606, 607, 608, 609, 618, 619, 620, 621, 622, 623, 624, 625, 630, 631, 632, 633, 634, 635, 636, 637,
176:       };
177:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
178:     } else if (rank == 11) {
179:       const PetscScalar arrLocalExpectedHere[] = {
180:         80,  81,  82,  83,  84,  85,  86,  87,  120, 121, 122, 123, 124, 125, 126, 127, 128, -1,  129, -1,  130, -1,  131, -1,  88,  89,  90,  91,  92,  93,  94,  95,  132, 133, 134, 135, 136, 137, 138, 139, 140, -1,  141, -1,
181:         142, -1,  143, -1,  184, 185, 186, 187, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 210, 211, 212, -1,  213, -1,  214, -1,  215, -1,  356, 357, 358, 359, 360, 361, 362, 363, 372, 373, 374, 375, 376, 377, 378, 379,
182:         380, -1,  381, -1,  382, -1,  383, -1,  364, 365, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1,  393, -1,  394, -1,  395, -1,  412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
183:         424, 425, 426, 427, 428, -1,  429, -1,  430, -1,  431, -1,  534, 535, 536, 537, 538, 539, 540, 541, 558, 559, 560, 561, 562, 563, 564, 565, 566, -1,  567, -1,  568, -1,  569, -1,  542, 543, 544, 545, 546, 547, 548, 549,
184:         570, 571, 572, 573, 574, 575, 576, 577, 578, -1,  579, -1,  580, -1,  581, -1,  618, 619, 620, 621, 622, 623, 624, 625, 630, 631, 632, 633, 634, 635, 636, 637, 638, -1,  639, -1,  640, -1,  641, -1,
185:       };
186:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
187:     } else if (rank == 12) {
188:       const PetscScalar arrLocalExpectedHere[] = {
189:         48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  88,  89,  90,  91,  92,  93,  94,  95,  160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 184, 185, 186, 187,
190:         188, 189, 190, 191, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 276, 277, 278, 279, 280, 281, 282, 283, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
191:         364, 365, 366, 367, 368, 369, 370, 371, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
192:         444, 445, 446, 447, 456, 457, 458, 459, 460, 461, 462, 463, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 542, 543, 544, 545, 546, 547, 548, 549, 594, 595, 596, 597, 598, 599, 600, 601,
193:         602, 603, 604, 605, 606, 607, 608, 609, 618, 619, 620, 621, 622, 623, 624, 625, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 684, 685, 686, 687, 688, 689, 690, 691,
194:       };
195:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
196:     } else if (rank == 13) {
197:       const PetscScalar arrLocalExpectedHere[] = {
198:         56,  57,  58,  59,  60,  61,  62,  63,  88,  89,  90,  91,  92,  93,  94,  95,  132, 133, 134, 135, 136, 137, 138, 139, 168, 169, 170, 171, 172, 173, 174, 175, 184, 185, 186, 187, 188, 189, 190, 191, 204, 205, 206, 207,
199:         208, 209, 210, 211, 248, 249, 250, 251, 252, 253, 254, 255, 276, 277, 278, 279, 280, 281, 282, 283, 306, 307, 308, 309, 310, 311, 312, 313, 348, 349, 350, 351, 352, 353, 354, 355, 364, 365, 366, 367, 368, 369, 370, 371,
200:         384, 385, 386, 387, 388, 389, 390, 391, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 440, 441, 442, 443, 444, 445, 446, 447, 456, 457, 458, 459,
201:         460, 461, 462, 463, 468, 469, 470, 471, 472, 473, 474, 475, 510, 511, 512, 513, 514, 515, 516, 517, 542, 543, 544, 545, 546, 547, 548, 549, 570, 571, 572, 573, 574, 575, 576, 577, 602, 603, 604, 605, 606, 607, 608, 609,
202:         618, 619, 620, 621, 622, 623, 624, 625, 630, 631, 632, 633, 634, 635, 636, 637, 656, 657, 658, 659, 660, 661, 662, 663, 684, 685, 686, 687, 688, 689, 690, 691, 702, 703, 704, 705, 706, 707, 708, 709,
203:       };
204:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
205:     } else if (rank == 14) {
206:       const PetscScalar arrLocalExpectedHere[] = {
207:         88,  89,  90,  91,  92,  93,  94,  95,  132, 133, 134, 135, 136, 137, 138, 139, 140, -1,  141, -1,  142, -1,  143, -1,  184, 185, 186, 187, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 210, 211, 212, -1,  213, -1,
208:         214, -1,  215, -1,  276, 277, 278, 279, 280, 281, 282, 283, 306, 307, 308, 309, 310, 311, 312, 313, 314, -1,  315, -1,  316, -1,  317, -1,  364, 365, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 390, 391,
209:         392, -1,  393, -1,  394, -1,  395, -1,  412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1,  429, -1,  430, -1,  431, -1,  456, 457, 458, 459, 460, 461, 462, 463, 468, 469, 470, 471,
210:         472, 473, 474, 475, 476, -1,  477, -1,  478, -1,  479, -1,  542, 543, 544, 545, 546, 547, 548, 549, 570, 571, 572, 573, 574, 575, 576, 577, 578, -1,  579, -1,  580, -1,  581, -1,  618, 619, 620, 621, 622, 623, 624, 625,
211:         630, 631, 632, 633, 634, 635, 636, 637, 638, -1,  639, -1,  640, -1,  641, -1,  684, 685, 686, 687, 688, 689, 690, 691, 702, 703, 704, 705, 706, 707, 708, 709, 710, -1,  711, -1,  712, -1,  713, -1,
212:       };
213:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
214:     } else if (rank == 15) {
215:       const PetscScalar arrLocalExpectedHere[] = {
216:         160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 184, 185, 186, 187, 188, 189, 190, 191, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 276, 277, 278, 279,
217:         280, 281, 282, 283, 256, 257, -1,  -1,  258, 259, -1,  -1,  260, 261, -1,  -1,  262, 263, -1,  -1,  284, 285, -1,  -1,  286, 287, -1,  -1,  396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
218:         412, 413, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 456, 457, 458, 459, 460, 461, 462, 463, 448, 449, -1,  -1,  450, 451, -1,  -1,  452, 453, -1,  -1,
219:         454, 455, -1,  -1,  464, 465, -1,  -1,  466, 467, -1,  -1,  594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 618, 619, 620, 621, 622, 623, 624, 625, 648, 649, 650, 651, 652, 653, 654, 655,
220:         656, 657, 658, 659, 660, 661, 662, 663, 684, 685, 686, 687, 688, 689, 690, 691, 664, 665, -1,  -1,  666, 667, -1,  -1,  668, 669, -1,  -1,  670, 671, -1,  -1,  692, 693, -1,  -1,  694, 695, -1,  -1,
221:       };
222:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
223:     } else if (rank == 16) {
224:       const PetscScalar arrLocalExpectedHere[] = {
225:         168, 169, 170, 171, 172, 173, 174, 175, 184, 185, 186, 187, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 210, 211, 248, 249, 250, 251, 252, 253, 254, 255, 276, 277, 278, 279, 280, 281, 282, 283, 306, 307, 308, 309,
226:         310, 311, 312, 313, 260, 261, -1,  -1,  262, 263, -1,  -1,  284, 285, -1,  -1,  286, 287, -1,  -1,  318, 319, -1,  -1,  320, 321, -1,  -1,  404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
227:         420, 421, 422, 423, 424, 425, 426, 427, 440, 441, 442, 443, 444, 445, 446, 447, 456, 457, 458, 459, 460, 461, 462, 463, 468, 469, 470, 471, 472, 473, 474, 475, 452, 453, -1,  -1,  454, 455, -1,  -1,  464, 465, -1,  -1,
228:         466, 467, -1,  -1,  480, 481, -1,  -1,  482, 483, -1,  -1,  602, 603, 604, 605, 606, 607, 608, 609, 618, 619, 620, 621, 622, 623, 624, 625, 630, 631, 632, 633, 634, 635, 636, 637, 656, 657, 658, 659, 660, 661, 662, 663,
229:         684, 685, 686, 687, 688, 689, 690, 691, 702, 703, 704, 705, 706, 707, 708, 709, 668, 669, -1,  -1,  670, 671, -1,  -1,  692, 693, -1,  -1,  694, 695, -1,  -1,  714, 715, -1,  -1,  716, 717, -1,  -1,
230:       };
231:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
232:     } else if (rank == 17) {
233:       const PetscScalar arrLocalExpectedHere[] = {
234:         184, 185, 186, 187, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 210, 211, 212, -1,  213, -1,  214, -1,  215, -1,  276, 277, 278, 279, 280, 281, 282, 283, 306, 307, 308, 309, 310, 311, 312, 313, 314, -1,  315, -1,
235:         316, -1,  317, -1,  284, 285, -1,  -1,  286, 287, -1,  -1,  318, 319, -1,  -1,  320, 321, -1,  -1,  322, -1,  -1,  -1,  323, -1,  -1,  -1,  412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
236:         428, -1,  429, -1,  430, -1,  431, -1,  456, 457, 458, 459, 460, 461, 462, 463, 468, 469, 470, 471, 472, 473, 474, 475, 476, -1,  477, -1,  478, -1,  479, -1,  464, 465, -1,  -1,  466, 467, -1,  -1,  480, 481, -1,  -1,
237:         482, 483, -1,  -1,  484, -1,  -1,  -1,  485, -1,  -1,  -1,  618, 619, 620, 621, 622, 623, 624, 625, 630, 631, 632, 633, 634, 635, 636, 637, 638, -1,  639, -1,  640, -1,  641, -1,  684, 685, 686, 687, 688, 689, 690, 691,
238:         702, 703, 704, 705, 706, 707, 708, 709, 710, -1,  711, -1,  712, -1,  713, -1,  692, 693, -1,  -1,  694, 695, -1,  -1,  714, 715, -1,  -1,  716, 717, -1,  -1,  718, -1,  -1,  -1,  719, -1,  -1,  -1,
239:       };
240:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
241:     } else if (rank == 18) {
242:       const PetscScalar arrLocalExpectedHere[] = {
243:         324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 356, 357, 358, 359, 360, 361, 362, 363, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 364, 365, 366, 367,
244:         368, 369, 370, 371, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
245:         534, 535, 536, 537, 538, 539, 540, 541, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 542, 543, 544, 545, 546, 547, 548, 549, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
246:         606, 607, 608, 609, 618, 619, 620, 621, 622, 623, 624, 625, 518, 519, 520, 521, -1,  -1,  -1,  -1,  522, 523, 524, 525, -1,  -1,  -1,  -1,  550, 551, 552, 553, -1,  -1,  -1,  -1,  526, 527, 528, 529, -1,  -1,  -1,  -1,
247:         530, 531, 532, 533, -1,  -1,  -1,  -1,  554, 555, 556, 557, -1,  -1,  -1,  -1,  610, 611, 612, 613, -1,  -1,  -1,  -1,  614, 615, 616, 617, -1,  -1,  -1,  -1,  626, 627, 628, 629, -1,  -1,  -1,  -1,
248:       };
249:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
250:     } else if (rank == 19) {
251:       const PetscScalar arrLocalExpectedHere[] = {
252:         332, 333, 334, 335, 336, 337, 338, 339, 356, 357, 358, 359, 360, 361, 362, 363, 372, 373, 374, 375, 376, 377, 378, 379, 348, 349, 350, 351, 352, 353, 354, 355, 364, 365, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387,
253:         388, 389, 390, 391, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 494, 495, 496, 497, 498, 499, 500, 501, 534, 535, 536, 537, 538, 539, 540, 541,
254:         558, 559, 560, 561, 562, 563, 564, 565, 510, 511, 512, 513, 514, 515, 516, 517, 542, 543, 544, 545, 546, 547, 548, 549, 570, 571, 572, 573, 574, 575, 576, 577, 602, 603, 604, 605, 606, 607, 608, 609, 618, 619, 620, 621,
255:         622, 623, 624, 625, 630, 631, 632, 633, 634, 635, 636, 637, 522, 523, 524, 525, -1,  -1,  -1,  -1,  550, 551, 552, 553, -1,  -1,  -1,  -1,  582, 583, 584, 585, -1,  -1,  -1,  -1,  530, 531, 532, 533, -1,  -1,  -1,  -1,
256:         554, 555, 556, 557, -1,  -1,  -1,  -1,  588, 589, 590, 591, -1,  -1,  -1,  -1,  614, 615, 616, 617, -1,  -1,  -1,  -1,  626, 627, 628, 629, -1,  -1,  -1,  -1,  642, 643, 644, 645, -1,  -1,  -1,  -1,
257:       };
258:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
259:     } else if (rank == 20) {
260:       const PetscScalar arrLocalExpectedHere[] = {
261:         356, 357, 358, 359, 360, 361, 362, 363, 372, 373, 374, 375, 376, 377, 378, 379, 380, -1,  381, -1,  382, -1,  383, -1,  364, 365, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1,  393, -1,
262:         394, -1,  395, -1,  412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1,  429, -1,  430, -1,  431, -1,  534, 535, 536, 537, 538, 539, 540, 541, 558, 559, 560, 561, 562, 563, 564, 565,
263:         566, -1,  567, -1,  568, -1,  569, -1,  542, 543, 544, 545, 546, 547, 548, 549, 570, 571, 572, 573, 574, 575, 576, 577, 578, -1,  579, -1,  580, -1,  581, -1,  618, 619, 620, 621, 622, 623, 624, 625, 630, 631, 632, 633,
264:         634, 635, 636, 637, 638, -1,  639, -1,  640, -1,  641, -1,  550, 551, 552, 553, -1,  -1,  -1,  -1,  582, 583, 584, 585, -1,  -1,  -1,  -1,  586, -1,  587, -1,  -1,  -1,  -1,  -1,  554, 555, 556, 557, -1,  -1,  -1,  -1,
265:         588, 589, 590, 591, -1,  -1,  -1,  -1,  592, -1,  593, -1,  -1,  -1,  -1,  -1,  626, 627, 628, 629, -1,  -1,  -1,  -1,  642, 643, 644, 645, -1,  -1,  -1,  -1,  646, -1,  647, -1,  -1,  -1,  -1,  -1,
266:       };
267:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
268:     } else if (rank == 21) {
269:       const PetscScalar arrLocalExpectedHere[] = {
270:         340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 364, 365, 366, 367, 368, 369, 370, 371, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
271:         416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 456, 457, 458, 459, 460, 461, 462, 463, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
272:         542, 543, 544, 545, 546, 547, 548, 549, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 618, 619, 620, 621, 622, 623, 624, 625, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
273:         660, 661, 662, 663, 684, 685, 686, 687, 688, 689, 690, 691, 526, 527, 528, 529, -1,  -1,  -1,  -1,  530, 531, 532, 533, -1,  -1,  -1,  -1,  554, 555, 556, 557, -1,  -1,  -1,  -1,  610, 611, 612, 613, -1,  -1,  -1,  -1,
274:         614, 615, 616, 617, -1,  -1,  -1,  -1,  626, 627, 628, 629, -1,  -1,  -1,  -1,  672, 673, 674, 675, -1,  -1,  -1,  -1,  676, 677, 678, 679, -1,  -1,  -1,  -1,  696, 697, 698, 699, -1,  -1,  -1,  -1,
275:       };
276:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
277:     } else if (rank == 22) {
278:       const PetscScalar arrLocalExpectedHere[] = {
279:         348, 349, 350, 351, 352, 353, 354, 355, 364, 365, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 390, 391, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
280:         424, 425, 426, 427, 440, 441, 442, 443, 444, 445, 446, 447, 456, 457, 458, 459, 460, 461, 462, 463, 468, 469, 470, 471, 472, 473, 474, 475, 510, 511, 512, 513, 514, 515, 516, 517, 542, 543, 544, 545, 546, 547, 548, 549,
281:         570, 571, 572, 573, 574, 575, 576, 577, 602, 603, 604, 605, 606, 607, 608, 609, 618, 619, 620, 621, 622, 623, 624, 625, 630, 631, 632, 633, 634, 635, 636, 637, 656, 657, 658, 659, 660, 661, 662, 663, 684, 685, 686, 687,
282:         688, 689, 690, 691, 702, 703, 704, 705, 706, 707, 708, 709, 530, 531, 532, 533, -1,  -1,  -1,  -1,  554, 555, 556, 557, -1,  -1,  -1,  -1,  588, 589, 590, 591, -1,  -1,  -1,  -1,  614, 615, 616, 617, -1,  -1,  -1,  -1,
283:         626, 627, 628, 629, -1,  -1,  -1,  -1,  642, 643, 644, 645, -1,  -1,  -1,  -1,  676, 677, 678, 679, -1,  -1,  -1,  -1,  696, 697, 698, 699, -1,  -1,  -1,  -1,  720, 721, 722, 723, -1,  -1,  -1,  -1,
284:       };
285:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
286:     } else if (rank == 23) {
287:       const PetscScalar arrLocalExpectedHere[] = {
288:         364, 365, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1,  393, -1,  394, -1,  395, -1,  412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1,  429, -1,
289:         430, -1,  431, -1,  456, 457, 458, 459, 460, 461, 462, 463, 468, 469, 470, 471, 472, 473, 474, 475, 476, -1,  477, -1,  478, -1,  479, -1,  542, 543, 544, 545, 546, 547, 548, 549, 570, 571, 572, 573, 574, 575, 576, 577,
290:         578, -1,  579, -1,  580, -1,  581, -1,  618, 619, 620, 621, 622, 623, 624, 625, 630, 631, 632, 633, 634, 635, 636, 637, 638, -1,  639, -1,  640, -1,  641, -1,  684, 685, 686, 687, 688, 689, 690, 691, 702, 703, 704, 705,
291:         706, 707, 708, 709, 710, -1,  711, -1,  712, -1,  713, -1,  554, 555, 556, 557, -1,  -1,  -1,  -1,  588, 589, 590, 591, -1,  -1,  -1,  -1,  592, -1,  593, -1,  -1,  -1,  -1,  -1,  626, 627, 628, 629, -1,  -1,  -1,  -1,
292:         642, 643, 644, 645, -1,  -1,  -1,  -1,  646, -1,  647, -1,  -1,  -1,  -1,  -1,  696, 697, 698, 699, -1,  -1,  -1,  -1,  720, 721, 722, 723, -1,  -1,  -1,  -1,  724, -1,  725, -1,  -1,  -1,  -1,  -1,
293:       };
294:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
295:     } else if (rank == 24) {
296:       const PetscScalar arrLocalExpectedHere[] = {
297:         396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 456, 457, 458, 459,
298:         460, 461, 462, 463, 448, 449, -1,  -1,  450, 451, -1,  -1,  452, 453, -1,  -1,  454, 455, -1,  -1,  464, 465, -1,  -1,  466, 467, -1,  -1,  594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
299:         618, 619, 620, 621, 622, 623, 624, 625, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 684, 685, 686, 687, 688, 689, 690, 691, 664, 665, -1,  -1,  666, 667, -1,  -1,  668, 669, -1,  -1,
300:         670, 671, -1,  -1,  692, 693, -1,  -1,  694, 695, -1,  -1,  610, 611, 612, 613, -1,  -1,  -1,  -1,  614, 615, 616, 617, -1,  -1,  -1,  -1,  626, 627, 628, 629, -1,  -1,  -1,  -1,  672, 673, 674, 675, -1,  -1,  -1,  -1,
301:         676, 677, 678, 679, -1,  -1,  -1,  -1,  696, 697, 698, 699, -1,  -1,  -1,  -1,  680, 681, -1,  -1,  -1,  -1,  -1,  -1,  682, 683, -1,  -1,  -1,  -1,  -1,  -1,  700, 701, -1,  -1,  -1,  -1,  -1,  -1,
302:       };
303:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
304:     } else if (rank == 25) {
305:       const PetscScalar arrLocalExpectedHere[] = {
306:         404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 440, 441, 442, 443, 444, 445, 446, 447, 456, 457, 458, 459, 460, 461, 462, 463, 468, 469, 470, 471,
307:         472, 473, 474, 475, 452, 453, -1,  -1,  454, 455, -1,  -1,  464, 465, -1,  -1,  466, 467, -1,  -1,  480, 481, -1,  -1,  482, 483, -1,  -1,  602, 603, 604, 605, 606, 607, 608, 609, 618, 619, 620, 621, 622, 623, 624, 625,
308:         630, 631, 632, 633, 634, 635, 636, 637, 656, 657, 658, 659, 660, 661, 662, 663, 684, 685, 686, 687, 688, 689, 690, 691, 702, 703, 704, 705, 706, 707, 708, 709, 668, 669, -1,  -1,  670, 671, -1,  -1,  692, 693, -1,  -1,
309:         694, 695, -1,  -1,  714, 715, -1,  -1,  716, 717, -1,  -1,  614, 615, 616, 617, -1,  -1,  -1,  -1,  626, 627, 628, 629, -1,  -1,  -1,  -1,  642, 643, 644, 645, -1,  -1,  -1,  -1,  676, 677, 678, 679, -1,  -1,  -1,  -1,
310:         696, 697, 698, 699, -1,  -1,  -1,  -1,  720, 721, 722, 723, -1,  -1,  -1,  -1,  682, 683, -1,  -1,  -1,  -1,  -1,  -1,  700, 701, -1,  -1,  -1,  -1,  -1,  -1,  726, 727, -1,  -1,  -1,  -1,  -1,  -1,
311:       };
312:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
313:     } else if (rank == 26) {
314:       const PetscScalar arrLocalExpectedHere[] = {
315:         412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1,  429, -1,  430, -1,  431, -1,  456, 457, 458, 459, 460, 461, 462, 463, 468, 469, 470, 471, 472, 473, 474, 475, 476, -1,  477, -1,
316:         478, -1,  479, -1,  464, 465, -1,  -1,  466, 467, -1,  -1,  480, 481, -1,  -1,  482, 483, -1,  -1,  484, -1,  -1,  -1,  485, -1,  -1,  -1,  618, 619, 620, 621, 622, 623, 624, 625, 630, 631, 632, 633, 634, 635, 636, 637,
317:         638, -1,  639, -1,  640, -1,  641, -1,  684, 685, 686, 687, 688, 689, 690, 691, 702, 703, 704, 705, 706, 707, 708, 709, 710, -1,  711, -1,  712, -1,  713, -1,  692, 693, -1,  -1,  694, 695, -1,  -1,  714, 715, -1,  -1,
318:         716, 717, -1,  -1,  718, -1,  -1,  -1,  719, -1,  -1,  -1,  626, 627, 628, 629, -1,  -1,  -1,  -1,  642, 643, 644, 645, -1,  -1,  -1,  -1,  646, -1,  647, -1,  -1,  -1,  -1,  -1,  696, 697, 698, 699, -1,  -1,  -1,  -1,
319:         720, 721, 722, 723, -1,  -1,  -1,  -1,  724, -1,  725, -1,  -1,  -1,  -1,  -1,  700, 701, -1,  -1,  -1,  -1,  -1,  -1,  726, 727, -1,  -1,  -1,  -1,  -1,  -1,  728, -1,  -1,  -1,  -1,  -1,  -1,  -1,
320:       };
321:       for (i = 0; i < entriesGhost; ++i) arrLocalExpected[i] = arrLocalExpectedHere[i];
322:     }

324:     PetscCall(VecGetArrayRead(vecLocal, &arrLocal));
325:     for (i = 0, nerr = 0; i < entriesGhost; ++i) {
326:       if (arrLocal[i] != arrLocalExpected[i]) {
327:         ++nerr;
328:         if (nerr <= maxErrPerRank) {
329:           PetscCall(PetscPrintf(PETSC_COMM_SELF, "[%d] Entry %" PetscInt_FMT " has value %g instead of the expected %g\n", rank, i, (double)PetscRealPart(arrLocal[i]), (double)PetscRealPart(arrLocalExpected[i])));
330:           if (nerr == maxErrPerRank + 1) PetscCall(PetscPrintf(PETSC_COMM_SELF, "[%d] Skipping additional errors on this rank\n", rank));
331:         }
332:       }
333:     }
334:     if (nerr > 0) PetscCall(PetscPrintf(PETSC_COMM_SELF, "[%d] %" PetscInt_FMT " incorrect values on this rank\n", rank, nerr));
335:     PetscCall(VecRestoreArrayRead(vecLocal, &arrLocal));
336:     PetscCall(PetscFree(arrLocalExpected));
337:   }

339:   PetscCall(VecDestroy(&vecLocal));
340:   PetscCall(VecDestroy(&vecGlobal));
341:   PetscFunctionReturn(PETSC_SUCCESS);
342: }

344: /*TEST

346:    test:
347:       nsize: 27

349: TEST*/