<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body bgcolor="#ffffff" text="#000000">
OK so I can solve the equation but now I am having trouble plotting
the solution! I would like to produce a surface plot with colors
defined by p and animate it. That is plot the value of p at all x
and z, over time (t). My code to get p is below but I really have
no idea how to plot this. Anyone know the best way to go about this?
<br>
thanks,
<br>
D
<br>
<br>
-------- Original Message --------
<table class="moz-email-headers-table" border="0" cellpadding="0"
cellspacing="0">
<tbody>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Subject: </th>
<td>Re: [Tutor] Solve wave equation</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Date: </th>
<td>Thu, 23 Feb 2012 15:24:45 +0000</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">From: </th>
<td>David Craig <a class="moz-txt-link-rfc2396E" href="mailto:dcdavemail@gmail.com"><dcdavemail@gmail.com></a></td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">To: </th>
<td><a class="moz-txt-link-abbreviated" href="mailto:tutor@python.org">tutor@python.org</a></td>
</tr>
</tbody>
</table>
<br>
<br>
<pre>Hooray it works,
thanks
On 02/23/2012 01:39 PM, Ken Oliver wrote:
> Do you really want dt = 1**-4 or would 10**-4 be better
>
> -----Original Message-----
>> From: David Craig<a class="moz-txt-link-rfc2396E" href="mailto:dcdavemail@gmail.com"><dcdavemail@gmail.com></a>
>> Sent: Feb 23, 2012 7:57 AM
>> To: <a class="moz-txt-link-abbreviated" href="mailto:tutor@python.org">tutor@python.org</a>
>> Subject: [Tutor] Solve wave equation
>>
>> Hi,
>> I am trying to write some code that will solve the 2D wave equation by
>> the finite difference method, but it just returns an array full of zeros
>> and NaN's. Not sure where I am going wrong, the code is attached so if
>> could someone point me in the right direction I'd appreciate this.
>> Thanks
>> D
>
> .
>
# 2D Finite Distance Wave Equation.
from pylab import *
from numpy import math
ion()
# Set up variables.
nx = 100
nz = 100
nsteps = 300
c = 3500
dt = 10**-4
h = 1
t = arange(0,nsteps,dt)
# Define source as a spike.
s = zeros(nsteps)
s[1] = 1
s[2] = 2
s[3] = 1
# Position source.
xs = 50
zs = 50
##plot(t,s)
##show()
# Set up pressure field.
p=empty([nx,nz,nsteps])
for t in range(0,nsteps-1):
for z in range(0,nz-1):
for x in range(0,nx-1):
p[x,z,t] = 0
# Solve wave equation
for t in range(2,nsteps-1):
for z in range(1,nz-1):
for x in range(2,nx-1):
p[xs,zs,t] = s[t]
k = (c*dt/h)**2
p[x,z,t] = 2*p[x,z,t-1] - p[x,z,t-2] + k*(p[x+1,z,t-1]-4*p[x,z,t-1]+p[x-1,z,t-1]+p[x,z+1,t-1]+p[x,z-1,t-1])
#Plot somehow
draw()
#close()
</pre>
</body>
</html>