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/bp2.h" 18 #include "../qfunctions/bps/bp3.h" 19 #include "../qfunctions/bps/bp4.h" 20 #include "../qfunctions/bps/common.h" 21 22 // ----------------------------------------------------------------------------- 23 // BP Option Data 24 // ----------------------------------------------------------------------------- 25 26 BPData bp_options[6] = { 27 [CEED_BP1] = {.num_comp_u = 1, 28 .num_comp_x = 3, 29 .topo_dim = 3, 30 .q_data_size = 1, 31 .q_extra = 1, 32 .setup_geo = SetupMassGeo, 33 .setup_rhs = SetupMassRhs, 34 .apply = Mass, 35 .error = Error, 36 .setup_geo_loc = SetupMassGeo_loc, 37 .setup_rhs_loc = SetupMassRhs_loc, 38 .apply_loc = Mass_loc, 39 .error_loc = Error_loc, 40 .in_mode = CEED_EVAL_INTERP, 41 .out_mode = CEED_EVAL_INTERP, 42 .q_mode = CEED_GAUSS, 43 .enforce_bc = PETSC_FALSE}, 44 [CEED_BP2] = {.num_comp_u = 3, 45 .num_comp_x = 3, 46 .topo_dim = 3, 47 .q_data_size = 1, 48 .q_extra = 1, 49 .setup_geo = SetupMassGeo, 50 .setup_rhs = SetupMassRhs3, 51 .apply = Mass3, 52 .error = Error3, 53 .setup_geo_loc = SetupMassGeo_loc, 54 .setup_rhs_loc = SetupMassRhs3_loc, 55 .apply_loc = Mass3_loc, 56 .error_loc = Error3_loc, 57 .in_mode = CEED_EVAL_INTERP, 58 .out_mode = CEED_EVAL_INTERP, 59 .q_mode = CEED_GAUSS, 60 .enforce_bc = PETSC_FALSE}, 61 [CEED_BP3] = {.num_comp_u = 1, 62 .num_comp_x = 3, 63 .topo_dim = 3, 64 .q_data_size = 7, 65 .q_extra = 1, 66 .setup_geo = SetupDiffGeo, 67 .setup_rhs = SetupDiffRhs, 68 .apply = Diff, 69 .error = Error, 70 .setup_geo_loc = SetupDiffGeo_loc, 71 .setup_rhs_loc = SetupDiffRhs_loc, 72 .apply_loc = Diff_loc, 73 .error_loc = Error_loc, 74 .in_mode = CEED_EVAL_GRAD, 75 .out_mode = CEED_EVAL_GRAD, 76 .q_mode = CEED_GAUSS, 77 .enforce_bc = PETSC_TRUE }, 78 [CEED_BP4] = {.num_comp_u = 3, 79 .num_comp_x = 3, 80 .topo_dim = 3, 81 .q_data_size = 7, 82 .q_extra = 1, 83 .setup_geo = SetupDiffGeo, 84 .setup_rhs = SetupDiffRhs3, 85 .apply = Diff3, 86 .error = Error3, 87 .setup_geo_loc = SetupDiffGeo_loc, 88 .setup_rhs_loc = SetupDiffRhs3_loc, 89 .apply_loc = Diff3_loc, 90 .error_loc = Error3_loc, 91 .in_mode = CEED_EVAL_GRAD, 92 .out_mode = CEED_EVAL_GRAD, 93 .q_mode = CEED_GAUSS, 94 .enforce_bc = PETSC_TRUE }, 95 [CEED_BP5] = {.num_comp_u = 1, 96 .num_comp_x = 3, 97 .topo_dim = 3, 98 .q_data_size = 7, 99 .q_extra = 0, 100 .setup_geo = SetupDiffGeo, 101 .setup_rhs = SetupDiffRhs, 102 .apply = Diff, 103 .error = Error, 104 .setup_geo_loc = SetupDiffGeo_loc, 105 .setup_rhs_loc = SetupDiffRhs_loc, 106 .apply_loc = Diff_loc, 107 .error_loc = Error_loc, 108 .in_mode = CEED_EVAL_GRAD, 109 .out_mode = CEED_EVAL_GRAD, 110 .q_mode = CEED_GAUSS_LOBATTO, 111 .enforce_bc = PETSC_TRUE }, 112 [CEED_BP6] = {.num_comp_u = 3, 113 .num_comp_x = 3, 114 .topo_dim = 3, 115 .q_data_size = 7, 116 .q_extra = 0, 117 .setup_geo = SetupDiffGeo, 118 .setup_rhs = SetupDiffRhs3, 119 .apply = Diff3, 120 .error = Error3, 121 .setup_geo_loc = SetupDiffGeo_loc, 122 .setup_rhs_loc = SetupDiffRhs3_loc, 123 .apply_loc = Diff3_loc, 124 .error_loc = Error3_loc, 125 .in_mode = CEED_EVAL_GRAD, 126 .out_mode = CEED_EVAL_GRAD, 127 .q_mode = CEED_GAUSS_LOBATTO, 128 .enforce_bc = PETSC_TRUE } 129 }; 130