xref: /libCEED/examples/petsc/include/bpsproblemdata.h (revision bdcc27286a8034df1dd97bd8aefef85a0efa7b00)
1 // Copyright (c) 2017-2025, Lawrence Livermore National Security, LLC and other CEED contributors.
2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
3 //
4 // SPDX-License-Identifier: BSD-2-Clause
5 //
6 // This file is part of CEED:  http://github.com/ceed
7 
8 /// @file
9 /// Problem data for BPs
10 #pragma once
11 
12 #include <ceed.h>
13 #include <petsc.h>
14 
15 #include "../include/structs.h"
16 #include "../qfunctions/bps/bp1.h"
17 #include "../qfunctions/bps/bp13.h"
18 #include "../qfunctions/bps/bp2.h"
19 #include "../qfunctions/bps/bp24.h"
20 #include "../qfunctions/bps/bp3.h"
21 #include "../qfunctions/bps/bp4.h"
22 #include "../qfunctions/bps/common.h"
23 
24 // -----------------------------------------------------------------------------
25 // BP Option Data
26 // -----------------------------------------------------------------------------
27 
28 BPData bp_options[8] = {
29     [CEED_BP1]  = {.num_comp_u    = 1,
30                    .num_comp_x    = 3,
31                    .topo_dim      = 3,
32                    .q_data_size   = 1,
33                    .q_extra       = 1,
34                    .setup_geo     = SetupMassGeo,
35                    .setup_rhs     = SetupMassRhs,
36                    .apply         = Mass,
37                    .error         = Error,
38                    .setup_geo_loc = SetupMassGeo_loc,
39                    .setup_rhs_loc = SetupMassRhs_loc,
40                    .apply_loc     = Mass_loc,
41                    .error_loc     = Error_loc,
42                    .in_mode       = CEED_EVAL_INTERP,
43                    .out_mode      = CEED_EVAL_INTERP,
44                    .q_mode        = CEED_GAUSS,
45                    .enforce_bc    = PETSC_FALSE},
46     [CEED_BP2]  = {.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     [CEED_BP3]  = {.num_comp_u    = 1,
64                    .num_comp_x    = 3,
65                    .topo_dim      = 3,
66                    .q_data_size   = 7,
67                    .q_extra       = 1,
68                    .setup_geo     = SetupDiffGeo,
69                    .setup_rhs     = SetupDiffRhs,
70                    .apply         = Diff,
71                    .error         = Error,
72                    .setup_geo_loc = SetupDiffGeo_loc,
73                    .setup_rhs_loc = SetupDiffRhs_loc,
74                    .apply_loc     = Diff_loc,
75                    .error_loc     = Error_loc,
76                    .in_mode       = CEED_EVAL_GRAD,
77                    .out_mode      = CEED_EVAL_GRAD,
78                    .q_mode        = CEED_GAUSS,
79                    .enforce_bc    = PETSC_TRUE },
80     [CEED_BP4]  = {.num_comp_u    = 3,
81                    .num_comp_x    = 3,
82                    .topo_dim      = 3,
83                    .q_data_size   = 7,
84                    .q_extra       = 1,
85                    .setup_geo     = SetupDiffGeo,
86                    .setup_rhs     = SetupDiffRhs3,
87                    .apply         = Diff3,
88                    .error         = Error3,
89                    .setup_geo_loc = SetupDiffGeo_loc,
90                    .setup_rhs_loc = SetupDiffRhs3_loc,
91                    .apply_loc     = Diff3_loc,
92                    .error_loc     = Error3_loc,
93                    .in_mode       = CEED_EVAL_GRAD,
94                    .out_mode      = CEED_EVAL_GRAD,
95                    .q_mode        = CEED_GAUSS,
96                    .enforce_bc    = PETSC_TRUE },
97     [CEED_BP5]  = {.num_comp_u    = 1,
98                    .num_comp_x    = 3,
99                    .topo_dim      = 3,
100                    .q_data_size   = 7,
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                    .enforce_bc    = PETSC_TRUE },
114     [CEED_BP6]  = {.num_comp_u    = 3,
115                    .num_comp_x    = 3,
116                    .topo_dim      = 3,
117                    .q_data_size   = 7,
118                    .q_extra       = 0,
119                    .setup_geo     = SetupDiffGeo,
120                    .setup_rhs     = SetupDiffRhs3,
121                    .apply         = Diff3,
122                    .error         = Error3,
123                    .setup_geo_loc = SetupDiffGeo_loc,
124                    .setup_rhs_loc = SetupDiffRhs3_loc,
125                    .apply_loc     = Diff3_loc,
126                    .error_loc     = Error3_loc,
127                    .in_mode       = CEED_EVAL_GRAD,
128                    .out_mode      = CEED_EVAL_GRAD,
129                    .q_mode        = CEED_GAUSS_LOBATTO,
130                    .enforce_bc    = PETSC_TRUE },
131     [CEED_BP13] = {.num_comp_u    = 1,
132                    .num_comp_x    = 3,
133                    .topo_dim      = 3,
134                    .q_data_size   = 7,
135                    .q_extra       = 1,
136                    .setup_geo     = SetupDiffGeo,
137                    .setup_rhs     = SetupMassDiffRhs,
138                    .apply         = MassDiff,
139                    .error         = Error,
140                    .setup_geo_loc = SetupDiffGeo_loc,
141                    .setup_rhs_loc = SetupMassDiffRhs_loc,
142                    .apply_loc     = MassDiff_loc,
143                    .error_loc     = Error_loc,
144                    .in_mode       = CEED_EVAL_INTERP + CEED_EVAL_GRAD,
145                    .out_mode      = CEED_EVAL_INTERP + CEED_EVAL_GRAD,
146                    .q_mode        = CEED_GAUSS,
147                    .enforce_bc    = PETSC_TRUE },
148     [CEED_BP24] = {.num_comp_u    = 3,
149                    .num_comp_x    = 3,
150                    .topo_dim      = 3,
151                    .q_data_size   = 7,
152                    .q_extra       = 1,
153                    .setup_geo     = SetupDiffGeo,
154                    .setup_rhs     = SetupMassDiffRhs3,
155                    .apply         = MassDiff3,
156                    .error         = Error3,
157                    .setup_geo_loc = SetupDiffGeo_loc,
158                    .setup_rhs_loc = SetupMassDiffRhs3_loc,
159                    .apply_loc     = MassDiff3_loc,
160                    .error_loc     = Error3_loc,
161                    .in_mode       = CEED_EVAL_INTERP + CEED_EVAL_GRAD,
162                    .out_mode      = CEED_EVAL_INTERP + CEED_EVAL_GRAD,
163                    .q_mode        = CEED_GAUSS,
164                    .enforce_bc    = PETSC_TRUE },
165 };
166