8#include <compile_time_options.h>
15#include <deal.II/base/parameter_acceptor.h>
16#include <deal.II/base/partitioner.h>
17#include <deal.II/dofs/dof_handler.h>
18#include <deal.II/lac/affine_constraints.h>
19#include <deal.II/lac/la_parallel_vector.h>
20#include <deal.II/lac/sparse_matrix.h>
22#include <deal.II/numerics/data_out.h>
46 template <
int dim,
typename Number =
double>
54 using scalar_type = dealii::LinearAlgebra::distributed::Vector<Number>;
62 std::tuple<dealii::Tensor<1, dim, Number> ,
65 dealii::types::boundary_id ,
73 const std::string &subsection =
"/OfflineData");
82 void prepare(
const unsigned int problem_dimension)
84 setup(problem_dimension);
86 create_multigrid_data();
237 void create_constraints_and_sparsity_pattern();
246 void setup(const
unsigned int problem_dimension);
256 void create_multigrid_data();
258 std::unique_ptr<dealii::DoFHandler<dim>> dof_handler_;
260 dealii::AffineConstraints<Number> affine_constraints_;
262 std::shared_ptr<const dealii::Utilities::MPI::Partitioner>
265 std::shared_ptr<const dealii::Utilities::MPI::Partitioner>
268 unsigned int n_export_indices_;
269 unsigned int n_locally_internal_;
270 unsigned int n_locally_owned_;
271 unsigned int n_locally_relevant_;
273 using boundary_map_type =
275 using coupling_boundary_pairs_type =
276 std::vector<std::tuple<dealii::types::global_dof_index,
278 dealii::types::global_dof_index>>;
279 boundary_map_type boundary_map_;
280 coupling_boundary_pairs_type coupling_boundary_pairs_;
282 std::vector<boundary_map_type> level_boundary_map_;
284 dealii::DynamicSparsityPattern sparsity_pattern_;
287 sparsity_pattern_simd_;
291 dealii::LinearAlgebra::distributed::Vector<Number> lumped_mass_matrix_;
292 dealii::LinearAlgebra::distributed::Vector<Number>
293 lumped_mass_matrix_inverse_;
295 std::vector<dealii::LinearAlgebra::distributed::Vector<
float>>
296 level_lumped_mass_matrix_;
301 Number measure_of_omega_;
305 const MPI_Comm &mpi_communicator_;
310 template <typename ITERATOR1, typename ITERATOR2>
311 boundary_map_type construct_boundary_map(
312 const ITERATOR1 &begin,
313 const ITERATOR2 &end,
314 const dealii::Utilities::MPI::Partitioner &partitioner) const;
auto & cij_matrix() const
auto & dof_handler() const
auto & n_locally_owned() const
const auto & scalar_partitioner() const
auto & n_locally_internal() const
auto & coupling_boundary_pairs() const
auto & boundary_map() const
auto & sparsity_pattern() const
std::tuple< dealii::Tensor< 1, dim, Number >, Number, Number, dealii::types::boundary_id, dealii::Point< dim > > boundary_description
auto & level_lumped_mass_matrix() const
auto & betaij_matrix() const
const auto & vector_partitioner() const
auto & discretization() const
auto & mass_matrix() const
auto & sparsity_pattern_simd() const
auto & lumped_mass_matrix() const
auto & n_locally_relevant() const
void prepare(const unsigned int problem_dimension)
auto & level_boundary_map() const
dealii::LinearAlgebra::distributed::Vector< Number > scalar_type
OfflineData(const MPI_Comm &mpi_communicator, const Discretization< dim > &discretization, const std::string &subsection="/OfflineData")
auto & measure_of_omega() const
auto & lumped_mass_matrix_inverse() const
auto & n_export_indices() const
auto & affine_constraints() const
#define ACCESSOR_READ_ONLY(member)
#define ACCESSOR_READ_ONLY_NO_DEREFERENCE(member)