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,18 @@ 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 , basis_Pi_r ;
26+ CeedInt strides [3 ];
27+ CeedElemRestriction elem_restr_Pi , 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_ceed , y_ceed , x_Pi_ceed , y_Pi_ceed , x_r_ceed , y_r_ceed , z_r_ceed ,
31+ mult_ceed , mask_r_ceed , mask_Gamma_ceed , mask_I_ceed ;
32+ };
33+
4834// BP specific data
4935typedef struct {
5036 CeedInt num_comp_x , num_comp_u , topo_dim , q_data_size , q_extra ;
@@ -57,4 +43,41 @@ typedef struct {
5743 PetscInt , PetscScalar * , void * );
5844} BPData ;
5945
46+ // -----------------------------------------------------------------------------
47+ // PETSc Operator Structs
48+ // -----------------------------------------------------------------------------
49+
50+ // Data for PETSc Matshell
51+ typedef struct UserO_ * UserO ;
52+ struct UserO_ {
53+ MPI_Comm comm ;
54+ DM dm ;
55+ Vec X_loc , Y_loc , diag ;
56+ CeedVector x_ceed , y_ceed ;
57+ CeedOperator op ;
58+ Ceed ceed ;
59+ };
60+
61+ // Data for PETSc Prolong/Restrict Matshells
62+ typedef struct UserProlongRestr_ * UserProlongRestr ;
63+ struct UserProlongRestr_ {
64+ MPI_Comm comm ;
65+ DM dmc , dmf ;
66+ Vec loc_vec_c , loc_vec_f , mult_vec ;
67+ CeedVector ceed_vec_c , ceed_vec_f ;
68+ CeedOperator op_prolong , op_restrict ;
69+ Ceed ceed ;
70+ };
71+ // Data for PETSc PCshell
72+ typedef struct UserBDDC_ * UserBDDC ;
73+ struct UserBDDC_ {
74+ MPI_Comm comm ;
75+ DM dm , dm_Pi ;
76+ SNES snes_Pi ;
77+ KSP ksp_S_Pi ;
78+ Mat mat_S_Pi ;
79+ Vec X_loc , Y_loc , X_Pi , Y_Pi , X_Pi_loc , Y_Pi_loc , mult ;
80+ CeedDataBDDC ceed_data_bddc ;
81+ };
82+
6083#endif // structs_h
0 commit comments