]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Start a new tutorial on geometry.
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Mon, 14 Jul 2014 14:37:56 +0000 (14:37 +0000)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Mon, 14 Jul 2014 14:37:56 +0000 (14:37 +0000)
git-svn-id: https://svn.dealii.org/trunk@33165 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/examples/step-53/CMakeLists.txt [new file with mode: 0644]
deal.II/examples/step-53/doc/builds-on [new file with mode: 0644]
deal.II/examples/step-53/doc/intro.dox [new file with mode: 0644]
deal.II/examples/step-53/doc/kind [new file with mode: 0644]
deal.II/examples/step-53/doc/results.dox [new file with mode: 0644]
deal.II/examples/step-53/doc/tooltip [new file with mode: 0644]
deal.II/examples/step-53/step-53.cc [new file with mode: 0644]

diff --git a/deal.II/examples/step-53/CMakeLists.txt b/deal.II/examples/step-53/CMakeLists.txt
new file mode 100644 (file)
index 0000000..75c2b90
--- /dev/null
@@ -0,0 +1,39 @@
+##
+#  CMake script for the step-1 tutorial program:
+##
+
+# Set the name of the project and target:
+SET(TARGET "step-53")
+
+# Declare all source files the target consists of. Here, this is only
+# the one step-X.cc file, but as you expand your project you may wish
+# to add other source files as well. If your project becomes much larger,
+# you may want to either replace the following statement by something like
+#   FILE(GLOB_RECURSE TARGET_SRC  "source/*.cc")
+#   FILE(GLOB_RECURSE TARGET_INC  "include/*.h")
+#   SET(TARGET_SRC ${TARGET_SRC}  ${TARGET_INC})
+# or switch altogether to the large project CMakeLists.txt file discussed
+# in the "CMake in user projects" page accessible from the "User info"
+# page of the documentation.
+SET(TARGET_SRC
+  ${TARGET}.cc
+  )
+
+# Usually, you will not need to modify anything beyond this point...
+
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8)
+
+FIND_PACKAGE(deal.II 8.2 QUIET
+  HINTS ${deal.II_DIR} ${DEAL_II_DIR} ../ ../../ $ENV{DEAL_II_DIR}
+  )
+IF(NOT ${deal.II_FOUND})
+  MESSAGE(FATAL_ERROR "\n"
+    "*** Could not locate a (sufficiently recent) version of deal.II. ***\n\n"
+    "You may want to either pass a flag -DDEAL_II_DIR=/path/to/deal.II to cmake\n"
+    "or set an environment variable \"DEAL_II_DIR\" that contains this path."
+    )
+ENDIF()
+
+DEAL_II_INITIALIZE_CACHED_VARIABLES()
+PROJECT(${TARGET})
+DEAL_II_INVOKE_AUTOPILOT()
diff --git a/deal.II/examples/step-53/doc/builds-on b/deal.II/examples/step-53/doc/builds-on
new file mode 100644 (file)
index 0000000..2302bdb
--- /dev/null
@@ -0,0 +1 @@
+step-49
diff --git a/deal.II/examples/step-53/doc/intro.dox b/deal.II/examples/step-53/doc/intro.dox
new file mode 100644 (file)
index 0000000..1518606
--- /dev/null
@@ -0,0 +1,3 @@
+<a name="Intro"></a>
+<h1>Introduction</h1>
+
diff --git a/deal.II/examples/step-53/doc/kind b/deal.II/examples/step-53/doc/kind
new file mode 100644 (file)
index 0000000..15a13db
--- /dev/null
@@ -0,0 +1 @@
+basic
diff --git a/deal.II/examples/step-53/doc/results.dox b/deal.II/examples/step-53/doc/results.dox
new file mode 100644 (file)
index 0000000..b5eaba9
--- /dev/null
@@ -0,0 +1,2 @@
+<h1>Results</h1>
+
diff --git a/deal.II/examples/step-53/doc/tooltip b/deal.II/examples/step-53/doc/tooltip
new file mode 100644 (file)
index 0000000..5e77ecb
--- /dev/null
@@ -0,0 +1 @@
+Geometry: Dealing with curved boundaries.
diff --git a/deal.II/examples/step-53/step-53.cc b/deal.II/examples/step-53/step-53.cc
new file mode 100644 (file)
index 0000000..d91bff1
--- /dev/null
@@ -0,0 +1,100 @@
+/* ---------------------------------------------------------------------
+ * $Id$
+ *
+ * Copyright (C) 2014 by the deal.II authors
+ *
+ * This file is part of the deal.II library.
+ *
+ * The deal.II library is free software; you can use it, redistribute
+ * it, and/or modify it under the terms of the GNU Lesser General
+ * Public License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * The full text of the license can be found in the file LICENSE at
+ * the top level of the deal.II distribution.
+ *
+ * ---------------------------------------------------------------------
+
+ *
+ * Author: Wolfgang Bangerth, Texas A&M University, 2014
+ */
+
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_boundary.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_out.h>
+
+#include <fstream>
+
+
+using namespace dealii;
+
+
+class SineBoundary : public Boundary<3>
+{
+public:
+  virtual
+  Point<3>
+  get_new_point_on_line (const typename Triangulation<3>::line_iterator &line) const;
+
+  virtual
+  Point<3>
+  get_new_point_on_quad (const typename Triangulation<3>::quad_iterator &quad) const;
+};
+  
+
+Point<3>
+SineBoundary::
+get_new_point_on_line (const typename Triangulation<3>::line_iterator &line) const
+{
+  const double new_x = (line->vertex(0)[0] + line->vertex(1)[0]) / 2;
+  const double new_y = (line->vertex(0)[1] + line->vertex(1)[1]) / 2;
+  const double new_z = 1 +
+                      0.05 * std::sin (2 * numbers::PI * new_x) +
+                      0.05 * std::sin (2 * numbers::PI * new_y);
+  return Point<3> (new_x, new_y, new_z);
+}
+
+
+Point<3>
+SineBoundary::
+get_new_point_on_quad (const typename Triangulation<3>::quad_iterator &quad) const
+{
+  const double new_x = (quad->vertex(0)[0] + quad->vertex(1)[0] +
+                       quad->vertex(2)[0] + quad->vertex(3)[0]) / 4;
+  const double new_y = (quad->vertex(0)[1] + quad->vertex(1)[1] +
+                       quad->vertex(2)[1] + quad->vertex(3)[1]) / 4;
+  const double new_z = 1 +
+                      0.05 * std::sin (2 * numbers::PI * new_x) +
+                      0.05 * std::sin (2 * numbers::PI * new_y);
+  return Point<3> (new_x, new_y, new_z);
+}
+
+
+void make_grid ()
+{
+  SineBoundary sine_boundary;
+  
+  Triangulation<3> triangulation;
+  GridGenerator::hyper_cube (triangulation);
+
+  triangulation.begin_active()->face(5)->set_manifold_id(1);
+  triangulation.set_boundary (1, sine_boundary);
+
+  triangulation.refine_global (2);
+
+  std::ofstream out ("mesh.mgl");
+  GridOut grid_out;
+  grid_out.write_mathgl (triangulation, out);
+}
+
+
+  
+
+// @sect3{The main function}
+
+// Finally, the main function. There isn't much to do here, only to call the
+// subfunctions.
+int main ()
+{
+  make_grid ();
+}

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.