xref: /libCEED/examples/petsc/include/sphereproblemdata.h (revision e83e87a50f1b2e8810b376a735430565127e4d25) !
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 bpOptions[6] = {
24   [CEED_BP1] = {
25     .ncompu = 1,
26     .ncompx = 3,
27     .topodim = 3,
28     .qdatasize = 1,
29     .qextra = 1,
30     .setupgeo = SetupMassGeo,
31     .setuprhs = SetupMassRhs,
32     .apply = Mass,
33     .error = Error,
34     .setupgeofname = SetupMassGeo_loc,
35     .setuprhsfname = SetupMassRhs_loc,
36     .applyfname = Mass_loc,
37     .errorfname = Error_loc,
38     .inmode = CEED_EVAL_INTERP,
39     .outmode = CEED_EVAL_INTERP,
40     .qmode = CEED_GAUSS
41   },
42   [CEED_BP2] = {
43     .ncompu = 3,
44     .ncompx = 3,
45     .topodim = 3,
46     .qdatasize = 1,
47     .qextra = 1,
48     .setupgeo = SetupMassGeo,
49     .setuprhs = SetupMassRhs3,
50     .apply = Mass3,
51     .error = Error3,
52     .setupgeofname = SetupMassGeo_loc,
53     .setuprhsfname = SetupMassRhs3_loc,
54     .applyfname = Mass3_loc,
55     .errorfname = Error3_loc,
56     .inmode = CEED_EVAL_INTERP,
57     .outmode = CEED_EVAL_INTERP,
58     .qmode = CEED_GAUSS
59   },
60   [CEED_BP3] = {
61     .ncompu = 1,
62     .ncompx = 3,
63     .topodim = 3,
64     .qdatasize = 4,
65     .qextra = 1,
66     .setupgeo = SetupDiffGeo,
67     .setuprhs = SetupDiffRhs,
68     .apply = Diff,
69     .error = Error,
70     .setupgeofname = SetupDiffGeo_loc,
71     .setuprhsfname = SetupDiffRhs_loc,
72     .applyfname = Diff_loc,
73     .errorfname = Error_loc,
74     .inmode = CEED_EVAL_GRAD,
75     .outmode = CEED_EVAL_GRAD,
76     .qmode = CEED_GAUSS
77   },
78   [CEED_BP4] = {
79     .ncompu = 3,
80     .ncompx = 3,
81     .topodim = 3,
82     .qdatasize = 4,
83     .qextra = 1,
84     .setupgeo = SetupDiffGeo,
85     .setuprhs = SetupDiffRhs3,
86     .apply = Diff3,
87     .error = Error3,
88     .setupgeofname = SetupDiffGeo_loc,
89     .setuprhsfname = SetupDiffRhs3_loc,
90     .applyfname = Diff_loc,
91     .errorfname = Error3_loc,
92     .inmode = CEED_EVAL_GRAD,
93     .outmode = CEED_EVAL_GRAD,
94     .qmode = CEED_GAUSS
95   },
96   [CEED_BP5] = {
97     .ncompu = 1,
98     .ncompx = 3,
99     .topodim = 3,
100     .qdatasize = 4,
101     .qextra = 0,
102     .setupgeo = SetupDiffGeo,
103     .setuprhs = SetupDiffRhs,
104     .apply = Diff,
105     .error = Error,
106     .setupgeofname = SetupDiffGeo_loc,
107     .setuprhsfname = SetupDiffRhs_loc,
108     .applyfname = Diff_loc,
109     .errorfname = Error_loc,
110     .inmode = CEED_EVAL_GRAD,
111     .outmode = CEED_EVAL_GRAD,
112     .qmode = CEED_GAUSS_LOBATTO
113   },
114   [CEED_BP6] = {
115     .ncompu = 3,
116     .ncompx = 3,
117     .topodim = 3,
118     .qdatasize = 4,
119     .qextra = 0,
120     .setupgeo = SetupDiffGeo,
121     .setuprhs = SetupDiffRhs3,
122     .apply = Diff3,
123     .error = Error3,
124     .setupgeofname = SetupDiffGeo_loc,
125     .setuprhsfname = SetupDiffRhs3_loc,
126     .applyfname = Diff_loc,
127     .errorfname = Error3_loc,
128     .inmode = CEED_EVAL_GRAD,
129     .outmode = CEED_EVAL_GRAD,
130     .qmode = CEED_GAUSS_LOBATTO
131   }
132 };
133 
134 #endif // sphereproblemdata_h
135