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
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)
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)