資源簡介
一個(gè) simple 算法的cfd代碼,用C寫成,代碼較為簡單,但對(duì)理解cfd代碼寫法有幫助,是一個(gè)2d不可壓縮工況
代碼片段和文件信息
/*?code?for?不可壓縮,simple算法*/
#include?
#define?UE?1
#define?midu?0.002377
#define?miu?3.737e-7
#define?dx?0.025
#define?dy?0.001
#define?dt?0.001
#define?songchi?0.1
#include
?void?main()
{
???int?ijkstepssteps_sum;
???float?p[22][12]={0}u[23][12]={0}v[24][13]={0};?//編號(hào)并初始化流場(chǎng)
???float?_p[22][12]={0}d[22][12]={0};
???float?liuliang_u[23][12]={0}liuliang_v[24][13]={0};
???float?ABabcv_1v_2u_1u_2;
???
????for(i=1;i<=22;i++)
??????????u[i][11]=UE;
??????????v[15][5]=0;?//給流場(chǎng)一個(gè)擾動(dòng)(當(dāng)賦給流場(chǎng)一個(gè)擾動(dòng)時(shí),比如0.5,無法收斂,百思不得其解)
??????????
????for(i=1;i<=22;i++)
????????liuliang_u[i][11]=midu*UE;
????????liuliang_v[15][5]=midu*v[15][5];
????????printf(“初始化流場(chǎng)u:\n“);
????????
????for(j=1;j<=11;j++)
??????{
???????for(i=1;i<=22;i++)
??????????printf(“%.3f\t“u[i][j]);
???????????printf(“\n“);
??????}
????printf(“初始化流場(chǎng)v:\n“);
????
????for(j=1;j<=12;j++)
??????{
???????for(i=1;i<=23;i++)
??????????printf(“%.3f\t“v[i][j]);
??????????printf(“\n“);
??????}
????
???????printf(“輸入時(shí)間步數(shù):\n“);?
???????scanf(“%d“&steps_sum);
????
????for(steps=1;steps<=steps_sum;steps++)
???????{
??????? for(i=2;i<=21;i++)?//求流量
?????????for(j=2;j<=10;j++)
???????????{
??????????? v_1=0.5*(v[i][j+1]+v[i+1][j+1]);
????????????v_2=0.5*(v[i][j]+v[i+1][j]);
????????????A=-((midu*u[i+1][j]*u[i+1][j]-midu*u[i-1][j]*u[i-1][j])/(2*dx)+(midu*u[i][j+1]*v_1-midu*u[i][j-1]*v_2)/(2*dy))+miu*((u[i+1][j]-2*u[i][j]+u[i-1][j])/(dx*dx)+(u[i][j+1]-2*u[i][j]+u[i][j-1])/(dy*dy));
????????????liuliang_u[i][j]=midu*u[i][j]+A*dt-(dt/dx)*(p[i][j]-p[i-1][j]);
???????????}
????????for(i=2;i<=22;i++)?//求流量
???????????for(j=2;j<=11;j++)
?????????????{
????????????? u_1=0.5*(u[i][j-1]+u[i][j]);
??????????????u_2=0.5*(u[i-1][j-1]+u[i-1][j]);
??????????????B=-((midu*v[i+1][j]*u_1-midu*v[i-1][j]*u_2)/(2*dx)+(midu*v[i][j+1]*v[i][j+1]-midu*v[i][j-1]*v[i][j-1])/(2*dy))+miu*((v[i+1][j]-2*v[i][j]+v[i-1][j])/(dx*dx)+(v[i][j+1]-2*v[i][j]+v[i][j-1])/(dy*dy));
??????????????liuliang_v[i][j]=mid
評(píng)論
共有 條評(píng)論