xref: /libCEED/tests/t310-basis.c (revision 2b730f8b5a9c809740a0b3b302db43a719c636b1)
1a8de75f0Sjeremylt /// @file
2d1d35e2fSjeremylt /// Test square Gauss Lobatto interp_1d is identity
3d1d35e2fSjeremylt /// \test Test square Gauss Lobatto interp_1d is identity
4a8de75f0Sjeremylt #include <ceed.h>
552bfb9bbSJeremy L Thompson #include <math.h>
6*2b730f8bSJeremy L Thompson #include <stdio.h>
7a8de75f0Sjeremylt 
8a8de75f0Sjeremylt int main(int argc, char **argv) {
9a8de75f0Sjeremylt   Ceed              ceed;
10a8de75f0Sjeremylt   CeedBasis         b;
1152bfb9bbSJeremy L Thompson   CeedVector        U, V;
12*2b730f8bSJeremy L Thompson   int               i, dim = 2, P_1d = 4, Q_1d = 4, len = (int)(pow((CeedScalar)(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 
21*2b730f8bSJeremy L Thompson   for (i = 0; i < len; i++) u[i] = 1.0;
2252bfb9bbSJeremy L Thompson   CeedVectorSetArray(U, CEED_MEM_HOST, CEED_USE_POINTER, u);
2352bfb9bbSJeremy L Thompson 
24*2b730f8bSJeremy L Thompson   CeedBasisCreateTensorH1Lagrange(ceed, dim, 1, P_1d, Q_1d, CEED_GAUSS_LOBATTO, &b);
2552bfb9bbSJeremy L Thompson 
2652bfb9bbSJeremy L Thompson   CeedBasisApply(b, 1, CEED_NOTRANSPOSE, CEED_EVAL_INTERP, U, V);
2752bfb9bbSJeremy L Thompson 
2852bfb9bbSJeremy L Thompson   CeedVectorGetArrayRead(V, CEED_MEM_HOST, &v);
29*2b730f8bSJeremy L Thompson   for (i = 0; i < len; i++) {
30*2b730f8bSJeremy L Thompson     if (fabs(v[i] - 1.) > 10. * CEED_EPSILON) printf("v[%" CeedInt_FMT "] = %f != 1.\n", i, v[i]);
31*2b730f8bSJeremy L Thompson   }
3252bfb9bbSJeremy L Thompson   CeedVectorRestoreArrayRead(V, &v);
33a8de75f0Sjeremylt 
34a8de75f0Sjeremylt   CeedBasisDestroy(&b);
3552bfb9bbSJeremy L Thompson   CeedVectorDestroy(&U);
3652bfb9bbSJeremy L Thompson   CeedVectorDestroy(&V);
37a8de75f0Sjeremylt   CeedDestroy(&ceed);
38a8de75f0Sjeremylt   return 0;
39a8de75f0Sjeremylt }
40