1 // Copyright (c) 2017-2026, 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[10] = { 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 [CEED_BP15] = {.num_comp_u = 1, 166 .num_comp_x = 3, 167 .topo_dim = 3, 168 .q_data_size = 7, 169 .q_extra = 0, 170 .setup_geo = SetupDiffGeo, 171 .setup_rhs = SetupMassDiffRhs, 172 .apply = MassDiff, 173 .error = Error, 174 .setup_geo_loc = SetupDiffGeo_loc, 175 .setup_rhs_loc = SetupMassDiffRhs_loc, 176 .apply_loc = MassDiff_loc, 177 .error_loc = Error_loc, 178 .in_mode = CEED_EVAL_INTERP + CEED_EVAL_GRAD, 179 .out_mode = CEED_EVAL_INTERP + CEED_EVAL_GRAD, 180 .q_mode = CEED_GAUSS_LOBATTO, 181 .enforce_bc = PETSC_TRUE }, 182 [CEED_BP26] = {.num_comp_u = 3, 183 .num_comp_x = 3, 184 .topo_dim = 3, 185 .q_data_size = 7, 186 .q_extra = 0, 187 .setup_geo = SetupDiffGeo, 188 .setup_rhs = SetupMassDiffRhs3, 189 .apply = MassDiff3, 190 .error = Error3, 191 .setup_geo_loc = SetupDiffGeo_loc, 192 .setup_rhs_loc = SetupMassDiffRhs3_loc, 193 .apply_loc = MassDiff3_loc, 194 .error_loc = Error3_loc, 195 .in_mode = CEED_EVAL_INTERP + CEED_EVAL_GRAD, 196 .out_mode = CEED_EVAL_INTERP + CEED_EVAL_GRAD, 197 .q_mode = CEED_GAUSS_LOBATTO, 198 .enforce_bc = PETSC_TRUE }, 199 }; 200