Fixed 3D PT, random point generator

This commit is contained in:
2023-08-14 14:07:20 +02:00
parent 649fd000c0
commit 6c238198ed
45 changed files with 24 additions and 81789 deletions

View File

@@ -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);
}
}
}

View File

@@ -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

View File

@@ -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");
}
}