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