| 5 | 1/1 | 返回列表 |
| 查看: 1122 | 回復(fù): 5 | |||
| 當(dāng)前只顯示滿足指定條件的回帖,點(diǎn)擊這里查看本話題的所有回帖 | |||
花開(kāi)時(shí)節(jié)0931鐵蟲(chóng) (初入文壇)
|
[求助]
求助格子boltzmann方法模擬平板間氣體流動(dòng) 已有1人參與
|
||
|
空氣以聲速?gòu)钠桨彘g進(jìn)入,平板厚度10微米,想采用格子boltzmann模擬氣體流動(dòng),沒(méi)學(xué)過(guò)C語(yǔ)言,邊學(xué)邊改。問(wèn)題還是很大,畢業(yè)論文著急,求指導(dǎo)。不勝感激。 #include <cmath> #include <iostream> #include <cstdlib> #include <iomanip> #include <fstream> #include <sstream> #include <string> using namespace std; const int Q=9; //D2Q9模型 const int NX=120;//X方向 const int NY=40;//Y方向 //const double U=0.1; //頂蓋速度 int e[Q][2]={{0,0},{1,0},{0,1},{-1,0},{0,-1},{1,1},{-1,1}, {-1,-1}, {1,-1}}; double w[Q]={4.0/9,1.0/9,1.0/9,1.0/9,1.0/9,1.0/36,1.0/36,1.0/36,1.0/36}; double rho[NX+1][NY+1],u[NX+1][NY+1][2],u0[NX+1][NY+1][2],f[NX+1][NY+1][Q],F[NX+1][NY+1][Q]; int i,j,k,ip,jp,n; double c,Re,dx,dy,Lx,Ly,dt,rho0,P0,tau_f,niu,error,Kn; void init(); double feq(int k,double rho,double u[2]); double rhosum[NX][NY] = {0}; double Psum[NX][NY] = {0}; void evolution(); void output(int m) ; void Error(); int main() { using namespace std; init(); for(n=0; ;n++) { evolution(); if (n%1000==0) { Error(); cout<<"the "<<n<<" th computation result:"<<endl<< "The u,v of point (NX/2,NY/2)is:" <<setprecision(6) <<u[NX/2][NY/2][0]<<","<<u[NX/2][NY/2][1]<<endl; cout<<"The max relative error of uv is: " <<setiosflags(ios::scientific)<< error <<endl; if(n>=100) { if(n%1000==0) output(n); if(error<1.0e-12) break; } } } return 0; } void init() { dx=1.0; dy=1.0; P0=0.5; Lx=dx*double(NY); Ly=dy*double(NX); dt=dx; c=dx/dt;//1.0 rho0=1.03; Kn=0.5; tau_f=8; //tau_f=P0*Lx*Kn*sqrt(6/3.14)+0.5; //Re=8; // niu=0.1*Lx/Re; //tau_f=3.0*niu+0.5; std::cout<<"tau_f="<<tau_f<<endl; for(i=0;i<=NX;i++)//初始化 for(j=0;j<=NY;j++) { u[j][0]=0; u[j][1]=0; rho[j]=rho0; u[0][j][0]=0.57; for (k=0;k<Q;k++) { f[j][k]=feq(k,rho[j],u[j]); } } } double feq(int k,double rho,double u[2])//計(jì)算平衡態(tài)分布函數(shù) { double eu,uv,feq; eu=(e[k][0]*u[0]+e[k][1]*u[1]); uv=(u[0]*u[0]+u[1]*u[1]); feq=w[k]*rho*(1.0+3.0*eu+4.5*eu*eu-1.5*uv); return feq; } void evolution() { for(i=1;i<NX;i++)//演化 for(j=1;j<NY;j++) for(k=0;k<Q;k++) { ip=i-e[k][0]; jp=j-e[k][1]; F[j][k]=f[ip][jp][k]+(feq(k,rho[ip][jp], u[ip][jp])-f[ip][jp][k])/tau_f; } for(i=1;i<NX;i++)//計(jì)算宏觀量 for(j=1;j<NY;j++) { u0[j][0]=u[j][0]; u0[j][1]=u[j][1]; rho[j]=0; u[j][0]=0; u[j][1]=0; for(k=0;k<Q;k++) { f[j][k]=F[j][k]; rho[j]+=f[j][k]; u[j][0]+=e[k][0]*f[j][k]; u[j][1]+=e[k][1]*f[j][k]; rhosum[j] += f[j][k]; } Psum[j] = rhosum[j] * c * c / 3; u[j][0]/=rho[j]; u[j][1]/=rho[j]; } //邊界處理 //左右邊界 for(i=0;i<=NX;i++)//上下邊界 for(k=0;k<Q;k++) { rho[0]=rho[1]; f[0][k]=feq(k,rho[0],u[0])+f[1][k] -feq(k,rho[1],u[1]); rho[NY]=rho[NY-1]; u[NY][0]=0; u[NY][1]=0; u[0][0]=0; u[0][1]=0; f[NY][k]=feq(k,rho[NY],u[NY])+f[NY-1] [k]-feq(k,rho[NY-1],u[NY-1]); } } void output(int m)//輸出 { ostringstream name; name<<"cavity_"<< m<<".dat"; ofstream out(name.str().c_str()); out<<"Title=\"LBM Lid Driven Flow\"\n"<< "VARIABLES=\"X\",\"Y\", \"U\",\"V\",\"rhosum\",\"Psum\"\n" <<"ZONE T=\"BOX\",I="<<NX+1<<",J="<<NY+1<<",F=POINT"<<endl; for(j=0;j<=NY;j++) for(i=0;i<=NX;i++) { out<< double(i)/Lx<<","<<double(j)/Ly<<","<<u[j][0]<<","<<u[j][1]<<","<<rhosum[j]<<","<<Psum[j]<<"\n" <<endl; } } void Error() { double temp1,temp2; temp1=0; temp2=0; for(i=1;i<NX;i++) for(j=1;j<NY;j++) { temp1+=( (u[j][0]-u0[j][0])*(u[j][0]-u0[j][0]) +(u[j][1]-u0[j][1])*(u[j][1]-u0[j][1])); temp2+= (u[j][0]*u[j][0]+u[j][1]*u[j][1]); } temp1=sqrt(temp1); temp2=sqrt(temp2); error=temp1/(temp2); } |
至尊木蟲(chóng) (知名作家)
|
你是根據(jù)何雅玲書(shū)里的程序改的?沒(méi)細(xì)看,首先她程序里是不可壓模型,速度要保證小于0.3馬赫,而你的問(wèn)題是可壓流,目前最常用的可壓模型是多速模型吧 發(fā)自小木蟲(chóng)Android客戶端 |

木蟲(chóng) (小有名氣)

鐵蟲(chóng) (初入文壇)
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[碩博家園] 求調(diào)劑 有機(jī)化學(xué)考研356分 +3 | Nadiums 2026-03-25 | 4/200 |
|
|---|---|---|---|---|
|
[考研] 315求調(diào)劑 +4 | akie... 2026-03-28 | 5/250 |
|
|
[考研] 083000學(xué)碩274求調(diào)劑 +8 | Li李魚(yú) 2026-03-26 | 8/400 |
|
|
[考研] 食品工程專碩一志愿中海洋309求調(diào)劑 +4 | 小張zxy張 2026-03-26 | 8/400 |
|
|
[考研] 321求調(diào)劑 +6 | 璞玉~~ 2026-03-25 | 7/350 |
|
|
[考研] 0703化學(xué)求調(diào)劑 +9 | 奶油草莓. 2026-03-22 | 10/500 |
|
|
[考研] 286求調(diào)劑 +12 | PolarBear11 2026-03-26 | 12/600 |
|
|
[考研] 0703化學(xué)/290求調(diào)劑/本科經(jīng)歷豐富/工科也可 +9 | 丹青奶蓋 2026-03-26 | 10/500 |
|
|
[考研] 328求調(diào)劑 +7 | 嗯滴的基本都 2026-03-27 | 7/350 |
|
|
[有機(jī)交流]
高溫高壓反應(yīng)求助
10+4
|
chibby 2026-03-25 | 4/200 |
|
|
[考研] 285求調(diào)劑 +4 | AZMK 2026-03-27 | 7/350 |
|
|
[考研] 305求調(diào)劑 +5 | 哇盧卡庫(kù) 2026-03-26 | 5/250 |
|
|
[考研] 336材料求調(diào)劑 +7 | 陳瀅瑩 2026-03-26 | 9/450 |
|
|
[考研] 349求調(diào)劑 +4 | 李木子啊哈哈 2026-03-25 | 4/200 |
|
|
[考研] 【雙一流院校新能源、環(huán)境材料,材料加工與模擬招收大量調(diào)劑】 +4 | Higraduate 2026-03-22 | 8/400 |
|
|
[考研] 材料與化工304求B區(qū)調(diào)劑 +3 | 邱gl 2026-03-26 | 6/300 |
|
|
[考研] 材料與化工328分調(diào)劑 +6 | 。,。,。,。i 2026-03-23 | 6/300 |
|
|
[考研] 求調(diào)劑 +3 | 李李不服輸 2026-03-25 | 3/150 |
|
|
[考研] 284求調(diào)劑 +15 | Zhao anqi 2026-03-22 | 15/750 |
|
|
[考研] 285求調(diào)劑 +3 | AZMK 2026-03-24 | 3/150 |
|