xref: /libCEED/tests/t301-basis.c (revision 57c64913cb6f06c2f6a40825dd942ceba0d2fe12)
1*57c64913Sjeremylt // Test square Gauss Lobatto interp1d is identity
2*57c64913Sjeremylt #include <ceed.h>
3*57c64913Sjeremylt #include <stdio.h>
4*57c64913Sjeremylt #include <math.h>
5*57c64913Sjeremylt 
6*57c64913Sjeremylt int main(int argc, char **argv) {
7*57c64913Sjeremylt   Ceed ceed;
8*57c64913Sjeremylt   CeedBasis b;
9*57c64913Sjeremylt   int i, dim = 2, P1d = 4, Q1d = 4, len = (int)(pow((double)(Q1d), dim) + 0.4);
10*57c64913Sjeremylt   CeedScalar u[len], v[len];
11*57c64913Sjeremylt 
12*57c64913Sjeremylt   CeedInit(argv[1], &ceed);
13*57c64913Sjeremylt   for (i = 0; i < len; i++) {
14*57c64913Sjeremylt     u[i] = 1.0;
15*57c64913Sjeremylt   }
16*57c64913Sjeremylt   CeedBasisCreateTensorH1Lagrange(ceed, dim, 1, P1d, Q1d, CEED_GAUSS_LOBATTO, &b);
17*57c64913Sjeremylt   CeedBasisApply(b, 1, CEED_NOTRANSPOSE, CEED_EVAL_INTERP, u, v);
18*57c64913Sjeremylt   for (i = 0; i < len; i++) {
19*57c64913Sjeremylt     if (fabs(v[i] - 1.) > 1e-15) printf("v[%d] = %f != 1.\n", i, v[i]);
20*57c64913Sjeremylt   }
21*57c64913Sjeremylt   CeedBasisDestroy(&b);
22*57c64913Sjeremylt   CeedDestroy(&ceed);
23*57c64913Sjeremylt   return 0;
24*57c64913Sjeremylt }
25