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