Dosya:GaussianUpwind2D.gif
testwiki sitesinden
Gezinti kısmına atla
Arama kısmına atla
GaussianUpwind2D.gif (800 × 600 piksel, dosya boyutu: 972 KB, MIME türü: image/gif, döngüye girdi, 24 kare)
Bu dosya Wikimedia Commons deposunda bulunmaktadır ve diğer projeler tarafından kullanılıyor olabilir. Aşağıda dosya açıklama sayfasındaki açıklama gösteriliyor.
Özet
| AçıklamaGaussianUpwind2D.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). |
| Tarih | |
| Kaynak | Yükleyenin kendi çalışması |
| Yazar | 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
Lisanslama
Ben, bu işin telif sahibi, burada işi aşağıdaki lisans altında yayımlıyorum:
Bu dosya, Creative Commons Atıf-Benzer Paylaşım 4.0 Uluslararası lisansı ile lisanslanmıştır.
- Şu seçeneklerde özgürsünüz:
- paylaşım – eser paylaşımı, dağıtımı ve iletimi
- içeriği değiştirip uyarlama – eser adaptasyonu
- Aşağıdaki koşullar geçerli olacaktır:
- atıf – Esere yazar veya lisans sahibi tarafından belirtilen (ancak sizi ya da eseri kullanımınızı desteklediklerini ileri sürmeyecek bir) şekilde atıfta bulunmalısınız.
- benzer paylaşım – Maddeyi yeniden düzenler, dönüştürür veya inşa ederseniz, katkılarınızı özgünüyle aynı veya uyumlu lisans altında dağıtmanız gerekir.
Altyazılar
Bu dosyanın temsil ettiği şeyin tek satırlık açıklamasını ekleyin.
Bu dosyada gösterilen öğeler
betimlenen
Vikiveri ögesi olmayan bir değer
26 Kasım 2016
Dosya geçmişi
Dosyanın herhangi bir zamandaki hâli için ilgili tarih/saat kısmına tıklayın.
| Tarih/Saat | Küçük resim | Boyutlar | Kullanıcı | Yorum | |
|---|---|---|---|---|---|
| güncel | 07.20, 27 Kasım 2016 | 800 × 600 (972 KB) | wikimediacommons>Shiyu Ji | User created page with UploadWizard |
Dosya kullanımı
Aşağıdaki sayfa bu dosyayı kullanmaktadır:
"https://tr.wiki.beta.math.wmflabs.org/wiki/Dosya:GaussianUpwind2D.gif" sayfasından alınmıştır
