Fixed bug in Domain.h: SSo

This commit is contained in:
James E McClure
2015-06-03 18:04:43 -04:00
parent db8dbfd954
commit ce199b4d3d

View File

@@ -788,6 +788,11 @@ inline void SSO(DoubleArray &Distance, char *ID, Domain &Dm, int timesteps){
int Q=26;
int q,i,j,k,n;
double dt=0.25;
int in,jn,kn,nn;
double Dqx,Dqy,Dqz,Dx,Dy,Dz,W;
double nx,ny,nz,Cqx,Cqy,Cqz,sign,norm;
const static int D3Q27[26][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1},
{1,1,0},{-1,-1,0},{1,-1,0},{-1,1,0},{1,0,1},{-1,0,-1},{1,0,-1},{-1,0,1},
{0,1,1},{0,-1,-1},{0,1,-1},{0,-1,1},{1,1,1},{-1,-1,-1},{1,1,-1},{-1,-1,1},
@@ -799,14 +804,9 @@ inline void SSO(DoubleArray &Distance, char *ID, Domain &Dm, int timesteps){
weights[q] = sqrt(1.0*(D3Q27[q][0]*D3Q27[q][0]) + 1.0*(D3Q27[q][1]*D3Q27[q][1]) + 1.0*(D3Q27[q][2]*D3Q27[q][2]));
}
fillHalo<double> fillData(Dm.rank_info,Dm.Nx-2,Dm.Ny-2,Dm.Nz-2,1,1,1,0,1);
int count = 0;
double dt=0.25;
int in,jn,kn,nn;
double Dqx,Dqy,Dqz,Dx,Dy,Dz,W;
double nx,ny,nz,Cqx,Cqy,Cqz,sign,norm;
fillHalo<double> fillData(Dm.rank_info,Nx-2,Ny-2,Nz-2,1,1,1,0,1);
while (count < timesteps){
printf("count=%i \n",count);
@@ -815,11 +815,11 @@ inline void SSO(DoubleArray &Distance, char *ID, Domain &Dm, int timesteps){
fillData.fill(Distance);
// Execute the next timestep
for (k=1;k<Nz-1;k++){
for (j=1;j<Ny-1;j++){
for (i=1;i<Nx-1;i++){
for (k=1;k<Dm.Nz-1;k++){
for (j=1;j<Dm.Ny-1;j++){
for (i=1;i<Dm.Nx-1;i++){
n = k*Nx*Ny + j*Nx + i;
n = k*Dm.Nx*Dm.Ny+j*Dm.Nx+i;
sign = Distance(i,j,k) / fabs(Distance(i,j,k));
/*
@@ -875,9 +875,6 @@ inline void SSO(DoubleArray &Distance, char *ID, Domain &Dm, int timesteps){
if (!(kn < Nz) ) kn = k;
*/
// 1-D index
nn = kn*Nx*Ny + jn*Nx + in;
// Compute the gradient using upwind finite differences
Dqx = weights[q]*(Distance(i,j,k) - Distance(in,jn,kn))*Cqx;
Dqy = weights[q]*(Distance(i,j,k) - Distance(in,jn,kn))*Cqy;