42 MPI_Comm
const mpi_comm,
46 application->setup(grid, mapping);
49 pde_operator = std::make_shared<Acoustics::SpatialOperator<dim, Number>>(
52 application->get_boundary_descriptor(),
53 application->get_field_functions(),
54 application->get_parameters(),
58 pde_operator->setup();
61 postprocessor = application->create_postprocessor();
62 postprocessor->setup(*pde_operator);
65 time_integrator = std::make_shared<Acoustics::TimeIntAdamsBashforthMoulton<Number>>(
66 pde_operator, application->get_parameters(), postprocessor, mpi_comm, is_test);
68 time_integrator->setup(application->get_parameters().restarted_simulation);
72 advance_multiple_timesteps(
double const macro_dt)
76 double const dt = time_integrator->get_time_step_size();
78 (macro_dt < dt) ? macro_dt : adjust_time_step_to_hit_end_time(0.0, macro_dt, dt);
84 double const eps = 0.01 * sub_dt;
87 unsigned int n_sub_time_steps = 0;
88 while(n_sub_time_steps * sub_dt + eps < macro_dt)
90 time_integrator->set_current_time_step_size(sub_dt);
91 time_integrator->advance_one_timestep();
95 if(time_integrator->started())
97 ++sub_time_steps.first;
98 sub_time_steps.second += n_sub_time_steps;
103 get_average_number_of_sub_time_steps()
const
105 return get_number_of_sub_time_steps() / get_number_of_macro_time_steps();
109 get_number_of_macro_time_steps()
const
111 return sub_time_steps.first;
115 get_number_of_sub_time_steps()
const
117 return sub_time_steps.second;
121 std::shared_ptr<Grid<dim>> grid;
122 std::shared_ptr<dealii::Mapping<dim>> mapping;
125 std::shared_ptr<Acoustics::SpatialOperator<dim, Number>> pde_operator;
128 std::shared_ptr<Acoustics::TimeIntAdamsBashforthMoulton<Number>> time_integrator;
131 std::shared_ptr<Acoustics::PostProcessorBase<dim, Number>> postprocessor;
134 std::pair<
unsigned int ,
unsigned long long > sub_time_steps;