Esempio n. 1
0
    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)
Esempio n. 4
0
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()
Esempio n. 6
0
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()
Esempio n. 7
0
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()