11134a487Sjeremylt /// @file 2d1d35e2fSjeremylt /// Test creation, evaluation, and destruction of identity QFunction with size>1 3d1d35e2fSjeremylt /// \test Test creation, evaluation, and destruction of identity QFunction with size>1 41134a487Sjeremylt #include <ceed.h> 51134a487Sjeremylt #include <math.h> 61134a487Sjeremylt 71134a487Sjeremylt int main(int argc, char **argv) { 81134a487Sjeremylt Ceed ceed; 91134a487Sjeremylt CeedVector in[16], out[16]; 10*4fee36f0SJeremy L Thompson CeedVector u, v; 111134a487Sjeremylt CeedQFunction qf; 12*4fee36f0SJeremy L Thompson CeedInt q = 8, size = 3; 13*4fee36f0SJeremy L Thompson CeedScalar u_array[q * size]; 141134a487Sjeremylt 151134a487Sjeremylt CeedInit(argv[1], &ceed); 161134a487Sjeremylt 17*4fee36f0SJeremy L Thompson CeedVectorCreate(ceed, q * size, &u); 18*4fee36f0SJeremy L Thompson for (CeedInt i = 0; i < q * size; i++) u_array[i] = i * i; 19*4fee36f0SJeremy L Thompson CeedVectorSetArray(u, CEED_MEM_HOST, CEED_USE_POINTER, u_array); 20*4fee36f0SJeremy L Thompson CeedVectorCreate(ceed, q * size, &v); 21*4fee36f0SJeremy L Thompson CeedVectorSetValue(v, 0); 22*4fee36f0SJeremy L Thompson 232b730f8bSJeremy L Thompson CeedQFunctionCreateIdentity(ceed, size, CEED_EVAL_INTERP, CEED_EVAL_NONE, &qf); 241134a487Sjeremylt { 25*4fee36f0SJeremy L Thompson in[0] = u; 26*4fee36f0SJeremy L Thompson out[0] = v; 27*4fee36f0SJeremy L Thompson CeedQFunctionApply(qf, q, in, out); 281134a487Sjeremylt } 291134a487Sjeremylt 30*4fee36f0SJeremy L Thompson // Verify results 31*4fee36f0SJeremy L Thompson { 32*4fee36f0SJeremy L Thompson const CeedScalar *v_array; 331134a487Sjeremylt 34*4fee36f0SJeremy L Thompson CeedVectorGetArrayRead(v, CEED_MEM_HOST, &v_array); 35*4fee36f0SJeremy L Thompson for (CeedInt i = 0; i < q * size; i++) { 36*4fee36f0SJeremy L Thompson if (fabs(v_array[i] - u_array[i]) > 1e-12) printf("[%" CeedInt_FMT "] v %f != u %f\n", i, v_array[i], u_array[i]); 37*4fee36f0SJeremy L Thompson } 38*4fee36f0SJeremy L Thompson CeedVectorRestoreArrayRead(v, &v_array); 39*4fee36f0SJeremy L Thompson } 40*4fee36f0SJeremy L Thompson 41*4fee36f0SJeremy L Thompson CeedVectorDestroy(&u); 42*4fee36f0SJeremy L Thompson CeedVectorDestroy(&v); 431134a487Sjeremylt CeedQFunctionDestroy(&qf); 441134a487Sjeremylt CeedDestroy(&ceed); 451134a487Sjeremylt return 0; 461134a487Sjeremylt } 47