deal.II version GIT relicensing-6834-g5b78e6bcdf 2026-10-01 11:20: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
init_finalize.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) 2023 - 2025 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_init_finalize_h
14#define dealii_init_finalize_h
15
16#include <deal.II/base/config.h>
17
20#include <deal.II/base/types.h>
21
22#include <boost/signals2.hpp>
23
24#include <set>
25
26#ifdef DEAL_II_WITH_PSBLAS
27# include <psb_c_dbase.h>
28#endif
29
31
37{
41 None = 0,
45 MPI = 1,
49 Kokkos = 2,
53 SLEPc = 4,
57 PETSc = 8,
61 Zoltan = 16,
65 P4EST = 32,
69 PSBLAS = 64,
73 GMSH = 128
74};
75
76
77
84{
85 return static_cast<InitializeLibrary>(static_cast<unsigned int>(f1) |
86 static_cast<unsigned int>(f2));
87}
88
89
90
97{
98 return static_cast<InitializeLibrary>(static_cast<unsigned int>(f1) &
99 static_cast<unsigned int>(f2));
100}
101
102
103
109{
110public:
135 int &argc,
136 char **&argv,
138 const unsigned int max_num_threads = numbers::invalid_unsigned_int);
139
145
150 void
151 finalize();
152
179 static void
180 register_request(MPI_Request &request);
181
185 static void
186 unregister_request(MPI_Request &request);
187
188#ifdef DEAL_II_WITH_PSBLAS
192 static psb_c_ctxt *
193 get_psblas_context();
194#endif
195
203 struct Signals
204 {
209 boost::signals2::signal<void()> at_mpi_init;
210
217 boost::signals2::signal<void()> at_mpi_finalize;
218 };
219
221
222private:
224
228 static std::set<MPI_Request *> requests;
229
230 bool is_finalized = false;
231
232#ifdef DEAL_II_WITH_PETSC
234#endif
235
236#ifdef DEAL_II_WITH_PSBLAS
237 static psb_c_ctxt *cctxt;
238#endif
239};
240
242
243#endif
InitializeLibrary libraries
static void unregister_request(MPI_Request &request)
static void register_request(MPI_Request &request)
static std::set< MPI_Request * > requests
bool finalize_petscslepc
static Signals signals
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:38
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:39
InitializeLibrary operator|(const InitializeLibrary f1, const InitializeLibrary f2)
InitializeLibrary operator&(const InitializeLibrary f1, const InitializeLibrary f2)
InitializeLibrary
constexpr unsigned int invalid_unsigned_int
Definition types.h:228
boost::signals2::signal< void()> at_mpi_init
boost::signals2::signal< void()> at_mpi_finalize