From: bangerth Date: Sat, 13 Sep 2008 18:17:03 +0000 (+0000) Subject: Add to the extensions. X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d60f91e07c965e4d8adb9f137352b30362f56dc3;p=dealii-svn.git Add to the extensions. git-svn-id: https://svn.dealii.org/trunk@16826 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/examples/step-22/doc/results.dox b/deal.II/examples/step-22/doc/results.dox index fb174fe871..c491ce8800 100644 --- a/deal.II/examples/step-22/doc/results.dox +++ b/deal.II/examples/step-22/doc/results.dox @@ -771,3 +771,66 @@ Another possibility that can be taken into account is to not set up a block system, but rather solve the system of velocity and pressure all at once. The options are direct solve with UMFPACK (2D) or GMRES with ILU preconditioning (3D). It should be straightforward to try that. + + + +

More interesting testcases

+ +The program can of course also serve as a basis to compute the flow in more +interesting cases. The original motivation to write this program was for it to +be a starting point for some geophysical flow problems, such as the +movement of magma under places where continental plates drift apart (for +example mid-ocean ridges). Of course, in such places, the geometry is more +complicated than the examples shown above, but it is not hard to accomodate +for that. + +For example, by using the folllowing modification of the boundary values +function + +template +double +BoundaryValues::value (const Point &p, + const unsigned int component) const +{ + Assert (component < this->n_components, + ExcIndexRange (component, 0, this->n_components)); + + const double x_offset = std::atan(p[1]*4)/3; + + if (component == 0) + return (p[0] < x_offset ? -1 : (p[0] > x_offset ? 1 : 0)); + return 0; +} + +and the following way to generate the mesh as the domain +$[-2,2]\times[-2,2]\times[-1,0]$ + + std::vector subdivisions (dim, 1); + subdivisions[0] = 4; + subdivisions[1] = 4; + + const Point bottom_left = (dim == 2 ? + Point(-2,-1) : + Point(-2,-2,-1)); + const Point top_right = (dim == 2 ? + Point(2,0) : + Point(2,2,0)); + + GridGenerator::subdivided_hyper_rectangle (triangulation, + subdivisions, + bottom_left, + top_right); + +then we get images where the the fault line is curved: + + + + + + +
+ @image html step-22.3d-extension.png + + @image html step-22.3d-grid-extension.png +
+ diff --git a/deal.II/examples/step-22/doc/step-22.3d-extension.png b/deal.II/examples/step-22/doc/step-22.3d-extension.png new file mode 100644 index 0000000000..18b70b2b23 Binary files /dev/null and b/deal.II/examples/step-22/doc/step-22.3d-extension.png differ diff --git a/deal.II/examples/step-22/doc/step-22.3d-grid-extension.png b/deal.II/examples/step-22/doc/step-22.3d-grid-extension.png new file mode 100644 index 0000000000..cd41da76b7 Binary files /dev/null and b/deal.II/examples/step-22/doc/step-22.3d-grid-extension.png differ