/// @file /// Test FLOP estimation for composite mass matrix operator /// \test Test FLOP estimation for composite mass matrix operator #include #include #include #include "t320-basis.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; CeedSize flop_estimate; CeedElemRestriction elem_restr_x_tet, elem_restr_u_tet, elem_restr_qd_i_tet, elem_restr_x_hex, elem_restr_u_hex, elem_restr_qd_i_hex; CeedBasis basis_x_tet, basis_u_tet, basis_x_hex, basis_u_hex; CeedQFunction qf_mass; CeedOperator op_mass_tet, op_mass_hex, op_mass; CeedVector q_data_tet, q_data_hex; CeedInt num_elem_tet = 6, P_tet = 6, Q_tet = 4, num_elem_hex = 6, P_hex = 3, Q_hex = 4, dim = 2; CeedInt n_x = 3, n_y = 3, n_x_tet = 3, n_y_tet = 1, n_x_hex = 3; CeedInt row, col, offset; CeedInt num_dofs = (n_x*2+1)*(n_y*2+1), num_qpts_tet = num_elem_tet*Q_tet, num_qpts_hex = num_elem_hex*Q_hex*Q_hex; CeedInt ind_x_tet[num_elem_tet*P_tet], ind_x_hex[num_elem_hex*P_hex*P_hex]; CeedScalar q_ref[dim*Q_tet], q_weight[Q_tet]; CeedScalar interp[P_tet*Q_tet], grad[dim*P_tet*Q_tet]; CeedInit(argv[1], &ceed); // Qdata Vectors CeedVectorCreate(ceed, num_qpts_tet, &q_data_tet); CeedVectorCreate(ceed, num_qpts_hex, &q_data_hex); // Set up Tet Elements for (CeedInt i=0; i