Reference documentation for deal.II version 8.4.2
config.h
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2012 - 2016 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 at
12 // the top level of the deal.II distribution.
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 "8.4.2"
27 
28 #define DEAL_II_VERSION_MAJOR 8
29 #define DEAL_II_VERSION_MINOR 4
30 #define DEAL_II_VERSION_SUBMINOR 2
31 
32 
33 /***********************************************************************
34  * Configured deal.II features:
35  */
36 
37 /* #undef DEAL_II_WITH_64BIT_INDICES */
38 #define DEAL_II_WITH_ARPACK
39 #define DEAL_II_WITH_BZIP2
40 #define DEAL_II_WITH_CXX11
41 #define DEAL_II_WITH_CXX14
42 #define DEAL_II_WITH_HDF5
43 #define DEAL_II_WITH_LAPACK
44 /* #undef DEAL_II_WITH_METIS */
45 #define DEAL_II_WITH_MPI
46 #define DEAL_II_WITH_MUPARSER
47 #define DEAL_II_WITH_NETCDF
48 #define DEAL_II_WITH_OPENCASCADE
49 #define DEAL_II_WITH_P4EST
50 #define DEAL_II_WITH_PETSC
51 #define DEAL_II_WITH_SLEPC
52 #define DEAL_II_WITH_THREADS
53 #define DEAL_II_WITH_TRILINOS
54 #define DEAL_II_WITH_UMFPACK
55 #define DEAL_II_WITH_ZLIB
56 
57 
58 /***********************************************************************
59  * Compiler bugs:
60  *
61  * For documentation see cmake/checks/check_03_compiler_bugs.cmake
62  */
63 
64 /* #undef DEAL_II_TEMPL_SPEC_FRIEND_BUG */
65 /* #undef DEAL_II_MEMBER_ARRAY_SPECIALIZATION_BUG */
66 /* #undef DEAL_II_MEMBER_VAR_SPECIALIZATION_BUG */
67 /* #undef DEAL_II_EXPLICIT_CONSTRUCTOR_BUG */
68 /* #undef DEAL_II_CONST_MEMBER_DEDUCTION_BUG */
69 /* #undef DEAL_II_BOOST_BIND_COMPILER_BUG */
70 /* #undef DEAL_II_BIND_NO_CONST_OP_PARENTHESES */
71 /* #undef DEAL_II_CONSTEXPR_BUG */
72 /* #undef DEAL_II_ICC_SFINAE_BUG */
73 
74 
75 /***********************************************************************
76  * Compiler features:
77  *
78  * For documentation see cmake/checks/check_01_compiler_features.cmake
79  */
80 
81 #define DEAL_II_COMPILER_USE_VECTOR_ARITHMETICS
82 /* #undef DEAL_II_VECTOR_ITERATOR_IS_POINTER */
83 #define DEAL_II_HAVE_BUILTIN_EXPECT
84 #define DEAL_II_HAVE_VERBOSE_TERMINATE
85 #define DEAL_II_HAVE_GLIBC_STACKTRACE
86 #define DEAL_II_HAVE_LIBSTDCXX_DEMANGLER
87 /* #undef __PRETTY_FUNCTION__ */
88 #define DEAL_II_DEPRECATED __attribute__((deprecated))
89 #define DEAL_II_ALWAYS_INLINE __attribute__((always_inline))
90 #define DEAL_II_COMPILER_HAS_DIAGNOSTIC_PRAGMA
91 
92 
93 /***********************************************************************
94  * CPU features:
95  *
96  * For documentation see cmake/checks/check_01_cpu_features.cmake
97  */
98 
99 /* #undef DEAL_II_WORDS_BIGENDIAN */
100 #define DEAL_II_COMPILER_VECTORIZATION_LEVEL 0
101 #define DEAL_II_OPENMP_SIMD_PRAGMA _Pragma("omp simd")
102 
103 
104 /***********************************************************************
105  * Language features:
106  *
107  * For documentation see cmake/checks/check_01_cxx_features.cmake
108  */
109 
110 #define DEAL_II_HAVE_CXX11_IS_TRIVIALLY_COPYABLE
111 /* #undef DEAL_II_HAVE_ISNAN */
112 #define DEAL_II_HAVE_STD_ISNAN
113 /* #undef DEAL_II_HAVE_UNDERSCORE_ISNAN */
114 #define DEAL_II_HAVE_ISFINITE
115 #define DEAL_II_HAVE_FP_EXCEPTIONS
116 /* #undef DEAL_II_HAVE_COMPLEX_OPERATOR_OVERLOADS */
117 
118 
119 /***********************************************************************
120  * System features:
121  *
122  * For documentation see cmake/checks/check_02_system_features.cmake
123  */
124 
125 #define DEAL_II_HAVE_SYS_RESOURCE_H
126 #define DEAL_II_HAVE_SYS_TIME_H
127 #define DEAL_II_HAVE_SYS_TIMES_H
128 #define DEAL_II_HAVE_SYS_TYPES_H
129 #define DEAL_II_HAVE_UNISTD_H
130 #define DEAL_II_HAVE_GETHOSTNAME
131 #define DEAL_II_HAVE_GETPID
132 #define DEAL_II_HAVE_TIMES
133 #define DEAL_II_HAVE_JN
134 
135 /* #undef DEAL_II_MSVC */
136 
137 
138 /***********************************************************************
139  * Feature configuration
140  *
141  * For documentation see cmake/configure/configure_*.cmake and
142  * cmake/modules/Find*.cmake
143  */
144 
145 /* cmake/modules/FindARPACK.cmake */
146 #define DEAL_II_ARPACK_WITH_PARPACK
147 
148 /* cmake/configure/configure_1_threads.cmake */
149 #define DEAL_II_USE_MT_POSIX
150 /* #undef DEAL_II_USE_MT_POSIX_NO_BARRIERS */
151 
152 /*
153  * Depending on the use of threads, we will have to make some variables
154  * volatile. We do this here in a very old-fashioned C-style, but still
155  * convenient way.
156  */
157 #ifdef DEAL_II_WITH_THREADS
158 # define DEAL_VOLATILE volatile
159 #else
160 # define DEAL_VOLATILE
161 #endif
162 
163 
164 /***********************************************************************
165  * Various macros for version number query and comparison:
166  *
167  * These macros are defined to make testing for specific versions within
168  * the deal.II main code as simple as possible.
169  */
170 
171 /*
172  * deal.II:
173  */
174 
175 #define DEAL_II_VERSION_GTE(major,minor,subminor) \
176  ((DEAL_II_VERSION_MAJOR * 10000 + \
177  DEAL_II_VERSION_MINOR * 100 + \
178  DEAL_II_VERSION_SUBMINOR) \
179  >= \
180  (major)*10000 + (minor)*100 + (subminor))
181 
182 /*
183  * p4est:
184  */
185 
186 #ifdef DEAL_II_WITH_P4EST
187 # define DEAL_II_P4EST_VERSION_MAJOR 1
188 # define DEAL_II_P4EST_VERSION_MINOR 1
189 # define DEAL_II_P4EST_VERSION_SUBMINOR 0
190 # define DEAL_II_P4EST_VERSION_PATCH 0
191 
192 # define DEAL_II_P4EST_VERSION_GTE(major,minor,subminor,patch) \
193  ((DEAL_II_P4EST_VERSION_MAJOR * 1000000 + \
194  DEAL_II_P4EST_VERSION_MINOR * 10000 + \
195  DEAL_II_P4EST_VERSION_SUBMINOR * 100 + \
196  DEAL_II_P4EST_VERSION_PATCH) \
197  >= \
198  (major)*1000000 + (minor)*10000 + (subminor)*100 + (patch))
199 #else
200  // p4est up to 0.3.4.1 didn't define P4EST_VERSION_*. since
201  // we didn't supports anything before 0.3.4, we assume 0.3.4
202  // This means that we can't use the new features in 0.3.4.1
203 # define DEAL_II_P4EST_VERSION_GTE(major,minor,subminor,patch) \
204  ((0 * 1000000 + \
205  3 * 10000 + \
206  4 * 100 + \
207  0) \
208  >= \
209  (major)*1000000 + (minor)*10000 + (subminor)*100 + (patch))
210 #endif
211 
212 /*
213  * PETSc:
214  *
215  * Note: The following definitions will be set in petscconf.h and
216  * petscversion.h, so we don't repeat them here.
217  *
218  * PETSC_VERSION_MAJOR
219  * PETSC_VERSION_MINOR
220  * PETSC_VERSION_SUBMINOR
221  * PETSC_VERSION_PATCH
222  * PETSC_VERSION_RELEASE
223  * PETSC_USE_COMPLEX
224  */
225 
226 #define DEAL_II_PETSC_VERSION_LT(major,minor,subminor) \
227  ((PETSC_VERSION_MAJOR * 10000 + \
228  PETSC_VERSION_MINOR * 100 + \
229  PETSC_VERSION_SUBMINOR) \
230  < \
231  (major)*10000 + (minor)*100 + (subminor))
232 
233 #define DEAL_II_PETSC_VERSION_GTE(major,minor,subminor) \
234  ((PETSC_VERSION_MAJOR * 10000 + \
235  PETSC_VERSION_MINOR * 100 + \
236  PETSC_VERSION_SUBMINOR) \
237  >= \
238  (major)*10000 + (minor)*100 + (subminor))
239 
240 /*
241  * Trilinos:
242  */
243 
244 #ifdef DEAL_II_WITH_TRILINOS
245 # define DEAL_II_TRILINOS_VERSION_MAJOR 12
246 # define DEAL_II_TRILINOS_VERSION_MINOR 10
247 # define DEAL_II_TRILINOS_VERSION_SUBMINOR 1
248 
249 # define DEAL_II_TRILINOS_VERSION_GTE(major,minor,subminor) \
250  ((DEAL_II_TRILINOS_VERSION_MAJOR * 10000 + \
251  DEAL_II_TRILINOS_VERSION_MINOR * 100 + \
252  DEAL_II_TRILINOS_VERSION_SUBMINOR) \
253  >= \
254  (major)*10000 + (minor)*100 + (subminor))
255 #endif
256 
257 
258 /***********************************************************************
259  * Two macro names that we put at the top and bottom of all deal.II files
260  * and that will be expanded to "namespace dealii {" and "}".
261  */
262 
263 #define DEAL_II_NAMESPACE_OPEN namespace dealii {
264 #define DEAL_II_NAMESPACE_CLOSE }
265 
266 
267 /***********************************************************************
268  * Two macros to guard external header includes.
269  *
270  * Selectively disable diagnostics set by "-Wextra" (and similar flags) for
271  * GCC and compiler accepting GCC dialects (such as clang).
272  * "diagnostic push" is supported since gcc-4.6 and clang-3.3.
273  */
274 
275 #ifdef DEAL_II_COMPILER_HAS_DIAGNOSTIC_PRAGMA
276 
277 # define DEAL_II_DISABLE_EXTRA_DIAGNOSTICS \
278 _Pragma("GCC diagnostic push") \
279 _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"") \
280 _Pragma("GCC diagnostic ignored \"-Wpragmas\"") \
281 _Pragma("GCC diagnostic ignored \"-Wextra\"") \
282 _Pragma("GCC diagnostic ignored \"-Woverloaded-virtual\"") \
283 _Pragma("GCC diagnostic ignored \"-Wunused-function\"") \
284 _Pragma("GCC diagnostic ignored \"-Wunused-parameter\"") \
285 _Pragma("GCC diagnostic ignored \"-Wunused-variable\"") \
286 _Pragma("GCC diagnostic ignored \"-Wtype-limits\"") \
287 _Pragma("GCC diagnostic ignored \"-Wtautological-constant-out-of-range-compare\"") \
288 _Pragma("GCC diagnostic ignored \"-Wmissing-field-initializers\"") \
289 _Pragma("GCC diagnostic ignored \"-Winfinite-recursion\"") \
290 _Pragma("GCC diagnostic ignored \"-Wunused-but-set-parameter\"") \
291 _Pragma("GCC diagnostic ignored \"-Wnested-anon-types\"") \
292 _Pragma("GCC diagnostic ignored \"-Wunused-private-field\"") \
293 _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \
294 _Pragma("GCC diagnostic ignored \"-Wunused-but-set-variable\"") \
295 _Pragma("GCC diagnostic warning \"-Wpragmas\"")
296 
297 # define DEAL_II_ENABLE_EXTRA_DIAGNOSTICS \
298 _Pragma("GCC diagnostic pop")
299 
300 #else
301 
302 # define DEAL_II_DISABLE_EXTRA_DIAGNOSTICS
303 # define DEAL_II_ENABLE_EXTRA_DIAGNOSTICS
304 
305 #endif
306 
307 
313 #ifndef DEAL_II_WITH_CXX11
314 #define BOOST_NO_CXX11_VARIADIC_TEMPLATES
315 #endif
316 
317 
318 /***********************************************************************
319  * Final inclusions:
320  */
321 
322 /*
323  * Some systems require including mpi.h before stdio.h which happens in
324  * types.h
325  */
326 #if defined(DEAL_II_WITH_MPI) || defined(DEAL_II_WITH_PETSC)
327 # include <mpi.h>
328 #endif
329 
330 #include <deal.II/base/numbers.h>
331 #include <deal.II/base/types.h>
332 
333 #endif
334