⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpi_lbm.c

📁 格子Boltzmann方法 格子Boltzmann方法是为了保留格子气自动机方法的优点
💻 C
字号:
/********************************************************** *  mpi_lbm.c                                             * *  mpicc -o mpi_lbm mpi_lbm.c mpi_D2Q9.c MyArrays.c -lm  *     **********************************************************/#include "mpi.h"#include <stdio.h>#include "mpi_D2Q9.h"int main(int argc, char *argv[]){    double wtime, ctime, wtime_max, ctime_sum;    int namelen, myid, numprocs, i;    char processor_name[MPI_MAX_PROCESSOR_NAME];// STEP 1 (MPI Initialization)    MPI_Init(&argc, &argv);    MPI_Comm_size(MPI_COMM_WORLD, &numprocs);    MPI_Comm_rank(MPI_COMM_WORLD, &myid);    MPI_Get_processor_name(processor_name, &namelen);// STEP 2 (Data distribution --- periodic)    if(myid == 0)    {        if(argc>1) ReadParaFile(argv[1]);        else       ReadParaFile("bdy.lbm");    }    InitData(numprocs, myid);// STEP 3 (Parallel dowork)    MPI_Barrier(MPI_COMM_WORLD);    ctime = CPU_time();    wtime = MPI_Wtime();    for(i=0; i<5000; i++)        evolution(numprocs, myid);// STEP 4 (Collect the results)    ctime = CPU_time() - ctime;    wtime = MPI_Wtime() - wtime;    printf("Process %d of %d on %s, tc=%f, tw=%f\n",            myid, numprocs, processor_name, ctime, wtime);    fflush(stdout);    CollectData(numprocs, myid);    if(myid==0)        SaveFile();// STEP 5 (Display the results)    MPI_Reduce(&ctime, &ctime_sum, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);    MPI_Reduce(&wtime, &wtime_max, 1, MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD);    if(myid==0)    {        printf("Sum_CPU_time = %f, Max_WALL_time = %f\n", ctime_sum, wtime_max);        printf("Sum_CPU_time/Max_WALL_time = %f\n", ctime_sum/wtime_max);    }// STEP 6 (Terminates MPI execution environment)    Finish();    MPI_Finalize();    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -