Partial 3D seq
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
#define U(i, j, k) u[(k) * (imax + 2) * (jmax + 2) + (j) * (imax + 2) + (i)]
|
||||
#define V(i, j, k) v[(k) * (imax + 2) * (jmax + 2) + (j) * (imax + 2) + (i)]
|
||||
#define W(i, j, k) w[(k) * (imax + 2) * (jmax + 2) + (j) * (imax + 2) + (i)]
|
||||
#define S(i, j, k) seg[(k) * (imax + 2) * (jmax + 2) + (j) * (imax + 2) + (i)]
|
||||
|
||||
static int ts = 0;
|
||||
unsigned int seed = 32767;
|
||||
@@ -47,7 +48,7 @@ void injectParticles(ParticleTracer* particletracer)
|
||||
}
|
||||
}
|
||||
|
||||
void advanceParticles(ParticleTracer* particletracer, double* restrict u, double* restrict v, double* restrict w, double time)
|
||||
void advanceParticles(ParticleTracer* particletracer, double* restrict u, double* restrict v, double* restrict w, int* restrict seg, double time)
|
||||
{
|
||||
int imax = particletracer->imax;
|
||||
int jmax = particletracer->jmax;
|
||||
@@ -167,6 +168,11 @@ void advanceParticles(ParticleTracer* particletracer, double* restrict u, double
|
||||
{
|
||||
particletracer->particlePool[i].flag = false;
|
||||
}
|
||||
int i_new = new_x/dx, j_new = new_y/dy, k_new = new_z/dz;
|
||||
if(S(i_new, j_new, k_new) != NONE)
|
||||
{
|
||||
particletracer->particlePool[i].flag = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -256,7 +262,7 @@ void printParticleTracerParameters(ParticleTracer* particletracer)
|
||||
printf("\tdt : %.2f, dx : %.2f, dy : %.2f, dz : %.2f\n", particletracer->dt, particletracer->dx, particletracer->dy, particletracer->dz);
|
||||
}
|
||||
|
||||
void trace(ParticleTracer* particletracer, double* u, double* v, double* w, double time)
|
||||
void trace(ParticleTracer* particletracer, double* u, double* v, double* w, int* seg, double time)
|
||||
{
|
||||
if (time >= particletracer->startTime)
|
||||
{
|
||||
@@ -272,7 +278,7 @@ void trace(ParticleTracer* particletracer, double* u, double* v, double* w, doub
|
||||
particletracer->lastWriteTime = time;
|
||||
|
||||
}
|
||||
advanceParticles(particletracer, u, v, w, time);
|
||||
advanceParticles(particletracer, u, v, w, seg, time);
|
||||
compress(particletracer);
|
||||
particletracer->lastUpdateTime = time;
|
||||
}
|
||||
|
Reference in New Issue
Block a user