Removed the number of sweeps S from cpu code

This commit is contained in:
James McClure
2014-03-11 15:55:39 -04:00
parent e27014c1bf
commit 69d1e45c4f
5 changed files with 46 additions and 60 deletions

View File

@@ -1,6 +1,6 @@
#include <math.h>
extern "C" void dvc_InitDenColor(char *ID, double *Den, double *Phi, double das, double dbs, int Nx, int Ny, int Nz, int S)
extern "C" void dvc_InitDenColor(char *ID, double *Den, double *Phi, double das, double dbs, int Nx, int Ny, int Nz)
{
int i,j,k,n,N;
@@ -35,7 +35,7 @@ extern "C" void dvc_InitDenColor(char *ID, double *Den, double *Phi, double das,
}
}
extern "C" void dvc_InitDenColorDistancePacked(char *ID, double *Den, double *Phi, double *Distance,
double das, double dbs, double beta, double xp, int Nx, int Ny, int Nz, int S)
double das, double dbs, double beta, double xp, int Nx, int Ny, int Nz)
{
int i,j,k,n,N;
double d;
@@ -79,7 +79,7 @@ extern "C" void dvc_InitDenColorDistancePacked(char *ID, double *Den, double *Ph
}
extern "C" void dvc_InitDenColorDistance(char *ID, double *Den, double *Phi, double *Distance,
double das, double dbs, double beta, double xp, int Nx, int Ny, int Nz, int S)
double das, double dbs, double beta, double xp, int Nx, int Ny, int Nz)
{
int i,j,k,n,N;
double d;
@@ -163,7 +163,7 @@ extern "C" void dvc_Compute_VELOCITY(char *ID, double *disteven, double *distodd
}
extern "C" void dvc_ComputePressureD3Q19(char *ID, double *disteven, double *distodd, double *Pressure,
int Nx, int Ny, int Nz, int S)
int Nx, int Ny, int Nz)
{
int n,N;
// distributions
@@ -208,7 +208,7 @@ extern "C" void dvc_ComputePressureD3Q19(char *ID, double *disteven, double *dis
//*************************************************************************
extern "C" void dvc_ColorBC_inlet(double *Phi, double *Den, double *A_even, double *A_odd,
double *B_even, double *B_odd, int Nx, int Ny, int Nz, int S)
double *B_even, double *B_odd, int Nx, int Ny, int Nz)
{
int i,j,k,n,N;
N = Nx*Ny*Nz;
@@ -251,7 +251,7 @@ extern "C" void dvc_ColorBC_inlet(double *Phi, double *Den, double *A_even, doub
}
//*************************************************************************
extern "C" void dvc_ColorBC_outlet(double *Phi, double *Den, double *A_even, double *A_odd,
double *B_even, double *B_odd, int Nx, int Ny, int Nz, int S)
double *B_even, double *B_odd, int Nx, int Ny, int Nz)
{
int i,j,k,n,N;
N = Nx*Ny*Nz;
@@ -295,7 +295,7 @@ extern "C" void dvc_ColorBC_outlet(double *Phi, double *Den, double *A_even, dou
}
//*************************************************************************
extern "C" void dvc_PressureBC_inlet(double *disteven, double *distodd, double din,
int Nx, int Ny, int Nz, int S)
int Nx, int Ny, int Nz)
{
int n,N;
// distributions
@@ -364,7 +364,7 @@ extern "C" void dvc_PressureBC_inlet(double *disteven, double *distodd, double d
}
extern "C" void dvc_PressureBC_outlet(double *disteven, double *distodd, double dout,
int Nx, int Ny, int Nz, int S, int outlet)
int Nx, int Ny, int Nz, int outlet)
{
int n,N;
// distributions
@@ -430,7 +430,7 @@ extern "C" void dvc_PressureBC_outlet(double *disteven, double *distodd, double
}
}
//*************************************************************************
extern "C" void dvc_ComputeColorGradient(char *ID, double *phi, double *ColorGrad, int Nx, int Ny, int Nz, int S)
extern "C" void dvc_ComputeColorGradient(char *ID, double *phi, double *ColorGrad, int Nx, int Ny, int Nz)
{
int n,N,i,j,k,nn;
// distributions
@@ -558,7 +558,7 @@ extern "C" void dvc_ComputeColorGradient(char *ID, double *phi, double *ColorGra
}
//*************************************************************************
extern "C" void dvc_ColorCollide( char *ID, double *disteven, double *distodd, double *ColorGrad,
double *Velocity, int Nx, int Ny, int Nz, int S,double rlx_setA, double rlx_setB,
double *Velocity, int Nx, int Ny, int Nz, double rlx_setA, double rlx_setB,
double alpha, double beta, double Fx, double Fy, double Fz, bool pBC)
{
@@ -773,7 +773,7 @@ extern "C" void dvc_ColorCollide( char *ID, double *disteven, double *distodd, d
}
extern "C" void dvc_ColorCollideOpt( char *ID, double *disteven, double *distodd, double *phi, double *ColorGrad,
double *Velocity, int Nx, int Ny, int Nz, int S,double rlx_setA, double rlx_setB,
double *Velocity, int Nx, int Ny, int Nz, double rlx_setA, double rlx_setB,
double alpha, double beta, double Fx, double Fy, double Fz)
{
@@ -1174,7 +1174,7 @@ extern "C" void dvc_ColorCollideOpt( char *ID, double *disteven, double *distodd
}
extern "C" void dvc_MassColorCollideD3Q7(char *ID, double *A_even, double *A_odd, double *B_even, double *B_odd,
double *Den, double *Phi, double *ColorGrad, double *Velocity, double beta, int N, bool pBC, int S)
double *Den, double *Phi, double *ColorGrad, double *Velocity, double beta, int N, bool pBC)
{
char id;
@@ -1455,7 +1455,7 @@ extern "C" void dvc_ComputePhi(char *ID, double *Phi, double *Copy, double *Den,
//...................................................................
}
*/
extern "C" void dvc_ComputePhi(char *ID, double *Phi, double *Den, int N, int S)
extern "C" void dvc_ComputePhi(char *ID, double *Phi, double *Den, int N)
{
int n;
double Na,Nb;

View File

@@ -2,5 +2,5 @@ extern "C" void dvc_PackDist(int q, int *list, int start, int count, double *sen
extern "C" void dvc_UnpackDist(int q, int Cqx, int Cqy, int Cqz, int *list, int start, int count,
double *recvbuf, double *dist, int Nx, int Ny, int Nz);
//*************************************************************************
extern "C" void dvc_InitD3Q19(char *ID, double *f_even, double *f_odd, int Nx, int Ny, int Nz, int S);
extern "C" void dvc_SwapD3Q19(char *ID, double *disteven, double *distodd, int Nx, int Ny, int Nz, int S);
extern "C" void dvc_InitD3Q19(char *ID, double *f_even, double *f_odd, int Nx, int Ny, int Nz);
extern "C" void dvc_SwapD3Q19(char *ID, double *disteven, double *distodd, int Nx, int Ny, int Nz);

View File

@@ -52,7 +52,7 @@ extern "C" void dvc_UnpackDenD3Q7(int *list, int count, double *recvbuf, int nu
}
}
extern "C" void dvc_InitD3Q7(char *ID, double *f_even, double *f_odd, double *Den, int Nx, int Ny, int Nz, int S)
extern "C" void dvc_InitD3Q7(char *ID, double *f_even, double *f_odd, double *Den, int Nx, int Ny, int Nz)
{
int n,N;
N = Nx*Ny*Nz;
@@ -81,7 +81,7 @@ extern "C" void dvc_InitD3Q7(char *ID, double *f_even, double *f_odd, double *De
}
//*************************************************************************
extern "C" void dvc_SwapD3Q7(char *ID, double *disteven, double *distodd, int Nx, int Ny, int Nz, int S)
extern "C" void dvc_SwapD3Q7(char *ID, double *disteven, double *distodd, int Nx, int Ny, int Nz)
{
int i,j,k,n,nn,N;
// distributions
@@ -143,7 +143,7 @@ extern "C" void dvc_SwapD3Q7(char *ID, double *disteven, double *distodd, int Nx
//*************************************************************************
extern "C" void dvc_ComputeDensityD3Q7(char *ID, double *disteven, double *distodd, double *Den,
int Nx, int Ny, int Nz, int S)
int Nx, int Ny, int Nz)
{
char id;
int n;

View File

@@ -8,9 +8,9 @@ extern "C" void dvc_PackDenD3Q7(int *list, int count, double *sendbuf, int numbe
extern "C" void dvc_UnpackDenD3Q7(int *list, int count, double *recvbuf, int number, double *Data, int N);
extern "C" void dvc_InitD3Q7(char *ID, double *f_even, double *f_odd, double *Den, int Nx, int Ny, int Nz, int S);
extern "C" void dvc_InitD3Q7(char *ID, double *f_even, double *f_odd, double *Den, int Nx, int Ny, int Nz);
extern "C" void dvc_SwapD3Q7(char *ID, double *disteven, double *distodd, int Nx, int Ny, int Nz, int S);
extern "C" void dvc_SwapD3Q7(char *ID, double *disteven, double *distodd, int Nx, int Ny, int Nz);
extern "C" void dvc_ComputeDensityD3Q7(char *ID, double *disteven, double *distodd, double *Den,
int Nx, int Ny, int Nz, int S);
int Nx, int Ny, int Nz);

View File

@@ -1147,12 +1147,12 @@ int main(int argc, char **argv)
//...........................................................................
if (rank==0) printf("Setting the distributions, size = %i\n", N);
//...........................................................................
dvc_InitD3Q19(ID, f_even, f_odd, Nx, Ny, Nz, S);
dvc_InitD3Q19(ID, f_even, f_odd, Nx, Ny, Nz);
//......................................................................
// dvc_InitDenColorDistance(ID, Copy, Phi, SignDist.data, das, dbs, beta, xIntPos, Nx, Ny, Nz, S);
dvc_InitDenColorDistance(ID, Den, Phi, SignDist.data, das, dbs, beta, xIntPos, Nx, Ny, Nz, S);
dvc_InitD3Q7(ID, A_even, A_odd, &Den[0], Nx, Ny, Nz, S);
dvc_InitD3Q7(ID, B_even, B_odd, &Den[N], Nx, Ny, Nz, S);
dvc_InitDenColorDistance(ID, Den, Phi, SignDist.data, das, dbs, beta, xIntPos, Nx, Ny, Nz);
dvc_InitD3Q7(ID, A_even, A_odd, &Den[0], Nx, Ny, Nz);
dvc_InitD3Q7(ID, B_even, B_odd, &Den[N], Nx, Ny, Nz);
//......................................................................
// Once phase has been initialized, map solid to account for 'smeared' interface
//......................................................................
@@ -1181,7 +1181,7 @@ int main(int argc, char **argv)
// Compute the phase indicator field and reset Copy, Den
//*************************************************************************
// dvc_ComputePhi(ID, Phi, Copy, Den, N, S);
dvc_ComputePhi(ID, Phi, Den, N, S);
dvc_ComputePhi(ID, Phi, Den, N);
//*************************************************************************
//...................................................................................
dvc_PackValues(dvcSendList_x, sendCount_x,sendbuf_x, Phi, N);
@@ -1284,13 +1284,13 @@ int main(int argc, char **argv)
printf("Setting outlet pressure = %f \n", dout);
}
if (pBC && kproc == 0) {
dvc_PressureBC_inlet(f_even,f_odd,din,Nx,Ny,Nz,S);
dvc_ColorBC_inlet(Phi,Den,A_even,A_odd,B_even,B_odd,Nx,Ny,Nz,S);
dvc_PressureBC_inlet(f_even,f_odd,din,Nx,Ny,Nz);
dvc_ColorBC_inlet(Phi,Den,A_even,A_odd,B_even,B_odd,Nx,Ny,Nz);
}
if (pBC && kproc == nprocz-1){
dvc_PressureBC_outlet(f_even,f_odd,dout,Nx,Ny,Nz,S,Nx*Ny*(Nz-2));
dvc_ColorBC_outlet(Phi,Den,A_even,A_odd,B_even,B_odd,Nx,Ny,Nz,S);
dvc_PressureBC_outlet(f_even,f_odd,dout,Nx,Ny,Nz,Nx*Ny*(Nz-2));
dvc_ColorBC_outlet(Phi,Den,A_even,A_odd,B_even,B_odd,Nx,Ny,Nz);
}
//...........................................................................
@@ -1304,7 +1304,7 @@ int main(int argc, char **argv)
// Copy the phase from the GPU -> CPU
//...........................................................................
dvc_Barrier();
dvc_ComputePressureD3Q19(ID,f_even,f_odd,Pressure,Nx,Ny,Nz,S);
dvc_ComputePressureD3Q19(ID,f_even,f_odd,Pressure,Nx,Ny,Nz);
dvc_CopyToHost(Phase.data,Phi,N*sizeof(double));
dvc_CopyToHost(Press.data,Pressure,N*sizeof(double));
dvc_CopyToHost(Vel_x.data,&Velocity[0],N*sizeof(double));
@@ -1342,25 +1342,11 @@ int main(int argc, char **argv)
//************ MAIN ITERATION LOOP ***************************************/
while (timestep < timestepMax){
//*************************************************************************
// Compute the color gradient
//*************************************************************************
//dvc_ComputeColorGradient(nBlocks, nthreads, S,
// ID, Phi, ColorGrad, Nx, Ny, Nz);
//*************************************************************************
//*************************************************************************
// Perform collision step for the momentum transport
//*************************************************************************
// dvc_ColorCollide(nBlocks, nthreads, S, ID, f_even, f_odd, ColorGrad, Velocity,
// rlxA, rlxB,alpha, beta, Fx, Fy, Fz, Nx, Ny, Nz, pBC);
//*************************************************************************
//*************************************************************************
// Fused Color Gradient and Collision
//*************************************************************************
dvc_ColorCollideOpt( ID,f_even,f_odd,Phi,ColorGrad,
Velocity,Nx,Ny,Nz,S,rlxA,rlxB,alpha,beta,Fx,Fy,Fz);
Velocity,Nx,Ny,Nz,rlxA,rlxB,alpha,beta,Fx,Fy,Fz);
//*************************************************************************
//...................................................................................
@@ -1472,13 +1458,13 @@ int main(int argc, char **argv)
// dvc_DensityStreamD3Q7(ID, Den, Copy, Phi, ColorGrad, Velocity, beta, Nx, Ny, Nz, pBC, S);
//*************************************************************************
dvc_MassColorCollideD3Q7(ID, A_even, A_odd, B_even, B_odd, Den, Phi,
ColorGrad, Velocity, beta, N, pBC, S);
ColorGrad, Velocity, beta, N, pBC);
//*************************************************************************
// Swap the distributions for momentum transport
//*************************************************************************
dvc_SwapD3Q19(ID, f_even, f_odd, Nx, Ny, Nz, S);
dvc_SwapD3Q19(ID, f_even, f_odd, Nx, Ny, Nz);
//*************************************************************************
//...................................................................................
@@ -1592,8 +1578,8 @@ int main(int argc, char **argv)
MPI_Irecv(recvbuf_z, 2*recvCount_z,MPI_DOUBLE,rank_z,recvtag,MPI_COMM_WORLD,&req2[5]);
//...................................................................................
dvc_SwapD3Q7(ID, A_even, A_odd, Nx, Ny, Nz, S);
dvc_SwapD3Q7(ID, B_even, B_odd, Nx, Ny, Nz, S);
dvc_SwapD3Q7(ID, A_even, A_odd, Nx, Ny, Nz);
dvc_SwapD3Q7(ID, B_even, B_odd, Nx, Ny, Nz);
//...................................................................................
// Wait for completion of D3Q19 communication
@@ -1627,14 +1613,14 @@ int main(int argc, char **argv)
//..................................................................................
//..................................................................................
dvc_ComputeDensityD3Q7(ID, A_even, A_odd, &Den[0], Nx, Ny, Nz, S);
dvc_ComputeDensityD3Q7(ID, B_even, B_odd, &Den[N], Nx, Ny, Nz, S);
dvc_ComputeDensityD3Q7(ID, A_even, A_odd, &Den[0], Nx, Ny, Nz);
dvc_ComputeDensityD3Q7(ID, B_even, B_odd, &Den[N], Nx, Ny, Nz);
//*************************************************************************
// Compute the phase indicator field
//*************************************************************************
// dvc_ComputePhi(ID, Phi, Copy, Den, N, S);
dvc_ComputePhi(ID, Phi, Den, N, S);
// dvc_ComputePhi(ID, Phi, Copy, Den, N);
dvc_ComputePhi(ID, Phi, Den, N);
//*************************************************************************
//...................................................................................
@@ -1733,13 +1719,13 @@ int main(int argc, char **argv)
if (pBC && kproc == 0) {
dvc_PressureBC_inlet(f_even,f_odd,din,Nx,Ny,Nz,S);
dvc_ColorBC_inlet(Phi,Den,A_even,A_odd,B_even,B_odd,Nx,Ny,Nz,S);
dvc_PressureBC_inlet(f_even,f_odd,din,Nx,Ny,Nz);
dvc_ColorBC_inlet(Phi,Den,A_even,A_odd,B_even,B_odd,Nx,Ny,Nz);
}
if (pBC && kproc == nprocz-1){
dvc_PressureBC_outlet(f_even,f_odd,dout,Nx,Ny,Nz,S,Nx*Ny*(Nz-2));
dvc_ColorBC_outlet(Phi,Den,A_even,A_odd,B_even,B_odd,Nx,Ny,Nz,S);
dvc_PressureBC_outlet(f_even,f_odd,dout,Nx,Ny,Nz,Nx*Ny*(Nz-2));
dvc_ColorBC_outlet(Phi,Den,A_even,A_odd,B_even,B_odd,Nx,Ny,Nz);
}
//...................................................................................
@@ -1763,7 +1749,7 @@ int main(int argc, char **argv)
// Copy the phase from the GPU -> CPU
//...........................................................................
dvc_Barrier();
dvc_ComputePressureD3Q19(ID,f_even,f_odd,Pressure,Nx,Ny,Nz,S);
dvc_ComputePressureD3Q19(ID,f_even,f_odd,Pressure,Nx,Ny,Nz);
dvc_CopyToHost(Phase.data,Phi,N*sizeof(double));
dvc_CopyToHost(Press.data,Pressure,N*sizeof(double));
dvc_CopyToHost(Vel_x.data,&Velocity[0],N*sizeof(double));
@@ -2238,7 +2224,7 @@ int main(int argc, char **argv)
// fwrite(MeanCurvature.data,8,N,PHASE);
fclose(PHASE);
//#endif
dvc_ComputePressureD3Q19(ID,f_even,f_odd,Pressure,Nx,Ny,Nz,S);
dvc_ComputePressureD3Q19(ID,f_even,f_odd,Pressure,Nx,Ny,Nz);
dvc_CopyToHost(Press.data,Pressure,N*sizeof(double));
sprintf(LocalRankFilename,"%s%s","Pressure.",LocalRankString);
FILE *PRESS;