deal.II version GIT relicensing-6816-g8d70a4508a 2026-09-28 16:30:01+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
sparsity_tools.h
Go to the documentation of this file.
1// -----------------------------------------------------------------------------
2//
3// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception OR LGPL-2.1-or-later
4// Copyright (C) 2008 - 2023 by the deal.II authors
5//
6// This file is part of the deal.II library.
7//
8// Detailed license information governing the source code and contributions
9// can be found in LICENSE.md and CONTRIBUTING.md at the top level directory.
10//
11// -----------------------------------------------------------------------------
12
13#ifndef dealii_sparsity_tools_h
14#define dealii_sparsity_tools_h
15
16
17#include <deal.II/base/config.h>
18
22
26
27#include <memory>
28#include <vector>
29
31
32
45{
49 enum class Partitioner
50 {
54 metis = 0,
58 zoltan
59 };
60
61
97 void
98 partition(const SparsityPattern &sparsity_pattern,
99 const unsigned int n_partitions,
100 std::vector<unsigned int> &partition_indices,
101 const Partitioner partitioner = Partitioner::metis);
102
103
114 void
115 partition(const SparsityPattern &sparsity_pattern,
116 const std::vector<unsigned int> &cell_weights,
117 const unsigned int n_partitions,
118 std::vector<unsigned int> &partition_indices,
119 const Partitioner partitioner = Partitioner::metis);
120
153 unsigned int
154 color_sparsity_pattern(const SparsityPattern &sparsity_pattern,
155 std::vector<unsigned int> &color_indices);
156
206 void
208 const DynamicSparsityPattern &sparsity,
209 std::vector<DynamicSparsityPattern::size_type> &new_indices,
210 const std::vector<DynamicSparsityPattern::size_type> &starting_indices =
211 std::vector<DynamicSparsityPattern::size_type>());
212
234 void
236 const DynamicSparsityPattern &sparsity,
237 std::vector<DynamicSparsityPattern::size_type> &new_indices);
238
239#ifdef DEAL_II_WITH_MPI
264 void
266 const IndexSet &locally_owned_rows,
267 const MPI_Comm mpi_comm,
268 const IndexSet &locally_relevant_rows);
269
280 void
283 const std::vector<DynamicSparsityPattern::size_type> &rows_per_cpu,
284 const MPI_Comm mpi_comm,
285 const IndexSet &myrange);
286
301 void
303 const IndexSet &locally_owned_rows,
304 const MPI_Comm mpi_comm,
305 const IndexSet &locally_relevant_rows);
306
311 void
313 const std::vector<IndexSet> &owned_set_per_cpu,
314 const MPI_Comm mpi_comm,
315 const IndexSet &myrange);
316
340 void
342 const IndexSet &locally_owned_rows,
343 const MPI_Comm mpi_comm,
344 const IndexSet &locally_relevant_rows);
345
346#endif
347
348
353 "The function you called requires METIS, but you did not "
354 "configure deal.II with METIS.");
355
360 int,
361 << "The number of partitions you gave is " << arg1
362 << ", but must be greater than zero.");
363
368 int,
369 << " An error with error number " << arg1
370 << " occurred while calling a METIS function");
371
376 int,
377 int,
378 << "The array has size " << arg1 << " but should have size "
379 << arg2);
385 "The function you called requires ZOLTAN, but you did not "
386 "configure deal.II with ZOLTAN or zoltan_cpp.h is not available.");
387} // namespace SparsityTools
388
394
395#endif
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:38
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:39
static ::ExceptionBase & ExcMETISNotInstalled()
static ::ExceptionBase & ExcInvalidNumberOfPartitions(int arg1)
static ::ExceptionBase & ExcMETISError(int arg1)
#define DeclException2(Exception2, type1, type2, outsequence)
#define DeclExceptionMsg(Exception, defaulttext)
static ::ExceptionBase & ExcInvalidArraySize(int arg1, int arg2)
#define DeclException1(Exception1, type1, outsequence)
static ::ExceptionBase & ExcZOLTANNotInstalled()
unsigned int color_sparsity_pattern(const SparsityPattern &sparsity_pattern, std::vector< unsigned int > &color_indices)
void partition(const SparsityPattern &sparsity_pattern, const unsigned int n_partitions, std::vector< unsigned int > &partition_indices, const Partitioner partitioner=Partitioner::metis)
void reorder_hierarchical(const DynamicSparsityPattern &sparsity, std::vector< DynamicSparsityPattern::size_type > &new_indices)
void distribute_sparsity_pattern(DynamicSparsityPattern &dsp, const IndexSet &locally_owned_rows, const MPI_Comm mpi_comm, const IndexSet &locally_relevant_rows)
void gather_sparsity_pattern(DynamicSparsityPattern &dsp, const IndexSet &locally_owned_rows, const MPI_Comm mpi_comm, const IndexSet &locally_relevant_rows)
void reorder_Cuthill_McKee(const DynamicSparsityPattern &sparsity, std::vector< DynamicSparsityPattern::size_type > &new_indices, const std::vector< DynamicSparsityPattern::size_type > &starting_indices=std::vector< DynamicSparsityPattern::size_type >())