summaryrefslogtreecommitdiffstats
path: root/Smoke/fluids.c
diff options
context:
space:
mode:
Diffstat (limited to 'Smoke/fluids.c')
-rw-r--r--Smoke/fluids.c32
1 files changed, 15 insertions, 17 deletions
diff --git a/Smoke/fluids.c b/Smoke/fluids.c
index 89308b0..01ca443 100644
--- a/Smoke/fluids.c
+++ b/Smoke/fluids.c
@@ -75,15 +75,17 @@ void fluids_init_simulation(int n, struct vis_data_arrays *vis_data)
for (i = 0; i < HISTORY_SIZE; i++)
{
vis_data->history_frame[i] = (fftw_real *)malloc(dim1);
- vis_data->history_scalars[i] = (struct fftw_real_xy *)malloc(dim *sizeof(struct fftw_real_xy));
+ vis_data->history_scalars[i].x = (fftw_real *)malloc(dim1);
+ vis_data->history_scalars[i].y = (fftw_real *)malloc(dim1);
}
fluids_reset_simulation();
- vis_data->rho = rho;
+ vis_data->rho = (fftw_real *)malloc(dim2);
vis_data->force = (fftw_real *)malloc(dim2);
vis_data->vel = (fftw_real *)malloc(dim1);
- vis_data->scalars = (struct fftw_real_xy *)malloc(dim *sizeof(struct fftw_real_xy));
+ vis_data->scalars.x = (fftw_real *)malloc(dim1);
+ vis_data->scalars.y = (fftw_real *)malloc(dim1);
vis_data->div_force = (fftw_real *)malloc(dim2);
vis_data->div_vel = (fftw_real *)malloc(dim1);
vis_data->height = (fftw_real *)malloc(dim2);
@@ -354,9 +356,9 @@ float par_der(float vp1, float v, fftw_real cell)
return (vp1 - v / cell);
}
-struct fftw_real_xy_p get_scalar_frames(struct vis_data_arrays *vis_data, int dataset)
+struct fftw_real_xy get_scalar_frames(struct vis_data_arrays *vis_data, int dataset)
{
- struct fftw_real_xy_p return_value;
+ struct fftw_real_xy return_value;
switch(dataset)
{
@@ -423,7 +425,7 @@ void setup_arrays(struct vis_data_arrays *vis_data)
int idx, i, j;
float scale_min, scale_max;
fftw_real *frame_smoke, *frame_streamlines;
- struct fftw_real_xy_p scalar_frames_glyphs, scalar_frames_streamlines;
+ struct fftw_real_xy scalar_frames_glyphs, scalar_frames_streamlines;
int dataset;
@@ -448,16 +450,16 @@ void setup_arrays(struct vis_data_arrays *vis_data)
vis_data->rho[idx] = rho[idx];
vis_data->vel[idx] = vec_len2f(vx[idx], vy[idx]);
vis_data->force[idx] = vec_len2f(fx[idx], fy[idx]);
- vis_data->scalars[idx].x = scalar_frames_glyphs.x[idx];
- vis_data->scalars[idx].y = scalar_frames_glyphs.y[idx];
+ vis_data->scalars.x[idx] = scalar_frames_glyphs.x[idx];
+ vis_data->scalars.y[idx] = scalar_frames_glyphs.y[idx];
vis_data->div_vel[idx] = par_der(vx[idx + 1], vx[idx], wn) + par_der(vy[idx + 1], vy[idx], wn);
vis_data->div_force[idx] = par_der(fx[idx + 1], fx[idx], hn) + par_der(fy[idx + 1], fy[idx], hn);
vis_data->history_frame[fluids_hisdex][idx] = frame_streamlines[idx];
-// vis_data->history_scalars[fluids_hisdex].x[idx] = scalar_frames_streamlines.x[idx];
-// vis_data->history_scalars[fluids_hisdex].y[idx] = scalar_frames_streamlines.y[idx];
+ vis_data->history_scalars[fluids_hisdex].x[idx] = scalar_frames_streamlines.x[idx];
+ vis_data->history_scalars[fluids_hisdex].y[idx] = scalar_frames_streamlines.y[idx];
vis_data->height[idx] = calculate_height_plot(heightplots_get_dataset(), idx);
- // vis_data->normals[idx] = calculate_normal_vector(vis_data->height, idx, i, j);
+ vis_data->normals[idx] = calculate_normal_vector(vis_data->height, idx, i, j);
if (frame_smoke[idx] < scale_min && frame_smoke[idx] > FLT_MIN) scale_min = frame_smoke[idx];
if (frame_smoke[idx] > scale_max) scale_max = frame_smoke[idx];
@@ -483,7 +485,6 @@ void fluids_calculate_one_simulation_step(struct vis_data_arrays *vis_data)
{
int dataset;
fftw_real *frame;
- struct fftw_real_xy_p scalar_frames;
if (fluids_calculate) {
set_forces();
@@ -503,20 +504,17 @@ void fluids_calculate_one_simulation_step(struct vis_data_arrays *vis_data)
heightplots_set_frame(vis_data->height);
normals_set_frame(vis_data->normals);
-
dataset = glyphs_get_dataset_color();
frame = get_vector_frame(vis_data, dataset);
glyphs_set_frame_color(frame);
-
- dataset = glyphs_get_dataset_direction();
- scalar_frames = get_scalar_frames(vis_data, dataset);
- glyphs_set_frames_direction(scalar_frames);
+ glyphs_set_frames_direction(vis_data->scalars);
dataset = isolines_get_dataset();
frame = get_vector_frame(vis_data, dataset);
isolines_set_frame(frame);
streamlines_set_history(vis_data->history_frame);
+ streamlines_set_history_scalars(vis_data->history_scalars);
}
//------ VISUALIZATION CODE STARTS HERE -----------------------------------------------------------------