| 5 | 1/1 | 返回列表 |
| 查看: 1124 | 回復(fù): 5 | ||
| 當(dāng)前只顯示滿足指定條件的回帖,點(diǎn)擊這里查看本話題的所有回帖 | ||
花開時(shí)節(jié)0931鐵蟲 (初入文壇)
|
[求助]
求助格子boltzmann方法模擬平板間氣體流動(dòng) 已有1人參與
|
|
|
空氣以聲速從平板間進(jìn)入,平板厚度10微米,想采用格子boltzmann模擬氣體流動(dòng),沒學(xué)過C語言,邊學(xué)邊改。問題還是很大,畢業(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); } |
鐵蟲 (初入文壇)
至尊木蟲 (知名作家)
|
你是根據(jù)何雅玲書里的程序改的?沒細(xì)看,首先她程序里是不可壓模型,速度要保證小于0.3馬赫,而你的問題是可壓流,目前最常用的可壓模型是多速模型吧 發(fā)自小木蟲Android客戶端 |

木蟲 (小有名氣)

| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 332求調(diào)劑 +7 | 蕉蕉123 2026-03-28 | 7/350 |
|
|---|---|---|---|---|
|
[考研] 085600 材料與化工 329分求調(diào)劑 +11 | Mr. Z 2026-03-25 | 11/550 |
|
|
[考研] 求收留 +3 | 1943443204 2026-03-28 | 3/150 |
|
|
[考研] 一志愿鄭州大學(xué),080500學(xué)碩,總分317分求調(diào)劑 +5 | 舉個(gè)栗子oi 2026-03-24 | 6/300 |
|
|
[考研] 083000學(xué)碩274求調(diào)劑 +8 | Li李魚 2026-03-26 | 8/400 |
|
|
[考研] 347求調(diào)劑 +3 | 山頂見α 2026-03-25 | 3/150 |
|
|
[考研] 材料277求調(diào)劑 +7 | min3 2026-03-24 | 7/350 |
|
|
[考研] 考研化學(xué)308分求調(diào)劑 +10 | 你好明天你好 2026-03-23 | 12/600 |
|
|
[考研] 312求調(diào)劑 +9 | 上岸吧ZJY 2026-03-22 | 13/650 |
|
|
[考研] 286求調(diào)劑 +4 | lim0922 2026-03-26 | 4/200 |
|
|
[考研] 求調(diào)劑 +6 | 林之夕 2026-03-24 | 6/300 |
|
|
[考研] 325求調(diào)劑 +5 | 李嘉圖·S·路 2026-03-23 | 5/250 |
|
|
[考研] 081200-11408-276學(xué)碩求調(diào)劑 +3 | 崔wj 2026-03-26 | 3/150 |
|
|
[考研] 中國科學(xué)院深圳先進(jìn)技術(shù)研究院-光纖傳感課題組招生-中國科學(xué)院大學(xué)、深圳理工大學(xué)聯(lián)培 +5 | YangTyu1 2026-03-26 | 5/250 |
|
|
[考研]
|
平樂樂樂 2026-03-26 | 4/200 |
|
|
[考研] 環(huán)境專碩324分求調(diào)劑推薦 +5 | 軒小寧—— 2026-03-26 | 5/250 |
|
|
[考研] 化學(xué)調(diào)劑一志愿上海交通大學(xué)336分-本科上海211 +4 | 小魚愛有機(jī) 2026-03-25 | 4/200 |
|
|
[考研] 打過很多競賽,085406控制工程300分,求調(diào)劑 +3 | askeladz 2026-03-26 | 3/150 |
|
|
[有機(jī)交流]
20+3
|
FENGSHUJEI 2026-03-23 | 5/250 |
|
|
[考研] 269求調(diào)劑 +4 | 我想讀研11 2026-03-23 | 4/200 |
|