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