46 using VectorType = dealii::LinearAlgebra::distributed::Vector<Number>;
49 : timer_tree(std::make_shared<TimerTree>()),
50 adaptive_time_stepping_limiting_factor(std::numeric_limits<double>::min())
56 MPI_Comm
const mpi_comm,
60 application->setup(grid, mapping, multigrid_mappings);
63 pde_operator = IncNS::create_operator<dim, Number>(grid,
66 application->get_boundary_descriptor(),
67 application->get_field_functions(),
68 application->get_parameters(),
73 pde_operator->setup();
76 postprocessor = application->create_postprocessor();
77 postprocessor->setup(*pde_operator);
81 AssertThrow(application->get_parameters().solver_type == IncNS::SolverType::Unsteady,
82 dealii::ExcMessage(
"Invalid parameter in context of fluid-structure interaction."));
85 time_integrator = IncNS::create_time_integrator<dim, Number>(pde_operator,
88 application->get_parameters(),
92 time_integrator->setup(application->get_parameters().restarted_simulation);
95 pde_operator->initialize_vector_pressure(pressure_time_derivative);
98 adaptive_time_stepping_limiting_factor =
99 application->get_parameters().adaptive_time_stepping_limiting_factor;
103 max_next_time_step_size()
const
105 const auto dt = time_integrator->get_time_step_size();
106 return dt * adaptive_time_stepping_limiting_factor;
110 advance_one_timestep_and_compute_pressure_time_derivative(
bool const update_dpdt)
112 time_integrator->advance_one_timestep_pre_solve(
true);
113 time_integrator->advance_one_timestep_solve();
119 std::vector<VectorType const *> pressures;
120 std::vector<double> times;
121 time_integrator->get_pressures_and_times_np(pressures, times);
123 compute_bdf_time_derivative(pressure_time_derivative, pressures, times);
126 time_integrator->advance_one_timestep_post_solve();
130 get_pressure_time_derivative()
const
132 return pressure_time_derivative;
136 std::shared_ptr<Grid<dim>> grid;
137 std::shared_ptr<dealii::Mapping<dim>> mapping;
139 std::shared_ptr<MultigridMappings<dim, Number>> multigrid_mappings;
142 std::shared_ptr<IncNS::SpatialOperatorBase<dim, Number>> pde_operator;
145 std::shared_ptr<IncNS::TimeIntBDF<dim, Number>> time_integrator;
148 std::shared_ptr<IncNS::PostProcessorBase<dim, Number>> postprocessor;
151 std::shared_ptr<TimerTree> timer_tree;
157 VectorType pressure_time_derivative;
162 double adaptive_time_stepping_limiting_factor;