40 MPI_Comm
const mpi_comm,
44 application->setup(grid, mapping);
47 pde_operator = std::make_shared<Acoustics::SpatialOperator<dim, Number>>(
50 application->get_boundary_descriptor(),
51 application->get_field_functions(),
52 application->get_parameters(),
56 pde_operator->setup();
59 postprocessor = application->create_postprocessor();
60 postprocessor->setup(*pde_operator);
63 time_integrator = std::make_shared<Acoustics::TimeIntAdamsBashforthMoulton<Number>>(
64 pde_operator, application->get_parameters(), postprocessor, mpi_comm, is_test);
66 time_integrator->setup(application->get_parameters().restarted_simulation);
70 advance_multiple_timesteps(
double const macro_dt)
74 double const dt = time_integrator->get_time_step_size();
76 (macro_dt < dt) ? macro_dt : adjust_time_step_to_hit_end_time(0.0, macro_dt, dt);
82 double const eps = 0.01 * sub_dt;
85 unsigned int n_sub_time_steps = 0;
86 while(n_sub_time_steps * sub_dt + eps < macro_dt)
88 time_integrator->set_current_time_step_size(sub_dt);
89 time_integrator->advance_one_timestep();
93 if(time_integrator->started())
95 ++sub_time_steps.first;
96 sub_time_steps.second += n_sub_time_steps;
101 get_average_number_of_sub_time_steps()
const
103 return get_number_of_sub_time_steps() / get_number_of_macro_time_steps();
107 get_number_of_macro_time_steps()
const
109 return sub_time_steps.first;
113 get_number_of_sub_time_steps()
const
115 return sub_time_steps.second;
119 std::shared_ptr<Grid<dim>> grid;
120 std::shared_ptr<dealii::Mapping<dim>> mapping;
123 std::shared_ptr<Acoustics::SpatialOperator<dim, Number>> pde_operator;
126 std::shared_ptr<Acoustics::TimeIntAdamsBashforthMoulton<Number>> time_integrator;
129 std::shared_ptr<Acoustics::PostProcessorBase<dim, Number>> postprocessor;
132 std::pair<
unsigned int ,
unsigned long long > sub_time_steps;