1 /// @file 2 /// Test square Gauss Lobatto interp_1d is identity 3 /// \test Test square Gauss Lobatto interp_1d 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, P_1d = 4, Q_1d = 4, len = (int)(pow((CeedScalar)(Q_1d), 13 dim) + 0.4); 14 CeedScalar u[len]; 15 const CeedScalar *v; 16 17 CeedInit(argv[1], &ceed); 18 19 CeedVectorCreate(ceed, len, &U); 20 CeedVectorCreate(ceed, len, &V); 21 22 for (i = 0; i < len; i++) 23 u[i] = 1.0; 24 CeedVectorSetArray(U, CEED_MEM_HOST, CEED_USE_POINTER, u); 25 26 CeedBasisCreateTensorH1Lagrange(ceed, dim, 1, P_1d, Q_1d, 27 CEED_GAUSS_LOBATTO, &b); 28 29 CeedBasisApply(b, 1, CEED_NOTRANSPOSE, CEED_EVAL_INTERP, U, V); 30 31 CeedVectorGetArrayRead(V, CEED_MEM_HOST, &v); 32 for (i = 0; i < len; i++) 33 if (fabs(v[i] - 1.) > 10.*CEED_EPSILON) 34 // LCOV_EXCL_START 35 printf("v[%d] = %f != 1.\n", i, v[i]); 36 // LCOV_EXCL_STOP 37 CeedVectorRestoreArrayRead(V, &v); 38 39 CeedBasisDestroy(&b); 40 CeedVectorDestroy(&U); 41 CeedVectorDestroy(&V); 42 CeedDestroy(&ceed); 43 return 0; 44 } 45