11469ee4dSjeremylt /// @file 21469ee4dSjeremylt /// Test calculation of dof multiplicity in element restriction 31469ee4dSjeremylt /// \test Test calculation of dof multiplicity in element restriction 41469ee4dSjeremylt #include <ceed.h> 51469ee4dSjeremylt 61469ee4dSjeremylt int main(int argc, char **argv) { 71469ee4dSjeremylt Ceed ceed; 81469ee4dSjeremylt CeedVector mult; 9d1d35e2fSjeremylt CeedInt num_elem = 3; 10d1d35e2fSjeremylt CeedInt ind[4 * num_elem]; 11*4fee36f0SJeremy L Thompson CeedElemRestriction elem_restriction; 121469ee4dSjeremylt 131469ee4dSjeremylt CeedInit(argv[1], &ceed); 141469ee4dSjeremylt 15d1d35e2fSjeremylt CeedVectorCreate(ceed, 3 * num_elem + 1, &mult); 161469ee4dSjeremylt 17d1d35e2fSjeremylt for (CeedInt i = 0; i < num_elem; i++) { 181469ee4dSjeremylt ind[4 * i + 0] = i * 3 + 0; 191469ee4dSjeremylt ind[4 * i + 1] = i * 3 + 1; 201469ee4dSjeremylt ind[4 * i + 2] = i * 3 + 2; 211469ee4dSjeremylt ind[4 * i + 3] = i * 3 + 3; 221469ee4dSjeremylt } 23*4fee36f0SJeremy L Thompson CeedElemRestrictionCreate(ceed, num_elem, 4, 1, 1, 3 * num_elem + 1, CEED_MEM_HOST, CEED_USE_POINTER, ind, &elem_restriction); 241469ee4dSjeremylt 25*4fee36f0SJeremy L Thompson CeedElemRestrictionGetMultiplicity(elem_restriction, mult); 26*4fee36f0SJeremy L Thompson { 27*4fee36f0SJeremy L Thompson const CeedScalar *mult_array; 281469ee4dSjeremylt 29*4fee36f0SJeremy L Thompson CeedVectorGetArrayRead(mult, CEED_MEM_HOST, &mult_array); 302b730f8bSJeremy L Thompson for (CeedInt i = 0; i < 3 * num_elem + 1; i++) { 31*4fee36f0SJeremy L Thompson if (mult_array[i] != (1 + (i > 0 && i < 3 * num_elem && (i % 3 == 0) ? 1 : 0))) { 32a2546046Sjeremylt // LCOV_EXCL_START 33*4fee36f0SJeremy L Thompson printf("Error in multiplicity vector: mult[%" CeedInt_FMT "] = %f\n", i, (CeedScalar)mult_array[i]); 34de996c55Sjeremylt // LCOV_EXCL_STOP 352b730f8bSJeremy L Thompson } 362b730f8bSJeremy L Thompson } 37*4fee36f0SJeremy L Thompson CeedVectorRestoreArrayRead(mult, &mult_array); 38*4fee36f0SJeremy L Thompson } 391469ee4dSjeremylt 401469ee4dSjeremylt CeedVectorDestroy(&mult); 41*4fee36f0SJeremy L Thompson CeedElemRestrictionDestroy(&elem_restriction); 421469ee4dSjeremylt CeedDestroy(&ceed); 431469ee4dSjeremylt return 0; 441469ee4dSjeremylt } 45