//************************************************************************* // Lattice Boltzmann Simulator for Single Phase Flow in Porous Media // James E. McCLure //************************************************************************* #include #include #include #include "common/ScaLBL.h" #include "common/MPI.h" #include "models/MRTModel.h" void ParallelPlates(ScaLBL_MRTModel &MRT){ // initialize empty domain int i,j,k,n; int Nx = MRT.Nx; int Ny = MRT.Ny; int Nz = MRT.Nz; Array id_solid(Nx,Ny,Nz); for (k=0;kid[n] = 0; else if (i>Nx-3) MRT.Mask->id[n] = 0; else MRT.Mask->id[n]=1; if (MRT.Mask->id[n] == 0) id_solid(i,j,k) = 1; else id_solid(i,j,k) = 0; } } } // Initialize the signed distance function for (int k=0;kid[n]); n = MRT.Map(i,j,k); //printf("%i,%i,%i; %i :",i,j,k,n); if (n<0) {vz =0.f; printf(" b "); } else { vz=Vz[n+2*MRT.Np]; printf(" a "); } printf("%f ",vz); //Analytical solution double x=1.f*i-1.5; if (n<0) vz=0.f; else vz=Fz*x*(W-x)/(2.f*mu); printf("%f\n",vz); } printf("\n"); } if (rank == 1) { for (i=0;iid[n]); n = MRT.Map(i,j,k); //printf("%i,%i,%i; %i :",i,j,k,n); if (n<0) {vz =0.f; printf(" b "); } else { vz=Vz[n+2*MRT.Np]; printf(" a "); } printf("%f ",vz); //Analytical solution double x=1.f*i-1.5; if (n<0) vz=0.f; else vz=Fz*x*(W-x)/(2.f*mu); printf("%f\n",vz); } printf("\n"); } } Utilities::shutdown(); return check; }