[Tutor] Solve wave equation
David Craig
dcdavemail at gmail.com
Thu Feb 23 18:32:39 CET 2012
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?
thanks,
D
-------- Original Message --------
Subject: Re: [Tutor] Solve wave equation
Date: Thu, 23 Feb 2012 15:24:45 +0000
From: David Craig <dcdavemail at gmail.com>
To: tutor at python.org
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<dcdavemail at gmail.com>
>> Sent: Feb 23, 2012 7:57 AM
>> To: tutor at python.org
>> 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()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20120223/c3701e35/attachment-0001.html>
More information about the Tutor
mailing list