示例#1
0
def run():
    dim = 2
    _a = mkarray((dim, ))

    nr = _a(50)
    rmin = _a(0)
    rmax = _a(1, 2)
    dr = (rmax - rmin) / (nr - 1)
    bounds = [rmin, rmax]

    _p = np.zeros(nr)
    _b = np.zeros(nr)
    _r = [np.linspace(0, s, n) for s, n in zip(bounds[1], nr)]

    # source
    nx, ny = nr
    _b[int(nx / 4), int(ny / 4)] = 100
    _b[int(3 * nx / 4), int(3 * ny / 4)] = -100

    poisson(_p, _b, dr)
    plot_2D(_r, _p)
    pyplot.show()
示例#2
0
    p = np.zeros(nr)
    nt = 100
    return solve(nt, (u, v), dt, dr, p, rho, nu)

def plot_field(X, Y, p, uv):
    u, v = uv
    fig = pyplot.figure(figsize=(11, 7), dpi=100)
    pyplot.contour(X, Y, p, alpha=0.5, cmap=cm.viridis)
    pyplot.colorbar()
    pyplot.contour(X, Y, p, cmap=cm.viridis)
    # pyplot.quiver(X[::2, ::2], Y[::2, ::2], u[::2, ::2], v[::2, ::2])
    pyplot.streamplot(X, Y, u, v)
    pyplot.xlabel('X')
    pyplot.ylabel('Y')

dim = 2
_a = _lib.mkarray((dim,))

nr = _a(41)

rmin = _a(0)
rmax = _a(2)
dr = (rmax - rmin)/(nr - 1)
r = _lib.linspaces([rmin, rmax], nr)
R = np.meshgrid(*r)

if __name__ == '__main__':
    uv, p = run(nr, dr)
    plot_field(*R, p, uv)
    pyplot.show()
示例#3
0
# 2D linear convection
import math
import numpy as np

from matplotlib import pyplot, cm
from mpl_toolkits.mplot3d import Axes3D  ##New Library required for projected 3d plots

import _lib
from _lib import plot, compare, wall_boundary

# def v(*a): return np.array(a)
v = _lib.mkarray((2, ))

# constants
wall = (1)
rbox = [v(0), v(2)]
num_r = v(11)
num_t = 100
c = 1
dr = rbox[1] / (num_r - 1)
sigma = 0.2
dt = sigma * np.prod(dr)
dx, dy = dr


# iterative
def _step_it(u):
    u = u.copy()
    for n in range(num_t):
        un = u.copy()
        row, col = u.shape