1 /// @file 2 /// Test square Gauss Lobatto interp1d is identity 3 /// \test Test square Gauss Lobatto interp1d is identity 4 #include <ceed.h> 5 #include <stdio.h> 6 #include <math.h> 7 8 int main(int argc, char **argv) { 9 Ceed ceed; 10 CeedBasis b; 11 CeedVector U, V; 12 int i, dim = 2, P1d = 4, Q1d = 4, len = (int)(pow((double)(Q1d), dim) + 0.4); 13 CeedScalar u[len]; 14 const CeedScalar *v; 15 16 CeedInit(argv[1], &ceed); 17 18 CeedVectorCreate(ceed, len, &U); 19 CeedVectorCreate(ceed, len, &V); 20 21 for (i = 0; i < len; i++) { 22 u[i] = 1.0; 23 } 24 CeedVectorSetArray(U, CEED_MEM_HOST, CEED_USE_POINTER, (CeedScalar *)&u); 25 26 CeedBasisCreateTensorH1Lagrange(ceed, dim, 1, P1d, Q1d, CEED_GAUSS_LOBATTO, &b); 27 28 CeedBasisApply(b, 1, CEED_NOTRANSPOSE, CEED_EVAL_INTERP, U, V); 29 30 CeedVectorGetArrayRead(V, CEED_MEM_HOST, &v); 31 for (i = 0; i < len; i++) 32 if (fabs(v[i] - 1.) > 1e-15) 33 // LCOV_EXCL_START 34 printf("v[%d] = %f != 1.\n", i, v[i]); 35 // LCOV_EXCL_STOP 36 CeedVectorRestoreArrayRead(V, &v); 37 38 CeedBasisDestroy(&b); 39 CeedVectorDestroy(&U); 40 CeedVectorDestroy(&V); 41 CeedDestroy(&ceed); 42 return 0; 43 } 44