14411cf47Sjeremylt /// @file 24411cf47Sjeremylt /// Test square Gauss Lobatto interp1d is identity 34411cf47Sjeremylt /// \test Test square Gauss Lobatto interp1d is identity 457c64913Sjeremylt #include <ceed.h> 557c64913Sjeremylt #include <stdio.h> 657c64913Sjeremylt #include <math.h> 757c64913Sjeremylt 857c64913Sjeremylt int main(int argc, char **argv) { 957c64913Sjeremylt Ceed ceed; 1057c64913Sjeremylt CeedBasis b; 11*aedaa0e5Sjeremylt CeedVector U, V; 1257c64913Sjeremylt int i, dim = 2, P1d = 4, Q1d = 4, len = (int)(pow((double)(Q1d), dim) + 0.4); 13*aedaa0e5Sjeremylt CeedScalar u[len]; 14*aedaa0e5Sjeremylt const CeedScalar *v; 1557c64913Sjeremylt 1657c64913Sjeremylt CeedInit(argv[1], &ceed); 17*aedaa0e5Sjeremylt 18*aedaa0e5Sjeremylt CeedVectorCreate(ceed, len, &U); 19*aedaa0e5Sjeremylt CeedVectorCreate(ceed, len, &V); 20*aedaa0e5Sjeremylt 2157c64913Sjeremylt for (i = 0; i < len; i++) { 2257c64913Sjeremylt u[i] = 1.0; 2357c64913Sjeremylt } 24*aedaa0e5Sjeremylt CeedVectorSetArray(U, CEED_MEM_HOST, CEED_USE_POINTER, (CeedScalar *)&u); 25*aedaa0e5Sjeremylt 2657c64913Sjeremylt CeedBasisCreateTensorH1Lagrange(ceed, dim, 1, P1d, Q1d, CEED_GAUSS_LOBATTO, &b); 27*aedaa0e5Sjeremylt 28*aedaa0e5Sjeremylt CeedBasisApply(b, 1, CEED_NOTRANSPOSE, CEED_EVAL_INTERP, U, V); 29*aedaa0e5Sjeremylt 30*aedaa0e5Sjeremylt CeedVectorGetArrayRead(V, CEED_MEM_HOST, &v); 3157c64913Sjeremylt for (i = 0; i < len; i++) { 3257c64913Sjeremylt if (fabs(v[i] - 1.) > 1e-15) printf("v[%d] = %f != 1.\n", i, v[i]); 3357c64913Sjeremylt } 34*aedaa0e5Sjeremylt CeedVectorRestoreArrayRead(V, &v); 35*aedaa0e5Sjeremylt 3657c64913Sjeremylt CeedBasisDestroy(&b); 37*aedaa0e5Sjeremylt CeedVectorDestroy(&U); 38*aedaa0e5Sjeremylt CeedVectorDestroy(&V); 3957c64913Sjeremylt CeedDestroy(&ceed); 4057c64913Sjeremylt return 0; 4157c64913Sjeremylt } 42