150c301a5SRezgar Shakeri /// @file 250c301a5SRezgar Shakeri /// Test creation and destruction of a 2D Quad non-tensor Hdiv basis 350c301a5SRezgar Shakeri /// \test Test creation and distruction of a 2D Quad non-tensor Hdiv basis 450c301a5SRezgar Shakeri #include <ceed.h> 550c301a5SRezgar Shakeri #include "t330-basis.h" 650c301a5SRezgar Shakeri 750c301a5SRezgar Shakeri int main(int argc, char **argv) { 850c301a5SRezgar Shakeri Ceed ceed; 950c301a5SRezgar Shakeri const CeedInt Q = 3, dim = 2, num_qpts = Q*Q, elem_nodes = 4; 1050c301a5SRezgar Shakeri CeedInt num_comp = 1; 1150c301a5SRezgar Shakeri CeedInt P = dim*elem_nodes; // dof per element! dof is vector in H(div) 1250c301a5SRezgar Shakeri CeedBasis b; 1350c301a5SRezgar Shakeri CeedScalar q_ref[dim*num_qpts], q_weights[num_qpts]; 1450c301a5SRezgar Shakeri CeedScalar interp[dim*P*num_qpts], div[P*num_qpts]; 1550c301a5SRezgar Shakeri 1650c301a5SRezgar Shakeri CeedInit(argv[1], &ceed); 1750c301a5SRezgar Shakeri 1850c301a5SRezgar Shakeri // Test skipped if using single precision 19*59058f14SJeremy L Thompson if (CEED_SCALAR_TYPE == CEED_SCALAR_FP32) 20*59058f14SJeremy L Thompson // LCOV_EXCL_START 2150c301a5SRezgar Shakeri return CeedError(ceed, CEED_ERROR_UNSUPPORTED, 2250c301a5SRezgar Shakeri "Test not implemented in single precision"); 23*59058f14SJeremy L Thompson // LCOV_EXCL_STOP 2450c301a5SRezgar Shakeri 2550c301a5SRezgar Shakeri HdivBasisQuad(Q, q_ref, q_weights, interp, div, CEED_GAUSS); 2650c301a5SRezgar Shakeri CeedBasisCreateHdiv(ceed, CEED_TOPOLOGY_QUAD, num_comp, P, num_qpts, interp, 2750c301a5SRezgar Shakeri div, q_ref, q_weights, &b); 2850c301a5SRezgar Shakeri // interp[0]--.interp[num_qpts-1] ==> basis in x-direction 2950c301a5SRezgar Shakeri // interp[num_qpts]--.interp[dim*num_qpts-1] ==> basis in y-direction 3050c301a5SRezgar Shakeri CeedBasisView(b, stdout); 3150c301a5SRezgar Shakeri 3250c301a5SRezgar Shakeri CeedBasisDestroy(&b); 3350c301a5SRezgar Shakeri CeedDestroy(&ceed); 3450c301a5SRezgar Shakeri return 0; 3550c301a5SRezgar Shakeri } 36