10 #ifdef MOOSE_MFEM_ENABLED 21 params.
addParam<std::vector<SubdomainName>>(
"block",
23 "The list of subdomains (names or ids) that this " 24 "object will be restricted to. Leave empty to apply " 25 "to all subdomains.");
30 const mfem::ParMesh & mfem_mesh)
31 : _mfem_mesh(mfem_mesh),
32 _subdomain_names(parameters.
get<
std::vector<SubdomainName>>(
"block")),
33 _subdomain_attributes(_subdomain_names.size())
37 mfem::common::AttrToMarker(
44 mfem::Array<int> attributes;
47 for (
const SubdomainName & subdomain_name : subdomain_names)
52 const int attribute_id = std::stoi(subdomain_name);
53 attributes.Append(attribute_id);
58 auto & subdomain_ids =
mesh.attribute_sets.GetAttributeSet(subdomain_name);
59 for (
const auto & subdomain_id : subdomain_ids)
60 attributes.Append(subdomain_id);
66 std::vector<std::string>
70 std::vector<std::string> subdomain_attr_strings(subdomain_names.size());
72 subdomain_attr_strings[i] = std::to_string(attributes[i]);
73 return subdomain_attr_strings;
mfem::Array< int > subdomainsToAttributes(const std::vector< SubdomainName > &subdomain_names)
const mfem::ParMesh & _mfem_mesh
Stores the names of the subdomains.
T * get(const std::unique_ptr< T > &u)
The MooseUtils::get() specializations are used to support making forwards-compatible code changes fro...
std::vector< std::string > subdomainsToStrings(const std::vector< SubdomainName > &subdomain_names)
std::vector< SubdomainName > _subdomain_names
Stores the names of the subdomains.
mfem::Array< int > _subdomain_markers
Boolean array indicating which subdomains are active in this object.
mfem::Array< int > _subdomain_attributes
Array storing subdomain attribute IDs for this object.
static InputParameters validParams()
MFEMBlockRestrictable(const InputParameters ¶meters, const mfem::ParMesh &mfem_mesh)
const mfem::ParMesh & getMesh() const
auto index_range(const T &sizable)