/// @file /// Test creation, evaluation, and destruction for QFunction /// \test Test creation, evaluation, and destruction for QFunction #include #include #include "t401-qfunction.h" int main(int argc, char **argv) { Ceed ceed; CeedVector in[16], out[16]; CeedVector Q_data, W, U, V; CeedQFunction qf_setup, qf_mass; CeedQFunctionContext ctx; CeedInt Q = 8; const CeedScalar *vv; CeedScalar w[Q], u[Q], v[Q], ctxData[5] = {1, 2, 3, 4, 5}; CeedInit(argv[1], &ceed); CeedQFunctionCreateInterior(ceed, 1, setup, setup_loc, &qf_setup); CeedQFunctionAddInput(qf_setup, "w", 1, CEED_EVAL_WEIGHT); CeedQFunctionAddOutput(qf_setup, "qdata", 1, CEED_EVAL_NONE); CeedQFunctionCreateInterior(ceed, 1, mass, mass_loc, &qf_mass); CeedQFunctionAddInput(qf_mass, "qdata", 1, CEED_EVAL_NONE); CeedQFunctionAddInput(qf_mass, "u", 1, CEED_EVAL_INTERP); CeedQFunctionAddOutput(qf_mass, "v", 1, CEED_EVAL_INTERP); CeedQFunctionContextCreate(ceed, &ctx); CeedQFunctionContextSetData(ctx, CEED_MEM_HOST, CEED_USE_POINTER, sizeof(ctxData), &ctxData); CeedQFunctionSetContext(qf_mass, ctx); for (CeedInt i=0; i 1.e-14) // LCOV_EXCL_START printf("[%d] v %f != vv %f\n",i, v[i], vv[i]); // LCOV_EXCL_STOP CeedVectorRestoreArrayRead(V, &vv); CeedVectorDestroy(&W); CeedVectorDestroy(&U); CeedVectorDestroy(&V); CeedVectorDestroy(&Q_data); CeedQFunctionDestroy(&qf_setup); CeedQFunctionDestroy(&qf_mass); CeedQFunctionContextDestroy(&ctx); CeedDestroy(&ceed); return 0; }