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