Reference documentation for deal.II version 9.5.0
\(\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
config.h
Go to the documentation of this file.
1// ---------------------------------------------------------------------
2//
3// Copyright (C) 2012 - 2023 by the deal.II authors
4//
5// This file is part of the deal.II library.
6//
7// The deal.II library is free software; you can use it, redistribute
8// it, and/or modify it under the terms of the GNU Lesser General
9// Public License as published by the Free Software Foundation; either
10// version 2.1 of the License, or (at your option) any later version.
11// The full text of the license can be found in the file LICENSE.md at
12// the top level directory of deal.II.
13//
14// ---------------------------------------------------------------------
15
16#ifndef dealii_config_h
17#define dealii_config_h
18
19
20/***********************************************************************
21 * Information about deal.II:
22 */
23
24#define DEAL_II_PACKAGE_NAME "deal.II"
25
26#define DEAL_II_PACKAGE_VERSION "9.5.0"
27
28#define DEAL_II_VERSION_MAJOR 9
29#define DEAL_II_VERSION_MINOR 5
30#define DEAL_II_VERSION_SUBMINOR 0
31
32
33/***********************************************************************
34 * Configured deal.II features:
35 */
36
37/* #undef DEAL_II_WITH_64BIT_INDICES */
38#define DEAL_II_WITH_ADOLC
39#define DEAL_II_WITH_ARPACK
40/* #undef DEAL_II_WITH_ARBORX */
41#define DEAL_II_WITH_ASSIMP
42/* #undef DEAL_II_FEATURE_BOOST_BUNDLED_CONFIGURED */
43#define DEAL_II_WITH_CGAL
44#define DEAL_II_WITH_COMPLEX_VALUES
45/* #undef DEAL_II_WITH_CUDA */
46#define DEAL_II_WITH_GINKGO
47#define DEAL_II_WITH_GMSH
48#define DEAL_II_WITH_GSL
49/* #undef DEAL_II_WITH_HDF5 */
50#define DEAL_II_WITH_KOKKOS
51/* #undef DEAL_II_FEATURE_KOKKOS_BUNDLED_CONFIGURED */
52#define DEAL_II_WITH_LAPACK
53/* #undef LAPACK_WITH_64BIT_BLAS_INDICES */
54/* #undef DEAL_II_LAPACK_WITH_MKL */
55#define DEAL_II_WITH_METIS
56/* #undef DEAL_II_WITH_MPI */
57#define DEAL_II_WITH_MUPARSER
58/* #undef DEAL_II_FEATURE_MUPARSER_BUNDLED_CONFIGURED */
59/* #undef DEAL_II_WITH_OPENCASCADE */
60/* #undef DEAL_II_WITH_P4EST */
61/* #undef DEAL_II_WITH_PETSC */
62/* #undef DEAL_II_WITH_SCALAPACK */
63/* #undef DEAL_II_WITH_SLEPC */
64#define DEAL_II_WITH_SUNDIALS
65#define DEAL_II_WITH_SYMENGINE
66#define DEAL_II_WITH_TBB
67/* #undef DEAL_II_FEATURE_TBB_BUNDLED_CONFIGURED */
68/* #undef DEAL_II_WITH_TRILINOS */
69#define DEAL_II_WITH_UMFPACK
70/* #undef DEAL_II_FEATURE_UMFPACK_BUNDLED_CONFIGURED */
71#define DEAL_II_WITH_ZLIB
72
73#ifdef DEAL_II_WITH_TBB
78#define DEAL_II_WITH_THREADS
79
80#define TBB_SUPPRESS_DEPRECATED_MESSAGES 1
81
82#define DEAL_II_TBB_WITH_ONEAPI
83
84#endif
85
86/***********************************************************************
87 * Compiler bugs:
88 *
89 * For documentation see cmake/checks/check_03_compiler_bugs.cmake
90 */
91
92/* #undef DEAL_II_DELETED_MOVE_CONSTRUCTOR_BUG */
93
94/***********************************************************************
95 * Compiler features:
96 *
97 * For documentation see cmake/checks/check_01_compiler_features.cmake
98 */
99
100#define DEAL_II_COMPILER_USE_VECTOR_ARITHMETICS
101/* #undef DEAL_II_VECTOR_ITERATOR_IS_POINTER */
102#define DEAL_II_HAVE_BUILTIN_EXPECT
103#define DEAL_II_HAVE_GLIBC_STACKTRACE
104#define DEAL_II_HAVE_LIBSTDCXX_DEMANGLER
105/* #undef __PRETTY_FUNCTION__ */
106#define DEAL_II_ALWAYS_INLINE __attribute__((always_inline))
107#define DEAL_II_RESTRICT __restrict
108#define DEAL_II_COMPILER_HAS_DIAGNOSTIC_PRAGMA
109
110/***********************************************************************
111 * CPU features:
112 *
113 * For documentation see cmake/checks/check_01_cpu_features.cmake
114 */
115
116/* #undef DEAL_II_WORDS_BIGENDIAN */
117
118/*
119 * This sets the largest number of vectorization bits detected for the given
120 * compiler flags and hardware (e.g. 256 for AVX on x86-64 architectures) for
121 * use in deal.II's intrinsics-based VectorizedArray class.
122 */
123#define DEAL_II_VECTORIZATION_WIDTH_IN_BITS 128
124
125/*
126 * Backward compatibility setting
127 */
128#if DEAL_II_VECTORIZATION_WIDTH_IN_BITS == 512
129#define DEAL_II_COMPILER_VECTORIZATION_LEVEL 3
130#elif DEAL_II_VECTORIZATION_WIDTH_IN_BITS == 256
131#define DEAL_II_COMPILER_VECTORIZATION_LEVEL 2
132#elif DEAL_II_VECTORIZATION_WIDTH_IN_BITS == 128
133#define DEAL_II_COMPILER_VECTORIZATION_LEVEL 1
134#else
135#define DEAL_II_COMPILER_VECTORIZATION_LEVEL 0
136#endif
137
138#define DEAL_II_OPENMP_SIMD_PRAGMA _Pragma("omp simd")
139
140
141/***********************************************************************
142 * Language features:
143 *
144 * For documentation see cmake/checks/check_01_cxx_features.cmake
145 */
146
147#define DEAL_II_HAVE_CXX14
148#define DEAL_II_HAVE_CXX17
149/* #undef DEAL_II_HAVE_CXX20 */
150
157#if defined(DEAL_II_HAVE_CXX20) && !defined(DEAL_II_DOXYGEN_DO_NOT_PARSE_REQUIRES_CLAUSES)
158# define DEAL_II_CXX20_REQUIRES(condition) requires(condition)
159#else
160# define DEAL_II_CXX20_REQUIRES(condition)
161#endif
162
163#define DEAL_II_HAVE_FP_EXCEPTIONS
164/* #undef DEAL_II_HAVE_COMPLEX_OPERATOR_OVERLOADS */
165#define DEAL_II_HAVE_CXX17_BESSEL_FUNCTIONS
166/* #undef DEAL_II_CXX14_CONSTEXPR_BUG */
167
172#define DEAL_II_DEPRECATED [[deprecated]]
173
180#ifndef DEAL_II_DEPRECATED_EARLY
181// guard to allow user to override DEAL_II_DEPRECATED_EARLY
182#define DEAL_II_DEPRECATED_EARLY
183#endif
184#define DEAL_II_FALLTHROUGH [[fallthrough]]
185#define DEAL_II_CONSTEXPR constexpr
186
187// The following two are defined for backwards compatibility with older deal.II versions:
188#define DEAL_II_WITH_CXX11
189#define DEAL_II_WITH_CXX14
190
191#ifdef DEAL_II_HAVE_CXX17
192# define DEAL_II_WITH_CXX17
193#endif
194
195
196/***********************************************************************
197 * System features:
198 *
199 * For documentation see cmake/checks/check_02_system_features.cmake
200 */
201
202#define DEAL_II_HAVE_SYS_RESOURCE_H
203#define DEAL_II_HAVE_UNISTD_H
204#define DEAL_II_HAVE_GETHOSTNAME
205#define DEAL_II_HAVE_GETPID
206/* #undef DEAL_II_HAVE_JN */
207
208/* #undef DEAL_II_MSVC */
209
210
211/***********************************************************************
212 * Feature configuration
213 *
214 * For documentation see cmake/configure/configure_*.cmake and
215 * cmake/modules/Find*.cmake
216 */
217
218/* cmake/modules/FindADOLC.cmake */
219#define DEAL_II_ADOLC_WITH_ATRIG_ERF
220#define DEAL_II_ADOLC_WITH_ADVANCED_BRANCHING
221/* #undef DEAL_II_ADOLC_WITH_TAPELESS_REFCOUNTING */
222
223/* cmake/modules/FindARBORX.cmake */
224#define DEAL_II_ARBORX_WITH_MPI
225
226/* cmake/modules/FindARPACK.cmake */
227/* #undef DEAL_II_ARPACK_WITH_PARPACK */
228
229/* cmake/modules/FindGMSH.cmake */
230#define DEAL_II_GMSH_WITH_API
231
232/* cmake/modules/FindPETSC.cmake */
233/* #undef DEAL_II_PETSC_WITH_COMPLEX */
234#define DEAL_II_PETSC_WITH_HYPRE
235#define DEAL_II_PETSC_WITH_MUMPS
236/* #undef DEAL_II_PETSC_WITH_KOKKOS */
237
238/* cmake/modules/FindSUNDIALS.cmake */
239#define DEAL_II_SUNDIALS_WITH_IDAS
240
241/* cmake/modules/FindSYMENGINE.cmake */
242#define DEAL_II_SYMENGINE_WITH_LLVM
243
244/* cmake/configure/configure_20_boost.cmake */
245/* #undef DEAL_II_BOOST_HAS_BROKEN_HEADER_DEPRECATIONS */
246
247/* cmake/configure/configure_50_cgal.cmake */
248/* #undef DEAL_II_CGAL_HAS_DEPRECATED_BOOST_INCLUDES */
249
250/* cmake/configure/configure_2_trilinos.cmake */
251/* #undef DEAL_II_TRILINOS_CXX_SUPPORTS_SACADO_COMPLEX_RAD */
252/* #undef DEAL_II_TRILINOS_WITH_BELOS */
253/* #undef DEAL_II_TRILINOS_WITH_EPETRAEXT */
254/* #undef DEAL_II_TRILINOS_WITH_MUELU */
255/* #undef DEAL_II_TRILINOS_WITH_NOX */
256/* #undef DEAL_II_TRILINOS_WITH_ROL */
257/* #undef DEAL_II_TRILINOS_WITH_SACADO */
258/* #undef DEAL_II_TRILINOS_WITH_SEACAS */
259/* #undef DEAL_II_TRILINOS_WITH_TPETRA */
260/* #undef DEAL_II_TRILINOS_WITH_ZOLTAN */
261
262#if defined(DEAL_II_BOOST_HAS_BROKEN_HEADER_DEPRECATIONS) || \
263 defined(DEAL_II_CGAL_HAS_DEPRECATED_BOOST_INCLUDES)
264# ifndef BOOST_ALLOW_DEPRECATED_HEADERS
265# define BOOST_ALLOW_DEPRECATED_HEADERS
266# endif
267#endif
268
269/***********************************************************************
270 * Various macros for version number query and comparison:
271 *
272 * These macros are defined to make testing for specific versions within
273 * the deal.II main code as simple as possible.
274 */
275
276/*
277 * deal.II:
278 */
279
286#define DEAL_II_VERSION_GTE(major,minor,subminor) \
287 ((DEAL_II_VERSION_MAJOR * 10000 + \
288 DEAL_II_VERSION_MINOR * 100 + \
289 DEAL_II_VERSION_SUBMINOR) \
290 >= \
291 (major)*10000 + (minor)*100 + (subminor))
292
293/*
294 * boost:
295 */
296#define DEAL_II_BOOST_VERSION_MAJOR 1
297#define DEAL_II_BOOST_VERSION_MINOR 82
298#define DEAL_II_BOOST_VERSION_SUBMINOR 0
299
300#define DEAL_II_BOOST_VERSION_GTE(major,minor,subminor) \
301 ((DEAL_II_BOOST_VERSION_MAJOR * 100000 + \
302 DEAL_II_BOOST_VERSION_MINOR * 100 + \
303 DEAL_II_BOOST_VERSION_SUBMINOR) \
304 >= \
305 (major)*100000 + (minor)*100 + (subminor))
306
307/*
308 * Gmsh:
309 */
310#ifdef DEAL_II_WITH_GMSH
311# define DEAL_II_GMSH_EXECUTABLE_PATH "/usr/bin/gmsh"
312#endif
313
318#ifdef DEAL_II_WITH_OPENCASCADE
319# define DEAL_II_OPENCASCADE_VERSION_MAJOR 7
320# define DEAL_II_OPENCASCADE_VERSION_MINOR 7
321# define DEAL_II_OPENCASCADE_VERSION_SUBMINOR 0
322
323# define DEAL_II_OPENCASCADE_VERSION_GTE(major,minor,subminor) \
324 ((DEAL_II_OPENCASCADE_VERSION_MAJOR * 10000 + \
325 DEAL_II_OPENCASCADE_VERSION_MINOR * 100 + \
326 DEAL_II_OPENCASCADE_VERSION_SUBMINOR) \
327 >= \
328 (major)*10000 + (minor)*100 + (subminor))
329#endif
330
331/*
332 * p4est:
333 */
334
335#ifdef DEAL_II_WITH_P4EST
336# define DEAL_II_P4EST_VERSION_MAJOR
337# define DEAL_II_P4EST_VERSION_MINOR
338# define DEAL_II_P4EST_VERSION_SUBMINOR
339# define DEAL_II_P4EST_VERSION_PATCH
340
341# define DEAL_II_P4EST_VERSION_GTE(major,minor,subminor,patch) \
342 ((DEAL_II_P4EST_VERSION_MAJOR * 1000000 + \
343 DEAL_II_P4EST_VERSION_MINOR * 10000 + \
344 DEAL_II_P4EST_VERSION_SUBMINOR * 100 + \
345 DEAL_II_P4EST_VERSION_PATCH) \
346 >= \
347 (major)*1000000 + (minor)*10000 + (subminor)*100 + (patch))
348#endif
349
350/*
351 * SUNDIALS:
352 */
353
354#ifdef DEAL_II_WITH_SUNDIALS
355 # define DEAL_II_SUNDIALS_VERSION_MAJOR 6
356 # define DEAL_II_SUNDIALS_VERSION_MINOR 5
357 # define DEAL_II_SUNDIALS_VERSION_PATCH 0
358
359 #define DEAL_II_SUNDIALS_VERSION_GTE(major,minor,patch) \
360 ((DEAL_II_SUNDIALS_VERSION_MAJOR * 10000 + \
361 DEAL_II_SUNDIALS_VERSION_MINOR * 100 + \
362 DEAL_II_SUNDIALS_VERSION_PATCH) \
363 >= \
364 (major)*10000 + (minor)*100 + (patch))
365
366 #define DEAL_II_SUNDIALS_VERSION_LT(major,minor,patch) \
367 ((DEAL_II_SUNDIALS_VERSION_MAJOR * 10000 + \
368 DEAL_II_SUNDIALS_VERSION_MINOR * 100 + \
369 DEAL_II_SUNDIALS_VERSION_PATCH) \
370 < \
371 (major)*10000 + (minor)*100 + (patch))
372#endif
373
374/*
375 * PETSc:
376 *
377 * Note: The following definitions will be set in petscconf.h and
378 * petscversion.h, so we don't repeat them here.
379 *
380 * PETSC_VERSION_MAJOR
381 * PETSC_VERSION_MINOR
382 * PETSC_VERSION_SUBMINOR
383 * PETSC_VERSION_PATCH
384 * PETSC_VERSION_RELEASE
385 * PETSC_USE_COMPLEX
386 */
387
388#define DEAL_II_PETSC_VERSION_LT(major,minor,subminor) \
389 ((PETSC_VERSION_MAJOR * 10000 + \
390 PETSC_VERSION_MINOR * 100 + \
391 PETSC_VERSION_SUBMINOR) \
392 < \
393 (major)*10000 + (minor)*100 + (subminor))
394
395#define DEAL_II_PETSC_VERSION_GTE(major,minor,subminor) \
396 ((PETSC_VERSION_MAJOR * 10000 + \
397 PETSC_VERSION_MINOR * 100 + \
398 PETSC_VERSION_SUBMINOR) \
399 >= \
400 (major)*10000 + (minor)*100 + (subminor))
401
402/*
403 * SLEPC
404 * see slepcversion.h
405 */
406#define DEAL_II_SLEPC_VERSION_GTE(major,minor,subminor) \
407 ((SLEPC_VERSION_MAJOR * 10000 + \
408 SLEPC_VERSION_MINOR * 100 + \
409 SLEPC_VERSION_SUBMINOR) \
410 >= \
411 (major)*10000 + (minor)*100 + (subminor))
412
413/*
414 * Trilinos:
415 */
416
417#ifdef DEAL_II_WITH_TRILINOS
418# define DEAL_II_TRILINOS_VERSION_MAJOR
419# define DEAL_II_TRILINOS_VERSION_MINOR
420# define DEAL_II_TRILINOS_VERSION_SUBMINOR
421
422# define DEAL_II_TRILINOS_VERSION_GTE(major,minor,subminor) \
423 ((DEAL_II_TRILINOS_VERSION_MAJOR * 10000 + \
424 DEAL_II_TRILINOS_VERSION_MINOR * 100 + \
425 DEAL_II_TRILINOS_VERSION_SUBMINOR) \
426 >= \
427 (major)*10000 + (minor)*100 + (subminor))
428#endif
429
430/*
431 * CGAL:
432 */
433
434#ifdef DEAL_II_WITH_CGAL
435# define DEAL_II_CGAL_VERSION_MAJOR 5
436# define DEAL_II_CGAL_VERSION_MINOR 5
437# define DEAL_II_CGAL_VERSION_SUBMINOR 2
438
439# define DEAL_II_CGAL_VERSION_GTE(major, minor, subminor) \
440 ((DEAL_II_CGAL_VERSION_MAJOR * 10000 + DEAL_II_CGAL_VERSION_MINOR * 100 + \
441 DEAL_II_CGAL_VERSION_SUBMINOR) >= \
442 (major)*10000 + (minor)*100 + (subminor))
443#endif
444
445/*
446 * MPI
447 */
448
449#ifdef DEAL_II_WITH_MPI
450# define DEAL_II_MPI_VERSION_MAJOR
451# define DEAL_II_MPI_VERSION_MINOR
452
453# define DEAL_II_MPI_VERSION_GTE(major,minor) \
454 ((DEAL_II_MPI_VERSION_MAJOR * 100 + \
455 DEAL_II_MPI_VERSION_MINOR) \
456 >= \
457 (major)*100 + (minor))
458#else
459# define DEAL_II_MPI_VERSION_GTE(major,minor) false
460#endif
461
462/* #undef DEAL_II_MPI_WITH_DEVICE_SUPPORT */
463#ifdef DEAL_II_MPI_WITH_DEVICE_SUPPORT
464/* #undef DEAL_II_MPI_WITH_CUDA_SUPPORT */
465#endif
466
467/***********************************************************************
468 * Two macro names that we put at the top and bottom of all deal.II files
469 * and that will be expanded to "namespace dealii {" and "}".
470 */
471
472#define DEAL_II_NAMESPACE_OPEN namespace dealii {
473#define DEAL_II_NAMESPACE_CLOSE }
474
475/***********************************************************************
476 * Two macros to guard external header includes.
477 *
478 * Selectively disable diagnostics set by "-Wextra" (and similar flags) for
479 * GCC and compiler accepting GCC dialects (such as clang).
480 * "diagnostic push" is supported since gcc-4.6 and clang-3.3.
481 */
482
483#ifdef DEAL_II_COMPILER_HAS_DIAGNOSTIC_PRAGMA
484
485/* keep pragmas with an exclamation mark in order.. */
486# define DEAL_II_DISABLE_EXTRA_DIAGNOSTICS \
487_Pragma("GCC diagnostic push") \
488_Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"") \
489_Pragma("GCC diagnostic ignored \"-Wpragmas\"") \
490_Pragma("GCC diagnostic ignored \"-Wunknown-warning-option\"") \
491_Pragma("GCC diagnostic ignored \"-Wunknown-warning\"") \
492_Pragma("GCC diagnostic ignored \"-Wextra\"") \
493_Pragma("GCC diagnostic ignored \"-Waddress-of-packed-member\"") \
494_Pragma("GCC diagnostic ignored \"-Wcast-function-type\"") \
495_Pragma("GCC diagnostic ignored \"-Wdeprecated-copy\"") \
496_Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \
497_Pragma("GCC diagnostic ignored \"-Wdeprecated-volatile\"") \
498_Pragma("GCC diagnostic ignored \"-Wexpansion-to-defined\"") \
499_Pragma("GCC diagnostic ignored \"-Wfloat-conversion\"") \
500_Pragma("GCC diagnostic ignored \"-Wignored-attributes\"") \
501_Pragma("GCC diagnostic ignored \"-Wignored-qualifiers\"") \
502_Pragma("GCC diagnostic ignored \"-Wimplicit-fallthrough\"") \
503_Pragma("GCC diagnostic ignored \"-Winfinite-recursion\"") \
504_Pragma("GCC diagnostic ignored \"-Wint-in-bool-context\"") \
505_Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") \
506_Pragma("GCC diagnostic ignored \"-Wmisleading-indentation\"") \
507_Pragma("GCC diagnostic ignored \"-Wmissing-field-initializers\"") \
508_Pragma("GCC diagnostic ignored \"-Wnested-anon-types\"") \
509_Pragma("GCC diagnostic ignored \"-Wnon-template-friend\"") \
510_Pragma("GCC diagnostic ignored \"-Wnon-virtual-dtor\"") \
511_Pragma("GCC diagnostic ignored \"-Wnonnull\"") \
512_Pragma("GCC diagnostic ignored \"-Woverflow\"") \
513_Pragma("GCC diagnostic ignored \"-Woverloaded-virtual\"") \
514_Pragma("GCC diagnostic ignored \"-Wpedantic\"") \
515_Pragma("GCC diagnostic ignored \"-Wsuggest-override\"") \
516_Pragma("GCC diagnostic ignored \"-Wtautological-constant-out-of-range-compare\"") \
517_Pragma("GCC diagnostic ignored \"-Wtautological-overlap-compare\"") \
518_Pragma("GCC diagnostic ignored \"-Wtype-limits\"") \
519_Pragma("GCC diagnostic ignored \"-Wundef\"") \
520_Pragma("GCC diagnostic ignored \"-Wunused-but-set-parameter\"") \
521_Pragma("GCC diagnostic ignored \"-Wunused-but-set-variable\"") \
522_Pragma("GCC diagnostic ignored \"-Wunused-function\"") \
523_Pragma("GCC diagnostic ignored \"-Wunused-parameter\"") \
524_Pragma("GCC diagnostic ignored \"-Wunused-private-field\"") \
525_Pragma("GCC diagnostic ignored \"-Wunused-variable\"") \
526_Pragma("GCC diagnostic ignored \"-Wuse-after-free\"") \
527_Pragma("GCC diagnostic warning \"-Wpragmas\"")
528
529# define DEAL_II_ENABLE_EXTRA_DIAGNOSTICS \
530_Pragma("GCC diagnostic pop")
531
532#else
533
534# define DEAL_II_DISABLE_EXTRA_DIAGNOSTICS
535# define DEAL_II_ENABLE_EXTRA_DIAGNOSTICS
536
537#endif
538
539/***********************************************************************
540 * Define macros for picking the correct C linkage name for a Fortran function.
541 * See cmake/configure/configure_fortran_mangling.cmake for more information.
542 */
543
544#define DEAL_II_FORTRAN_MANGLE(name, NAME) name ## _
545
546#define DEAL_II_FORTRAN_MANGLE_UNDERSCORE(name, NAME) name ## _
547
548/***********************************************************************
549 * Define a portable preprocessor macro that generates custom warnings
550 * reporting the line and the file where the warning appears. Taken from:
551 * http://goodliffe.blogspot.com/2009/07/c-how-to-say-warning-to-visual-studio-c.html
552 */
553
554#ifdef _MSC_VER
555 #define DEAL_II_STRINGIZE_HELPER(x) #x
556 #define DEAL_II_STRINGIZE(x) DEAL_II_STRINGIZE_HELPER(x)
557 #define DEAL_II_DO_PRAGMA(x) __pragma(x)
558 #define DEAL_II_WARNING(desc) DEAL_II_DO_PRAGMA(message(__FILE__ "(" DEAL_II_STRINGIZE(__LINE__) ") : warning: " #desc))
559#else
560 #define DEAL_II_DO_PRAGMA(x) _Pragma(#x)
561 #define DEAL_II_WARNING(desc) DEAL_II_DO_PRAGMA(message(#desc))
562#endif
563
564/***********************************************************************
565 * Some places in deal.II require or benefit from using "if constexpr".
566 * However, this feature is only available in C++17 and above.
567 * The macro defined here can be used so that
568 * "if DEAL_II_CONSTEXPR_IN_CONDITIONAL (...)" expands to "if constexpr(...)"
569 * when C++17 is supported and to "if (...)" otherwise.
570 */
571#ifdef DEAL_II_HAVE_CXX17
572 #define DEAL_II_CONSTEXPR_IN_CONDITIONAL constexpr
573#else
574 #define DEAL_II_CONSTEXPR_IN_CONDITIONAL
575#endif
576
577
578/***********************************************************************
579 * Final inclusions:
580 */
581
582/*
583 * Some systems require including mpi.h before stdio.h which happens in
584 * types.h
585 */
586#if defined(DEAL_II_WITH_MPI) || defined(DEAL_II_WITH_PETSC)
588# include <mpi.h>
590#endif
591
592#include <deal.II/base/numbers.h>
593#include <deal.II/base/types.h>
594
595/*
596 * Include the boost version header to do a quick version check in case, by
597 * accident, we have configured with one version of boost but are compiling
598 * either the library or an external application with a different version of
599 * boost.
600 */
601#include <boost/version.hpp>
602static_assert(
603 BOOST_VERSION == 100000 * DEAL_II_BOOST_VERSION_MAJOR +
606 "The version number of boost that you are compiling with does not match the "
607 "version number of boost found during deal.II's configuration step. This "
608 "leads to difficult to understand bugs and is not supported. Please check "
609 "that you have set up your application with the same version of boost as "
610 "deal.II.");
611
612#endif
#define DEAL_II_BOOST_VERSION_MINOR
Definition config.h:297
#define DEAL_II_DISABLE_EXTRA_DIAGNOSTICS
Definition config.h:486
#define DEAL_II_BOOST_VERSION_MAJOR
Definition config.h:296
#define DEAL_II_ENABLE_EXTRA_DIAGNOSTICS
Definition config.h:529
#define DEAL_II_BOOST_VERSION_SUBMINOR
Definition config.h:298