1b7c563b6SJeremy L Thompson #ifndef libceed_petsc_examples_structs_h 2b7c563b6SJeremy L Thompson #define libceed_petsc_examples_structs_h 3e83e87a5Sjeremylt 4e83e87a5Sjeremylt #include <ceed.h> 5e83e87a5Sjeremylt #include <petsc.h> 6e83e87a5Sjeremylt 7e83e87a5Sjeremylt // ----------------------------------------------------------------------------- 8e83e87a5Sjeremylt // PETSc Operator Structs 9e83e87a5Sjeremylt // ----------------------------------------------------------------------------- 10e83e87a5Sjeremylt 11e83e87a5Sjeremylt // Data for PETSc Matshell 12e83e87a5Sjeremylt typedef struct UserO_ *UserO; 13e83e87a5Sjeremylt struct UserO_ { 14e83e87a5Sjeremylt MPI_Comm comm; 15e83e87a5Sjeremylt DM dm; 169b072555Sjeremylt Vec X_loc, Y_loc, diag; 179b072555Sjeremylt CeedVector x_ceed, y_ceed; 18e83e87a5Sjeremylt CeedOperator op; 19e83e87a5Sjeremylt Ceed ceed; 20e83e87a5Sjeremylt }; 21e83e87a5Sjeremylt 22e83e87a5Sjeremylt // Data for PETSc Prolong/Restrict Matshells 23e83e87a5Sjeremylt typedef struct UserProlongRestr_ *UserProlongRestr; 24e83e87a5Sjeremylt struct UserProlongRestr_ { 25e83e87a5Sjeremylt MPI_Comm comm; 26e83e87a5Sjeremylt DM dmc, dmf; 279b072555Sjeremylt Vec loc_vec_c, loc_vec_f, mult_vec; 289b072555Sjeremylt CeedVector ceed_vec_c, ceed_vec_f; 299b072555Sjeremylt CeedOperator op_prolong, op_restrict; 30e83e87a5Sjeremylt Ceed ceed; 31e83e87a5Sjeremylt }; 32e83e87a5Sjeremylt 33e83e87a5Sjeremylt // ----------------------------------------------------------------------------- 34e83e87a5Sjeremylt // libCEED Data Structs 35e83e87a5Sjeremylt // ----------------------------------------------------------------------------- 36e83e87a5Sjeremylt 37e83e87a5Sjeremylt // libCEED data struct for level 38e83e87a5Sjeremylt typedef struct CeedData_ *CeedData; 39e83e87a5Sjeremylt struct CeedData_ { 40e83e87a5Sjeremylt Ceed ceed; 419b072555Sjeremylt CeedBasis basis_x, basis_u, basis_c_to_f; 429b072555Sjeremylt CeedElemRestriction elem_restr_x, elem_restr_u, elem_restr_u_i, elem_restr_qd_i; 439b072555Sjeremylt CeedQFunction qf_apply; 449b072555Sjeremylt CeedOperator op_apply, op_restrict, op_prolong; 459b072555Sjeremylt CeedVector q_data, x_ceed, y_ceed; 46e83e87a5Sjeremylt }; 47e83e87a5Sjeremylt 48e83e87a5Sjeremylt // BP specific data 49e83e87a5Sjeremylt typedef struct { 509b072555Sjeremylt CeedInt num_comp_x, num_comp_u, topo_dim, q_data_size, q_extra; 519b072555Sjeremylt CeedQFunctionUser setup_geo, setup_rhs, apply, error; 529b072555Sjeremylt const char *setup_geo_loc, *setup_rhs_loc, *apply_loc, *error_loc; 539b072555Sjeremylt CeedEvalMode in_mode, out_mode; 549b072555Sjeremylt CeedQuadMode q_mode; 559b072555Sjeremylt PetscBool enforce_bc; 569b072555Sjeremylt PetscErrorCode (*bc_func)(PetscInt, PetscReal, const PetscReal *, 57e83e87a5Sjeremylt PetscInt, PetscScalar *, void *); 589b072555Sjeremylt } BPData; 59e83e87a5Sjeremylt 60*de1229c5Srezgarshakeri // BP options 61*de1229c5Srezgarshakeri typedef enum { 62*de1229c5Srezgarshakeri CEED_BP1 = 0, CEED_BP2 = 1, CEED_BP3 = 2, 63*de1229c5Srezgarshakeri CEED_BP4 = 3, CEED_BP5 = 4, CEED_BP6 = 5 64*de1229c5Srezgarshakeri } BPType; 65*de1229c5Srezgarshakeri 66*de1229c5Srezgarshakeri // ----------------------------------------------------------------------------- 67*de1229c5Srezgarshakeri // Parameter structure for running problems 68*de1229c5Srezgarshakeri // ----------------------------------------------------------------------------- 69*de1229c5Srezgarshakeri typedef struct RunParams_ *RunParams; 70*de1229c5Srezgarshakeri struct RunParams_ { 71*de1229c5Srezgarshakeri MPI_Comm comm; 72*de1229c5Srezgarshakeri PetscBool test_mode, read_mesh, user_l_nodes, write_solution, simplex; 73*de1229c5Srezgarshakeri char *filename, *hostname; 74*de1229c5Srezgarshakeri PetscInt local_nodes, degree, q_extra, dim, num_comp_u, *mesh_elem; 75*de1229c5Srezgarshakeri PetscInt ksp_max_it_clip[2]; 76*de1229c5Srezgarshakeri PetscMPIInt ranks_per_node; 77*de1229c5Srezgarshakeri BPType bp_choice; 78*de1229c5Srezgarshakeri PetscLogStage solve_stage; 79*de1229c5Srezgarshakeri }; 80*de1229c5Srezgarshakeri 81b7c563b6SJeremy L Thompson #endif // libceed_petsc_examples_structs_h 82