Skip to content

Commit

Permalink
Fix for output files being overwritten (#255)
Browse files Browse the repository at this point in the history
When outputting files using the parameter
`output_solution_every_dt_time_intervals` there are instances where
casting to int results in the same `file_number` being used twice. When
the same `file_number` is used twice, the previous output file is
overwritten with the newer output. Examples of these cases are shown
below.


![fileOutputBug_1](https://github.com/dougshidong/PHiLiP/assets/64045004/1b6bff2c-71de-4c70-b08b-6f6788d429bb)

![fileOutputBug_2](https://github.com/dougshidong/PHiLiP/assets/64045004/95bbdbbd-880c-4656-af54-c98cbce841d3)

To fix this I changed the type for `file_number` to double so that the
round function can be used. With this fix, output files are no longer
being overwritten.
  • Loading branch information
ssaishruthi98 authored Mar 26, 2024
1 parent 382d5b4 commit 73ca0bb
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/flow_solver/flow_solver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -521,7 +521,7 @@ int FlowSolver<dim,nstate>::run() const
const bool is_output_time = ((ode_solver->current_time <= current_desired_time_for_output_restart_files_every_dt_time_intervals) &&
((ode_solver->current_time + next_time_step) > current_desired_time_for_output_restart_files_every_dt_time_intervals));
if (is_output_time) {
const unsigned int file_number = current_desired_time_for_output_restart_files_every_dt_time_intervals / flow_solver_param.output_restart_files_every_dt_time_intervals;
const unsigned int file_number = int(round(current_desired_time_for_output_restart_files_every_dt_time_intervals / flow_solver_param.output_restart_files_every_dt_time_intervals));
output_restart_files(file_number, next_time_step, unsteady_data_table);
current_desired_time_for_output_restart_files_every_dt_time_intervals += flow_solver_param.output_restart_files_every_dt_time_intervals;
}
Expand All @@ -540,15 +540,15 @@ int FlowSolver<dim,nstate>::run() const
const bool is_output_iteration = (ode_solver->current_iteration % ode_param.output_solution_every_x_steps == 0);
if (is_output_iteration) {
pcout << " ... Writing vtk solution file ..." << std::endl;
const int file_number = ode_solver->current_iteration / ode_param.output_solution_every_x_steps;
const unsigned int file_number = ode_solver->current_iteration / ode_param.output_solution_every_x_steps;
dg->output_results_vtk(file_number,ode_solver->current_time);
}
} else if(ode_param.output_solution_every_dt_time_intervals > 0.0) {
const bool is_output_time = ((ode_solver->current_time <= ode_solver->current_desired_time_for_output_solution_every_dt_time_intervals) &&
((ode_solver->current_time + next_time_step) > ode_solver->current_desired_time_for_output_solution_every_dt_time_intervals));
if (is_output_time) {
pcout << " ... Writing vtk solution file ..." << std::endl;
const int file_number = ode_solver->current_desired_time_for_output_solution_every_dt_time_intervals / ode_param.output_solution_every_dt_time_intervals;
const unsigned int file_number = int(round(ode_solver->current_desired_time_for_output_solution_every_dt_time_intervals / ode_param.output_solution_every_dt_time_intervals));
dg->output_results_vtk(file_number,ode_solver->current_time);
ode_solver->current_desired_time_for_output_solution_every_dt_time_intervals += ode_param.output_solution_every_dt_time_intervals;
}
Expand Down

0 comments on commit 73ca0bb

Please sign in to comment.