1 /// @file 2 /// Test creation, evaluation, and destruction of identity qfunction with size>1 3 /// \test Test creation, evaluation, and destruction of identity qfunction with size>1 4 #include <ceed.h> 5 #include <math.h> 6 7 int main(int argc, char **argv) { 8 Ceed ceed; 9 CeedVector in[16], out[16]; 10 CeedVector U, V; 11 CeedQFunction qf; 12 CeedInt Q = 8, size = 3; 13 const CeedScalar *v; 14 CeedScalar u[Q]; 15 16 CeedInit(argv[1], &ceed); 17 18 CeedQFunctionCreateIdentity(ceed, size, CEED_EVAL_INTERP, CEED_EVAL_INTERP, 19 &qf); 20 21 for (CeedInt i=0; i<Q*size; i++) 22 u[i] = i*i; 23 24 CeedVectorCreate(ceed, Q*size, &U); 25 CeedVectorSetArray(U, CEED_MEM_HOST, CEED_USE_POINTER, u); 26 CeedVectorCreate(ceed, Q*size, &V); 27 CeedVectorSetValue(V, 0); 28 29 { 30 in[0] = U; 31 out[0] = V; 32 CeedQFunctionApply(qf, Q, in, out); 33 } 34 35 CeedVectorGetArrayRead(V, CEED_MEM_HOST, &v); 36 for (CeedInt i=0; i<Q*size; i++) 37 if (fabs(v[i] - u[i])>1e-12) 38 // LCOV_EXCL_START 39 printf("[%d] v %f != u %f\n",i, v[i], u[i]); 40 // LCOV_EXCL_STOP 41 CeedVectorRestoreArrayRead(V, &v); 42 43 CeedVectorDestroy(&U); 44 CeedVectorDestroy(&V); 45 CeedQFunctionDestroy(&qf); 46 CeedDestroy(&ceed); 47 return 0; 48 } 49