44#include <ceed.h>
55#include <petsc.h>
66
7- // -----------------------------------------------------------------------------
8- // PETSc Operator Structs
9- // -----------------------------------------------------------------------------
10-
11- // Data for PETSc Matshell
12- typedef struct UserO_ * UserO ;
13- struct UserO_ {
14- MPI_Comm comm ;
15- DM dm ;
16- Vec X_loc , Y_loc , diag ;
17- CeedVector x_ceed , y_ceed ;
18- CeedOperator op ;
19- Ceed ceed ;
20- };
21-
22- // Data for PETSc Prolong/Restrict Matshells
23- typedef struct UserProlongRestr_ * UserProlongRestr ;
24- struct UserProlongRestr_ {
25- MPI_Comm comm ;
26- DM dmc , dmf ;
27- Vec loc_vec_c , loc_vec_f , mult_vec ;
28- CeedVector ceed_vec_c , ceed_vec_f ;
29- CeedOperator op_prolong , op_restrict ;
30- Ceed ceed ;
31- };
32-
337// -----------------------------------------------------------------------------
348// libCEED Data Structs
359// -----------------------------------------------------------------------------
@@ -45,6 +19,17 @@ struct CeedData_ {
4519 CeedVector q_data , x_ceed , y_ceed ;
4620};
4721
22+ // libCEED data struct for BDDC
23+ typedef struct CeedDataBDDC_ * CeedDataBDDC ;
24+ struct CeedDataBDDC_ {
25+ CeedBasis basis_Pi ;
26+ CeedInt strides [3 ];
27+ CeedElemRestriction elem_restr_Pi , elem_restr_Pi_r , elem_restr_r ;
28+ CeedOperator op_Pi_r , op_r_Pi , op_Pi_Pi , op_r_r , op_r_r_inv ,
29+ op_inject_Pi , op_inject_r , op_restrict_Pi , op_restrict_r ;
30+ CeedVector x_Pi_ceed , y_Pi_ceed , x_r_ceed , y_r_ceed , mult_ceed ;
31+ };
32+
4833// BP specific data
4934typedef struct {
5035 CeedInt num_comp_x , num_comp_u , topo_dim , q_data_size , q_extra ;
@@ -57,4 +42,40 @@ typedef struct {
5742 PetscInt , PetscScalar * , void * );
5843} BPData ;
5944
45+ // -----------------------------------------------------------------------------
46+ // PETSc Operator Structs
47+ // -----------------------------------------------------------------------------
48+
49+ // Data for PETSc Matshell
50+ typedef struct UserO_ * UserO ;
51+ struct UserO_ {
52+ MPI_Comm comm ;
53+ DM dm ;
54+ Vec X_loc , Y_loc , diag ;
55+ CeedVector x_ceed , y_ceed ;
56+ CeedOperator op ;
57+ Ceed ceed ;
58+ };
59+
60+ // Data for PETSc Prolong/Restrict Matshells
61+ typedef struct UserProlongRestr_ * UserProlongRestr ;
62+ struct UserProlongRestr_ {
63+ MPI_Comm comm ;
64+ DM dmc , dmf ;
65+ Vec loc_vec_c , loc_vec_f , mult_vec ;
66+ CeedVector ceed_vec_c , ceed_vec_f ;
67+ CeedOperator op_prolong , op_restrict ;
68+ Ceed ceed ;
69+ };
70+ // Data for PETSc PCshell
71+ typedef struct UserBDDC_ * UserBDDC ;
72+ struct UserBDDC_ {
73+ MPI_Comm comm ;
74+ DM dm , dm_Pi ;
75+ SNES snes_Pi ;
76+ KSP ksp_S_Pi ;
77+ Vec X_loc , Y_loc , X_Pi , Y_Pi , X_Pi_loc , Y_Pi_loc , mult ;
78+ CeedDataBDDC ceed_data_bddc ;
79+ };
80+
6081#endif // structs_h
0 commit comments