/// @file /// Test creation, action, and destruction for diffusion matrix operator /// \test Test creation, action, and destruction for diffusion matrix operator #include #include #include #include "t320-basis.h" #include "t522-operator.h" /* The mesh comprises of two rows of 3 quadralaterals followed by one row of 6 triangles: _ _ _ |_|_|_| |_|_|_| |/|/|/| */ int main(int argc, char **argv) { Ceed ceed; CeedElemRestriction ErestrictxTet, ErestrictuTet, ErestrictqdiTet, ErestrictxHex, ErestrictuHex, ErestrictqdiHex; CeedBasis bxTet, buTet, bxHex, buHex; CeedQFunction qf_setupTet, qf_diffTet, qf_setupHex, qf_diffHex; CeedOperator op_setupTet, op_diffTet, op_setupHex, op_diffHex, op_setup, op_diff; CeedVector qdataTet, qdataHex, X, U, V; const CeedScalar *hv; CeedInt nelemTet = 6, PTet = 6, QTet = 4, nelemHex = 6, PHex = 3, QHex = 4, dim = 2; CeedInt nx = 3, ny = 3, nxTet = 3, nyTet = 1, nxHex = 3; CeedInt row, col, offset; CeedInt ndofs = (nx*2+1)*(ny*2+1), nqptsTet = nelemTet*QTet, nqptsHex = nelemHex*QHex*QHex; CeedInt indxTet[nelemTet*PTet], indxHex[nelemHex*PHex*PHex]; CeedScalar x[dim*ndofs]; CeedScalar qref[dim*QTet], qweight[QTet]; CeedScalar interp[PTet*QTet], grad[dim*PTet*QTet]; CeedInit(argv[1], &ceed); // DoF Coordinates for (CeedInt i=0; i1e-14) printf("Computed: %f != True: 0.0\n", hv[i]); CeedVectorRestoreArrayRead(V, &hv); // Cleanup CeedQFunctionDestroy(&qf_setupTet); CeedQFunctionDestroy(&qf_diffTet); CeedOperatorDestroy(&op_setupTet); CeedOperatorDestroy(&op_diffTet); CeedQFunctionDestroy(&qf_setupHex); CeedQFunctionDestroy(&qf_diffHex); CeedOperatorDestroy(&op_setupHex); CeedOperatorDestroy(&op_diffHex); CeedOperatorDestroy(&op_setup); CeedOperatorDestroy(&op_diff); CeedElemRestrictionDestroy(&ErestrictuTet); CeedElemRestrictionDestroy(&ErestrictxTet); CeedElemRestrictionDestroy(&ErestrictqdiTet); CeedElemRestrictionDestroy(&ErestrictuHex); CeedElemRestrictionDestroy(&ErestrictxHex); CeedElemRestrictionDestroy(&ErestrictqdiHex); CeedBasisDestroy(&buTet); CeedBasisDestroy(&bxTet); CeedBasisDestroy(&buHex); CeedBasisDestroy(&bxHex); CeedVectorDestroy(&X); CeedVectorDestroy(&U); CeedVectorDestroy(&V); CeedVectorDestroy(&qdataTet); CeedVectorDestroy(&qdataHex); CeedDestroy(&ceed); return 0; }