1*1469ee4dSjeremylt /// @file 2*1469ee4dSjeremylt /// Test calculation of dof multiplicity in element restriction 3*1469ee4dSjeremylt /// \test Test calculation of dof multiplicity in element restriction 4*1469ee4dSjeremylt #include <ceed.h> 5*1469ee4dSjeremylt 6*1469ee4dSjeremylt int main(int argc, char **argv) { 7*1469ee4dSjeremylt Ceed ceed; 8*1469ee4dSjeremylt CeedVector mult; 9*1469ee4dSjeremylt CeedInt ne = 3; 10*1469ee4dSjeremylt CeedInt ind[4*ne]; 11*1469ee4dSjeremylt const CeedScalar *mm; 12*1469ee4dSjeremylt CeedElemRestriction r; 13*1469ee4dSjeremylt 14*1469ee4dSjeremylt CeedInit(argv[1], &ceed); 15*1469ee4dSjeremylt 16*1469ee4dSjeremylt CeedVectorCreate(ceed, 3*ne+1, &mult); 17*1469ee4dSjeremylt CeedVectorSetValue(mult, 0); // Allocates array 18*1469ee4dSjeremylt 19*1469ee4dSjeremylt for (CeedInt i=0; i<ne; i++) { 20*1469ee4dSjeremylt ind[4*i+0] = i*3+0; 21*1469ee4dSjeremylt ind[4*i+1] = i*3+1; 22*1469ee4dSjeremylt ind[4*i+2] = i*3+2; 23*1469ee4dSjeremylt ind[4*i+3] = i*3+3; 24*1469ee4dSjeremylt } 25*1469ee4dSjeremylt CeedElemRestrictionCreate(ceed, ne, 4, 3*ne+1, 1, CEED_MEM_HOST, 26*1469ee4dSjeremylt CEED_USE_POINTER, ind, &r); 27*1469ee4dSjeremylt 28*1469ee4dSjeremylt CeedElemRestrictionGetMultiplicity(r, mult); 29*1469ee4dSjeremylt 30*1469ee4dSjeremylt CeedVectorGetArrayRead(mult, CEED_MEM_HOST, &mm); 31*1469ee4dSjeremylt for (CeedInt i=0; i<3*ne+1; i++) { 32*1469ee4dSjeremylt if ((1 + (i > 0 && i < 3*ne && (i%3==0) ? 1 : 0)) != mm[i]) 33*1469ee4dSjeremylt printf("Error in multiplicity vector: mult[%d] = %f\n", 34*1469ee4dSjeremylt i, (double)mm[i]); 35*1469ee4dSjeremylt } 36*1469ee4dSjeremylt CeedVectorRestoreArrayRead(mult, &mm); 37*1469ee4dSjeremylt 38*1469ee4dSjeremylt CeedVectorDestroy(&mult); 39*1469ee4dSjeremylt CeedElemRestrictionDestroy(&r); 40*1469ee4dSjeremylt CeedDestroy(&ceed); 41*1469ee4dSjeremylt return 0; 42*1469ee4dSjeremylt } 43