Znn3bq.jpeg
²é¿´: 1128  |  »Ø¸´: 5

»¨¿ªÊ±½Ú0931

Ìú³æ (³õÈëÎÄ̳)

[ÇóÖú] ÇóÖú¸ñ×Óboltzmann·½·¨Ä£ÄâÆ½°å¼äÆøÌåÁ÷¶¯ ÒÑÓÐ1È˲ÎÓë

¿ÕÆøÒÔÉùËÙ´ÓÆ½°å¼ä½øÈ룬ƽ°åºñ¶È10΢Ã×£¬Ïë²ÉÓøñ×ÓboltzmannÄ£ÄâÆøÌåÁ÷¶¯£¬Ã»Ñ§¹ýCÓïÑÔ£¬±ßѧ±ß¸Ä¡£ÎÊÌ⻹ÊǺܴ󣬱ÏÒµÂÛÎÄ׿±£¬ÇóÖ¸µ¼¡£²»Ê¤¸Ð¼¤¡£
#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])//¼ÆËãÆ½ºâ̬·Ö²¼º¯Êý
{
     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++)//¼ÆËãºê¹ÛÁ¿
  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);
}
»Ø¸´´ËÂ¥
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

ÀÏ´ó¶ÁÊé

Í­³æ (ÕýʽдÊÖ)

2Â¥2015-11-24 23:28:52
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

¶À¹Â694

ÖÁ×ðľ³æ (ÖªÃû×÷¼Ò)

¡¾´ð°¸¡¿Ó¦Öú»ØÌû

¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
ÄãÊǸù¾ÝºÎÑÅÁáÊéÀïµÄ³ÌÐò¸ÄµÄ£¿Ã»Ï¸¿´£¬Ê×ÏÈËý³ÌÐòÀïÊDz»¿ÉѹģÐÍ£¬ËÙ¶ÈÒª±£Ö¤Ð¡ÓÚ0.3ÂíºÕ£¬¶øÄãµÄÎÊÌâÊÇ¿ÉѹÁ÷£¬Ä¿Ç°×î³£ÓõĿÉѹģÐÍÊǶàËÙÄ£ÐͰÉ

·¢×ÔСľ³æAndroid¿Í»§¶Ë
È˾͵ñÆ×Ô¼ºÒ»°Ñ
3Â¥2015-11-24 23:39:03
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

¹Â¶ÀµÄÂþ²½

ľ³æ (СÓÐÃûÆø)

ΪɶÀïÃæ³ÌÐòµÄ¡® ¡¯¶¼Ã»ÁË¡£¡£¡£
Äã±ØÐë·Ç³£Å¬Á¦£¬²ÅÄÜ¿´ÆðÀ´ºÁ²»·ÑÁ¦
4Â¥2015-11-29 19:43:42
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

»¨¿ªÊ±½Ú0931

Ìú³æ (³õÈëÎÄ̳)

ÒýÓûØÌû:
2Â¥: Originally posted by ÀÏ´ó¶ÁÊé at 2015-11-24 23:28:52
ÓÐʲôÎÊÌâ

ÏëÇëÎÊÏÂÓÐûÓÐѹÁ¦Çý¶¯µÄ³ÌÐò²Î¿¼£¬ÏÖÔÚÖ»»áËÙ¶ÈÇý¶¯
5Â¥2015-12-29 10:43:57
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

»¨¿ªÊ±½Ú0931

Ìú³æ (³õÈëÎÄ̳)

ÒýÓûØÌû:
3Â¥: Originally posted by ¶À¹Â694 at 2015-11-24 23:39:03
ÄãÊǸù¾ÝºÎÑÅÁáÊéÀïµÄ³ÌÐò¸ÄµÄ£¿Ã»Ï¸¿´£¬Ê×ÏÈËý³ÌÐòÀïÊDz»¿ÉѹģÐÍ£¬ËÙ¶ÈÒª±£Ö¤Ð¡ÓÚ0.3ÂíºÕ£¬¶øÄãµÄÎÊÌâÊÇ¿ÉѹÁ÷£¬Ä¿Ç°×î³£ÓõĿÉѹģÐÍÊǶàËÙÄ£ÐͰÉ

ÊÇµÄ Ð¡°× Ïë×öѹÁ¦Çý¶¯ µ«ÊÇÖ»ÖªµÀ±ß½çÉÏ¸Ä ³õʼÉèÖò»ÖªµÀÔõôÉèÖà ÇëÎÊÓÐûÓÐÏë¹ýѹÁ¦Çý¶¯³ÌÐò²Î¿¼ÏÂ
6Â¥2015-12-29 10:45:44
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ »¨¿ªÊ±½Ú0931 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 293Çóµ÷¼Á +10 ÎÒ°®¸ßÊý¸ßÊý°®Î 2026-04-12 10/500 2026-04-12 11:15 by Ò»ÇÐOK
[¿¼ÑÐ] µçÆø×¨Ë¶320Çóµ÷¼Á +6 СÂé×Ó111 2026-04-10 6/300 2026-04-12 10:54 by lemon6009
[¿¼ÑÐ] 0854µ÷¼Á +8 ³¤¹­°Á 2026-04-11 9/450 2026-04-11 21:44 by À¶ÔÆË¼Óê
[¿¼ÑÐ] 295Çóµ÷¼Á +6 ?ÒªÉϰ¶? 2026-04-05 7/350 2026-04-11 19:02 by laoshidan
[¿¼ÑÐ] »¯¹¤Çóµ÷¼Á£¡ +35 RichLi_ 2026-04-06 35/1750 2026-04-11 11:02 by zhq0425
[¿¼ÑÐ] ÉúÎïѧµ÷¼Á +8 СȽҪŬÁ¦ 2026-04-10 9/450 2026-04-11 10:22 by wwj2530616
[¿¼ÑÐ] 275Çóµ÷¼Á +9 1624447980 2026-04-08 10/500 2026-04-11 10:20 by Delta2012
[¿¼ÑÐ] 0854µ÷¼Á +4 ³¤¹­°Á 2026-04-09 4/200 2026-04-11 09:18 by Öí»á·É
[¿¼ÑÐ] 263ÄÜÔ´¶¯Á¦×¨Ë¶Çóµ÷¼Á +4 ¼Ó´óºÅ·¹ºÐ´ü 2026-04-10 4/200 2026-04-10 20:52 by gong120082
[¿¼ÑÐ] Ò»Ö¾Ô¸¾©Çø985£¬085401µç×ÓÐÅÏ¢£¬±¾¿Æµç×ÓÐÅÏ¢ +3 Ñô¹â¿ªÀʵÄÄк¢ 2026-04-10 3/150 2026-04-10 16:29 by sophia_93
[¿¼ÑÐ] 301Çóµ÷¼Á +5 149. 2026-04-10 5/250 2026-04-10 15:45 by ²ñС°×
[¿¼ÑÐ] 336²ÄÁÏÓ뻯¹¤085600Çóµ÷¼Á +21 Ë®ÐǼÇinfp 2026-04-05 24/1200 2026-04-10 15:28 by luoyongfeng
[¿¼ÑÐ] Ò»Ö¾Ô¸»¦9£¬326ÉúÎïѧÇóÏà¹Ø×¨Òµµ÷¼Á +4 Áõīī 2026-04-09 4/200 2026-04-10 12:07 by pengliang8036
[¿¼ÑÐ] ²ÄÁÏ»¯¹¤×Ü·Ö334Çóµ÷¼Á +16 Riot2025 2026-04-08 17/850 2026-04-09 20:19 by maddjdld
[ÂÛÎÄͶ¸å] ÇóÖúÎÄÏ×Ô­ÎÄ 10+3 18500821399 2026-04-08 3/150 2026-04-09 16:56 by ±±¾©À³ÒðÈóÉ«
[¿¼ÑÐ] »¯Ñ§¹¤³ÌÓë¼¼Êõרҵһ־Ը¹þ¹¤³Ì 291·ÖBÇø ¹ú¼Ò¼¶´ó´´¸ºÔðÈË ÓÐÒ»×÷ÂÛÎÄ +13 Emmy~ 2026-04-09 13/650 2026-04-09 14:47 by onlyÖÜ
[¿¼ÑÐ] ÉúÎïѧ308·ÖÇóµ÷¼Á£¨Ò»Ö¾Ô¸»ª¶«Ê¦´ó£© +13 ÏàÐűػá¹ââÍòÕ 2026-04-06 16/800 2026-04-09 13:54 by ÐìÁ¼°×ü´óÏÀ
[¿¼ÑÐ] 270Çóµ÷¼Á +3 031127 2026-04-06 4/200 2026-04-08 21:00 by ÄæË®³Ë·ç
[¿¼ÑÐ] 071000ÉúÎïѧ£¬Ò»Ö¾Ô¸ÉîÛÚ´óѧ296·Ö£¬Çóµ÷¼Á +12 TIckLw 2026-04-06 13/650 2026-04-07 20:34 by lijunpoly
[¿¼ÑÐ] 362Çóµ÷¼ÁÒ»Ö¾Ô¸ÖйúʯÓÍ´óѧ +4 ÎÒÒª¿¼´ó 2026-04-06 6/300 2026-04-06 14:11 by Î޼ʵIJÝÔ­
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û