Thanks, much much faster!  To get it to work you have to do 

                Pkg.add(“ApproxFun”);Pkg.checkout(“ApproxFun”);

Below is the version that works for me.  Is there support for non-evenly spaced 
grids?  I also want to do functions on a disk.  (And cylinders and spheres…not 
sure how to plot those though.)






using GLPlot, GLAbstraction, ModernGL, ApproxFun
window = createdisplay(w=1000,h=1000,eyeposition=Vec3(1,1,1), lookat=Vec3(0))
 
function zcolor(i, j, t)
    x = float32(i - 0.5)
    z = float32(j - 0.5)
    radius = sqrt((x * x) + (z * z))
 
    r = sin(10.0f0 * radius + t)
    g = cos(10.0f0 * radius + t)
    b = radius
    return Vec4(r,g,b, 1)
end
 
yy        = xx =-1.:.05:1.
N         = length(xx)
color     = [zcolor(i/N, j/N, 15) for i=1:N, j=1:N];
 
 
h    = 0.01
u0   = TensorFun((x,y)->exp(-10x.^2-20(y-.1).^2))
d    = Interval()⊗Interval()
L    = I-h^2*lap(d)
B    = dirichlet(d)
S    = schurfact([B,L],80)
 
u    = Array(TensorFun,10000)
u[1] = u0
u[2] = u0
n    = 2


m       = 500
vals      = Float64[u[1][x,y] for x in xx,y in yy]
texdata=map(Vec1,vals) 
obj     = glplot(texdata, primitive=SURFACE(), color=color)
# this is probably a little opaque, but texdata ends up in :z, as :z is the 
default attribute for the data you upload
zvalues = obj.uniforms[:z] 
# Like this you get a reference to the gpu memory object (a texture in this 
case)
 
glClearColor(1,1,1,0)
for k=n+1:n+m
    u[k]      = (S\[zeros(4),2u[k-1]-u[k-2]])
    vals      = Float64[u[k][x,y] for x in xx,y in yy]
    update!(zvalues, map(Vec1,vals)) # now you can simply update the gpu 
object, which should be very efficient
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
    render(obj)
    yield()
    GLFW.SwapBuffers(window.glfwWindow)
end
n+=m 





On 2 Sep 2014, at 6:48 am, Simon Danisch <[email protected]> wrote:

> Hi, 
> glad to hear that you like my package!
> I'm surprised that your code works without being very slow, as you use my (a 
> little confusing) API wrong ;)
> Here is a better version:
> https://gist.github.com/SimonDanisch/794c274fbf3090f00359
> I couldn't test the code, as some functions where missing!
> 
> Best,
> Simon
> 
> 
> Am Dienstag, 19. August 2014 07:46:22 UTC+2 schrieb Sheehan Olver:
> Hi,
> 
> Is there a way to force plotting in PyPlot.jl, to simulate animation?  Right 
> now if I do a for loop over a sequence of plots, it only outputs the last 
> plot.
> 
> This is in IJulia running on OS X with matplotlib version 1.3.1 installed, 
> and pygui(true)
> 
> Sheehan

Reply via email to