Fixed 3D PT, random point generator
This commit is contained in:
@@ -30,6 +30,7 @@ void injectParticles(ParticleTracer* particletracer)
|
||||
{
|
||||
for(int i = 0; i < particletracer->numberOfParticles; ++i)
|
||||
{
|
||||
|
||||
particletracer->particlePool[particletracer->pointer].x = particletracer->linSpaceLine[i].x;
|
||||
particletracer->particlePool[particletracer->pointer].y = particletracer->linSpaceLine[i].y;
|
||||
particletracer->particlePool[particletracer->pointer].z = particletracer->linSpaceLine[i].z;
|
||||
@@ -257,6 +258,7 @@ void trace(ParticleTracer* particletracer, Solver* solver, double* u, double* v,
|
||||
}
|
||||
if( (time - particletracer->lastWriteTime) >= particletracer->writeTimePeriod)
|
||||
{
|
||||
activeParticleChecker(particletracer);
|
||||
writeParticles(particletracer, solver);
|
||||
particletracer->lastWriteTime = time;
|
||||
|
||||
@@ -264,4 +266,17 @@ void trace(ParticleTracer* particletracer, Solver* solver, double* u, double* v,
|
||||
advanceParticles(particletracer, u, v, w, time);
|
||||
particletracer->lastUpdateTime = time;
|
||||
}
|
||||
}
|
||||
|
||||
void activeParticleChecker(ParticleTracer* particletracer)
|
||||
{
|
||||
particletracer->activeParticles = 0;
|
||||
Particle* particlePool = particletracer->particlePool;
|
||||
for (int i = 0; i < particletracer->totalParticles; ++i)
|
||||
{
|
||||
if(particlePool[i].flag == true)
|
||||
{
|
||||
++(particletracer->activeParticles);
|
||||
}
|
||||
}
|
||||
}
|
@@ -23,7 +23,7 @@ typedef struct {
|
||||
int numberOfParticles, totalParticles;
|
||||
double startTime, injectTimePeriod, writeTimePeriod, lastInjectTime, lastUpdateTime, lastWriteTime;
|
||||
|
||||
int estimatedNumParticles;
|
||||
int estimatedNumParticles, activeParticles;
|
||||
|
||||
double dx, dy, dz, dt;
|
||||
Particle* linSpaceLine;
|
||||
@@ -43,5 +43,6 @@ void freeParticles(ParticleTracer*);
|
||||
void writeParticles(ParticleTracer*, Solver*);
|
||||
void printParticleTracerParameters(ParticleTracer*);
|
||||
void printParticles(ParticleTracer*);
|
||||
void activeParticleChecker(ParticleTracer*);
|
||||
void trace(ParticleTracer*, Solver*, double* , double* , double* , double);
|
||||
#endif
|
@@ -172,7 +172,7 @@ void vtkParticle(VtkOptions* o, char* name)
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
fprintf(o->fh, "POINTS %d float\n", o->particletracer->totalParticles);
|
||||
fprintf(o->fh, "POINTS %d float\n", o->particletracer->activeParticles);
|
||||
|
||||
|
||||
for (int i = 0; i < o->particletracer->totalParticles; ++i)
|
||||
@@ -186,26 +186,19 @@ void vtkParticle(VtkOptions* o, char* name)
|
||||
}
|
||||
}
|
||||
|
||||
fprintf(o->fh, "CELLS %d %d\n", o->particletracer->totalParticles, 2 * o->particletracer->totalParticles);
|
||||
fprintf(o->fh, "CELLS %d %d\n", o->particletracer->activeParticles, 2 * o->particletracer->activeParticles);
|
||||
|
||||
|
||||
for (int i = 0, j = 0; i < o->particletracer->totalParticles; ++i)
|
||||
for (int i = 0; i < o->particletracer->activeParticles; ++i)
|
||||
{
|
||||
if(particlePool[i].flag == true)
|
||||
{
|
||||
fprintf(o->fh, "1 %d\n", j);
|
||||
++j;
|
||||
}
|
||||
fprintf(o->fh, "1 %d\n", i);
|
||||
}
|
||||
|
||||
fprintf(o->fh, "CELL_TYPES %d\n", o->particletracer->totalParticles);
|
||||
fprintf(o->fh, "CELL_TYPES %d\n", o->particletracer->activeParticles);
|
||||
|
||||
|
||||
for (int i = 0; i < o->particletracer->totalParticles; ++i)
|
||||
for (int i = 0; i < o->particletracer->activeParticles; ++i)
|
||||
{
|
||||
if(particlePool[i].flag == true)
|
||||
{
|
||||
fprintf(o->fh, "1\n");
|
||||
}
|
||||
fprintf(o->fh, "1\n");
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user