In general when you want to test numerically the accuracy and/or
order of convergence of an algorithm you need to provide an exact
solution.
-The usual trick is to pick a function that we want to be the solution applied
-the differential operator to define a forcing term for the right hand side.
+The usual trick is to pick a function that we want to be the solution,
+then apply the differential operator to it that defines a forcing term
+for the right hand side.
This is what we do in this example.
-
+We produce one test case for a 2d problem and another one for the 3d one.
Mapping objects
H1 error = 0.0221245
@endverbatim
-By playing around with the number of global refinements in teh
-<code>LaplaceBeltrami::make_mesh</code> function you increase or decrease mesh
-refinement. For example, doing one more refinement yields the following
+
+By playing around with the number of global refinements in the
+<code>LaplaceBeltrami::make_grid_and_dofs</code> function you increase or decrease mesh
+refinement. For example, doing one more refinement and only running the 3d surface
+problem yields the following
output:
@verbatim
Finally, the program produces graphical output that we can visualize. Here is
a plot of the results:
+@image html step-38.solution-2d.png
@image html step-38.solution-3d.png
}
@endcode
-If we followed the <code>LaplaceBeltrami::make_mesh</code> function, we would
+If we followed the <code>LaplaceBeltrami::make_grid_and_dofs</code> function, we would
extract the 5/6th spherical surface mesh as before, warp it into the shape we
want, and refine as often as necessary. This is not quite as simple as we'd
like here, though: refining requires that we have an appropriate manifold
@code
template <int dim>
-void LaplaceBeltrami<dim>::make_mesh ()
+void LaplaceBeltrami<dim>::make_grid_and_dofs ()
{
HyperBallBoundary<dim> boundary_description;
Triangulation<dim> volume_mesh;