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