24 #include <deal.II/fe/fe_tools.templates.h>
32 template <
int dim,
int spacedim>
34 const std::string §ion_name,
35 const std::string &_component_names,
36 const std::string &fe_name)
38 , joint_component_names(_component_names)
39 , component_names(
Utilities::split_string_list(_component_names))
59 [&](
const std::string &value) {
60 fe = FETools::get_fe_by_name<dim, spacedim>(value);
63 ExcMessage(
"The number of components in the finite element "
64 "space does not match the number of components "
65 "for the FiniteElement."));
88 template <
int dim,
int spacedim>
98 template <
int dim,
int spacedim>
100 FiniteElement<dim, spacedim> &()
const
108 template <
int dim,
int spacedim>
109 dealii::FiniteElement<dim, spacedim> &
118 template <
int dim,
int spacedim>
119 const dealii::FiniteElement<dim, spacedim> &
128 template <
int dim,
int spacedim>
132 return component_names.size();
136 template <
int dim,
int spacedim>
140 return block_names.size();
144 template <
int dim,
int spacedim>
148 return joint_component_names;
152 template <
int dim,
int spacedim>
153 const std::vector<std::string> &
156 return component_names;
160 template <
int dim,
int spacedim>
168 template <
int dim,
int spacedim>
169 std::vector<unsigned int>
172 return component_blocks;
175 template <
int dim,
int spacedim>
178 const std::string &var)
const
181 std::find(component_names.begin(), component_names.end(), var);
182 Assert(pos_it != component_names.end(),
184 return pos_it - component_names.begin();
187 template <
int dim,
int spacedim>
192 std::find(component_names.begin(), component_names.end(), var);
193 Assert(pos_it != component_names.end(),
196 if (pos_it == component_names.end())
198 return (*pos_it == var);
FiniteElement(const FiniteElementData< dim > &fe_data, const std::vector< bool > &restriction_is_additive_flags, const std::vector< ComponentMask > &nonzero_components)
static ParameterHandler prm
void leave_my_subsection(ParameterHandler &prm)
void enter_my_subsection(ParameterHandler &prm)
void add_parameter(const std::string &entry, ParameterType ¶meter, const std::string &documentation="", ParameterHandler &prm_=prm, const Patterns::PatternBase &pattern=*Patterns::Tools::Convert< ParameterType >::to_pattern())
void add_action(const std::string &entry, const std::function< void(const std::string &value)> &action, const bool execute_action=true)
#define Assert(cond, exc)
static ::ExceptionBase & ExcInternalError()
static ::ExceptionBase & ExcNotInitialized()
static ::ExceptionBase & ExcMessage(std::string arg1)
#define AssertThrow(cond, exc)