DFH gradient works (no comm yet)
This commit is contained in:
parent
0c746bf4e3
commit
fc365e9aba
11
cpu/dfh.cpp
11
cpu/dfh.cpp
@ -1429,7 +1429,6 @@ extern "C" void ScaLBL_D3Q19_Gradient_DFH(int *neighborList, double *Phi, double
|
|||||||
m1 = Phi[nn];
|
m1 = Phi[nn];
|
||||||
nn = neighborList[n]%Np;
|
nn = neighborList[n]%Np;
|
||||||
m2 = Phi[nn];
|
m2 = Phi[nn];
|
||||||
printf("m1=%f, m2=%f \n",m1,m2);
|
|
||||||
nn = neighborList[n+3*Np]%Np;
|
nn = neighborList[n+3*Np]%Np;
|
||||||
m3 = Phi[nn];
|
m3 = Phi[nn];
|
||||||
nn = neighborList[n+2*Np]%Np;
|
nn = neighborList[n+2*Np]%Np;
|
||||||
@ -1438,7 +1437,7 @@ extern "C" void ScaLBL_D3Q19_Gradient_DFH(int *neighborList, double *Phi, double
|
|||||||
m5 = Phi[nn];
|
m5 = Phi[nn];
|
||||||
nn = neighborList[n+4*Np]%Np;
|
nn = neighborList[n+4*Np]%Np;
|
||||||
m6 = Phi[nn];
|
m6 = Phi[nn];
|
||||||
/* nn = neighborList[n+7*Np]%Np;
|
nn = neighborList[n+7*Np]%Np;
|
||||||
m7 = Phi[nn];
|
m7 = Phi[nn];
|
||||||
nn = neighborList[n+6*Np]%Np;
|
nn = neighborList[n+6*Np]%Np;
|
||||||
m8 = Phi[nn];
|
m8 = Phi[nn];
|
||||||
@ -1462,12 +1461,12 @@ extern "C" void ScaLBL_D3Q19_Gradient_DFH(int *neighborList, double *Phi, double
|
|||||||
m17 = Phi[nn];
|
m17 = Phi[nn];
|
||||||
nn = neighborList[n+16*Np]%Np;
|
nn = neighborList[n+16*Np]%Np;
|
||||||
m18 = Phi[nn];
|
m18 = Phi[nn];
|
||||||
*/
|
|
||||||
//............Compute the Color Gradient...................................
|
//............Compute the Color Gradient...................................
|
||||||
//............Compute the wn fluid Gradient...................................
|
//............Compute the wn fluid Gradient...................................
|
||||||
nx = -(m1-m2+0.5*(m7-m8+m9-m10+m11-m12+m13-m14));
|
nx = (m1-m2+0.5*(m7-m8+m9-m10+m11-m12+m13-m14));
|
||||||
ny = -(m3-m4+0.5*(m7-m8-m9+m10+m15-m16+m17-m18));
|
ny = (m3-m4+0.5*(m7-m8-m9+m10+m15-m16+m17-m18));
|
||||||
nz = -(m5-m6+0.5*(m11-m12-m13+m14+m15-m16-m17+m18));
|
nz = (m5-m6+0.5*(m11-m12-m13+m14+m15-m16-m17+m18));
|
||||||
|
|
||||||
//...........Normalize the Color Gradient.................................
|
//...........Normalize the Color Gradient.................................
|
||||||
// C = sqrt(nx*nx+ny*ny+nz*nz);
|
// C = sqrt(nx*nx+ny*ny+nz*nz);
|
||||||
|
@ -158,7 +158,6 @@ int main(int argc, char **argv)
|
|||||||
Nz += 2;
|
Nz += 2;
|
||||||
int N = Nx*Ny*Nz;
|
int N = Nx*Ny*Nz;
|
||||||
|
|
||||||
int Np=0; // number of local pore nodes
|
|
||||||
double *PhaseLabel;
|
double *PhaseLabel;
|
||||||
PhaseLabel = new double[N];
|
PhaseLabel = new double[N];
|
||||||
//.......................................................................
|
//.......................................................................
|
||||||
@ -167,7 +166,6 @@ int main(int argc, char **argv)
|
|||||||
for (i=0;i<Nx;i++){
|
for (i=0;i<Nx;i++){
|
||||||
n = k*Nx*Ny+j*Nx+i;
|
n = k*Nx*Ny+j*Nx+i;
|
||||||
Dm.id[n]=1;
|
Dm.id[n]=1;
|
||||||
Np++;
|
|
||||||
// Initialize gradient ColorGrad = (1,2,3)
|
// Initialize gradient ColorGrad = (1,2,3)
|
||||||
double value=double(3*k+2*j+i);
|
double value=double(3*k+2*j+i);
|
||||||
PhaseLabel[n]= value;
|
PhaseLabel[n]= value;
|
||||||
@ -185,13 +183,23 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
// LBM variables
|
// LBM variables
|
||||||
if (rank==0) printf ("Set up the neighborlist \n");
|
if (rank==0) printf ("Set up the neighborlist \n");
|
||||||
|
|
||||||
|
int Np=0; // number of local pore nodes
|
||||||
|
for (k=1;k<Nz-1;k++){
|
||||||
|
for (j=1;j<Ny-1;j++){
|
||||||
|
for (i=1;i<Nx-1;i++){
|
||||||
|
Np++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Np+=32;
|
||||||
|
|
||||||
int neighborSize=18*Np*sizeof(int);
|
int neighborSize=18*Np*sizeof(int);
|
||||||
int *neighborList;
|
int *neighborList;
|
||||||
IntArray Map(Nx,Ny,Nz);
|
IntArray Map(Nx,Ny,Nz);
|
||||||
neighborList= new int[18*Np];
|
neighborList= new int[18*Np];
|
||||||
|
|
||||||
ScaLBL_Comm.MemoryOptimizedLayoutAA(Map,neighborList,Dm.id,Np);
|
Np = ScaLBL_Comm.MemoryOptimizedLayoutAA(Map,neighborList,Dm.id,Np);
|
||||||
MPI_Barrier(comm);
|
MPI_Barrier(comm);
|
||||||
|
|
||||||
//......................device distributions.................................
|
//......................device distributions.................................
|
||||||
@ -252,7 +260,20 @@ int main(int argc, char **argv)
|
|||||||
int SIZE=3*Np*sizeof(double);
|
int SIZE=3*Np*sizeof(double);
|
||||||
ScaLBL_CopyToHost(&COLORGRAD[0],&ColorGrad[0],SIZE);
|
ScaLBL_CopyToHost(&COLORGRAD[0],&ColorGrad[0],SIZE);
|
||||||
|
|
||||||
|
for (k=1;k<Nz-1;k++){
|
||||||
|
for (j=1;j<Ny-1;j++){
|
||||||
|
for (i=1;i<Nx-1;i++){
|
||||||
|
n = k*Nx*Ny+j*Nx+i;
|
||||||
|
if (Dm.id[n] > 0){
|
||||||
|
int idx = Map(i,j,k);
|
||||||
|
printf("%i ",idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
printf("-------\n");
|
||||||
|
}
|
||||||
|
|
||||||
double CX,CY,CZ;
|
double CX,CY,CZ;
|
||||||
for (k=2;k<Nz-2;k++){
|
for (k=2;k<Nz-2;k++){
|
||||||
for (j=2;j<Ny-2;j++){
|
for (j=2;j<Ny-2;j++){
|
||||||
@ -264,8 +285,14 @@ int main(int argc, char **argv)
|
|||||||
CY=COLORGRAD[Np+idx];
|
CY=COLORGRAD[Np+idx];
|
||||||
CZ=COLORGRAD[2*Np+idx];
|
CZ=COLORGRAD[2*Np+idx];
|
||||||
double error=sqrt((CX-1.0)*(CX-1.0)+(CY-2.0)*(CY-2.0)+ (CZ-3.0)*(CZ-3.0));
|
double error=sqrt((CX-1.0)*(CX-1.0)+(CY-2.0)*(CY-2.0)+ (CZ-3.0)*(CZ-3.0));
|
||||||
if (error > 1e-8)
|
if (error > 1e-8){
|
||||||
printf("i,j,k=%i,%i,%i: Color gradient=%f,%f,%f \n",i,j,k,CX,CY,CZ);
|
printf("i,j,k=%i,%i,%i; idx=%i: Color gradient=%f,%f,%f \n",i,j,k,idx,CX,CY,CZ);
|
||||||
|
for (int q=0; q<18; q++){
|
||||||
|
int nn = neighborList[q*Np+idx]%Np;
|
||||||
|
double value= PHASE[nn];
|
||||||
|
printf(" q=%i, nn=%i, value=%f \n",q,nn,value);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user