static const unsigned int n_components = n_components_;
static const unsigned int static_n_q_points = Utilities::fixed_int_power<n_q_points_1d,dim>::value;
static const unsigned int static_dofs_per_component = Utilities::fixed_int_power<fe_degree+1,dim>::value;
- static const unsigned int tensor_dofs_per_cell = Utilities::fixed_int_power<fe_degree+1,dim>::value;
- static const unsigned int static_dofs_per_cell = n_components * Utilities::fixed_int_power<fe_degree+1,dim>::value;
+ static const unsigned int tensor_dofs_per_cell = n_components *static_dofs_per_component;
+ static const unsigned int static_dofs_per_cell = n_components *static_dofs_per_component;
/**
* Constructor. Takes all data stored in MatrixFree. If applied to problems
ExcNotInitialized());
AssertDimension (matrix_info->get_size_info().vectorization_length,
VectorizedArray<Number>::n_array_elements);
- AssertDimension (data->dofs_per_cell*n_fe_components,
+ AssertDimension (data->dofs_per_component_on_cell*n_fe_components,
dof_info->dofs_per_cell[active_fe_index]);
AssertDimension (data->n_q_points,
mapping_info->mapping_data_gen[quad_no].n_q_points[active_quad_index]);
const unsigned int tensor_dofs_per_component =
Utilities::fixed_power<dim>(this->data->fe_degree+1);
- const unsigned int dofs_per_component = this->data->dofs_per_cell;
+ const unsigned int dofs_per_component = this->data->dofs_per_component_on_cell;
const unsigned int n_quadrature_points = this->data->n_q_points;
const unsigned int shift = std::max(tensor_dofs_per_component+1, dofs_per_component)*
{
Assert (!local_dof_indices.empty(), ExcNotInitialized());
- unsigned int index = first_selected_component * this->data->dofs_per_cell;
+ unsigned int index = first_selected_component * this->data->dofs_per_component_on_cell;
for (unsigned int comp = 0; comp<n_components; ++comp)
{
- for (unsigned int i=0; i<this->data->dofs_per_cell; ++i, ++index)
+ for (unsigned int i=0; i<this->data->dofs_per_component_on_cell; ++i, ++index)
{
operation.process_dof_global(local_dof_indices[this->data->lexicographic_numbering[index]],
*src[0], values_dofs[comp][i][0]);
const std::pair<unsigned short,unsigned short> *indicators_end =
dof_info->end_indicators(cell);
unsigned int ind_local = 0;
- const unsigned int dofs_per_component = this->data->dofs_per_cell;
+ const unsigned int dofs_per_component = this->data->dofs_per_component_on_cell;
const unsigned int n_irreg_components_filled = dof_info->row_starts[cell][2];
const bool at_irregular_cell = n_irreg_components_filled > 0;
// iterates over the elements of index_local_to_global and dof_indices
// points to the global indices stored in index_local_to_global
const unsigned int *dof_indices = dof_info->begin_indices_plain(cell);
- const unsigned int dofs_per_component = this->data->dofs_per_cell;
+ const unsigned int dofs_per_component = this->data->dofs_per_component_on_cell;
const unsigned int n_irreg_components_filled = dof_info->row_starts[cell][2];
const bool at_irregular_cell = n_irreg_components_filled > 0;
FEEvaluationBase<dim,n_components_,Number>
::get_dof_value (const unsigned int dof) const
{
- AssertIndexRange (dof, this->data->dofs_per_cell);
+ AssertIndexRange (dof, this->data->dofs_per_component_on_cell);
Tensor<1,n_components_,VectorizedArray<Number> > return_value;
for (unsigned int comp=0; comp<n_components; comp++)
return_value[comp] = this->values_dofs[comp][dof];
#ifdef DEBUG
this->dof_values_initialized = true;
#endif
- AssertIndexRange (dof, this->data->dofs_per_cell);
+ AssertIndexRange (dof, this->data->dofs_per_component_on_cell);
for (unsigned int comp=0; comp<n_components; comp++)
this->values_dofs[comp][dof] = val_in[comp];
}
FEEvaluationAccess<dim,1,Number>
::get_dof_value (const unsigned int dof) const
{
- AssertIndexRange (dof, this->data->dofs_per_cell);
+ AssertIndexRange (dof, this->data->dofs_per_component_on_cell);
return this->values_dofs[0][dof];
}
{
#ifdef DEBUG
this->dof_values_initialized = true;
- AssertIndexRange (dof, this->data->dofs_per_cell);
+ AssertIndexRange (dof, this->data->dofs_per_component_on_cell);
#endif
this->values_dofs[0][dof] = val_in;
}
FEEvaluationAccess<1,1,Number>
::get_dof_value (const unsigned int dof) const
{
- AssertIndexRange (dof, this->data->dofs_per_cell);
+ AssertIndexRange (dof, this->data->dofs_per_component_on_cell);
return this->values_dofs[0][dof];
}
{
#ifdef DEBUG
this->dof_values_initialized = true;
- AssertIndexRange (dof, this->data->dofs_per_cell);
+ AssertIndexRange (dof, this->data->dofs_per_component_on_cell);
#endif
this->values_dofs[0][dof] = val_in;
}
const unsigned int quad_no)
:
BaseClass (data_in, fe_no, quad_no, fe_degree, static_n_q_points),
- dofs_per_component (this->data->dofs_per_cell),
- dofs_per_cell (this->data->dofs_per_cell*n_components_),
+ dofs_per_component (this->data->dofs_per_component_on_cell),
+ dofs_per_cell (this->data->dofs_per_component_on_cell *n_components_),
n_q_points (this->data->n_q_points)
{
check_template_arguments(fe_no, 0);
BaseClass (mapping, fe, quadrature, update_flags,
first_selected_component,
static_cast<FEEvaluationBase<dim,1,Number>*>(nullptr)),
- dofs_per_component (this->data->dofs_per_cell),
- dofs_per_cell (this->data->dofs_per_cell*n_components_),
+ dofs_per_component (this->data->dofs_per_component_on_cell),
+ dofs_per_cell (this->data->dofs_per_component_on_cell *n_components_),
n_q_points (this->data->n_q_points)
{
check_template_arguments(numbers::invalid_unsigned_int, 0);
BaseClass (StaticMappingQ1<dim>::mapping, fe, quadrature, update_flags,
first_selected_component,
static_cast<FEEvaluationBase<dim,1,Number>*>(nullptr)),
- dofs_per_component (this->data->dofs_per_cell),
- dofs_per_cell (this->data->dofs_per_cell*n_components_),
+ dofs_per_component (this->data->dofs_per_component_on_cell),
+ dofs_per_cell (this->data->dofs_per_component_on_cell *n_components_),
n_q_points (this->data->n_q_points)
{
check_template_arguments(numbers::invalid_unsigned_int, 0);
fe, other.mapped_geometry->get_quadrature(),
other.mapped_geometry->get_fe_values().get_update_flags(),
first_selected_component, &other),
- dofs_per_component (this->data->dofs_per_cell),
- dofs_per_cell (this->data->dofs_per_cell*n_components_),
+ dofs_per_component (this->data->dofs_per_component_on_cell),
+ dofs_per_cell (this->data->dofs_per_component_on_cell *n_components_),
n_q_points (this->data->n_q_points)
{
check_template_arguments(numbers::invalid_unsigned_int, 0);
::FEEvaluation (const FEEvaluation &other)
:
BaseClass (other),
- dofs_per_component (this->data->dofs_per_cell),
- dofs_per_cell (this->data->dofs_per_cell*n_components_),
+ dofs_per_component (this->data->dofs_per_component_on_cell),
+ dofs_per_cell (this->data->dofs_per_component_on_cell *n_components_),
n_q_points (this->data->n_q_points)
{
check_template_arguments(numbers::invalid_unsigned_int, 0);
AssertDimension (n_q_points,
this->mapping_info->mapping_data_gen[this->quad_no].
n_q_points[this->active_quad_index]);
- AssertDimension (this->data->dofs_per_cell * this->n_fe_components,
+ AssertDimension (this->data->dofs_per_component_on_cell * this->n_fe_components,
this->dof_info->dofs_per_cell[this->active_fe_index]);
}
#endif
fe_degree (numbers::invalid_unsigned_int),
n_q_points_1d(0),
n_q_points (0),
- dofs_per_cell (0),
+ dofs_per_component_on_cell (0),
n_q_points_face (0),
- dofs_per_face (0),
+ dofs_per_component_on_face (0),
nodal_at_cell_boundaries (false)
{}
}
n_q_points = Utilities::fixed_power<dim>(n_q_points_1d);
- dofs_per_cell = fe->dofs_per_cell;
n_q_points_face = dim>1?Utilities::fixed_power<dim-1>(n_q_points_1d):1;
- dofs_per_face = dim>1?Utilities::fixed_power<dim-1>(fe_degree+1):1;
+ dofs_per_component_on_cell = fe->dofs_per_cell;
+ dofs_per_component_on_face = dim>1?Utilities::fixed_power<dim-1>(fe_degree+1):1;
const unsigned int array_size = n_dofs_1d*n_q_points_1d;
this->shape_gradients.resize_fast (array_size);
if (nodal_at_cell_boundaries == true)
{
face_to_cell_index_nodal.reinit(GeometryInfo<dim>::faces_per_cell,
- dofs_per_face);
+ dofs_per_component_on_face);
for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
{
const unsigned int direction = f/2;
const unsigned int offset = (f%2)*fe_degree*shift;
if (direction == 0 || direction == dim-1)
- for (unsigned int i=0; i<dofs_per_face; ++i)
+ for (unsigned int i=0; i<dofs_per_component_on_face; ++i)
face_to_cell_index_nodal(f,i) = offset + i*stride;
else
// local coordinate system on faces 2 and 3 is zx in
for (unsigned int j=0; j<=fe_degree; ++j)
for (unsigned int i=0; i<=fe_degree; ++i)
{
- const unsigned int ind = offset + j*dofs_per_face + i;
- AssertIndexRange(ind, dofs_per_cell);
+ const unsigned int ind = offset + j*dofs_per_component_on_face + i;
+ AssertIndexRange(ind, dofs_per_component_on_cell);
const unsigned int l = i*(fe_degree+1)+j;
face_to_cell_index_nodal(f,l) = ind;
}
if (element_type == tensor_symmetric_hermite)
{
face_to_cell_index_hermite.reinit(GeometryInfo<dim>::faces_per_cell,
- 2*dofs_per_face);
+ 2*dofs_per_component_on_face);
for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
{
const unsigned int direction = f/2;
shift = -shift;
if (direction == 0 || direction == dim-1)
- for (unsigned int i=0; i<dofs_per_face; ++i)
+ for (unsigned int i=0; i<dofs_per_component_on_face; ++i)
{
face_to_cell_index_hermite(f,2*i) = offset + i*stride;
face_to_cell_index_hermite(f,2*i+1) = offset + i*stride + shift;
for (unsigned int j=0; j<=fe_degree; ++j)
for (unsigned int i=0; i<=fe_degree; ++i)
{
- const unsigned int ind = offset + j*dofs_per_face + i;
- AssertIndexRange(ind, dofs_per_cell);
+ const unsigned int ind = offset + j*dofs_per_component_on_face + i;
+ AssertIndexRange(ind, dofs_per_component_on_cell);
const unsigned int l = i*(fe_degree+1)+j;
face_to_cell_index_hermite(f,2*l) = ind;
face_to_cell_index_hermite(f,2*l+1) = ind+shift;
bool
ShapeInfo<Number>::check_1d_shapes_symmetric(const unsigned int n_q_points_1d)
{
- if (dofs_per_cell == 0)
+ if (dofs_per_component_on_cell == 0)
return false;
const double zero_tol =
bool
ShapeInfo<Number>::check_1d_shapes_collocation()
{
- if (dofs_per_cell != n_q_points)
+ if (dofs_per_component_on_cell != n_q_points)
return false;
const double zero_tol =