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
main(int argc,char ** argv)8 int main(int argc, char **argv) {
9 Ceed ceed;
10 CeedBasis basis;
11 CeedVector u, v;
12 int i, dim = 2, p = 4, q = 4, len = (int)(pow((CeedScalar)(q), dim) + 0.4);
13
14 CeedInit(argv[1], &ceed);
15
16 CeedVectorCreate(ceed, len, &u);
17 CeedVectorCreate(ceed, len, &v);
18
19 {
20 CeedScalar u_array[len];
21
22 for (i = 0; i < len; i++) u_array[i] = 1.0;
23 CeedVectorSetArray(u, CEED_MEM_HOST, CEED_COPY_VALUES, u_array);
24 }
25
26 CeedBasisCreateTensorH1Lagrange(ceed, dim, 1, p, q, CEED_GAUSS_LOBATTO, &basis);
27
28 CeedBasisApply(basis, 1, CEED_NOTRANSPOSE, CEED_EVAL_INTERP, u, v);
29
30 {
31 const CeedScalar *v_array;
32
33 CeedVectorGetArrayRead(v, CEED_MEM_HOST, &v_array);
34 for (i = 0; i < len; i++) {
35 if (fabs(v_array[i] - 1.) > 10. * CEED_EPSILON) printf("v[%" CeedInt_FMT "] = %f != 1.\n", i, v_array[i]);
36 }
37 CeedVectorRestoreArrayRead(v, &v_array);
38 }
39
40 CeedBasisDestroy(&basis);
41 CeedVectorDestroy(&u);
42 CeedVectorDestroy(&v);
43 CeedDestroy(&ceed);
44 return 0;
45 }
46