diff options
author | eug-vs <eugene@eug-vs.xyz> | 2022-05-25 23:23:44 +0400 |
---|---|---|
committer | eug-vs <eugene@eug-vs.xyz> | 2022-05-25 23:24:13 +0400 |
commit | 7a948fe1d90e858902766dd49143f9ec46188bec (patch) | |
tree | ad628b5b75aa62c184042d9f49b05360724f7692 /src/plotter.py | |
parent | 162641340305650b710c85f6ebace6f7a392ea1b (diff) | |
download | CFD-SIMPLE-7a948fe1d90e858902766dd49143f9ec46188bec.tar.gz |
feat: finish working bfs example
Diffstat (limited to 'src/plotter.py')
-rw-r--r-- | src/plotter.py | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/src/plotter.py b/src/plotter.py index 45d95da..c322de9 100644 --- a/src/plotter.py +++ b/src/plotter.py @@ -20,7 +20,7 @@ class Plotter: if self.plt: self.plt.remove() - def plot(self, model, normalize=True, density=False, save_path=''): + def plot(self, model, normalize=True, density=False, save_path='', streamplot=False): self.clear() axes.set_title('Velocity field (normalized)') @@ -28,38 +28,41 @@ class Plotter: plt.xlabel('X') plt.ylabel('Y') - u, v = model.u, model.v - if normalize: - factor = np.sqrt(u ** 2 + v ** 2) - u = u / factor - v = v / factor + shape = model.p.shape + + u = np.zeros(shape, dtype=float) + v = np.zeros(shape, dtype=float) + + for i in range(shape[0]): + for j in range(shape[1]): + u[i][j] = 0.5 * (model.u[i][j] + model.u[i][j + 1]) + v[i][j] = 0.5 * (model.v[i][j] + model.v[i + 1][j]) + assert not v[0, :].any() + assert not v[-1, :].any() - shape = (model.p.shape[0] + 1, model.p.shape[1] + 1) x, y = np.meshgrid( np.linspace(0, shape[1] * model.step, shape[1]), np.linspace(0, shape[0] * model.step, shape[0]), ) - u = copy(model.u) - u.resize(shape) - v = copy(model.v) - v.resize(shape) - p = copy(model.p) - p.resize(shape) - - print(shape, u.shape, v.shape) + if normalize: + factor = np.sqrt(u ** 2 + v ** 2) + u = u / factor + v = v / factor # density = density or int((max(model.domain_size) / model.step) / 40) - plt.contourf(x, y, p) + plt.contourf(x, y, model.p) # self.patch = axes.add_patch(Rectangle((0, 0), *reversed(model.bfs_size), color='gray')) - # TODO: allow using streamplot - self.plt = plt.quiver( + + plotter = plt.streamplot if streamplot else plt.quiver + self.plt = plotter( x, y, u, v, + color='black' ) self.colorbar = plt.colorbar(label='Pressure') |