longer supported. Comparing for equality is done using '==' instead of '='.
<br>
(Timo Heister, 2014/02/10)
- </li>
+ </li>
<li> Changed: The various classes generating graphical output, such
as DataOut or DataOutStack, are all derived from a common interface
<ol>
<li> Changed: The functionparser library bundled with deal.II got replaced
- by the muparser library.
+ by the muparser library.
<br>
(Timo Heister, 2014/02/10)
- </li>
+ </li>
<li> Changed: It was possible to call DoFAccessor::set_active_fe_index()
on non-active cells. However, this made no sense: Since degrees of
<h3>Specific improvements</h3>
<ol>
+ <li> Fixed: GridTools::laplace_transform had previously announced in
+ the documentation that one can also set the location of interior points,
+ but this was not in fact what was implemented. This has now been fixed:
+ the code can now do that.
+ <br>
+ (Denis Davydov, Wolfgang Bangerth, 2014/03/23)
+ </li>
+
<li> Improved: Inhomogeneous tangential and normal flow constraints can
now be treated via VectorTools::compute_nonzero_normal_flux_constraints
and VectorTools::compute_nonzero_tangential_flux_constraints.
<br>
(Markus Bürg, 2014/03/10)
</li>
-
+
<li> Fixed: ParameterHandler will no longer output an error if the file
to be read ends with "end" without a newline.
<br>
Triangulation<2> &triangulation);
/**
- * Transform the given triangulation smoothly to a different domain where
- * each of the vertices at the boundary of the triangulation is mapped to
+ * Transform the given triangulation smoothly to a different domain where,
+ * typically, each of the vertices at the boundary of the triangulation is mapped to
* the corresponding points in the @p new_points map.
*
* The way this function works is that it solves a Laplace equation for each
// set up the boundary values for
// the laplace problem
std::vector<std::map<unsigned int,double> > m(dim);
- typename std::map<unsigned int,Point<dim> >::const_iterator map_iter;
typename std::map<unsigned int,Point<dim> >::const_iterator map_end=new_points.end();
// fill these maps using the data
// given by new_points
typename DoFHandler<dim>::cell_iterator cell=dof_handler.begin_active(),
- endc=dof_handler.end();
- typename DoFHandler<dim>::face_iterator face;
+ endc=dof_handler.end();
for (; cell!=endc; ++cell)
{
- if (cell->at_boundary())
- for (unsigned int face_no=0; face_no<GeometryInfo<dim>::faces_per_cell; ++face_no)
- {
- face=cell->face(face_no);
- if (face->at_boundary())
- for (unsigned int vertex_no=0;
- vertex_no<GeometryInfo<dim>::vertices_per_face; ++vertex_no)
- {
- const unsigned int vertex_index=face->vertex_index(vertex_no);
- map_iter=new_points.find(vertex_index);
+ for (unsigned int face_no=0; face_no<GeometryInfo<dim>::faces_per_cell; ++face_no)
+ {
+ const typename DoFHandler<dim>::face_iterator face=cell->face(face_no);
- if (map_iter!=map_end)
- for (unsigned int i=0; i<dim; ++i)
- m[i].insert(std::pair<unsigned int,double> (
- face->vertex_dof_index(vertex_no, 0), map_iter->second(i)));
- }
- }
+ // loop over all vertices of the cell and see if it is listed in the map
+ // given as first argument of the function
+ for (unsigned int vertex_no=0;
+ vertex_no<GeometryInfo<dim>::vertices_per_face; ++vertex_no)
+ {
+ const unsigned int vertex_index=face->vertex_index(vertex_no);
+
+ const typename std::map<unsigned int,Point<dim> >::const_iterator map_iter
+ = new_points.find(vertex_index);
+
+ if (map_iter!=map_end)
+ for (unsigned int i=0; i<dim; ++i)
+ m[i].insert(std::pair<unsigned int,double> (
+ face->vertex_dof_index(vertex_no, 0), map_iter->second(i)));
+ }
+ }
}
// solve the dim problems with