xref: /libCEED/examples/petsc/include/bpsproblemdata.h (revision 9b072555b57804a6f4e0fc2b1ad83be89838f0e5)
1e83e87a5Sjeremylt #ifndef bpsproblemdata_h
2e83e87a5Sjeremylt #define bpsproblemdata_h
3e83e87a5Sjeremylt 
4e83e87a5Sjeremylt #include <ceed.h>
5e83e87a5Sjeremylt #include <petsc.h>
6e83e87a5Sjeremylt #include "../include/bcfunctions.h"
7e83e87a5Sjeremylt #include "../include/structs.h"
8e83e87a5Sjeremylt #include "../qfunctions/bps/bp1.h"
9e83e87a5Sjeremylt #include "../qfunctions/bps/bp2.h"
10e83e87a5Sjeremylt #include "../qfunctions/bps/bp3.h"
11e83e87a5Sjeremylt #include "../qfunctions/bps/bp4.h"
12e83e87a5Sjeremylt #include "../qfunctions/bps/common.h"
13e83e87a5Sjeremylt 
14e83e87a5Sjeremylt // -----------------------------------------------------------------------------
15e83e87a5Sjeremylt // BP Option Data
16e83e87a5Sjeremylt // -----------------------------------------------------------------------------
17e83e87a5Sjeremylt 
18e83e87a5Sjeremylt // BP options
19e83e87a5Sjeremylt typedef enum {
20e83e87a5Sjeremylt   CEED_BP1 = 0, CEED_BP2 = 1, CEED_BP3 = 2,
21e83e87a5Sjeremylt   CEED_BP4 = 3, CEED_BP5 = 4, CEED_BP6 = 5
22*9b072555Sjeremylt } BPType;
23e83e87a5Sjeremylt 
24*9b072555Sjeremylt BPData bp_options[6] = {
25e83e87a5Sjeremylt   [CEED_BP1] = {
26*9b072555Sjeremylt     .num_comp_u = 1,
27*9b072555Sjeremylt     .num_comp_x = 3,
28*9b072555Sjeremylt     .topo_dim = 3,
29*9b072555Sjeremylt     .q_data_size = 1,
30*9b072555Sjeremylt     .q_extra = 1,
31*9b072555Sjeremylt     .setup_geo = SetupMassGeo,
32*9b072555Sjeremylt     .setup_rhs = SetupMassRhs,
33e83e87a5Sjeremylt     .apply = Mass,
34e83e87a5Sjeremylt     .error = Error,
35*9b072555Sjeremylt     .setup_geo_loc = SetupMassGeo_loc,
36*9b072555Sjeremylt     .setup_rhs_loc = SetupMassRhs_loc,
37*9b072555Sjeremylt     .apply_loc = Mass_loc,
38*9b072555Sjeremylt     .error_loc = Error_loc,
39*9b072555Sjeremylt     .in_mode = CEED_EVAL_INTERP,
40*9b072555Sjeremylt     .out_mode = CEED_EVAL_INTERP,
41*9b072555Sjeremylt     .q_mode = CEED_GAUSS,
42*9b072555Sjeremylt     .enforce_bc = PETSC_FALSE,
43*9b072555Sjeremylt     .bc_func = BCsMass
44e83e87a5Sjeremylt   },
45e83e87a5Sjeremylt   [CEED_BP2] = {
46*9b072555Sjeremylt     .num_comp_u = 3,
47*9b072555Sjeremylt     .num_comp_x = 3,
48*9b072555Sjeremylt     .topo_dim = 3,
49*9b072555Sjeremylt     .q_data_size = 1,
50*9b072555Sjeremylt     .q_extra = 1,
51*9b072555Sjeremylt     .setup_geo = SetupMassGeo,
52*9b072555Sjeremylt     .setup_rhs = SetupMassRhs3,
53e83e87a5Sjeremylt     .apply = Mass3,
54e83e87a5Sjeremylt     .error = Error3,
55*9b072555Sjeremylt     .setup_geo_loc = SetupMassGeo_loc,
56*9b072555Sjeremylt     .setup_rhs_loc = SetupMassRhs3_loc,
57*9b072555Sjeremylt     .apply_loc = Mass3_loc,
58*9b072555Sjeremylt     .error_loc = Error3_loc,
59*9b072555Sjeremylt     .in_mode = CEED_EVAL_INTERP,
60*9b072555Sjeremylt     .out_mode = CEED_EVAL_INTERP,
61*9b072555Sjeremylt     .q_mode = CEED_GAUSS,
62*9b072555Sjeremylt     .enforce_bc = PETSC_FALSE,
63*9b072555Sjeremylt     .bc_func = BCsMass
64e83e87a5Sjeremylt   },
65e83e87a5Sjeremylt   [CEED_BP3] = {
66*9b072555Sjeremylt     .num_comp_u = 1,
67*9b072555Sjeremylt     .num_comp_x = 3,
68*9b072555Sjeremylt     .topo_dim = 3,
69*9b072555Sjeremylt     .q_data_size = 7,
70*9b072555Sjeremylt     .q_extra = 1,
71*9b072555Sjeremylt     .setup_geo = SetupDiffGeo,
72*9b072555Sjeremylt     .setup_rhs = SetupDiffRhs,
73e83e87a5Sjeremylt     .apply = Diff,
74e83e87a5Sjeremylt     .error = Error,
75*9b072555Sjeremylt     .setup_geo_loc = SetupDiffGeo_loc,
76*9b072555Sjeremylt     .setup_rhs_loc = SetupDiffRhs_loc,
77*9b072555Sjeremylt     .apply_loc = Diff_loc,
78*9b072555Sjeremylt     .error_loc = Error_loc,
79*9b072555Sjeremylt     .in_mode = CEED_EVAL_GRAD,
80*9b072555Sjeremylt     .out_mode = CEED_EVAL_GRAD,
81*9b072555Sjeremylt     .q_mode = CEED_GAUSS,
82*9b072555Sjeremylt     .enforce_bc = PETSC_TRUE,
83*9b072555Sjeremylt     .bc_func = BCsDiff
84e83e87a5Sjeremylt   },
85e83e87a5Sjeremylt   [CEED_BP4] = {
86*9b072555Sjeremylt     .num_comp_u = 3,
87*9b072555Sjeremylt     .num_comp_x = 3,
88*9b072555Sjeremylt     .topo_dim = 3,
89*9b072555Sjeremylt     .q_data_size = 7,
90*9b072555Sjeremylt     .q_extra = 1,
91*9b072555Sjeremylt     .setup_geo = SetupDiffGeo,
92*9b072555Sjeremylt     .setup_rhs = SetupDiffRhs3,
93e83e87a5Sjeremylt     .apply = Diff3,
94e83e87a5Sjeremylt     .error = Error3,
95*9b072555Sjeremylt     .setup_geo_loc = SetupDiffGeo_loc,
96*9b072555Sjeremylt     .setup_rhs_loc = SetupDiffRhs3_loc,
97*9b072555Sjeremylt     .apply_loc = Diff3_loc,
98*9b072555Sjeremylt     .error_loc = Error3_loc,
99*9b072555Sjeremylt     .in_mode = CEED_EVAL_GRAD,
100*9b072555Sjeremylt     .out_mode = CEED_EVAL_GRAD,
101*9b072555Sjeremylt     .q_mode = CEED_GAUSS,
102*9b072555Sjeremylt     .enforce_bc = PETSC_TRUE,
103*9b072555Sjeremylt     .bc_func = BCsDiff
104e83e87a5Sjeremylt   },
105e83e87a5Sjeremylt   [CEED_BP5] = {
106*9b072555Sjeremylt     .num_comp_u = 1,
107*9b072555Sjeremylt     .num_comp_x = 3,
108*9b072555Sjeremylt     .topo_dim = 3,
109*9b072555Sjeremylt     .q_data_size = 7,
110*9b072555Sjeremylt     .q_extra = 0,
111*9b072555Sjeremylt     .setup_geo = SetupDiffGeo,
112*9b072555Sjeremylt     .setup_rhs = SetupDiffRhs,
113e83e87a5Sjeremylt     .apply = Diff,
114e83e87a5Sjeremylt     .error = Error,
115*9b072555Sjeremylt     .setup_geo_loc = SetupDiffGeo_loc,
116*9b072555Sjeremylt     .setup_rhs_loc = SetupDiffRhs_loc,
117*9b072555Sjeremylt     .apply_loc = Diff_loc,
118*9b072555Sjeremylt     .error_loc = Error_loc,
119*9b072555Sjeremylt     .in_mode = CEED_EVAL_GRAD,
120*9b072555Sjeremylt     .out_mode = CEED_EVAL_GRAD,
121*9b072555Sjeremylt     .q_mode = CEED_GAUSS_LOBATTO,
122*9b072555Sjeremylt     .enforce_bc = PETSC_TRUE,
123*9b072555Sjeremylt     .bc_func = BCsDiff
124e83e87a5Sjeremylt   },
125e83e87a5Sjeremylt   [CEED_BP6] = {
126*9b072555Sjeremylt     .num_comp_u = 3,
127*9b072555Sjeremylt     .num_comp_x = 3,
128*9b072555Sjeremylt     .topo_dim = 3,
129*9b072555Sjeremylt     .q_data_size = 7,
130*9b072555Sjeremylt     .q_extra = 0,
131*9b072555Sjeremylt     .setup_geo = SetupDiffGeo,
132*9b072555Sjeremylt     .setup_rhs = SetupDiffRhs3,
133e83e87a5Sjeremylt     .apply = Diff3,
134e83e87a5Sjeremylt     .error = Error3,
135*9b072555Sjeremylt     .setup_geo_loc = SetupDiffGeo_loc,
136*9b072555Sjeremylt     .setup_rhs_loc = SetupDiffRhs3_loc,
137*9b072555Sjeremylt     .apply_loc = Diff3_loc,
138*9b072555Sjeremylt     .error_loc = Error3_loc,
139*9b072555Sjeremylt     .in_mode = CEED_EVAL_GRAD,
140*9b072555Sjeremylt     .out_mode = CEED_EVAL_GRAD,
141*9b072555Sjeremylt     .q_mode = CEED_GAUSS_LOBATTO,
142*9b072555Sjeremylt     .enforce_bc = PETSC_TRUE,
143*9b072555Sjeremylt     .bc_func = BCsDiff
144e83e87a5Sjeremylt   }
145e83e87a5Sjeremylt };
146e83e87a5Sjeremylt 
147e83e87a5Sjeremylt #endif // bpsproblemdata_h
148