Loading [MathJax]/extensions/TeX/newcommand.js
 deal.II version GIT relicensing-2684-gc61376a70f 2025-02-22 15:30:00+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\}}
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
init_finalize.h
Go to the documentation of this file.
1// ------------------------------------------------------------------------
2//
3// SPDX-License-Identifier: LGPL-2.1-or-later
4// Copyright (C) 2023 - 2024 by the deal.II authors
5//
6// This file is part of the deal.II library.
7//
8// Part of the source code is dual licensed under Apache-2.0 WITH
9// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
10// governing the source code and code contributions can be found in
11// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
12//
13// ------------------------------------------------------------------------
14
15#ifndef dealii_init_finalize_h
16#define dealii_init_finalize_h
17
18#include <deal.II/base/config.h>
19
22#include <deal.II/base/types.h>
23
24#include <boost/signals2.hpp>
25
26#include <set>
27
29
35{
39 None = 0,
43 MPI = 1,
47 Kokkos = 2,
51 SLEPc = 4,
55 PETSc = 8,
59 Zoltan = 16,
63 P4EST = 32
64};
65
66
67
74{
75 return static_cast<InitializeLibrary>(static_cast<unsigned int>(f1) |
76 static_cast<unsigned int>(f2));
77}
78
79
80
87{
88 return static_cast<InitializeLibrary>(static_cast<unsigned int>(f1) &
89 static_cast<unsigned int>(f2));
90}
91
92
93
99{
100public:
125 int &argc,
126 char **&argv,
128 const unsigned int max_num_threads = numbers::invalid_unsigned_int);
129
135
140 void
141 finalize();
142
169 static void
170 register_request(MPI_Request &request);
171
175 static void
176 unregister_request(MPI_Request &request);
177
185 struct Signals
186 {
191 boost::signals2::signal<void()> at_mpi_init;
192
199 boost::signals2::signal<void()> at_mpi_finalize;
200 };
201
203
204private:
206
210 static std::set<MPI_Request *> requests;
211
212 bool is_finalized = false;
213
214#ifdef DEAL_II_WITH_PETSC
216#endif
217};
218
220
221#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:522
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:523
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:232
boost::signals2::signal< void()> at_mpi_init
boost::signals2::signal< void()> at_mpi_finalize