NuSiF-Solver/BasicSolver/3D-seq/src/particletracing.h

48 lines
1.4 KiB
C
Raw Normal View History

2023-08-14 11:31:22 +02:00
/*
* Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg.
* All rights reserved. This file is part of nusif-solver.
* Use of this source code is governed by a MIT style
* license that can be found in the LICENSE file.
*/
#ifndef __PARTICLETRACING_H_
#define __PARTICLETRACING_H_
#include "allocate.h"
#include "parameter.h"
#include "solver.h"
#include "particletracing.h"
#include <stdbool.h>
typedef enum COORD { X = 0, Y, NCOORD } COORD;
typedef struct
{
double x, y, z;
bool flag;
} Particle;
typedef struct {
int numberOfParticles, totalParticles;
double startTime, injectTimePeriod, writeTimePeriod, lastInjectTime, lastUpdateTime, lastWriteTime;
2023-08-14 14:07:20 +02:00
int estimatedNumParticles, activeParticles;
2023-08-14 11:31:22 +02:00
double dx, dy, dz, dt;
Particle* linSpaceLine;
Particle* particlePool;
int pointer;
double imax, jmax, kmax, xlength, ylength, zlength;
double x1, y1, x2, y2, z1, z2;
} ParticleTracer;
void initParticleTracer(ParticleTracer*, Parameter*);
void injectParticles(ParticleTracer*);
void advanceParticles(ParticleTracer*, double* , double*, double*, double);
void freeParticles(ParticleTracer*);
2023-08-21 10:40:48 +02:00
void writeParticles(ParticleTracer*);
2023-08-14 11:31:22 +02:00
void printParticleTracerParameters(ParticleTracer*);
void printParticles(ParticleTracer*);
2023-08-21 10:40:48 +02:00
void compress(ParticleTracer*);
void trace(ParticleTracer*, double* , double* , double* , double);
2023-08-14 11:31:22 +02:00
#endif