50 using VectorType = dealii::LinearAlgebra::distributed::Vector<Number>;
53 : timer_tree(std::make_shared<TimerTree>()),
54 adaptive_time_stepping_limiting_factor(std::numeric_limits<double>::min())
60 MPI_Comm
const mpi_comm,
64 application->setup(grid, mapping, multigrid_mappings);
67 pde_operator = IncNS::create_operator<dim, Number>(grid,
70 application->get_boundary_descriptor(),
71 application->get_field_functions(),
72 application->get_parameters(),
77 pde_operator->setup();
80 postprocessor = application->create_postprocessor();
81 postprocessor->setup(*pde_operator);
85 AssertThrow(application->get_parameters().solver_type == IncNS::SolverType::Unsteady,
86 dealii::ExcMessage(
"Invalid parameter in context of fluid-structure interaction."));
89 time_integrator = IncNS::create_time_integrator<dim, Number>(pde_operator,
92 application->get_parameters(),
96 time_integrator->setup(application->get_parameters().restarted_simulation);
99 pde_operator->initialize_vector_pressure(pressure_time_derivative);
102 adaptive_time_stepping_limiting_factor =
103 application->get_parameters().adaptive_time_stepping_limiting_factor;
107 max_next_time_step_size()
const
109 const auto dt = time_integrator->get_time_step_size();
110 return dt * adaptive_time_stepping_limiting_factor;
114 advance_one_timestep_and_compute_pressure_time_derivative(
bool const update_dpdt)
116 time_integrator->advance_one_timestep_pre_solve(
true);
117 time_integrator->advance_one_timestep_solve();
123 std::vector<VectorType const *> pressures;
124 std::vector<double> times;
125 time_integrator->get_pressures_and_times_np(pressures, times);
127 compute_bdf_time_derivative(pressure_time_derivative, pressures, times);
130 time_integrator->advance_one_timestep_post_solve();
134 get_pressure_time_derivative()
const
136 return pressure_time_derivative;
140 std::shared_ptr<Grid<dim>> grid;
141 std::shared_ptr<dealii::Mapping<dim>> mapping;
143 std::shared_ptr<MultigridMappings<dim, Number>> multigrid_mappings;
146 std::shared_ptr<IncNS::SpatialOperatorBase<dim, Number>> pde_operator;
149 std::shared_ptr<IncNS::TimeIntBDF<dim, Number>> time_integrator;
152 std::shared_ptr<IncNS::PostProcessorBase<dim, Number>> postprocessor;
155 std::shared_ptr<TimerTree> timer_tree;
161 VectorType pressure_time_derivative;
166 double adaptive_time_stepping_limiting_factor;