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