Файл:GaussianUpwind2D.gif
Матеріал з testwiki
Перейти до навігації
Перейти до пошуку
GaussianUpwind2D.gif (800 × 600 пікселів, розмір файлу: 972 КБ, MIME-тип: image/gif, кільцеве, 24 кадри)
Цей файл з Вікісховища і може використовуватися в інших проєктах. Далі наведена інформація з його сторінки опису.
Опис файлу
| ОписGaussianUpwind2D.gif |
English: Upwind scheme for advection equation with solenoidal u = (sin(t), cos(t)) and boundary condition Z(x, y, t) = exp(- (x - (1 - cos(t)))2 - (y - sin(t))2). |
| Час створення | |
| Джерело | Власна робота |
| Автор | Shiyu Ji |
Python/Matplotlib Code
# A numerical solution of 2D Gaussian advection equation by Upwind Scheme.
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as pl
import numpy as np
t0 = 0.0
dt = 0.045
t_final = 1
x0 = -2.0
dx = 0.04
x_max = 4.0
y0 = -2.0
dy = 0.04
y_max = 4.0
T = np.arange(t0, t_final+dt, dt)
X = np.arange(x0, x_max+dx, dx)
Y = np.arange(y0, y_max+dy, dy)
U = [[0.0 for _ in Y] for _ in X]
fig = pl.figure()
ax = fig.add_subplot(111, projection='3d')
nframe = 0
for t in T:
if t == t0:
for i in range(len(X)):
for j in range(len(Y)):
U[i][j] = np.exp(-X[i]**2-Y[j]**2)
else:
U_prime = [[0.0 for _ in Y] for _ in X]
for i in range(len(X)):
for j in range(len(Y)):
if i == 0 or j == 0 or i == len(X)-1 or j == len(Y)-1:
U_prime[i][j] = np.exp(-(X[i]-(1-np.cos(t)))**2-(Y[j]-np.sin(t))**2)
else:
ux = np.sin(t)
uy = np.cos(t)
if ux > 0 and uy > 0:
U_prime[i][j] = U[i][j] - ux*dt/dx*(U[i][j] - U[i-1][j]) - uy*dt/dy*(U[i][j] - U[i][j-1])
elif ux > 0 and uy <= 0:
U_prime[i][j] = U[i][j] - ux*dt/dx*(U[i][j] - U[i-1][j]) - uy*dt/dy*(U[i][j+1] - U[i][j])
elif ux <= 0 and uy > 0:
U_prime[i][j] = U[i][j] - ux*dt/dx*(U[i+1][j] - U[i][j]) - uy*dt/dy*(U[i][j] - U[i][j-1])
else:
U_prime[i][j] = U[i][j] - ux*dt/dx*(U[i+1][j] - U[i][j]) - uy*dt/dy*(U[i][j+1] - U[i][j])
U = U_prime
ax.clear()
gridX, gridY = np.meshgrid(X, Y)
ax.plot_surface(gridX, gridY, U, cmap = 'summer', lw = 0.0)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('phi')
ax.set_xlim([x0, x_max])
ax.set_ylim([y0, y_max])
ax.set_zlim([0, 1])
fig.savefig('upwind2d/frame_'+"%03d" % nframe+'.png')
nframe += 1
# To generate GIF: convert frame_* GaussianUpwind2D.gif
Ліцензування
Я, власник авторських прав на цей твір, добровільно публікую його на умовах такої ліцензії:
Цей файл ліцензований на умовах Creative Commons Із зазначенням автора - Розповсюдження на тих самих умовах 4.0 Міжнародна
- Ви можете вільно:
- ділитися – копіювати, поширювати і передавати твір
- модифікувати – переробляти твір
- При дотриманні таких умов:
- зазначення авторства – Ви повинні вказати авторство, надати посилання на ліцензію і вказати, чи якісь зміни було внесено до оригінального твору. Ви можете зробити це в будь-який розсудливий спосіб, але так, щоб він жодним чином не натякав на те, наче ліцензіар підтримує Вас чи Ваш спосіб використання твору.
- поширення на тих же умовах – Якщо ви змінюєте, перетворюєте або створюєте іншу похідну роботу на основі цього твору, ви можете поширювати отриманий у результаті твір тільки на умовах такої ж або сумісної ліцензії.
Підписи
Додайте однорядкове пояснення, що саме репрезентує цей файл
Об'єкти, показані на цьому файлі
зображує
Якесь значення без елемента на сайті Вікідані
26 листопада 2016
Історія файлу
Клацніть на дату/час, щоб переглянути, як тоді виглядав файл.
| Дата/час | Мініатюра | Розмір об'єкта | Користувач | Коментар | |
|---|---|---|---|---|---|
| поточний | 07:20, 27 листопада 2016 | 800 × 600 (972 КБ) | wikimediacommons>Shiyu Ji | User created page with UploadWizard |
Використання файлу
Така сторінка використовує цей файл:
