亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mpi_d2q9.c

?? 格子Boltzmann方法 格子Boltzmann方法是為了保留格子氣自動(dòng)機(jī)方法的優(yōu)點(diǎn)
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
// mpi_D2Q9.c#include "mpi.h"#include "mpi_D2Q9.h"#include "MyArrays.h"#include <stdio.h>#include <math.h>#include <sys/times.h>#include <sys/time.h>int D=2, Q=9, Nx, Ny, n;char e[9][2], e1[9], **boundary, bounceback, filename[80]="管道流.lbm";double ***f, ***f1, **rho, **u, **v, *f0;double mu, Re, omega, dx, dt, t, c, c_s;double Lx, Ly, L0, U0, V0, Rho0, rho_max;double CPU_time(){    #ifndef CLK_TCK        #define CLK_TCK 100.0    #endif    struct tms t;    times(&t);    return (1.0*t.tms_utime + t.tms_stime)/CLK_TCK;}void ShowBdy(int nx, int ny){    int i, j;    for(j=0; j<ny; j++)    {        for(i=0; i<nx; i++)            printf("%d", boundary[i][j]);        printf("\n");    }}int MyUpper(char *str)        // 臨時(shí)使用的處理字符串函數(shù){    // 刪除str中的空格并將小寫英文字母轉(zhuǎn)換成大寫字母,并將等號(hào)轉(zhuǎn)換成'\0',返回其后面的下標(biāo)值    int i=0, j=0, k=0;    for(i=j=0; str[i]; i++)    {        if(str[i]!=' ')        {            if(str[i]>='a' && str[i]<='z')                str[j] = str[i] - 'a'+'A';            else if(str[i]=='=')            {                str[j] = '\0';                k = j + 1;            }            else                str[j] = str[i];            j++;        }    }    str[j] = '\0';    return k;}void ReadParaFile(char *filename){    int i, j;    char str[80];    FILE *fp;    if((fp=fopen(filename, "rt"))==NULL) exit(1);    mu = 1.0;    L0 = -1.0;    bounceback = 0;    while(1)    {        fgets(str, 80, fp);        i = MyUpper(str);//        if(strcmp(str, "D")==0)//            sscanf(str+i, "%d", &D);//        else if(strcmp(str, "Q")==0)//            sscanf(str+i, "%d", &Q);//        else         if(strcmp(str, "DOMAINSIZE")==0)            sscanf(str+i, "%lf,%lf", &Lx, &Ly);        else if(strcmp(str, "L0")==0)            sscanf(str+i, "%lf", &L0);        else if(strcmp(str, "BOUNCEBACK")==0)            sscanf(str+i, "%d", &bounceback);        else if(strcmp(str, "MESHSIZE")==0)            sscanf(str+i, "%d,%d", &Nx, &Ny);        else if(strcmp(str, "MU")==0)            sscanf(str+i, "%lf", &mu);        else if(strcmp(str, "RE")==0)            sscanf(str+i, "%lf", &Re);        else if(strcmp(str, "OMEGA")==0)            sscanf(str+i, "%lf", &omega);        else if(strcmp(str, "BOUNDARYDATA")==0)            break;    }    if(L0<0) L0 = Ly;    boundary=(char**)Calloc2DArray(Nx, Ny, sizeof(char));    for(j=0; j<Ny; j++)    {        for(i=0; i<Nx; i++)        // 注意循環(huán)的順序        {            fscanf(fp, "%c", str);            boundary[i][j] = str[0] - '0';            }        fgets(str, 80, fp);    }    fclose(fp);    ShowBdy(Nx, Ny);}void Finish(){    if(boundary) Free2DArray((void**)boundary);    if(f0)  Free1DArray((void*)f0);    if(u)   Free2DArray((void**)v);    if(v)   Free2DArray((void**)u);    if(rho) Free2DArray((void**)rho);    if(f1)  Free3DArray((void***)f1);    if(f)   Free3DArray((void***)f);}void InitData(int numprocs, int myid){    int i, nx, packsize, position, extra;    char packbuf[100];    MPI_Status status;    e[0][0] = 0;  e[0][1] = 0;    e[1][0] = 1;  e[1][1] = 0;    e[2][0] = 0;  e[2][1] = 1;    e[3][0] =-1;  e[3][1] = 0;    e[4][0] = 0;  e[4][1] =-1;    e[5][0] = 1;  e[5][1] = 1;    e[6][0] =-1;  e[6][1] = 1;    e[7][0] =-1;  e[7][1] =-1;    e[8][0] = 1;  e[8][1] =-1;    e1[0] = 0;    e1[1] = 3;    e1[2] = 4;    e1[3] = 1;    e1[4] = 2;    e1[5] = 7;    e1[6] = 8;    e1[7] = 5;    e1[8] = 6;    if(myid==0)    {        packsize = 0;        MPI_Pack(&Nx, 1, MPI_INT, packbuf, 100, &packsize, MPI_COMM_WORLD);        MPI_Pack(&Ny, 1, MPI_INT, packbuf, 100, &packsize, MPI_COMM_WORLD);        MPI_Pack(&bounceback, 1, MPI_CHAR, packbuf, 100, &packsize, MPI_COMM_WORLD);        MPI_Pack(&Lx, 1, MPI_DOUBLE, packbuf, 100, &packsize, MPI_COMM_WORLD);        MPI_Pack(&Ly, 1, MPI_DOUBLE, packbuf, 100, &packsize, MPI_COMM_WORLD);        MPI_Pack(&mu, 1, MPI_DOUBLE, packbuf, 100, &packsize, MPI_COMM_WORLD);        MPI_Pack(&Re, 1, MPI_DOUBLE, packbuf, 100, &packsize, MPI_COMM_WORLD);        MPI_Pack(&L0, 1, MPI_DOUBLE, packbuf, 100, &packsize, MPI_COMM_WORLD);        MPI_Pack(&omega, 1, MPI_DOUBLE, packbuf, 100, &packsize, MPI_COMM_WORLD);    }    MPI_Bcast(&packsize, 1, MPI_INT, 0, MPI_COMM_WORLD);    MPI_Bcast(packbuf, packsize, MPI_PACKED, 0, MPI_COMM_WORLD);    if(myid)    {        position = 0;        MPI_Unpack(packbuf, packsize, &position, &Nx, 1, MPI_INT, MPI_COMM_WORLD);        MPI_Unpack(packbuf, packsize, &position, &Ny, 1, MPI_INT, MPI_COMM_WORLD);        MPI_Unpack(packbuf, packsize, &position, &bounceback, 1, MPI_CHAR, MPI_COMM_WORLD);        MPI_Unpack(packbuf, packsize, &position, &Lx, 1, MPI_DOUBLE, MPI_COMM_WORLD);        MPI_Unpack(packbuf, packsize, &position, &Ly, 1, MPI_DOUBLE, MPI_COMM_WORLD);        MPI_Unpack(packbuf, packsize, &position, &mu, 1, MPI_DOUBLE, MPI_COMM_WORLD);        MPI_Unpack(packbuf, packsize, &position, &Re, 1, MPI_DOUBLE, MPI_COMM_WORLD);        MPI_Unpack(packbuf, packsize, &position, &L0, 1, MPI_DOUBLE, MPI_COMM_WORLD);        MPI_Unpack(packbuf, packsize, &position, &omega, 1, MPI_DOUBLE, MPI_COMM_WORLD);    }    nx = Nx/numprocs;    extra = (myid==0 || myid==numprocs-1) ? 1 : 2;    D = 2;    Q = 9;    if(myid==0)    {        for(i=1; i<numprocs-1; i++)            MPI_Send(boundary[i*nx-1], (nx+2)*Ny, MPI_CHAR, i, 100*i, MPI_COMM_WORLD);        MPI_Send(boundary[i*nx-1], (nx+1)*Ny, MPI_CHAR, i, 100*i, MPI_COMM_WORLD);        rho = (double **)Calloc2DArray(Nx, Ny, sizeof(double));        u   = (double **)Calloc2DArray(Nx, Ny, sizeof(double));        v   = (double **)Calloc2DArray(Nx, Ny, sizeof(double));    }    else    {        boundary=(char**)Calloc2DArray(nx+extra, Ny, sizeof(char));        MPI_Recv(boundary[0], (nx+extra)*Ny, MPI_CHAR, 0, 100*myid, MPI_COMM_WORLD, &status);        rho = (double **)Calloc2DArray(nx+extra, Ny, sizeof(double));        u   = (double **)Calloc2DArray(nx+extra, Ny, sizeof(double));        v   = (double **)Calloc2DArray(nx+extra, Ny, sizeof(double));    }    f   = (double***)Calloc3DArray(nx+extra, Ny, Q, sizeof(double));    f1  = (double***)Calloc3DArray(nx+extra, Ny, Q, sizeof(double));    f0  = (double  *)Calloc1DArray(Q, sizeof(double));    dx = Lx/Nx;    dt = (2/omega-1)*dx*dx/(6*mu);    c = dx/dt;    c_s = c/sqrt(3);    U0 = mu*Re/L0;    V0 = 0;    Rho0 = 1;    t = 0;    n = 0;    init_macro(numprocs, myid);    init_micro(numprocs, myid);}void init_macro(int numprocs, int myid){    int i, j, nx;    if(myid==0 || myid==numprocs-1)        nx = Nx/numprocs + 1;    else        nx = Nx/numprocs + 2;    for(i=0; i<nx; i++)    {        for(j=0; j<Ny; j++)        {            if(boundary[i][j]==1)    // 流場(chǎng)流體入口處            {                u[i][j] = U0;                v[i][j] = V0;            }            else                    // 其它                u[i][j] = v[i][j] = 0;            rho[i][j] = Rho0;        }    }}void init_micro(int numprocs, int myid){    int i, j, nx;    if(myid==0 || myid==numprocs-1)        nx = Nx/numprocs + 1;    else        nx = Nx/numprocs + 2;    for(i=0; i<nx; i++)        for(j=0; j<Ny; j++)            feq(u[i][j], v[i][j], rho[i][j], f[i][j]);}void CollectData(int numprocs, int myid){    int i, nx;    MPI_Status status;    nx = Nx/numprocs;    if(myid==0)    {        for(i=1; i<numprocs; i++)        {            MPI_Recv(u[i*nx], nx*Ny, MPI_DOUBLE, i, 1000*i, MPI_COMM_WORLD, &status);            MPI_Recv(v[i*nx], nx*Ny, MPI_DOUBLE, i, 1000*i, MPI_COMM_WORLD, &status);            MPI_Recv(rho[i*nx], nx*Ny, MPI_DOUBLE, i, 1000*i, MPI_COMM_WORLD, &status);        }    }    else    {        MPI_Send(u[1], nx*Ny, MPI_DOUBLE, 0, 1000*myid, MPI_COMM_WORLD);        MPI_Send(v[1], nx*Ny, MPI_DOUBLE, 0, 1000*myid, MPI_COMM_WORLD);        MPI_Send(rho[1], nx*Ny, MPI_DOUBLE, 0, 1000*myid, MPI_COMM_WORLD);    }}void feq(double u, double v, double rho, double *f0){/*    double u2, eu, eu2;    int k;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2021久久国产精品不只是精品| 丁香激情综合国产| 最新热久久免费视频| 国产日韩欧美在线一区| 久久久久久久久伊人| 久久在线观看免费| 久久久www成人免费无遮挡大片 | 丰满岳乱妇一区二区三区| 久久国产欧美日韩精品| 九九视频精品免费| 黄色精品一二区| 国产精品99精品久久免费| 粉嫩蜜臀av国产精品网站| 不卡一区二区中文字幕| 91传媒视频在线播放| 欧美日韩大陆一区二区| 精品精品国产高清一毛片一天堂| 久久人人97超碰com| 亚洲香蕉伊在人在线观| 亚洲综合无码一区二区| 青青草原综合久久大伊人精品优势| 另类小说图片综合网| 国产激情精品久久久第一区二区 | 成人av一区二区三区| 色婷婷av一区二区三区大白胸| 欧美性做爰猛烈叫床潮| 91精品国产日韩91久久久久久| 久久亚洲私人国产精品va媚药| 中文字幕亚洲区| 石原莉奈一区二区三区在线观看| 日产欧产美韩系列久久99| 国产成人av一区二区| 欧美性猛交一区二区三区精品| 精品日韩一区二区| 亚洲婷婷综合色高清在线| 男男视频亚洲欧美| 9久草视频在线视频精品| 欧美二区三区的天堂| 国产欧美一区二区三区鸳鸯浴 | 日本一区二区在线不卡| 亚洲天堂av一区| 久久av资源网| 91久久精品网| 国产农村妇女毛片精品久久麻豆| 亚洲地区一二三色| av电影在线观看一区| 欧美另类videos死尸| 国产精品美女久久久久aⅴ| 日韩精品久久理论片| 99久久久久久| 欧美变态tickling挠脚心| 亚洲色图在线看| 国产精品一二三区| 精品免费一区二区三区| 亚洲国产精品视频| 99久久99久久久精品齐齐| 2024国产精品| 欧美aⅴ一区二区三区视频| 97精品电影院| 国产精品成人免费精品自在线观看| 久久不见久久见免费视频7| 欧美色老头old∨ideo| 亚洲欧美怡红院| 豆国产96在线|亚洲| 欧美tk丨vk视频| 麻豆免费精品视频| 91精品国产美女浴室洗澡无遮挡| 一区二区三区欧美激情| 91麻豆蜜桃一区二区三区| 国产欧美va欧美不卡在线| 国产一区二区三区免费看| 日韩精品中文字幕在线不卡尤物 | 国产精品自在在线| 日韩欧美自拍偷拍| 麻豆久久久久久| 日韩精品一区二区在线| 蜜臀av一区二区在线观看| 91精品国产91综合久久蜜臀| 亚洲第一成人在线| 欧美精品成人一区二区三区四区| 亚洲v中文字幕| 欧美一区二区在线看| 日本免费新一区视频| 欧美一区二区三区视频在线| 国产日韩av一区| 日本一区二区三区在线不卡| 日本亚洲天堂网| 欧美精品精品一区| 奇米一区二区三区av| 欧美r级电影在线观看| 麻豆精品视频在线观看视频| 亚洲精品一区二区三区影院| 国产最新精品免费| 国产精品国产三级国产aⅴ入口 | av网站一区二区三区| 亚洲欧美日韩中文播放| 欧美优质美女网站| 日韩av高清在线观看| 久久精品人人做人人综合| 国产.欧美.日韩| 欧美日韩五月天| 丝袜美腿成人在线| 精品处破学生在线二十三| 粉嫩av亚洲一区二区图片| 一区二区三区不卡在线观看| 91精品国产色综合久久| 成人污视频在线观看| 亚洲精品国久久99热| 91精品在线一区二区| 国产成人高清在线| 亚洲一区二区欧美日韩 | 麻豆免费看一区二区三区| 国产欧美日韩不卡| 欧美日韩免费观看一区三区| 紧缚捆绑精品一区二区| 中文字幕亚洲不卡| 91精品欧美久久久久久动漫 | 日韩电影一二三区| 亚洲国产精品黑人久久久| 欧美精品18+| 成人av电影免费观看| 男男视频亚洲欧美| 亚洲老妇xxxxxx| 久久精品亚洲精品国产欧美kt∨ | 日精品一区二区三区| 国产精品久久久久久久蜜臀| 日韩网站在线看片你懂的| 中文字幕一区二区三区不卡在线 | 日本视频一区二区| 国产精品色眯眯| 欧美成人精品二区三区99精品| 91免费看视频| 国产成人aaa| 激情综合色综合久久| 亚洲成人在线免费| 亚洲精选视频免费看| 日本一区二区视频在线观看| 日韩三级在线免费观看| 欧美日韩一级片在线观看| 成人福利电影精品一区二区在线观看| 男女激情视频一区| 亚洲成人在线网站| 樱桃视频在线观看一区| 亚洲欧美日韩久久| 一区二区三区av电影| 久久精品这里都是精品| 欧美精品一区二区在线观看| 91激情五月电影| jvid福利写真一区二区三区| 精品在线播放免费| 蜜桃av噜噜一区| 老司机精品视频一区二区三区| 亚洲综合激情另类小说区| 亚洲另类一区二区| 一区二区三区鲁丝不卡| 亚洲另类色综合网站| 亚洲综合成人在线| 亚洲精品五月天| 亚洲宅男天堂在线观看无病毒| 亚洲精品一二三| 一级精品视频在线观看宜春院| 亚洲精品伦理在线| 亚洲一区免费在线观看| 同产精品九九九| 蜜臀av亚洲一区中文字幕| 极品销魂美女一区二区三区| 国产在线观看免费一区| 国产激情视频一区二区三区欧美| 国产精品123| 色综合天天综合给合国产| 在线一区二区三区四区| 欧美久久免费观看| 欧美精品一区二区久久久| 国产三级三级三级精品8ⅰ区| 国产精品视频一区二区三区不卡| 中文字幕视频一区| 丝袜国产日韩另类美女| 国产精品一区二区三区乱码| 波多野结衣亚洲| 欧美精品一二三| 久久精品亚洲麻豆av一区二区| 《视频一区视频二区| 男女性色大片免费观看一区二区| 国产精品一区二区在线看| 在线观看日韩av先锋影音电影院| 日韩一区二区高清| 中文字幕一区二区三区蜜月| 日韩黄色片在线观看| 春色校园综合激情亚洲| 欧美裸体一区二区三区| 中文字幕欧美激情一区| 天堂在线一区二区| 粉嫩嫩av羞羞动漫久久久| 欧美老人xxxx18| 国产精品美女久久久久久| 秋霞成人午夜伦在线观看| 91在线高清观看| 精品久久久久久久久久久久久久久 | 韩国精品久久久| 91福利社在线观看|