print("to reference: ", divVNorm[-1] - referencesolutionDivV) fig = plt.figure() ax1 = fig.add_subplot(1, 3, 1) ax2 = fig.add_subplot(1, 3, 2) ax3 = fig.add_subplot(1, 3, 3) show(grid, data=pg.core.cellDataToPointData(grid, pres), logScale=False, showLater=True, colorBar=True, axes=ax1, cbar='b2r') show(grid, data=pg.logTransDropTol(pg.core.cellDataToPointData(grid, vel[:, 0]), 1e-2), logScale=False, showLater=True, colorBar=True, axes=ax2) show(grid, data=pg.logTransDropTol(pg.core.cellDataToPointData(grid, vel[:, 1]), 1e-2), logScale=False, showLater=True, colorBar=True, axes=ax3) show(grid, data=vel, axes=ax1) show(grid, showLater=True, axes=ax1)
b = np.zeros((ny, nx)) nt = 200 u, v, p = cavityFlow(nt, u, v, dt, dx, dy, p, rho, nu) # fig = plt.figure(figsize=(11,7), dpi=100) # ax1 = fig.add_subplot(1,3,1) # ax2 = fig.add_subplot(1,3,2) # ax3 = fig.add_subplot(1,3,3) grid = pg.createGrid(x, y) fig = plt.figure() ax1 = fig.add_subplot(1, 3, 1) ax2 = fig.add_subplot(1, 3, 2) ax3 = fig.add_subplot(1, 3, 3) pl = pg.logTransDropTol(np.array((p.T).flat), 1e-2) ul = pg.logTransDropTol(np.array((u.T).flat), 1e-2) vl = pg.logTransDropTol(np.array((v.T).flat), 1e-2) pg.show(grid, pl, logScale=False, showLater=True, colorBar=True, axes=ax1, cmap='b2r') pg.show(grid, ul, logScale=False, showLater=True, colorBar=True, axes=ax2) pg.show(grid, vl, logScale=False, showLater=True, colorBar=True, axes=ax3) vel = np.vstack([np.array((u.T).flat), np.array((v.T).flat)]).T
b = np.zeros((ny, nx)) nt = 200 u, v, p = cavityFlow(nt, u, v, dt, dx, dy, p, rho, nu) # fig = plt.figure(figsize=(11,7), dpi=100) # ax1 = fig.add_subplot(1,3,1) # ax2 = fig.add_subplot(1,3,2) # ax3 = fig.add_subplot(1,3,3) grid = pg.createGrid(x, y) fig = plt.figure() ax1 = fig.add_subplot(1, 3, 1) ax2 = fig.add_subplot(1, 3, 2) ax3 = fig.add_subplot(1, 3, 3) pl = pg.logTransDropTol(np.array((p.T).flat), 1e-2) ul = pg.logTransDropTol(np.array((u.T).flat), 1e-2) vl = pg.logTransDropTol(np.array((v.T).flat), 1e-2) pg.show(grid, pl, logScale=False, showLater=True, colorBar=True, axes=ax1, cmap='b2r') pg.show(grid, ul, logScale=False, showLater=True, colorBar=True, axes=ax2) pg.show(grid, vl, logScale=False, showLater=True, colorBar=True, axes=ax3) vel = np.vstack([np.array((u.T).flat), np.array((v.T).flat)]).T pg.mplviewer.drawStreams(ax1, grid, vel) #im1 = ax1.contourf(X,Y,p,alpha=0.5) ###plnttong the pressure field as a contour #divider1 = make_axes_locatable(ax1) #cax1 = divider1.append_axes("right", size="20%", pad=0.05)
def _test_ConvectionAdvection(): """Test agains a refernce solution.""" N = 21 # 21 reference maxIter = 11 # 11 reference Nx = N Ny = N x = np.linspace(-1.0, 1.0, Nx + 1) y = np.linspace(-1.0, 1.0, Ny + 1) grid = pg.createGrid(x=x, y=y) a = pg.RVector(grid.cellCount(), 1.0) b7 = grid.findBoundaryByMarker(1)[0] for b in grid.findBoundaryByMarker(1): if b.center()[1] < b.center()[1]: b7 = b b7.setMarker(7) swatch = pg.Stopwatch(True) velBoundary = [[1, [0.0, 0.0]], [2, [0.0, 0.0]], [3, [1.0, 0.0]], [4, [0.0, 0.0]], [7, [0.0, 0.0]]] preBoundary = [[7, 0.0]] vel, pres, pCNorm, divVNorm = __solveStokes(grid, a, velBoundary, preBoundary, maxIter=maxIter, verbose=1) print("time", len(pCNorm), swatch.duration(True)) # referencesolution = 1.2889506342694153 referencesolutionDivV = 0.029187181920161752 print("divNorm: ", divVNorm[-1]) print("to reference: ", divVNorm[-1] - referencesolutionDivV) fig = plt.figure() ax1 = fig.add_subplot(1, 3, 1) ax2 = fig.add_subplot(1, 3, 2) ax3 = fig.add_subplot(1, 3, 3) show(grid, data=pg.meshtools.cellDataToNodeData(grid, pres), logScale=False, showLater=True, colorBar=True, ax=ax1, cbar='b2r') show(grid, data=pg.logTransDropTol( pg.meshtools.cellDataToNodeData(grid, vel[:, 0]), 1e-2), logScale=False, showLater=True, colorBar=True, ax=ax2) show(grid, data=pg.logTransDropTol( pg.meshtools.cellDataToNodeData(grid, vel[:, 1]), 1e-2), logScale=False, showLater=True, colorBar=True, ax=ax3) show(grid, data=vel, ax=ax1) show(grid, showLater=True, ax=ax1) plt.figure() plt.semilogy(pCNorm, label='norm') plt.legend() plt.ioff() plt.show()
print("time", len(pCNorm), swatch.duration(True)) referencesolution = 1.2889506342694153 referencesolutionDivV = 0.029187181920161752 print("divNorm: ", divVNorm[-1]) print("to reference: ", divVNorm[-1] - referencesolutionDivV) fig = plt.figure() ax1 = fig.add_subplot(1, 3, 1) ax2 = fig.add_subplot(1, 3, 2) ax3 = fig.add_subplot(1, 3, 3) show(grid, data=pg.cellDataToPointData(grid, pres), logScale=False, showLater=True, colorBar=True, axes=ax1, cbar='b2r') show(grid, data=pg.logTransDropTol( pg.cellDataToPointData( grid, vel[ :, 0]), 1e-2), logScale=False, showLater=True, colorBar=True, axes=ax2) show(grid, data=pg.logTransDropTol( pg.cellDataToPointData( grid, vel[ :, 1]), 1e-2), logScale=False, showLater=True, colorBar=True, axes=ax3) show(grid, data=vel, axes=ax1) show(grid, showLater=True, axes=ax1) plt.figure() plt.semilogy(pCNorm, label='norm') plt.legend()
pg.showLater(1) ax, cbar = pg.show(modelMesh, model) pg.show(modelMesh, data.sensorPositions(), axes=ax, showLater=1) pg.show(modelMesh, axes=ax) ax, cbar = pg.show(modelMesh, model, tri=1, interpolate=1) ax, cbar = pg.show(modelMesh, model, tri=1, interpolate=0, shading='gouraud') potmatrix = fop.solution() print(potmatrix) print(potmatrix[0]) u = potmatrix[0] - potmatrix[1] ax, cbar = pg.show(fop.mesh(), pg.logTransDropTol(u, 1e-5)) uc = pg.RVector(mesh.cellCount()) for c in mesh.cells(): uc[c.id()] = c.pot(c.center(), u) ax, cbar = pg.show(mesh, pg.logTransDropTol(uc, 1e-5)) ax, cbar = pg.show(mesh, pg.logTransDropTol(uc, 1e-5), tri=1, interpolate=0) ax, cbar = pg.show(mesh, pg.logTransDropTol(uc, 1e-5), tri=1, interpolate=1, nLevs=256, omitLines=1) ax, cbar = pg.show(mesh, pg.logTransDropTol(uc, 1e-5), tri=1, shading='gouraud') pg.showNow()
for i in range(4): pg.show(modelMesh, data.sensorPositions(), axes=ax[i]) pg.show(modelMesh, axes=ax[i]) potmatrix = fop.solution() print(potmatrix) print(potmatrix[0]) u = potmatrix[0] - potmatrix[1] uc = pg.RVector(mesh.cellCount()) for c in mesh.cells(): uc[c.id()] = c.pot(c.center(), u) fig = pg.plt.figure() ax = [fig.add_subplot(3,2,i) for i in range(1,3*2+1)] pg.show(fop.mesh(), pg.logTransDropTol(u, 1e-5), tri=0, axes=ax[0]) pg.show(fop.mesh(), pg.logTransDropTol(u, 1e-5), tri=1, axes=ax[1]) pg.show(mesh, pg.logTransDropTol(uc, 1e-5), tri=0, axes=ax[2]) pg.show(mesh, pg.logTransDropTol(uc, 1e-5), tri=1, interpolate=0, axes=ax[3]) pg.show(mesh, pg.logTransDropTol(uc, 1e-5), tri=1, interpolate=1, axes=ax[4], nLevs=256, omitLines=1, ) pg.show(mesh, pg.logTransDropTol(uc, 1e-5), tri=1, axes=ax[5], shading='gouraud', ) pg.wait()