Help with weave.blitz()

M

monkeyboy

Hello,

I'm a new scipy user, and I'm trying to speed up some array code with
weave. I'm running xp with gcc from cgywin, and scipy.weave.test()
returns an OK status.

I'm trying to speed up the code below. I've found a couple of examples
of weave on the web, and I think it should be straight forward, but I
keep getting the following error when calling weave.blitz(expr). It's
complaining about the variable being assigned, I've tried listing it in
the blitz call with no luck.

Any help is appreciated.

PS I've also posted to scipy.org

Thank you,

Frank


***ERROR***

Traceback (most recent call last):
File "D:/Documents/Homework/MTMG310/Project/hw6r3VectorizeWeave.py",
line 436, in -toplevel-
prof.runcall(main)
File "C:\Python24\Lib\hotshot\__init__.py", line 76, in runcall
return self._prof.runcall(func, args, kw)
File "D:/Documents/Homework/MTMG310/Project/hw6r3VectorizeWeave.py",
line 383, in main
findw(w,wprior,phiprior,uprior,vprior)
File "D:/Documents/Homework/MTMG310/Project/hw6r3VectorizeWeave.py",
line 136, in findw
weave.blitz(expr)
File "C:\Python24\Lib\site-packages\scipy\weave\blitz_tools.py", line
35, in blitz
if check_size and not
size_check.check_expr(expr,local_dict,global_dict):
File "C:\Python24\Lib\site-packages\scipy\weave\size_check.py", line
51, in check_expr
exec(expr,values)
File "<string>", line 1
wnext[1:grows-1,1:gcols-1] =( alpha * w[1:grows-1,1:gcols-1] + ax *
(w[1:grows-1,0:gcols-2] + w[1:grows-1,2:gcols]) +
^
SyntaxError: invalid syntax


***CODE***

def findw(wnext,wprior,phiprior,uprior,vprior):
#format here is x[i,j] where i's are rows, j's columns, use flipud()
to get the
#print out consistent with the spacial up-down directions

#assign local names that are more
#inline with the class notation
w = wprior
phi = phiprior
u = uprior
v = vprior


#three of the BC are known so just set them
#symetry plane
wnext[0,0:gcols] = 0.0

#upper wall
wnext[gN,0:gcols] = 2.0/gdy**2 * (phi[gN,0:gcols] -
phi[gN-1,0:gcols])

#inlet, off the walls
wnext[1:grows-1,0] = 0.0


upos = where(u>0)
vpos = where(v>0)

Sx = ones_like(u)
Sx[upos] = 0.0
xSx = 1.0 - Sx


Sy = ones_like(v)
Sy[vpos] = 0.0
ySy = 1.0 - Sy

uw = u*w
vw = v*w

ax = gnu*gdt/gdx**2
ay = gnu*gdt/gdy**2
dtdx = gdt/gdx
dtdy = gdt/gdy

alpha = (1.0 - 2.0*ax - 2.0*ay)


#interior nodes
expr = """ \
wnext[1:grows-1,1:gcols-1] =( alpha * w[1:grows-1,1:gcols-1] + ax *
(w[1:grows-1,0:gcols-2] + w[1:grows-1,2:gcols]) +
ay * (w[0:grows-2,1:gcols-1] +
w[2:grows,1:gcols-1]) -
dtdx * (xSx[1:grows-1,1:gcols-1] *
(uw[1:grows-1,1:gcols-1] - uw[1:grows-1,0:gcols-2]) -
Sx[1:grows-1,1:gcols-1] *
(uw[1:grows-1,2:gcols] - uw[1:grows-1,1:gcols-1])) -
dtdy * (ySy[1:grows-1,1:gcols-1] *
(vw[1:grows-1,1:gcols-1] - vw[1:grows-1,0:gcols-2]) -
Sy[1:grows-1,1:gcols-1] *
(vw[1:grows-1,2:gcols] - vw[1:grows-1,1:gcols-1])) )
"""


#weave.inline(expr,['wnext','w','Sx','xSx','Sy','ySy','uw','vw','ax','ay','dtdx','dtdy','alpha','grows','gcols'])
#weave.inline(expr,['wnext'],compiler='gcc',verbose=2)

#weave.blitz(expr,['wnext','w','Sx','xSx','Sy','ySy','uw','vw','ax','ay','dtdx','dtdy','alpha','grows','gcols'])
#weave.blitz(expr,size_check=1)
#weave.inline(expr,['wnext'])
weave.blitz(expr)



## for j in range(1,gasizej-1):
## for i in range(1,gasizei-1):
##
## wnext[i,j] =( w[i,j] + gnu*gdt/gdx**2 * (w[i,j-1] -
2.0*w[i,j] + w[i,j+1]) +
## gnu*gdt/gdy**2 * (w[i-1,j] - 2.0*w[i,j] +
w[i+1,j]) -
## (1.0 - Sx[i,j]) * gdt/gdx * (uw[i,j] -
uw[i,j-1]) -
## Sx[i,j] * gdt/gdx * (uw[i,j+1] - uw[i,j]) -
## (1.0 - Sy[i,j]) * gdt/gdy * (vw[i,j] -
vw[i-1,j]) -
## Sy[i,j] * gdt/gdy * (vw[i+1,j] - vw[i,j]) )

## print "***wnext****"
## print "i: ", i, "j: ", j, "wnext[i,j]: ", wnext[i,j]

#final BC at outlet, off walls
wnext[1:grows-1,gM] = wnext[1:grows-1,gM-1]
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,989
Messages
2,570,207
Members
46,782
Latest member
ThomasGex

Latest Threads

Top