示例#1
0
    io = PETSc.Viewer().createBinary(filename,mode="w")
    Q1.view(io)
    Q2.view(io)
    Q3.view(io)
    io.destroy()

draw = PETSc.Viewer.DRAW()

for t in range(1,100):
    if t == 1:
        qinit(Q1,Q2,Q3,da)
        qbc(Q1,Q2,Q3,da)

    da.globalToLocal(Q1, Q1loc)
    da.globalToLocal(Q2, Q2loc)
    fdtd_2d(aux,pml,dxdt,dydt,s1,s2,s3,s4,q1,q2,q3,xi+1,xf,yi+1,yf,gxi+1,gxf,gyi+1,gyf,0,1)
    da.localToGlobal(Q3loc, Q3)

    da.globalToLocal(Q3, Q3loc)
    fdtd_2d(aux,pml,dxdt,dydt,s1,s2,s3,s4,q1,q2,q3,xi+1,xf,yi+1,yf,gxi+1,gxf,gyi+1,gyf,1,1)
    da.localToGlobal(Q1loc, Q1)
    da.localToGlobal(Q2loc, Q2)

    #bc(Q1,Q2,Q3)
    #Q3.view(draw)
    write(Q1,Q3,Q3,"step%d.dat" % t)
    prb.probe('Q1', Q1)
    prb.probe('Q2', Q2)

prb.save("probe.dat")
#from pprint import pprint
示例#2
0
for n in range(0, int(max_steps)):
    if n == 0:
        t = n * dt
        qinit(Q1, Q2, Q3, da)
        qbc(Q1, Q2, Q3, da, t)
    t = n * dt

    if before_step:
        aux = etar(da, ddx, ddy, t)

    bc_scattering(Q1, Q2, Q3, da, t, 0, 0)
    bc_scattering(Q1, Q2, Q3, da, t, 1, 0)
    if mat_dispersion:
        da.globalToLocal(Q1, Q1loc)
        da.globalToLocal(Q2, Q2loc)
        fdtd_2d(aux, aux_bc, dxdt, dydt, s1, s2, s3, s4, q1, q2, q3, psum,
                xi + 1, xf, yi + 1, yf, gxi + 1, gxf, gyi + 1, gyf, 0, 1)
        da.localToGlobal(Q3loc, Q3)

        da.globalToLocal(Q3, Q3loc)
        fdtd_2d(aux, aux_bc, dxdt, dydt, s1, s2, s3, s4, q1, q2, q3, psum,
                xi + 1, xf, yi + 1, yf, gxi + 1, gxf, gyi + 1, gyf, 1, 1)
        da.localToGlobal(Q1loc, Q1)
        da.localToGlobal(Q2loc, Q2)

        CalcDispersion2D(q1, q2, q3, c1, c2, c3, p1, p2, p3, psum, xi + 1, xf,
                         yi + 1, yf, gxi + 1, gxf, gyi + 1, gyf, 0, 1)
        CalcDispersion2D(q1, q2, q3, c1, c2, c3, p1, p2, p3, psum, xi + 1, xf,
                         yi + 1, yf, gxi + 1, gxf, gyi + 1, gyf, 1, 1)

    else:
        da.globalToLocal(Q1, Q1loc)
示例#3
0
for n in range(0,int(max_steps)):
    if n == 0:
        t = n*dt
        qinit(Q1,Q2,Q3,da)
        qbc(Q1,Q2,Q3,da,t)
    t = n*dt

    if before_step:
        aux = etar(da,ddx,ddy,t)

    bc_scattering(Q1,Q2,Q3,da,t,0,0)
    bc_scattering(Q1,Q2,Q3,da,t,1,0)
    if mat_dispersion:
        da.globalToLocal(Q1, Q1loc)
        da.globalToLocal(Q2, Q2loc)
        fdtd_2d(aux,aux_bc,dxdt,dydt,s1,s2,s3,s4,q1,q2,q3,psum,xi+1,xf,yi+1,yf,gxi+1,gxf,gyi+1,gyf,0,1)
        da.localToGlobal(Q3loc, Q3)

        da.globalToLocal(Q3, Q3loc)
        fdtd_2d(aux,aux_bc,dxdt,dydt,s1,s2,s3,s4,q1,q2,q3,psum,xi+1,xf,yi+1,yf,gxi+1,gxf,gyi+1,gyf,1,1)
        da.localToGlobal(Q1loc, Q1)
        da.localToGlobal(Q2loc, Q2)

        CalcDispersion2D(q1,q2,q3,c1,c2,c3,p1,p2,p3,psum,xi+1,xf,yi+1,yf,gxi+1,gxf,gyi+1,gyf,0,1)
        CalcDispersion2D(q1,q2,q3,c1,c2,c3,p1,p2,p3,psum,xi+1,xf,yi+1,yf,gxi+1,gxf,gyi+1,gyf,1,1)

    else:
        da.globalToLocal(Q1, Q1loc)
        da.globalToLocal(Q2, Q2loc)
        fdtd_2d(aux,aux_bc,dxdt,dydt,s1,s2,s3,s4,q1,q2,q3,xi+1,xf,yi+1,yf,gxi+1,gxf,gyi+1,gyf,0,1)
        da.localToGlobal(Q3loc, Q3)