Added a screenshot.
authorIsaac Dooley <idooley2@illinois.edu>
Thu, 16 Oct 2008 21:18:08 +0000 (21:18 +0000)
committerIsaac Dooley <idooley2@illinois.edu>
Thu, 16 Oct 2008 21:18:08 +0000 (21:18 +0000)
examples/charm++/wave2d/paper.pdf
examples/charm++/wave2d/paper.tex
examples/charm++/wave2d/screenshot.png [new file with mode: 0644]
examples/charm++/wave2d/wave2d.C

index d0616cc7f18aceb3499ad7801e6602d9e9b6c771..abe5d800f9aed6f87de5d23fb9f5007434fe95eb 100644 (file)
Binary files a/examples/charm++/wave2d/paper.pdf and b/examples/charm++/wave2d/paper.pdf differ
index ff769bbb4f0444f1106231a9fac6b9f5ee200330..d2073897f1d6803b38167892ee47ed5f2515c5fe 100644 (file)
@@ -1,6 +1,8 @@
 
 \documentclass{article}
 
+\usepackage{graphicx}
+
 %-------------------------------------------------------------------------
 \begin{document}
 
@@ -30,5 +32,14 @@ p_{x,y}^{t+1} = c^2 \left(p_{x+1,y}^{t}+p_{x-1,y}^{t}+p_{x,y+1}^{t}+p_{x,y-1}^{t
 This update rule specifies how the $p$ value for each location in the grid should be computed, using $p$ values from the two previous time steps. This update rule is easy to code in an application. The application simply maintains two timesteps' worth of $p$ grids, and using these, the next timestep's $p$ grid can be computed. The $c$ term determines the wave speed. This value must be small enough such that the wave cannot move across more than one grid square in a single timestep. Smaller values for $c$ will make the simulation take longer to propagate a wave by a fixed distance, but larger values for $c$ can introduce dispersive and diffusive errors.
 
 
+\begin{figure}
+\begin{center}
+\includegraphics[width=5in]{screenshot}
+\caption{A screenshot of the wave2d program. Positive values of $p$ on the grid are colored red, while negative values are colored blue. The green lines show the parallel decomposition of the problem onto a 4x4 chare array.
+\label{screenshot}}
+\end{center}
+\end{figure} 
+
+
 \end{document}
 
diff --git a/examples/charm++/wave2d/screenshot.png b/examples/charm++/wave2d/screenshot.png
new file mode 100644 (file)
index 0000000..17a7890
Binary files /dev/null and b/examples/charm++/wave2d/screenshot.png differ
index 9c61cf19c98b9d78d36484f0acfdede9fb755d11..1af20e6d3b30914ce866d6242659d343eada2094 100644 (file)
@@ -4,14 +4,7 @@
 // Author: Isaac Dooley 2008
 
 // This program solves the 2-d wave equation over a grid, displaying pretty results through liveViz
-// The program could be made more efficient, but is kept this way for simplicity.
-// Migration is not supported yet. Please add the PUP function if you get a chance!
-
-// This program is based on the description here:
-// http://www.mtnmath.com/whatrh/node66.html
-// "The wave equation is the universal equation of physics. It works for light, 
-//  sound, waves on the surface of water and a great deal more"
-
+// The discretization used below is described in the accompanying pdf paper.pdf
 
 /*readonly*/ CProxy_Main mainProxy;
 /*readonly*/ CProxy_Wave arrayProxy;
@@ -250,15 +243,8 @@ public:
          // Previous step's value for this array element
          double old  = pressure_old[i*mywidth+j];
 
-         // Wave speed
-         double c = 0.4;
-
          // Compute the new value
-         pressure_new[i*mywidth+j] = c*c*(left+right+up+down - 4.0*curr)-old+2.0*curr;
-
-         // Round any near-zero values to zero (avoid denorms)
-         //      if(pressure_new[i*mywidth+j] < 0.0001 && pressure_new[i*mywidth+j] >  -0.0001)
-         //  pressure_new[i*mywidth+j] = 0.0;
+         pressure_new[i*mywidth+j] = 0.4*0.4*(left+right+up+down - 4.0*curr)-old+2.0*curr;
 
        }
       }