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 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