/// @file /// Test creation, action, and destruction for mass matrix operator /// \test Test creation, action, and destruction for mass matrix operator #include #include #include #include "t320-basis.h" #include "t510-operator.h" int main(int argc, char **argv) { Ceed ceed; CeedElemRestriction elem_restr_x, elem_restr_u, elem_restr_qd_i; CeedBasis basis_x, basis_u; CeedQFunction qf_setup, qf_mass; CeedOperator op_setup, op_mass; CeedVector q_data, X, U, V; const CeedScalar *hv; CeedInt num_elem = 12, dim = 2, P = 6, Q = 4; CeedInt nx = 3, ny = 2; CeedInt row, col, offset; CeedInt num_dofs = (nx*2+1)*(ny*2+1), num_qpts = num_elem*Q; CeedInt indx[num_elem*P]; CeedScalar x[dim*num_dofs]; CeedScalar q_ref[dim*Q], q_weight[Q]; CeedScalar interp[P*Q], grad[dim*P*Q]; CeedScalar sum; CeedInit(argv[1], &ceed); for (CeedInt i=0; i1000.*CEED_EPSILON) // LCOV_EXCL_START printf("Computed Area: %f != True Area: 1.0\n", sum); // LCOV_EXCL_STOP CeedVectorRestoreArrayRead(V, &hv); CeedQFunctionDestroy(&qf_setup); CeedQFunctionDestroy(&qf_mass); CeedOperatorDestroy(&op_setup); CeedOperatorDestroy(&op_mass); CeedElemRestrictionDestroy(&elem_restr_u); CeedElemRestrictionDestroy(&elem_restr_x); CeedElemRestrictionDestroy(&elem_restr_qd_i); CeedBasisDestroy(&basis_u); CeedBasisDestroy(&basis_x); CeedVectorDestroy(&X); CeedVectorDestroy(&U); CeedVectorDestroy(&V); CeedVectorDestroy(&q_data); CeedDestroy(&ceed); return 0; }