Karman Vortex trials
This commit is contained in:
@@ -78,7 +78,7 @@ int main (int argc, char** argv)
|
||||
|
||||
|
||||
/* Added function for particle tracing. Will inject and advance particles as per timePeriod */
|
||||
trace(&particletracer, solver.u, solver.v, t);
|
||||
trace(&particletracer, solver.u, solver.v, solver.s, t);
|
||||
|
||||
t += solver.dt;
|
||||
nt++;
|
||||
|
@@ -14,6 +14,7 @@
|
||||
|
||||
#define U(i, j) u[(j) * (imax + 2) + (i)]
|
||||
#define V(i, j) v[(j) * (imax + 2) + (i)]
|
||||
#define S(i, j) s[(j) * (imax + 2) + (i)]
|
||||
|
||||
static int ts = 0;
|
||||
void printParticles(ParticleTracer* particletracer)
|
||||
@@ -37,7 +38,7 @@ void injectParticles(ParticleTracer* particletracer)
|
||||
}
|
||||
}
|
||||
|
||||
void advanceParticles(ParticleTracer* particletracer, double* restrict u, double* restrict v, double time)
|
||||
void advanceParticles(ParticleTracer* particletracer, double* restrict u, double* restrict v, int* restrict s, double time)
|
||||
{
|
||||
int imax = particletracer->imax;
|
||||
int jmax = particletracer->jmax;
|
||||
@@ -101,6 +102,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;
|
||||
if(S(i_new, j_new) == LOCAL)
|
||||
{
|
||||
particletracer->particlePool[i].flag = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -116,10 +122,10 @@ void writeParticles(ParticleTracer* particletracer)
|
||||
VtkOptions opts = { .particletracer = particletracer };
|
||||
|
||||
char filename[50];
|
||||
snprintf(filename, 50, "vtk_files/particles%d.vtk", ts);
|
||||
vtkOpen(&opts, filename, ts);
|
||||
vtkParticle(&opts, "particle");
|
||||
vtkClose(&opts);
|
||||
// snprintf(filename, 50, "vtk_files/particles%d.vtk", ts);
|
||||
// vtkOpen(&opts, filename, ts);
|
||||
// vtkParticle(&opts, "particle");
|
||||
// vtkClose(&opts);
|
||||
|
||||
FILE* fp;
|
||||
Particle* particlePool = particletracer->particlePool;
|
||||
@@ -176,6 +182,7 @@ void initParticleTracer(ParticleTracer* particletracer, Parameter* params)
|
||||
|
||||
particletracer->particlePool = malloc(sizeof(Particle) * particletracer->estimatedNumParticles);
|
||||
particletracer->linSpaceLine = malloc(sizeof(Particle) * particletracer->numberOfParticles);
|
||||
|
||||
|
||||
for (int i = 0; i < particletracer->numberOfParticles; ++i)
|
||||
{
|
||||
@@ -197,7 +204,7 @@ void printParticleTracerParameters(ParticleTracer* particletracer)
|
||||
printf("\tdt : %.2f, dx : %.2f, dy : %.2f\n", particletracer->dt, particletracer->dx, particletracer->dy);
|
||||
}
|
||||
|
||||
void trace(ParticleTracer* particletracer, double* u, double* v, double time)
|
||||
void trace(ParticleTracer* particletracer, double* u, double* v, int* s, double time)
|
||||
{
|
||||
if (time >= particletracer->startTime)
|
||||
{
|
||||
@@ -213,7 +220,7 @@ void trace(ParticleTracer* particletracer, double* u, double* v, double time)
|
||||
particletracer->lastWriteTime = time;
|
||||
|
||||
}
|
||||
advanceParticles(particletracer, u, v, time);
|
||||
advanceParticles(particletracer, u, v, s, time);
|
||||
compress(particletracer);
|
||||
particletracer->lastUpdateTime = time;
|
||||
}
|
||||
|
@@ -38,11 +38,11 @@ typedef struct {
|
||||
|
||||
void initParticleTracer(ParticleTracer*, Parameter*);
|
||||
void injectParticles(ParticleTracer*);
|
||||
void advanceParticles(ParticleTracer*, double* , double*, double);
|
||||
void advanceParticles(ParticleTracer*, double* , double*, int*, double);
|
||||
void freeParticles(ParticleTracer*);
|
||||
void writeParticles(ParticleTracer*);
|
||||
void printParticleTracerParameters(ParticleTracer*);
|
||||
void printParticles(ParticleTracer*);
|
||||
void trace(ParticleTracer*, double* , double* , double );
|
||||
void trace(ParticleTracer*, double* , double* , int* , double );
|
||||
void compress(ParticleTracer* );
|
||||
#endif
|
Reference in New Issue
Block a user