8#include <compile_time_options.h>
16#include <deal.II/base/parameter_acceptor.h>
17#include <deal.II/base/partitioner.h>
18#include <deal.II/base/smartpointer.h>
19#include <deal.II/dofs/dof_handler.h>
20#include <deal.II/lac/affine_constraints.h>
21#include <deal.II/lac/la_parallel_vector.h>
22#include <deal.II/lac/sparse_matrix.h>
24#include <deal.II/numerics/data_out.h>
51 template <
int dim,
typename Number =
double>
71 std::tuple<
unsigned int ,
72 dealii::Tensor<1, dim, Number> ,
75 dealii::types::boundary_id ,
91 const std::string &subsection =
"/OfflineData");
101 void prepare(
const unsigned int problem_dimension,
102 const unsigned int n_precomputed_values,
104 bool create_matrices =
true,
105 bool create_multigrid_data =
true)
107 setup(problem_dimension, n_precomputed_values);
110 this->create_matrices();
112 if (create_multigrid_data)
113 this->create_multigrid_data();
294 void create_constraints_and_sparsity_pattern();
303 void setup(const
unsigned int problem_dimension,
304 const
unsigned int n_precomputed_values);
309 void create_matrices();
314 void create_multigrid_data();
324 std::unique_ptr<dealii::DoFHandler<dim>> dof_handler_;
326 dealii::AffineConstraints<Number> affine_constraints_;
328 std::shared_ptr<const dealii::Utilities::MPI::Partitioner>
331 std::shared_ptr<const dealii::Utilities::MPI::Partitioner>
332 hyperbolic_vector_partitioner_;
334 std::shared_ptr<const dealii::Utilities::MPI::Partitioner>
335 precomputed_vector_partitioner_;
337 unsigned int n_parabolic_state_vectors_;
339 unsigned int n_export_indices_;
340 unsigned int n_locally_internal_;
341 unsigned int n_locally_owned_;
342 unsigned int n_locally_relevant_;
345 BoundaryMap boundary_map_;
346 std::vector<BoundaryMap> level_boundary_map_;
349 CouplingBoundaryPairs coupling_boundary_pairs_;
351 dealii::DynamicSparsityPattern sparsity_pattern_;
354 sparsity_pattern_simd_;
367 Number measure_of_omega_;
374 template <typename ITERATOR1, typename ITERATOR2>
375 BoundaryMap construct_boundary_map(
376 const ITERATOR1 &begin,
377 const ITERATOR2 &end,
378 const dealii::Utilities::MPI::Partitioner &partitioner) const;
384 template <typename ITERATOR1, typename ITERATOR2>
385 CouplingBoundaryPairs collect_coupling_boundary_pairs(
386 const ITERATOR1 &begin,
387 const ITERATOR2 &end,
388 const dealii::Utilities::MPI::Partitioner &partitioner) const;
396 double incidence_relaxation_even_;
397 double incidence_relaxation_odd_;
const auto & n_export_indices() const
Vectors::ScalarVector< float > ScalarVectorFloat
const auto & boundary_map() const
const auto & n_parabolic_state_vectors() const
const auto & level_lumped_mass_matrix() const
const auto & lumped_mass_matrix_inverse() const
const auto & level_boundary_map() const
const auto & scalar_partitioner() const
const auto & sparsity_pattern() const
const auto & n_locally_owned() const
const auto & lumped_mass_matrix() const
const auto & affine_constraints() const
const auto & hyperbolic_vector_partitioner() const
const auto & precomputed_vector_partitioner() const
std::tuple< unsigned int, unsigned int, unsigned int > CouplingDescription
void prepare(const unsigned int problem_dimension, const unsigned int n_precomputed_values, const unsigned int n_parabolic_state_vectors, bool create_matrices=true, bool create_multigrid_data=true)
Vectors::ScalarVector< Number > ScalarVector
std::tuple< unsigned int, dealii::Tensor< 1, dim, Number >, Number, Number, dealii::types::boundary_id, dealii::Point< dim > > BoundaryDescription
const auto & mass_matrix_inverse() const
const auto & mass_matrix() const
const auto & discretization() const
OfflineData(const MPIEnsemble &mpi_ensemble, const Discretization< dim > &discretization, const std::string &subsection="/OfflineData")
const auto & measure_of_omega() const
const auto & n_locally_relevant() const
const auto & coupling_boundary_pairs() const
const auto & sparsity_pattern_simd() const
const auto & dof_handler() const
const auto & incidence_matrix() const
const auto & n_locally_internal() const
const auto & cij_matrix() const
#define ACCESSOR_READ_ONLY(member)
#define ACCESSOR_READ_ONLY_NO_DEREFERENCE(member)
dealii::LinearAlgebra::distributed::Vector< Number > ScalarVector