python for CFD 第四步

2D convection 方程

120346_UdHj_1427937.png

离散形式

120429_VA4l_1427937.png

初始条件

120514_jj0g_1427937.png

#!/usr/bin/python
#coding = utf-8
from mpl_toolkits.mplot3d import Axes3D #3D图必须引入这个库
import numpy as np
import matplotlib.pylab as plt

nx = 81
ny = 81
nt = 60
c=1
dx = 2.0/(nx-1)
dy = 2.0/(ny-1)
sigma = .2
dt = sigma*dx

x = np.linspace(0,2,nx)
y = np.linspace(0,2,ny)

u = np.ones((ny,nx)) 

u[.5/dy:1/dy+1,.5/dx:1/dx+1]=2 
"""
for n in range(nt+1):
	un = u.copy()
	for i in range(1,len(u)):
		for j in range(1,len(u)):
			u[i,j] = un[i, j] - (c*dt/dx*(un[i,j] - un[i-1,j]))-(c*dt/dy*(un[i,j]-un[i,j-1]))
			u[0,:] = 1
			u[-1,:] = 1
			u[:,0] = 1
			u[:,-1] = 1
"""
#下面的与上面的功能一样,只是形式简单

for n in range(nt+1):
	un = u.copy()
	u[1:,1:] = un[1:,1:] - c*(dt/dx)*(un[1:,1:]-un[0:-1,1:]) - (dt/dy)*(un[1:,1:]-un[1:,0:-1])
	u[0,:] = 1
	u[-1,:] = 1
	u[:,0] = 1
	u[:,-1] = 1
    	 
fig = plt.figure( dpi=100)         
ax = plt.subplot(111,projection="3d")                     
X, Y = np.meshgrid(x,y)                            
surf = ax.plot_surface(X,Y,u[:])

plt.show()

121328_nkBA_1427937.png

转载于:https://my.oschina.net/sunxichao/blog/377214

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值