22#ifndef INCLUDE_EXADG_GRID_MAPPING_DEFORMATION_POISSON_H_
23#define INCLUDE_EXADG_GRID_MAPPING_DEFORMATION_POISSON_H_
26#include <deal.II/base/timer.h>
29#include <exadg/grid/mapping_deformation_base.h>
30#include <exadg/poisson/spatial_discretization/operator.h>
31#include <exadg/utilities/print_solver_results.h>
42template<
int dim,
typename Number>
46 typedef dealii::LinearAlgebra::distributed::Vector<Number> VectorType;
58 std::string
const & field,
59 MPI_Comm
const & mpi_comm)
61 pcout(std::cout, dealii::
Utilities::MPI::this_mpi_process(mpi_comm) == 0),
66 std::make_shared<Poisson::Operator<dim, dim, Number>>(grid,
68 multigrid_mappings_undeformed,
75 pde_operator->setup();
78 pde_operator->initialize_dof_vector(displacement);
81 std::shared_ptr<Poisson::Operator<dim, dim, Number>
const>
82 get_pde_operator()
const
87 dealii::MatrixFree<dim, Number>
const &
88 get_matrix_free()
const
90 return *pde_operator->get_matrix_free();
98 bool const print_solver_info,
99 types::time_step time_step_number)
override
102 (void)time_step_number;
108 pde_operator->initialize_dof_vector(rhs);
111 pde_operator->rhs(rhs, time);
113 auto const n_iter = pde_operator->solve(displacement, rhs, time);
114 iterations.first += 1;
115 iterations.second += n_iter;
117 if(print_solver_info)
119 this->pcout << std::endl <<
"Solve moving mesh problem (Poisson):";
120 print_solver_info_linear(pcout, n_iter, timer.wall_time());
125 pde_operator->get_dof_handler());
134 std::vector<std::string> names;
135 std::vector<double> iterations_avg;
137 names = {
"Linear iterations"};
138 iterations_avg.resize(1);
139 iterations_avg[0] = (double)iterations.second / std::max(1., (
double)iterations.first);
141 print_list_of_iterations(pcout, names, iterations_avg);
146 std::shared_ptr<Poisson::Operator<dim, dim, Number>> pde_operator;
153 dealii::ConditionalOStream pcout;
155 std::pair<
unsigned int ,
unsigned long long > iterations;
void initialize_mapping_from_dof_vector(std::shared_ptr< dealii::Mapping< dim > const > mapping, VectorType const &displacement_vector, dealii::DoFHandler< dim > const &dof_handler)
Definition mapping_dof_vector.h:212
Definition parameters.h:37
Definition interpolate.h:32
Definition boundary_descriptor.h:46
Definition field_functions.h:30