From 9cc6cfd20b75b6bf11cf702143c0956b4f0f4adb Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Sun, 19 Feb 2017 13:39:57 -0600
Subject: [PATCH] Make wave-min example dim-independent

---
 examples/wave/wave-min.py | 28 ++++++++++++++++++----------
 1 file changed, 18 insertions(+), 10 deletions(-)

diff --git a/examples/wave/wave-min.py b/examples/wave/wave-min.py
index 6a4ae710..bf2cc843 100644
--- a/examples/wave/wave-min.py
+++ b/examples/wave/wave-min.py
@@ -35,17 +35,20 @@ def main(write_output=True, order=4):
     cl_ctx = cl.create_some_context()
     queue = cl.CommandQueue(cl_ctx)
 
+    dims = 2
     from meshmode.mesh.generation import generate_regular_rect_mesh
-    mesh = generate_regular_rect_mesh(a=(-0.5, -0.5), b=(0.5, 0.5),
-            n=(20, 20))
+    mesh = generate_regular_rect_mesh(
+            a=(-0.5,)*dims,
+            b=(0.5,)*dims,
+            n=(8,)*dims)
 
     discr = Discretization(cl_ctx, mesh, order=order)
 
-    source_center = np.array([0.1, 0.22])
+    source_center = np.array([0.1, 0.22, 0.33])[:mesh.dim]
     source_width = 0.05
     source_omega = 3
 
-    sym_x = sym.nodes(2)
+    sym_x = sym.nodes(mesh.dim)
     sym_source_center_dist = sym_x - source_center
     sym_t = sym.ScalarVariable("t")
 
@@ -80,7 +83,11 @@ def main(write_output=True, order=4):
     def rhs(t, w):
         return bound_op(queue, t=t, w=w)
 
-    dt = 0.04
+    if mesh.dim == 2:
+        dt = 0.04
+    elif mesh.dim == 3:
+        dt = 0.02
+
     dt_stepper = set_up_rk4("w", dt, fields, rhs)
 
     final_t = 10
@@ -105,11 +112,12 @@ def main(write_output=True, order=4):
 
             print(step, event.t, norm(queue, u=event.state_component[0]),
                     time()-t_last_step)
-            vis.write_vtk_file("fld-%04d.vtu" % step,
-                    [
-                        ("u", event.state_component[0]),
-                        ("v", event.state_component[1:]),
-                        ])
+            if step % 10 == 0:
+                vis.write_vtk_file("fld-%04d.vtu" % step,
+                        [
+                            ("u", event.state_component[0]),
+                            ("v", event.state_component[1:]),
+                            ])
             t_last_step = time()
 
 
-- 
GitLab