Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <string>
7 : #include <vector>
8 :
9 : #include "NumericalAlgorithms/DiscontinuousGalerkin/Tags/OptionsGroup.hpp"
10 : #include "Options/Auto.hpp"
11 : #include "Options/String.hpp"
12 : #include "Parallel/Tags/Parallelization.hpp"
13 :
14 : namespace evolution::dg::OptionTags {
15 : /// \ingroup OptionTagsGroup
16 : /// \brief A list of block and group names on which to never do subcell.
17 : ///
18 : /// Set to `None` to allow subcell in all blocks.
19 : ///
20 : /// \note This lives outside the `DgSubcell` library so that it can also be
21 : /// read by code that must not depend on `DgSubcell`, such as the element
22 : /// distribution (see `evolution::dg::Tags::OnlyDgBlockIds`)
23 1 : struct OnlyDgBlocksAndGroups {
24 0 : using type =
25 : Options::Auto<std::vector<std::string>, Options::AutoLabel::None>;
26 0 : static constexpr Options::String help = {
27 : "A list of block and group names on which to never do subcell.\n"
28 : "Set to 'None' to not restrict where FD can be used."};
29 0 : using group = ::dg::OptionTags::DiscontinuousGalerkinGroup;
30 : };
31 :
32 : /// \ingroup OptionTagsGroup
33 : /// \brief Whether to weight subcell-capable elements by their
34 : /// finite-difference grid points when distributing elements.
35 : ///
36 : /// See `evolution::dg::Tags::UseSubcellGridPointsForDistribution`.
37 1 : struct UseSubcellGridPointsForDistribution {
38 0 : using type = bool;
39 0 : static constexpr Options::String help = {
40 : "If true, the element weight used for the ElementDistribution is "
41 : "computed using the number of finite-difference subcell grid points "
42 : "instead of the number of DG grid points for elements that are "
43 : "subcell-capable. This better reflects the higher computational cost "
44 : "of running the FD scheme on an element compared to running DG on it. "
45 : "Requires ElementDistribution to be NumGridPoints. This option is only "
46 : "available for executables with DG-subcell support."};
47 0 : using group = Parallel::OptionTags::Parallelization;
48 : };
49 : } // namespace evolution::dg::OptionTags
|