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 "t330-basis.h" 550c301a5SRezgar Shakeri 6*2b730f8bSJeremy L Thompson #include <ceed.h> 7*2b730f8bSJeremy L Thompson 850c301a5SRezgar Shakeri int main(int argc, char **argv) { 950c301a5SRezgar Shakeri Ceed ceed; 1050c301a5SRezgar Shakeri const CeedInt Q = 3, dim = 2, num_qpts = Q * Q, elem_nodes = 4; 1150c301a5SRezgar Shakeri CeedInt num_comp = 1; 1250c301a5SRezgar Shakeri CeedInt P = dim * elem_nodes; // dof per element! dof is vector in H(div) 1350c301a5SRezgar Shakeri CeedBasis b; 1450c301a5SRezgar Shakeri CeedScalar q_ref[dim * num_qpts], q_weights[num_qpts]; 1550c301a5SRezgar Shakeri CeedScalar interp[dim * P * num_qpts], div[P * num_qpts]; 1650c301a5SRezgar Shakeri 1750c301a5SRezgar Shakeri CeedInit(argv[1], &ceed); 1850c301a5SRezgar Shakeri 1950c301a5SRezgar Shakeri // Test skipped if using single precision 2059058f14SJeremy L Thompson if (CEED_SCALAR_TYPE == CEED_SCALAR_FP32) 2159058f14SJeremy L Thompson // LCOV_EXCL_START 22*2b730f8bSJeremy L Thompson return CeedError(ceed, CEED_ERROR_UNSUPPORTED, "Test not implemented in single precision"); 2359058f14SJeremy L Thompson // LCOV_EXCL_STOP 2450c301a5SRezgar Shakeri 2550c301a5SRezgar Shakeri HdivBasisQuad(Q, q_ref, q_weights, interp, div, CEED_GAUSS); 26*2b730f8bSJeremy L Thompson CeedBasisCreateHdiv(ceed, CEED_TOPOLOGY_QUAD, num_comp, P, num_qpts, interp, div, q_ref, q_weights, &b); 2750c301a5SRezgar Shakeri // interp[0]--.interp[num_qpts-1] ==> basis in x-direction 2850c301a5SRezgar Shakeri // interp[num_qpts]--.interp[dim*num_qpts-1] ==> basis in y-direction 2950c301a5SRezgar Shakeri CeedBasisView(b, stdout); 3050c301a5SRezgar Shakeri 3150c301a5SRezgar Shakeri CeedBasisDestroy(&b); 3250c301a5SRezgar Shakeri CeedDestroy(&ceed); 3350c301a5SRezgar Shakeri return 0; 3450c301a5SRezgar Shakeri } 35