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 <dcdavem...@gmail.com>
To:     tutor@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<dcdavem...@gmail.com>
 Sent: Feb 23, 2012 7:57 AM
 To: tutor@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()






_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to