if (flags & update_values)
for (unsigned int i=0; i<quadrature.size(); ++i)
{
- for (unsigned int k=0; k<this->dofs_per_cell; ++k)
+ for (unsigned int k=0; k<this->dofs_per_cell; ++k)
data.shape_values(k,i) = 0.;
- // Fill data for vertex shape functions
- if (this->n_dofs_per_vertex() != 0)
- for (unsigned int lvertex=0; lvertex<GeometryInfo<dim>::vertices_per_face; ++lvertex)
- data.shape_values(GeometryInfo<dim>::face_to_cell_vertices(face, lvertex),i) = fe_data.shape_values[lvertex][i];
-
-
- // Fill data for line shape functions
-
- // in 3D, this should be a loop over all lines of the face,
- // and the multiplier should not be the face itself
- const unsigned int foffset = this->first_line_index + this->dofs_per_line * face;
-
- for (unsigned int k=0; k<this->dofs_per_line; ++k)
- data.shape_values(foffset+k,i) = fe_data.shape_values[k+this->first_face_line_index][i];
-
- // Fill data for quad shape functions
+ switch (dim)
+ {
+ case 3:
+ {
+ // Fill data for quad shape functions
+ if (this->dofs_per_quad !=0)
+ {
+ const unsigned int foffset = this->first_quad_index + this->dofs_per_quad * face;
+ for (unsigned int k=0; k<this->dofs_per_quad; ++k)
+ data.shape_values(foffset+k,i) = fe_data.shape_values[k+this->first_face_quad_index][i];
+ }
+ }
+ case 2:
+ {
+ // Fill data for line shape functions
+ if (this->dofs_per_line != 0)
+ {
+ const unsigned int foffset = this->first_line_index;
+ for (unsigned int line=0; line<GeometryInfo<dim>::lines_per_face; ++line)
+ {
+ for (unsigned int k=0; k<this->dofs_per_line; ++k)
+ data.shape_values(foffset+GeometryInfo<dim>::face_to_cell_lines(face, line)+k,i) = fe_data.shape_values[k+(line*this->dofs_per_line)+this->first_face_line_index][i];
+ }
+ }
+ }
+ case 1:
+ {
+ // Fill data for vertex shape functions
+ if (this->dofs_per_vertex != 0)
+ for (unsigned int lvertex=0; lvertex<GeometryInfo<dim>::vertices_per_face; ++lvertex)
+ data.shape_values(GeometryInfo<dim>::face_to_cell_vertices(face, lvertex),i) = fe_data.shape_values[lvertex][i];
+ break;
+ }
+ }
}
}
h2l[next_index++] = n*(n-1)+i+1;
// inside quad
- // Assert (fe.dofs_per_quad == fe.dofs_per_line*fe.dofs_per_line,
- // ExcInternalError());
for (unsigned int i=0; i<dofs_per_line; ++i)
for (unsigned int j=0; j<dofs_per_line; ++j)
h2l[next_index++] = n*(i+1)+j+1;
// inside quads
- // Assert (fe.dofs_per_quad == fe.dofs_per_line*fe.dofs_per_line,
- // ExcInternalError());
// face 0
for (unsigned int i=0; i<dofs_per_line; ++i)
for (unsigned int j=0; j<dofs_per_line; ++j)
h2l[next_index++] = (n-1)*n*n+n*(i+1)+j+1;
// inside hex
- // Assert (fe.dofs_per_hex == fe.dofs_per_quad*fe.dofs_per_line,
- // ExcInternalError());
for (unsigned int i=0; i<dofs_per_line; ++i)
for (unsigned int j=0; j<dofs_per_line; ++j)
for (unsigned int k=0; k<dofs_per_line; ++k)
default:
Assert (false, ExcNotImplemented());
}
-
- // return h2l;
}