Trying to resolve difference between solution of CPU and GPU color model
This commit is contained in:
parent
91e53327a6
commit
16aa6838cc
@ -1177,7 +1177,7 @@ extern "C" void MassColorCollideD3Q7(char *ID, double *A_even, double *A_odd, do
|
||||
b1 = nb*(0.1111111111111111*(1+4.5*ux));
|
||||
a2 = na*(0.1111111111111111*(1-4.5*ux));
|
||||
b2 = nb*(0.1111111111111111*(1-4.5*ux));
|
||||
if (C > 0.0){
|
||||
if (na*nb > 0.0){
|
||||
delta = na*nb/(na+nb)*0.1111111111111111*nx;
|
||||
a1 += beta*delta;
|
||||
a2 -= beta*delta;
|
||||
@ -1195,7 +1195,7 @@ extern "C" void MassColorCollideD3Q7(char *ID, double *A_even, double *A_odd, do
|
||||
b1 = nb*(0.1111111111111111*(1+4.5*uy));
|
||||
a2 = na*(0.1111111111111111*(1-4.5*uy));
|
||||
b2 = nb*(0.1111111111111111*(1-4.5*uy));
|
||||
if (C > 0.0){
|
||||
if (na*nb > 0.0){
|
||||
delta = na*nb/(na+nb)*0.1111111111111111*ny;
|
||||
a1 += beta*delta;
|
||||
a2 -= beta*delta;
|
||||
@ -1213,7 +1213,7 @@ extern "C" void MassColorCollideD3Q7(char *ID, double *A_even, double *A_odd, do
|
||||
b1 = nb*(0.1111111111111111*(1+4.5*uz));
|
||||
a2 = na*(0.1111111111111111*(1-4.5*uz));
|
||||
b2 = nb*(0.1111111111111111*(1-4.5*uz));
|
||||
if (C > 0.0){
|
||||
if (na*nb > 0.0){
|
||||
delta = na*nb/(na+nb)*0.1111111111111111*nz;
|
||||
a1 += beta*delta;
|
||||
a2 -= beta*delta;
|
||||
|
12
gpu/Color.cu
12
gpu/Color.cu
@ -16,8 +16,8 @@ __global__ void dvc_InitDenColor(char *ID, double *Den, double *Phi, double das
|
||||
n = S*blockIdx.x*blockDim.x + s*blockDim.x + threadIdx.x;
|
||||
if (n<N){
|
||||
|
||||
id=ID[n];
|
||||
//.......Back out the 3-D indices for node n..............
|
||||
id=ID[n];
|
||||
//.......Back out the 3-D indices for node n..............
|
||||
//k = n/(Nx*Ny);
|
||||
//j = (n-Nx*Ny*k)/Nx;
|
||||
//i = n-Nx*Ny*k-Nx*j;
|
||||
@ -1108,7 +1108,7 @@ __global__ void dvc_MassColorCollideD3Q7(char *ID, double *A_even, double *A_od
|
||||
|
||||
if (n<N)
|
||||
id = ID[n];
|
||||
if ( id > 0){
|
||||
if ( id != 0){
|
||||
|
||||
//.....Load the Color gradient.........
|
||||
nx = ColorGrad[n];
|
||||
@ -1165,7 +1165,7 @@ __global__ void dvc_MassColorCollideD3Q7(char *ID, double *A_even, double *A_od
|
||||
b1 = nb*(0.1111111111111111*(1+4.5*ux));
|
||||
a2 = na*(0.1111111111111111*(1-4.5*ux));
|
||||
b2 = nb*(0.1111111111111111*(1-4.5*ux));
|
||||
if (C > 0.0){
|
||||
if (na*nb > 0.0){
|
||||
delta = na*nb/(na+nb)*0.1111111111111111*nx;
|
||||
a1 += beta*delta;
|
||||
a2 -= beta*delta;
|
||||
@ -1183,7 +1183,7 @@ __global__ void dvc_MassColorCollideD3Q7(char *ID, double *A_even, double *A_od
|
||||
b1 = nb*(0.1111111111111111*(1+4.5*uy));
|
||||
a2 = na*(0.1111111111111111*(1-4.5*uy));
|
||||
b2 = nb*(0.1111111111111111*(1-4.5*uy));
|
||||
if (C > 0.0){
|
||||
if (na*nb > 0.0){
|
||||
delta = na*nb/(na+nb)*0.1111111111111111*ny;
|
||||
a1 += beta*delta;
|
||||
a2 -= beta*delta;
|
||||
@ -1201,7 +1201,7 @@ __global__ void dvc_MassColorCollideD3Q7(char *ID, double *A_even, double *A_od
|
||||
b1 = nb*(0.1111111111111111*(1+4.5*uz));
|
||||
a2 = na*(0.1111111111111111*(1-4.5*uz));
|
||||
b2 = nb*(0.1111111111111111*(1-4.5*uz));
|
||||
if (C > 0.0){
|
||||
if (na*nb > 0.0){
|
||||
delta = na*nb/(na+nb)*0.1111111111111111*nz;
|
||||
a1 += beta*delta;
|
||||
a2 -= beta*delta;
|
||||
|
@ -128,7 +128,7 @@ __global__ void dvc_SwapD3Q7(char *ID, double *disteven, double *distodd, int N
|
||||
if (!(i+1<Nx)) nn -= Nx; // periodic BC along the x-boundary
|
||||
//if (i+1<Nx){
|
||||
f2 = disteven[N+nn]; // pull neighbor for distribution 2
|
||||
if (f2 > 0.0){
|
||||
if (!(f2 < 0.0)){
|
||||
distodd[n] = f2;
|
||||
disteven[N+nn] = f1;
|
||||
}
|
||||
@ -138,7 +138,7 @@ __global__ void dvc_SwapD3Q7(char *ID, double *disteven, double *distodd, int N
|
||||
if (!(j+1<Ny)) nn -= Nx*Ny; // Perioidic BC along the y-boundary
|
||||
//if (j+1<Ny){
|
||||
f4 = disteven[2*N+nn]; // pull neighbor for distribution 4
|
||||
if (f4 > 0.0){
|
||||
if (!(f4 < 0.0)){
|
||||
distodd[N+n] = f4;
|
||||
disteven[2*N+nn] = f3;
|
||||
// }
|
||||
@ -148,7 +148,7 @@ __global__ void dvc_SwapD3Q7(char *ID, double *disteven, double *distodd, int N
|
||||
if (!(k+1<Nz)) nn -= Nx*Ny*Nz; // Perioidic BC along the z-boundary
|
||||
//if (k+1<Nz){
|
||||
f6 = disteven[3*N+nn]; // pull neighbor for distribution 6
|
||||
if (f6 > 0.0){
|
||||
if (!(f6 < 0.0)){
|
||||
distodd[2*N+n] = f6;
|
||||
disteven[3*N+nn] = f5;
|
||||
// }
|
||||
|
Loading…
Reference in New Issue
Block a user