const bool do_tensor_product = true);
/**
- * build...
- * @param face_system_to_base_table
- * @param face_system_to_component_table
- * @param finite_element
- * @param do_tensor_product
+ * For a given (composite) @p finite_element build @p face_system_to_base_table,
+ * and @p face_system_to_component_table.
+ *
+ * If @p do_tensor_product is <code>true</code>, the underlying finite element
+ * is assumed to be build using the tensor product rule. That is, the number of
+ * composite components is the sum of components in each finite element times
+ * multiplicity.
*/
template <int dim, int spacedim>
void
unsigned int comp_start = 0;
for (unsigned int base=0; base<fe.n_base_elements(); ++base)
for (unsigned int m=0; m<fe.element_multiplicity(base);
- ++m, comp_start+=fe.base_element(base).n_components())
+ ++m, comp_start+=fe.base_element(base).n_components() * do_tensor_product)
for (unsigned int local_index = 0;
local_index < fe.base_element(base).dofs_per_vertex;
++local_index, ++total_index)
unsigned int comp_start = 0;
for (unsigned int base=0; base<fe.n_base_elements(); ++base)
for (unsigned int m=0; m<fe.element_multiplicity(base);
- ++m, comp_start+=fe.base_element(base).n_components())
+ ++m, comp_start+=fe.base_element(base).n_components() * do_tensor_product)
for (unsigned int local_index = 0;
local_index < fe.base_element(base).dofs_per_line;
++local_index, ++total_index)
unsigned int comp_start = 0;
for (unsigned int base=0; base<fe.n_base_elements(); ++base)
for (unsigned int m=0; m<fe.element_multiplicity(base);
- ++m, comp_start += fe.base_element(base).n_components())
+ ++m, comp_start += fe.base_element(base).n_components() * do_tensor_product)
for (unsigned int local_index = 0;
local_index < fe.base_element(base).dofs_per_quad;
++local_index, ++total_index)
unsigned int comp_start = 0;
for (unsigned int base=0; base<fe.n_base_elements(); ++base)
for (unsigned int m=0; m<fe.element_multiplicity(base);
- ++m, comp_start+=fe.base_element(base).n_components())
+ ++m, comp_start+=fe.base_element(base).n_components() * do_tensor_product)
for (unsigned int local_index = 0;
local_index < fe.base_element(base).dofs_per_hex;
++local_index, ++total_index)
unsigned int comp_start = 0;
for (unsigned int base=0; base<fe.n_base_elements(); ++base)
for (unsigned int m=0; m<fe.element_multiplicity(base);
- ++m, comp_start += fe.base_element(base).n_components())
+ ++m, comp_start += fe.base_element(base).n_components() * do_tensor_product)
for (unsigned int local_index = 0;
local_index < fe.base_element(base).dofs_per_vertex;
++local_index, ++total_index)
unsigned int comp_start = 0;
for (unsigned int base = 0; base < fe.n_base_elements(); ++base)
for (unsigned int m=0; m<fe.element_multiplicity(base);
- ++m, comp_start += fe.base_element(base).n_components())
+ ++m, comp_start += fe.base_element(base).n_components() * do_tensor_product)
for (unsigned int local_index = 0;
local_index < fe.base_element(base).dofs_per_line;
++local_index, ++total_index)
unsigned int comp_start = 0;
for (unsigned int base=0; base<fe.n_base_elements(); ++base)
for (unsigned int m=0; m<fe.element_multiplicity(base);
- ++m, comp_start += fe.base_element(base).n_components())
+ ++m, comp_start += fe.base_element(base).n_components() * do_tensor_product)
for (unsigned int local_index = 0;
local_index < fe.base_element(base).dofs_per_quad;
++local_index, ++total_index)