日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

亚声速-超声速等熵喷管拟一维流动的CFD解法(附完整代码)

發布時間:2024/1/8 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 亚声速-超声速等熵喷管拟一维流动的CFD解法(附完整代码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

入門CFD,主要參考書目《計算流體力學基礎及其應用》(John D.Anderson?著,吳頌平等?譯)

實現了?第 7.3?節?亞聲速-超聲速等熵噴管流動的CFD解法?的代碼,采用的是?MacCormack 方法。代碼中增加了動態顯示無量綱溫度和無量綱密度的功能,參考的是?python中plot實現即時數據動態顯示方法,最終結果如下:圖中紅點代表喉口所在位置。

不足之處,歡迎指正 !

???

?? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ?

完整代碼如下:

# -*- coding: utf-8 -*- """ Created on Wed Aug 5 19:11:15 2020@author: PANSONG """#### Laval 噴管 擬一維計算 ###############import numpy as np import matplotlib.pyplot as plt#%% 參數,采用無量綱量 #噴管截面形狀 def section(x):return 1+2.2*(x-1.5)**2# 初始條件 def initial_condition(x):rho = 1-0.314*xT = 1-0.2314*xV = (0.1+1.09*x)*np.sqrt(T)return rho,T,V# 理想氣體比熱比 gamma = 1.4## 離散化 max_x = 3 dx = 0.1 num_point = int(max_x/dx + 1) x = np.linspace(0,3,num_point)max_Iteration = 10000#%% 動態繪圖 plt.ion() #開啟interactive mode 成功的關鍵函數 plt.figure() plt.title('Dimensionless Parameters Evolution') plt.xlabel('Iteration')iterations = []#%% CFD 計算 #### 初始化,無量綱量 A = section(x)## 這里給兩個初值,一個 0,一個線性,避免迭代過程中 殘差判斷時 重復判斷 i array0 = np.ones(shape=x.shape)*0.01 rho,T,V = initial_condition(x) rho_history = np.vstack([array0,rho]) T_history = np.vstack([array0,T]) V_history = np.vstack([array0,V])####### MacCormack 方法 ################################### # 向前,向后差分計算,輸入 N 個數據,輸出 N-2 個偏導數 def forward_partial(y,dx):return (y[2:]-y[1:-1])/dxdef backward_partial(y,dx):return (y[1:-1]-y[:-2])/dxdef new_rho_T(original,partial,dt):new = original + np.hstack([0,partial,0])*dt # P_rho_t 首尾補 0 new[-1] = 2*new[-2]-new[-3] # 出口處又外插值確定,入口處保持不變return newdef new_V(V,P_V_t,dt):new_V = V + np.hstack([0,P_V_t,0])*dtnew_V[0] = 2*new_V[1] - new_V[2] #入口的速度可變,外插值確定new_V[-1] = 2*new_V[-2]-new_V[-3]return new_VC = 1 # 柯朗數,小于等于 1;從精度考慮,盡可能接近 1 # 關于柯朗數,通過對線性雙曲型偏微分方程的穩定性分析,要求 C<=1,對應數值解的依賴區域包含精確解依賴區域 # 從解的精度考慮,應使數值解的依賴區域盡可能等于精確解依賴區域,即 C 盡可能接近 1 # 對于非線性偏微分方程,起指導性作用,參見參考書目 P221for i in range(max_Iteration):# 繪制 喉口處 無量綱溫度 和 無量綱密度iterations.append(i)plt.plot(iterations,rho_history[1:,15],'r-',linewidth=1.0)plt.plot(iterations,T_history[1:,15],'b-',linewidth=1.0)plt.legend(['Density','Temperature'])plt.pause(1e-3)########################################## rho_error = max(np.abs((rho_history[i]-rho_history[i-1])/rho_history[i-1]))V_error = max(np.abs((V_history[i]-V_history[i-1])/V_history[i-1]))T_error = max(np.abs((T_history[i]-T_history[i-1])/T_history[i-1]))error = max(rho_error,V_error,T_error) ## 取最大相對誤差if error < 1e-4:breaka = np.sqrt(T) #無量綱當地聲速 dt = min(C*dx/(V+a)) # 計算最大允許時間推進步長 ###### 預估步 ########P_rho_t = -V[1:-1]*forward_partial(rho, dx) - rho[1:-1]*forward_partial(V, dx) - rho[1:-1]*V[1:-1]*forward_partial(np.log(A), dx)rho_pred = new_rho_T(rho,P_rho_t,dt)P_V_t = -V[1:-1]*forward_partial(V, dx) - (1.0/gamma)*(forward_partial(T, dx)+(T[1:-1]/rho[1:-1])*forward_partial(rho, dx))V_pred = new_V(V,P_V_t,dt)P_T_t = -V[1:-1]*forward_partial(T, dx) - (gamma-1.0)*T[1:-1]*(forward_partial(V, dx)+V[1:-1]*forward_partial(np.log(A), dx))T_pred = new_rho_T(T,P_T_t,dt)###### 校正步 ########P_rho_t_pred = ( -V_pred[1:-1]*backward_partial(rho_pred, dx) -rho_pred[1:-1]*backward_partial(V_pred, dx) -rho_pred[1:-1]*V_pred[1:-1]*backward_partial(np.log(A), dx) )P_rho_t_av = 0.5*( P_rho_t_pred + P_rho_t )P_V_t_pred = ( -V_pred[1:-1]*backward_partial(V_pred, dx)-1.0/gamma*backward_partial(T_pred, dx)-1.0/gamma*T_pred[1:-1]/rho_pred[1:-1]*backward_partial(rho_pred, dx) )P_V_t_av = 0.5*( P_V_t_pred + P_V_t )P_T_t_pred = ( -V_pred[1:-1]*backward_partial(T_pred, dx)-(gamma-1.0)*T_pred[1:-1]*backward_partial(V_pred, dx)-(gamma-1.0)*T_pred[1:-1]*V_pred[1:-1]*backward_partial(np.log(A), dx) )P_T_t_av = 0.5*( P_T_t_pred + P_T_t )rho = new_rho_T(rho,P_rho_t_av,dt)rho_history = np.vstack([rho_history,rho])V = new_V(V,P_V_t_av,dt)V_history = np.vstack([V_history,V])T = new_rho_T(T,P_T_t_av,dt)T_history = np.vstack([T_history,T])plt.ioff() #關閉動態繪圖#%% 計算結果可視化 def plot_results(x,y,x0,y0,title='value'):plt.figure()plt.plot(x,y)plt.scatter(x0,y0,color='red')plt.xlabel('Dimensionless distance')plt.title('Steady '+title+' in different position')plot_results(x,rho_history[-1,:],1.5,rho_history[-1,15],title='density') plot_results(x,T_history[-1,:],1.5,T_history[-1,15],title='temperature')p = rho_history[-1,:]*T_history[-1,:] plot_results(x,p,1.5,p[15],title='pression')Ma = V_history[-1,:]/np.sqrt(T_history[-1,:]) plot_results(x,Ma,1.5,Ma[15],title='Mach number')plt.show()

?

總結

以上是生活随笔為你收集整理的亚声速-超声速等熵喷管拟一维流动的CFD解法(附完整代码)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久爱99| 狼人伊人干| 黄网站免费在线观看 | 国产视频网站在线观看 | 侵犯亲女在线播放视频 | 99视频网站| 成人免费播放视频 | a天堂最新地址 | 国产做受视频 | 噼里啪啦免费看 | 亚洲国产视频一区二区三区 | 亚洲精品日日夜夜 | 精品国内自产拍在线观看视频 | aa在线视频 | 中文一区在线观看 | 日韩美女视频19 | 日日狠狠久久偷偷四色综合免费 | 美国黄色片网站 | 欧美区一区二区三 | 国产女人18毛片水真多18 | 亚洲精品成人区在线观看 | 爱情岛论坛亚洲自拍 | 九一在线视频 | 嫩草视频在线播放 | 亚洲va在线∨a天堂va欧美va | 在线视频观看免费 | 尹人香蕉 | 久久精品视频3 | 欧美精品久久96人妻无码 | 男人添女人荫蒂国产 | 国产精品国产 | 超碰综合| 欧美性生活网站 | 国产精品国语对白 | 咪咪色图 | 亚洲最新视频 | 成人91免费视频 | 未满十八18禁止免费无码网站 | 成人国产精品免费观看视频 | 婷婷激情电影 | 超碰免费视 | 欧美午夜精品久久久久久人妖 | 日韩精品123 | 中文一区二区在线 | 91大奶 | 欧美色图小说 | 亚洲精品理论片 | 官场艳妇疯狂性关系 | 久久综合激的五月天 | 999精品免费视频 | 久久全国免费视频 | 国产精品久久影院 | 天天干夜夜看 | 色综合天天干 | 色婷婷六月天 | 亚洲成人精品一区二区三区 | 欧美日韩视频在线观看一区 | 亚洲精品中文字幕 | 午夜aaa| 欧美激情成人 | 国产成人高清在线 | 夜夜精品一区二区无码 | 日本午夜一区二区三区 | 孕妇毛片 | 欧美啊v| 国产美女视频一区 | 国产一区二区三区视频免费观看 | 黑人无套内谢中国美女 | 亚洲视频综合 | 亚洲色图美腿丝袜 | 涩涩资源站 | 四虎啪啪 | 日韩成人欧美 | 肉色超薄丝袜脚交一区二区 | 91免费高清在线观看 | 久久国产乱子伦精品 | 精品国产一区二区三区久久久蜜臀 | 成人爱爱免费视频 | 亚洲一区网 | 一区二区三区四区高清视频 | www,jizz,com | 超碰在线97观看 | 国产91精品一区二区绿帽 | 天天爱天天插 | 日日夜夜伊人 | 国产睡熟迷奷系列精品视频 | 色.com | 中文字幕3区| 91精品国产成人观看 | 姐姐你真棒插曲快来救救我电影 | 国产无码久久精品 | 爱看av在线 | 久热在线 | 午夜在线播放 | 神马三级我不卡 | 国产成人无码精品亚洲 | 日本精品一二区 | 手机看片欧美日韩 | a天堂v|