Q1, Q2, and Q3 mappings, for the original coarse grid (left), and a
once uniformly refined grid (right). If your browser does not display
these pictures in acceptable quality, view them one by one.
-<table "width=80%" align="center">
+
+<table style="width:80%" align="center">
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-10.ball_mapping_q1_ref0.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-10.ball_mapping_q1_ref1.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-10.ball_mapping_q1_ref0.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-10.ball_mapping_q1_ref1.png" alt=""></td>
</tr>
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-10.ball_mapping_q2_ref0.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-10.ball_mapping_q2_ref1.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-10.ball_mapping_q2_ref0.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-10.ball_mapping_q2_ref1.png" alt=""></td>
</tr>
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-10.ball_mapping_q3_ref0.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-10.ball_mapping_q3_ref1.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-10.ball_mapping_q3_ref0.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-10.ball_mapping_q3_ref1.png" alt=""></td>
</tr>
</table>
+
These pictures show the obvious advantage of higher order mappings:
they approximate the true boundary quite well also on rather coarse
meshes. To demonstrate this a little further, the following table
shows the upper right quarter of the circle of the coarse mesh, and
with dashed lines the exact circle:
-<table "width=80%" align="center">
+
+<table style="width:80%" align="center">
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-10.quarter-q1.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-10.quarter-q2.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-10.quarter-q3.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-10.quarter-q1.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-10.quarter-q2.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-10.quarter-q3.png" alt=""></td>
</tr>
</table>
+
Obviously the quadratic mapping approximates the boundary quite well,
while for the cubic mapping the difference between approximated domain
and true one is hardly visible already for the coarse grid. You can
Looking at the grids that are produced in the course of subsequent
-refinement, these are some of them:
-<table align="center">
- <tr>
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.point-value.grid-0.png" alt="">
- </td>
-
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.point-value.grid-2.png" alt="">
- </td>
- </tr>
+refinement, here are some of them:
+<table width="80%" align="center">
<tr>
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.point-value.grid-4.png" alt="">
- </td>
-
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.point-value.grid-5.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.point-value.grid-0.png" alt="" width="100%"></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.point-value.grid-2.png" alt="" width="100%"></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.point-value.grid-4.png" alt="" width="100%"></td>
</tr>
-
<tr>
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.point-value.grid-7.png" alt="">
- </td>
-
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.point-value.grid-8.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.point-value.grid-5.png" alt="" width="100%"></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.point-value.grid-7.png" alt="" width="100%"></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.point-value.grid-8.png" alt="" width="100%"></td>
</tr>
</table>
+
Note the subtle interplay between resolving the corner singularities,
and resolving around the point of evaluation. It will be rather
difficult to generate such a mesh by hand, as this would involve to
value:
-<table align="center">
+<table width="80%" align="center">
<tr>
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.point-value.error.png" alt="">
- </td>
-
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.point-value.error-estimation.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.point-value.error.png" alt="" width="100%"></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.point-value.error-estimation.png" alt="" width="100%"></td>
</tr>
</table>
</table>
This time, the grids in refinement cycles 0, 5, 6, 7, 8, and 9 look
like this:
-<table align="center">
- <tr>
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.point-derivative.grid-0.png" alt="">
- </td>
-
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.point-derivative.grid-5.png" alt="">
- </td>
- </tr>
+<table align="center" width="80%">
<tr>
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.point-derivative.grid-6.png" alt="">
- </td>
-
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.point-derivative.grid-7.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.point-derivative.grid-0.png" alt="" width="100%"></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.point-derivative.grid-5.png" alt="" width="100%"></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.point-derivative.grid-6.png" alt="" width="100%"></td>
</tr>
-
<tr>
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.point-derivative.grid-8.png" alt="">
- </td>
-
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.point-derivative.grid-9.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.point-derivative.grid-7.png" alt="" width="100%"></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.point-derivative.grid-8.png" alt="" width="100%"></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.point-derivative.grid-9.png" alt="" width="100%"></td>
</tr>
</table>
+
Note the asymmetry of the grids compared with those we obtained for
the point evaluation, which is due to the directionality of the
x-derivative for which we tailored the refinement criterion.
In the left part of the following chart, you again see the convergence
of the error towards this extrapolated value, while on the right you
see a comparison of true and estimated error:
-<table align="center">
- <tr>
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.point-derivative.error.png" alt="">
- </td>
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.point-derivative.error-estimation.png" alt="">
- </td>
+<table width="80%" align="center">
+ <tr>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.point-derivative.error.png" alt="" width="100%"></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.point-derivative.error-estimation.png" alt="" width="100%"></td>
</tr>
</table>
+
After an initial phase where the true error changes its sign, the
estimated error matches it quite well, again. Also note the dramatic
improvement in the error when using the estimated error to correct the
First, the meshes after 9 and 10 adaptive refinement cycles,
respectively, look like this:
-<table align="center">
- <tr>
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.step-13.grid-9.png" alt="">
- </td>
- <td width="50%">
- <img src="http://www.dealii.org/images/steps/developer/step-14.step-13.grid-10.png" alt="">
- </td>
+<table width="80%" align="center">
+ <tr>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.step-13.grid-9.png" alt="" width="100%"></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.step-13.grid-10.png" alt="" width="100%"></td>
</tr>
</table>
+
The features of the solution can still be seen slightly, but since the
solution is smooth, the roughness of the dual solution entirely
dominates the mesh refinement criterion, and leads to strongly
concentrated meshes. The solution after the seventh refinement step is
like so:
-<table align="center">
+
+<table width="80%" align="center">
<tr>
- <td width="50%" align="center">
- <img src="http://www.dealii.org/images/steps/developer/step-14.step-13.solution-7.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-14.step-13.solution-7.png" alt="" width="100%"></td>
</tr>
</table>
+
Obviously, the solution is worse at some places, but the mesh
refinement process should have taken care that these places are not
important for computing the point value.
Here is some output generated in the 12th cycle of the program, i.e. with roughly
300,000 unknowns:
-<table>
+<table align="center" style="width:80%">
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-17.12-ux.png" alt="" width="45%">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-17.12-uy.png" alt="" width="45%">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-17.12-ux.png" alt="" width="100%"></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-17.12-uy.png" alt="" width="100%"></td>
</tr>
</table>
-
-
As one would hope for, the x- (left) and y-displacements (right) shown here
closely match what we already saw in step-8. As shown
there and in step-22, we could as well have produced a
separate scalar fields. What may be more interesting,
though, is to look at the mesh and partition at this step:
-
-<table>
+<table align="center" width="80%">
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-17.12-grid.png" alt="" width="45%">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-17.12-partition.png" alt="" width="45%">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-17.12-grid.png" alt="" width="100%"></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-17.12-partition.png" alt="" width="100%"></td>
</tr>
</table>
-
Again, the mesh (left) shows the same refinement pattern as seen
previously. The right panel shows the partitioning of the domain across the 8
processes, each indicated by a different color. The picture shows that the
this job is rather large (cycle 5 already prints around 82 MB of data), so
we contend ourselves with showing output from cycle 4:
-<table>
+<table width="80%" align="center">
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-17.4-3d-partition.png" alt="" width="45%">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-17.4-3d-ux.png" alt="" width="45%">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-17.4-3d-partition.png" width="100%" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-17.4-3d-ux.png" alt="" width="100%"></td>
</tr>
</table>
indicated positions in the matrix tell us which shape functions can
and which can't couple when discretizing a local, i.e. differential,
equation):
-<TABLE WIDTH="60%" ALIGN="center">
+<table style="width:60%" align="center">
<tr>
- <td ALIGN="center">
- <img src="http://www.dealii.org/images/steps/developer/step-2.sparsity-1.svg" alt="">
- </td>
-
- <td ALIGN="center">
- <img src="http://www.dealii.org/images/steps/developer/step-2.sparsity-2.svg" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-2.sparsity-1.svg" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-2.sparsity-2.svg" alt=""></td>
</tr>
</table>
With a significantly higher mesh resolution, we can visualize this, here with
x- and y-velocity:
-
-<img src="http://www.dealii.org/images/steps/developer/step-20.u-wiggle.png" alt="">
-<img src="http://www.dealii.org/images/steps/developer/step-20.v-wiggle.png" alt="">
-
+<table style="width:60%" align="center">
+ <tr>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-20.u-wiggle.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-20.v-wiggle.png" alt=""></td>
+ </tr>
+</table>
It is obvious how fluids flow essentially only along the middle line, and not
anywhere else.
With a permeability field like this, we would get x-velocities and pressures as
follows:
-
-<img src="http://www.dealii.org/images/steps/developer/step-20.u-random.png" alt="">
-<img src="http://www.dealii.org/images/steps/developer/step-20.p-random.png" alt="">
+<table style="width:60%" align="center">
+ <tr>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-20.u-random.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-20.p-random.png" alt=""></td>
+ </tr>
+</table>
We will use these permeability fields again in step-21 and step-43.
step to an output file. If we process them adequately and paste them into a
movie, we get the following:
-<img
-src="http://www.dealii.org/images/steps/developer/step-23.movie.gif"
-alt="Animation of the solution of step 23.">
+<img src="http://www.dealii.org/images/steps/developer/step-23.movie.gif" alt="Animation of the solution of step 23.">
The movie shows the generated wave nice traveling through the domain and back,
being reflected at the clamped boundary. Some numerical noise is trailing the
Maybe of more interest is a visualization of the solution and the mesh on which
it was computed:
-<img
-src="http://www.dealii.org/images/steps/developer/step-26.movie.gif"
-alt="Animation of the solution of step 26.">
+<img src="http://www.dealii.org/images/steps/developer/step-26.movie.gif" alt="Animation of the solution of step 26.">
The movie shows how the two sources switch on and off and how the mesh reacts
to this. It is quite obvious that the mesh as is is probably not the best we
Secondly, let us look at the sequence of meshes generated:
-<table align="center" border="1" cellspacing="3" cellpadding="3">
+<table width="60%" align="center">
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.mesh-0.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.mesh-1.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.mesh-2.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.mesh-0.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.mesh-1.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.mesh-2.png" alt=""></td>
</tr>
-
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.mesh-3.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.mesh-4.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.mesh-5.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.mesh-3.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.mesh-4.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.mesh-5.png" alt=""></td>
</tr>
</table>
+
It is clearly visible how the mesh is refined near the corner singularities,
as one would expect it. More interestingly, we should be curious to see the
distribution of finite element polynomial degrees to these mesh cells:
-<table align="center" border="1" cellspacing="3" cellpadding="3">
+
+<table width="60%" align="center">
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.fe_degree-0.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.fe_degree-1.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.fe_degree-2.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.fe_degree-0.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.fe_degree-1.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.fe_degree-2.png" alt=""></td>
</tr>
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.fe_degree-3.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.fe_degree-4.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.fe_degree-5.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.fe_degree-3.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.fe_degree-4.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.fe_degree-5.png" alt=""></td>
</tr>
</table>
estimator. Here is the estimated smoothness of the solution, with blue colors
indicating least smoothness and red indicating the smoothest areas:
-<table align="center" border="1" cellspacing="3" cellpadding="3">
+<table width="60%" align="center">
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.smoothness-0.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.smoothness-1.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.smoothness-2.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.smoothness-0.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.smoothness-1.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.smoothness-2.png" alt=""></td>
</tr>
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.smoothness-3.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.smoothness-4.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-27.smoothness-5.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.smoothness-3.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.smoothness-4.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-27.smoothness-5.png" alt=""></td>
</tr>
</table>
$(3,1)$. A visualization of the corresponding eigenfunctions would
look like this:
-<TABLE WIDTH="100%">
+<table width="80%">
<tr>
-<td>
- <img src="http://www.dealii.org/images/steps/developer/step-36.default.eigenfunction.0.png" alt="">
-</td>
-<td>
- <img src="http://www.dealii.org/images/steps/developer/step-36.default.eigenfunction.1.png" alt="">
-</td>
+<td><img src="http://www.dealii.org/images/steps/developer/step-36.default.eigenfunction.0.png" alt=""></td>
+<td><img src="http://www.dealii.org/images/steps/developer/step-36.default.eigenfunction.1.png" alt=""></td>
+<td><img src="http://www.dealii.org/images/steps/developer/step-36.default.eigenfunction.2.png" alt=""></td>
</tr>
<tr>
-<td>
- <img src="http://www.dealii.org/images/steps/developer/step-36.default.eigenfunction.2.png" alt="">
-</td>
-<td>
- <img src="http://www.dealii.org/images/steps/developer/step-36.default.eigenfunction.3.png" alt="">
-</td>
-</tr>
-
-<tr>
-<td>
- <img src="http://www.dealii.org/images/steps/developer/step-36.default.eigenfunction.4.png" alt="">
-</td>
-<td>
-</td>
+<td><img src="http://www.dealii.org/images/steps/developer/step-36.default.eigenfunction.3.png" alt=""></td>
+<td><img src="http://www.dealii.org/images/steps/developer/step-36.default.eigenfunction.4.png" alt=""></td>
+<td></td>
</tr>
</table>
The first five eigenfunctions are now like this:
-<TABLE WIDTH="100%">
-<tr>
-<td>
- <img src="http://www.dealii.org/images/steps/developer/step-36.mod.eigenfunction.0.png" alt="">
-</td>
-<td>
- <img src="http://www.dealii.org/images/steps/developer/step-36.mod.eigenfunction.1.png" alt="">
-</td>
-</tr>
-
+<table width="80%">
<tr>
-<td>
- <img src="http://www.dealii.org/images/steps/developer/step-36.mod.eigenfunction.2.png" alt="">
-</td>
-<td>
- <img src="http://www.dealii.org/images/steps/developer/step-36.mod.eigenfunction.3.png" alt="">
-</td>
+<td><img src="http://www.dealii.org/images/steps/developer/step-36.mod.eigenfunction.0.png" alt=""></td>
+<td><img src="http://www.dealii.org/images/steps/developer/step-36.mod.eigenfunction.1.png" alt=""></td>
+<td><img src="http://www.dealii.org/images/steps/developer/step-36.mod.eigenfunction.2.png" alt=""></td>
</tr>
<tr>
-<td>
- <img src="http://www.dealii.org/images/steps/developer/step-36.mod.eigenfunction.4.png" alt="">
-</td>
-<td>
-</td>
+<td><img src="http://www.dealii.org/images/steps/developer/step-36.mod.eigenfunction.3.png" alt=""></td>
+<td><img src="http://www.dealii.org/images/steps/developer/step-36.mod.eigenfunction.4.png" alt=""></td>
+<td></td>
</tr>
</table>
results section of step-38 but let us show a simpler example here:
In the function <code>grid_5()</code> of the current program, we perturb the y
coordinate of a mesh with a sine curve:
+
<TABLE WIDTH="60%" ALIGN="center">
<tr>
<td ALIGN="center">
Finally, the function GridTools::distort_random allows you to move vertices in the
mesh (optionally ignoring boundary nodes) by a random amount. This is
demonstrated in <code>grid_7()</code> and the result is as follows:
+
<TABLE WIDTH="60%" ALIGN="center">
<tr>
<td ALIGN="center">
merged Triangulation.
These are the input meshes and the output mesh:
-<TABLE WIDTH="80%" ALIGN="center">
- <tr>
- <td ALIGN="center">
- <img
- src="http://www.dealii.org/images/steps/developer/step-49.grid-2a.png"
- alt="" height="200px"> input mesh 1
- </td>
- <td ALIGN="center">
- <img src="http://www.dealii.org/images/steps/developer/step-49.grid-2b.png" alt="" height="200px"> input mesh 2
- </td>
- <td ALIGN="center">
- <img src="http://www.dealii.org/images/steps/developer/step-49.grid-2.png" alt="" height="200px"> merged mesh
- </td>
+<table width="80%" align="center">
+ <tr>
+ <td ALIGN="center"><img src="http://www.dealii.org/images/steps/developer/step-49.grid-2a.png" alt="" height="200px">input mesh 1</td>
+ <td ALIGN="center"><img src="http://www.dealii.org/images/steps/developer/step-49.grid-2b.png" alt="" height="200px">input mesh 2</td>
+ <td ALIGN="center"><img src="http://www.dealii.org/images/steps/developer/step-49.grid-2.png" alt="" height="200px">merged mesh</td>
</tr>
</table>
into this category. For example, for this mesh the central hole is supposed to
be round:
-<img
- src="http://www.dealii.org/images/steps/developer/step-49.grid-2a.png"
- alt="" height="200px">
+<img src="http://www.dealii.org/images/steps/developer/step-49.grid-2a.png" alt="" height="200px">
On the other hand, if you simply refine it, the Triangulation class can not
know whether you wanted the hole to be round or to be an octagon. The default
is to place new points along existing edges. After two mesh refinement steps,
this would yield the following mesh, which is not what we wanted:
-<img
- src="http://www.dealii.org/images/steps/developer/step-49.grid-2d-refined.png"
- alt="" height="200px">
+<img src="http://www.dealii.org/images/steps/developer/step-49.grid-2d-refined.png" alt="" height="200px">
What needs to happen is that you tell the triangulation that you in fact want
to use a curved boundary. The way to do this requires three steps:
microstructured electric device. In a CAD program, the geometry looks like
this:
-<img
- src="http://www.dealii.org/images/steps/developer/step-49.yuhan.1.png"
- alt="">
+<img src="http://www.dealii.org/images/steps/developer/step-49.yuhan.1.png" alt="">
In the following, we will walk you through the entire process of creating a
mesh for this geometry, including a number of common pitfalls by showing the
With this code, you get a mesh that looks like this:
-<img
- src="http://www.dealii.org/images/steps/developer/step-49.yuhan.2.png"
- alt="">
+<img src="http://www.dealii.org/images/steps/developer/step-49.yuhan.2.png" alt="">
The next step is to teach each of the top surfaces that they should be
curved. We can do this by creating CylinderBoundary objects that
With this code, we get a mesh that looks like this:
-<img
- src="http://www.dealii.org/images/steps/developer/step-49.yuhan.3.png"
- alt="">
+<img src="http://www.dealii.org/images/steps/developer/step-49.yuhan.3.png" alt="">
This is clearly not correct: The new vertices that have been entered at
mid-edge and mid-face points are not where they should have been. Upon some
This yields an improvement, though it is still not quite correct:
-<img
- src="http://www.dealii.org/images/steps/developer/step-49.yuhan.4.png"
- alt="">
+<img src="http://www.dealii.org/images/steps/developer/step-49.yuhan.4.png" alt="">
Looking closely at this mesh, we realize that the new points on mid-face
vertices are where they should be, though the new vertices inserted at
instead of TriaAccessor::set_boundary_id() used above. With this change,
the grid now looks like this:
-<img
- src="http://www.dealii.org/images/steps/developer/step-49.yuhan.5.png"
- alt="">
+<img src="http://www.dealii.org/images/steps/developer/step-49.yuhan.5.png" alt="">
This is already better. However, something is still going wrong on the
front left face. On second look, we can also see that the faces where
With this, we finally get a mesh that looks good:
-<img
- src="http://www.dealii.org/images/steps/developer/step-49.yuhan.6.png"
- alt="">
+<img src="http://www.dealii.org/images/steps/developer/step-49.yuhan.6.png" alt="">
We can then refine the mesh two more times to see in more detail what
happens to the curved part of the boundary:
- <img
- src="http://www.dealii.org/images/steps/developer/step-49.yuhan.7.png"
- alt="">
+ <img src="http://www.dealii.org/images/steps/developer/step-49.yuhan.7.png" alt="">
So, yes!, this is finally what we were looking for!
lower and left boundaries, we set Neumann boundary conditions, whereas we set
Dirichlet conditions on the right and top boundaries.
-<table align="center" border="1" cellspacing="3" cellpadding="3">
+<table align="center">
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.sol_2.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.sol_3.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.sol_2.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.sol_3.png" alt=""></td>
</tr>
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.sol_4.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.sol_8.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.sol_4.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.sol_8.png" alt=""></td>
</tr>
</table>
convergence table below, we find that is also converges more quickly to the
analytical solution.
-<table align="center" border="1" cellspacing="3" cellpadding="3">
+<table align="center">
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.post_2.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.post_3.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.post_2.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.post_3.png" alt=""></td>
</tr>
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.post_4.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.post_8.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.post_4.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.post_8.png" alt=""></td>
</tr>
</table>
cells. This clearly shows the superiority of high order methods for smooth
solutions.
-<table align="center" border="1" cellspacing="3" cellpadding="3">
+<table align="center">
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.sol_q3_2.png" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.post_q3_2.png" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.sol_q3_2.png" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.post_q3_2.png" alt=""></td>
</tr>
</table>
ChunkSparseMatrix for the trace variable has been used in order to utilize the
block structure in the matrix on the finest level.
-<table align="center" border="1" cellspacing="3" cellpadding="3">
+<table align="center">
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.2d_plain.png" width="400" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.2dt_plain.png" width="400" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.2d_plain.png" width="400" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.2dt_plain.png" width="400" alt=""></td>
</tr>
</table>
amount of work for both $p=3$ and $p=6$, and about the same quality
for $p=1$.
-<table align="center" border="1" cellspacing="3" cellpadding="3">
+<table align="center">
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.2d_post.png" width="400" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.2dt_post.png" width="400" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.2d_post.png" width="400" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.2dt_post.png" width="400" alt=""></td>
</tr>
</table>
CG with second order polynomials is again clearly better than HDG with
linears. However, the advantage of HDG for higher orders remains.
-<table align="center" border="1" cellspacing="3" cellpadding="3">
+<table align="center">
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.2d_postb.png" width="400" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.2dt_postb.png" width="400" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.2d_postb.png" width="400" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.2dt_postb.png" width="400" alt=""></td>
</tr>
</table>
for FE_FaceP for a given mesh size, but the solution quality (error vs. number
of DoFs) is very similar to the results for FE_FaceQ.
-<table align="center" border="1" cellspacing="3" cellpadding="3">
+<table align="center">
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.3d_plain.png" width="400" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.3dt_plain.png" width="400" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.3d_plain.png" width="400" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.3dt_plain.png" width="400" alt=""></td>
</tr>
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.3d_post.png" width="400" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.3dt_post.png" width="400" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.3d_post.png" width="400" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.3dt_post.png" width="400" alt=""></td>
</tr>
<tr>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.3d_postb.png" width="400" alt="">
- </td>
- <td>
- <img src="http://www.dealii.org/images/steps/developer/step-51.3dt_postb.png" width="400" alt="">
- </td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.3d_postb.png" width="400" alt=""></td>
+ <td><img src="http://www.dealii.org/images/steps/developer/step-51.3dt_postb.png" width="400" alt=""></td>
</tr>
</table>