xref: /libCEED/tests/t310-basis.c (revision d1d35e2f02dc969aee8debf3fd943dd784aa847a)
1a8de75f0Sjeremylt /// @file
2*d1d35e2fSjeremylt /// Test square Gauss Lobatto interp_1d is identity
3*d1d35e2fSjeremylt /// \test Test square Gauss Lobatto interp_1d is identity
4a8de75f0Sjeremylt #include <ceed.h>
552bfb9bbSJeremy L Thompson #include <stdio.h>
652bfb9bbSJeremy L Thompson #include <math.h>
7a8de75f0Sjeremylt 
8a8de75f0Sjeremylt int main(int argc, char **argv) {
9a8de75f0Sjeremylt   Ceed ceed;
10a8de75f0Sjeremylt   CeedBasis b;
1152bfb9bbSJeremy L Thompson   CeedVector U, V;
12*d1d35e2fSjeremylt   int i, dim = 2, P_1d = 4, Q_1d = 4, len = (int)(pow((double)(Q_1d), dim) + 0.4);
1352bfb9bbSJeremy L Thompson   CeedScalar u[len];
1452bfb9bbSJeremy L Thompson   const CeedScalar *v;
15a8de75f0Sjeremylt 
16a8de75f0Sjeremylt   CeedInit(argv[1], &ceed);
1752bfb9bbSJeremy L Thompson 
1852bfb9bbSJeremy L Thompson   CeedVectorCreate(ceed, len, &U);
1952bfb9bbSJeremy L Thompson   CeedVectorCreate(ceed, len, &V);
2052bfb9bbSJeremy L Thompson 
2152bfb9bbSJeremy L Thompson   for (i = 0; i < len; i++)
2252bfb9bbSJeremy L Thompson     u[i] = 1.0;
2352bfb9bbSJeremy L Thompson   CeedVectorSetArray(U, CEED_MEM_HOST, CEED_USE_POINTER, u);
2452bfb9bbSJeremy L Thompson 
25*d1d35e2fSjeremylt   CeedBasisCreateTensorH1Lagrange(ceed, dim, 1, P_1d, Q_1d,
2652bfb9bbSJeremy L Thompson                                   CEED_GAUSS_LOBATTO, &b);
2752bfb9bbSJeremy L Thompson 
2852bfb9bbSJeremy L Thompson   CeedBasisApply(b, 1, CEED_NOTRANSPOSE, CEED_EVAL_INTERP, U, V);
2952bfb9bbSJeremy L Thompson 
3052bfb9bbSJeremy L Thompson   CeedVectorGetArrayRead(V, CEED_MEM_HOST, &v);
3152bfb9bbSJeremy L Thompson   for (i = 0; i < len; i++)
322f8bb677Svaleriabarra     if (fabs(v[i] - 1.) > 1E-15)
3352bfb9bbSJeremy L Thompson       // LCOV_EXCL_START
3452bfb9bbSJeremy L Thompson       printf("v[%d] = %f != 1.\n", i, v[i]);
3552bfb9bbSJeremy L Thompson   // LCOV_EXCL_STOP
3652bfb9bbSJeremy L Thompson   CeedVectorRestoreArrayRead(V, &v);
37a8de75f0Sjeremylt 
38a8de75f0Sjeremylt   CeedBasisDestroy(&b);
3952bfb9bbSJeremy L Thompson   CeedVectorDestroy(&U);
4052bfb9bbSJeremy L Thompson   CeedVectorDestroy(&V);
41a8de75f0Sjeremylt   CeedDestroy(&ceed);
42a8de75f0Sjeremylt   return 0;
43a8de75f0Sjeremylt }
44