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 <math.h> 6 #include <stdio.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), 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++) u[i] = 1.0; 22 CeedVectorSetArray(U, CEED_MEM_HOST, CEED_USE_POINTER, u); 23 24 CeedBasisCreateTensorH1Lagrange(ceed, dim, 1, P_1d, Q_1d, CEED_GAUSS_LOBATTO, &b); 25 26 CeedBasisApply(b, 1, CEED_NOTRANSPOSE, CEED_EVAL_INTERP, U, V); 27 28 CeedVectorGetArrayRead(V, CEED_MEM_HOST, &v); 29 for (i = 0; i < len; i++) { 30 if (fabs(v[i] - 1.) > 10. * CEED_EPSILON) printf("v[%" CeedInt_FMT "] = %f != 1.\n", i, v[i]); 31 } 32 CeedVectorRestoreArrayRead(V, &v); 33 34 CeedBasisDestroy(&b); 35 CeedVectorDestroy(&U); 36 CeedVectorDestroy(&V); 37 CeedDestroy(&ceed); 38 return 0; 39 } 40