WIP: Pull Request for a complete Solver package #2
@ -39,11 +39,9 @@ $(BUILD_DIR)/%.s: %.c
|
|||||||
|
|
||||||
.PHONY: clean distclean tags info asm format
|
.PHONY: clean distclean tags info asm format
|
||||||
|
|
||||||
clean:
|
clean: viz
|
||||||
$(info ===> CLEAN)
|
$(info ===> CLEAN)
|
||||||
@rm -rf $(BUILD_DIR)
|
@rm -rf $(BUILD_DIR)
|
||||||
@rm -f vtk_files/particle*.vtk
|
|
||||||
@rm -f vis_files/particle*.dat
|
|
||||||
@rm -f tags
|
@rm -f tags
|
||||||
|
|
||||||
distclean: clean
|
distclean: clean
|
||||||
|
138
BasicSolver/2D-seq/src/vtkWriter.c
Normal file
138
BasicSolver/2D-seq/src/vtkWriter.c
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "vtkWriter.h"
|
||||||
|
|
||||||
|
static float floatSwap(float f)
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
float f;
|
||||||
|
char b[4];
|
||||||
|
} dat1, dat2;
|
||||||
|
|
||||||
|
dat1.f = f;
|
||||||
|
dat2.b[0] = dat1.b[3];
|
||||||
|
dat2.b[1] = dat1.b[2];
|
||||||
|
dat2.b[2] = dat1.b[1];
|
||||||
|
dat2.b[3] = dat1.b[0];
|
||||||
|
return dat2.f;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void writeHeader(VtkOptions* o, int ts)
|
||||||
|
{
|
||||||
|
fprintf(o->fh, "# vtk DataFile Version 3.0\n");
|
||||||
|
fprintf(o->fh, "PAMPI cfd solver particle tracing file\n");
|
||||||
|
if (o->fmt == ASCII) {
|
||||||
|
fprintf(o->fh, "ASCII\n");
|
||||||
|
} else if (o->fmt == BINARY) {
|
||||||
|
fprintf(o->fh, "BINARY\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf(o->fh, "DATASET UNSTRUCTURED_GRID\n");
|
||||||
|
fprintf(o->fh, "FIELD FieldData 2\n");
|
||||||
|
fprintf(o->fh, "TIME 1 1 double\n");
|
||||||
|
fprintf(o->fh, "%d\n", ts);
|
||||||
|
fprintf(o->fh, "CYCLE 1 1 int\n");
|
||||||
|
fprintf(o->fh, "1\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void vtkOpen(VtkOptions* o, char* problem, int ts)
|
||||||
|
{
|
||||||
|
o->fh = fopen(problem, "w");
|
||||||
|
|
||||||
|
if (o->fh == NULL) {
|
||||||
|
printf("vtkWriter not initialize! Call vtkOpen first!\n");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
writeHeader(o, ts);
|
||||||
|
|
||||||
|
printf("Writing VTK output for %s\n", problem);
|
||||||
|
}
|
||||||
|
|
||||||
|
void vtkParticle(VtkOptions* o, char* name)
|
||||||
|
{
|
||||||
|
Particle* particlePool = o->particletracer->particlePool;
|
||||||
|
|
||||||
|
int imax = o->solver->imax;
|
||||||
|
int jmax = o->solver->jmax;
|
||||||
|
|
||||||
|
if (o->fh == NULL) {
|
||||||
|
printf("vtkWriter not initialize! Call vtkOpen first!\n");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf(o->fh, "POINTS %s float\n", o->particletracer->totalParticles);
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = 0; i < o->particletracer->totalParticles; ++i)
|
||||||
|
{
|
||||||
|
if(particlePool[i].flag == true)
|
||||||
|
{
|
||||||
|
double x = particlePool[i].x;
|
||||||
|
double y = particlePool[i].y;
|
||||||
|
fprintf(o->fh, "%.2f %.2f 0.0\n", x, y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf(o->fh, "CELLS %.0f float\n", o->particletracer->totalParticles);
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = 0, j = 0; i < o->particletracer->totalParticles; ++i)
|
||||||
|
{
|
||||||
|
if(particlePool[i].flag == true)
|
||||||
|
{
|
||||||
|
fprintf(o->fh, "1 %d\n", j);
|
||||||
|
++j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf(o->fh, "CELL_TYPES %.0f\n", o->particletracer->totalParticles);
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = 0; i < o->particletracer->totalParticles; ++i)
|
||||||
|
{
|
||||||
|
if(particlePool[i].flag == true)
|
||||||
|
{
|
||||||
|
fprintf(o->fh, "1\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
for (int k = 0; k < kmax; k++) {
|
||||||
|
for (int j = 0; j < jmax; j++) {
|
||||||
|
for (int i = 0; i < imax; i++) {
|
||||||
|
if (o->fmt == ASCII) {
|
||||||
|
fprintf(o->fh,
|
||||||
|
"%f %f %f\n",
|
||||||
|
G(vec.u, i, j, k),
|
||||||
|
G(vec.v, i, j, k),
|
||||||
|
G(vec.w, i, j, k));
|
||||||
|
} else if (o->fmt == BINARY) {
|
||||||
|
fwrite((float[3]) { floatSwap(G(vec.u, i, j, k)),
|
||||||
|
floatSwap(G(vec.v, i, j, k)),
|
||||||
|
floatSwap(G(vec.w, i, j, k)) },
|
||||||
|
sizeof(float),
|
||||||
|
3,
|
||||||
|
o->fh);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (o->fmt == BINARY) fprintf(o->fh, "\n");
|
||||||
|
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void vtkClose(VtkOptions* o)
|
||||||
|
{
|
||||||
|
fclose(o->fh);
|
||||||
|
o->fh = NULL;
|
||||||
|
}
|
0
BasicSolver/2D-seq/vis_files/particles_1.dat
Normal file
0
BasicSolver/2D-seq/vis_files/particles_1.dat
Normal file
0
BasicSolver/2D-seq/vis_files/particles_2.dat
Normal file
0
BasicSolver/2D-seq/vis_files/particles_2.dat
Normal file
12
BasicSolver/2D-seq/vtk_files/particles0.vtk
Normal file
12
BasicSolver/2D-seq/vtk_files/particles0.vtk
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# vtk DataFile Version 3.0
|
||||||
|
PAMPI cfd solver particle tracing file
|
||||||
|
ASCII
|
||||||
|
DATASET UNSTRUCTURED_GRID
|
||||||
|
FIELD FieldData 2
|
||||||
|
TIME 1 1 double
|
||||||
|
0
|
||||||
|
CYCLE 1 1 int
|
||||||
|
1
|
||||||
|
POINTS (null) float
|
||||||
|
CELLS 0 float
|
||||||
|
CELL_TYPES 0
|
12
BasicSolver/2D-seq/vtk_files/particles1.vtk
Normal file
12
BasicSolver/2D-seq/vtk_files/particles1.vtk
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# vtk DataFile Version 3.0
|
||||||
|
PAMPI cfd solver particle tracing file
|
||||||
|
ASCII
|
||||||
|
DATASET UNSTRUCTURED_GRID
|
||||||
|
FIELD FieldData 2
|
||||||
|
TIME 1 1 double
|
||||||
|
1
|
||||||
|
CYCLE 1 1 int
|
||||||
|
1
|
||||||
|
POINTS (null) float
|
||||||
|
CELLS 0 float
|
||||||
|
CELL_TYPES 0
|
12
BasicSolver/2D-seq/vtk_files/particles2.vtk
Normal file
12
BasicSolver/2D-seq/vtk_files/particles2.vtk
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# vtk DataFile Version 3.0
|
||||||
|
PAMPI cfd solver particle tracing file
|
||||||
|
ASCII
|
||||||
|
DATASET UNSTRUCTURED_GRID
|
||||||
|
FIELD FieldData 2
|
||||||
|
TIME 1 1 double
|
||||||
|
2
|
||||||
|
CYCLE 1 1 int
|
||||||
|
1
|
||||||
|
POINTS (null) float
|
||||||
|
CELLS 0 float
|
||||||
|
CELL_TYPES 0
|
0
BasicSolver/2D-seq/vtk_files/particles3.vtk
Normal file
0
BasicSolver/2D-seq/vtk_files/particles3.vtk
Normal file
Loading…
Reference in New Issue
Block a user