Reference documentation for deal.II version 9.1.0-pre
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.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.1.0-pre"
27 
28 #define DEAL_II_VERSION_MAJOR 9
29 #define DEAL_II_VERSION_MINOR 1
30 #define DEAL_II_VERSION_SUBMINOR 0
31 
32 
33 /***********************************************************************
34  * Configured deal.II features:
35  */
36 
37 #define DEAL_II_WITH_64BIT_INDICES
38 /* #undef DEAL_II_WITH_ADOLC */
39 #define DEAL_II_WITH_ARPACK
40 #define DEAL_II_WITH_ASSIMP
41 /* #undef DEAL_II_WITH_CUDA */
42 #define DEAL_II_WITH_CXX14
43 /* #undef DEAL_II_WITH_CXX17 */
44 #define DEAL_II_WITH_GSL
45 #define DEAL_II_WITH_GMSH
46 /* #undef DEAL_II_WITH_HDF5 */
47 #define DEAL_II_WITH_LAPACK
48 /* #undef LAPACK_WITH_64BIT_BLAS_INDICES */
49 #define DEAL_II_WITH_METIS
50 #define DEAL_II_WITH_MPI
51 #define DEAL_II_WITH_MUPARSER
52 #define DEAL_II_WITH_NANOFLANN
53 #define DEAL_II_WITH_NETCDF
54 #define DEAL_II_WITH_OPENCASCADE
55 #define DEAL_II_WITH_P4EST
56 #define DEAL_II_WITH_PETSC
57 /* #undef DEAL_II_WITH_SCALAPACK */
58 #define DEAL_II_WITH_SLEPC
59 #define DEAL_II_WITH_SUNDIALS
60 #define DEAL_II_WITH_THREADS
61 #define DEAL_II_WITH_TRILINOS
62 #define DEAL_II_WITH_UMFPACK
63 #define DEAL_II_WITH_ZLIB
64 
65 // defined for backwards compatibility with pre-C++11
66 #define DEAL_II_WITH_CXX11
67 #define DEAL_II_NOEXCEPT noexcept
68 
69 /***********************************************************************
70  * Compiler bugs:
71  *
72  * For documentation see cmake/checks/check_03_compiler_bugs.cmake
73  */
74 
75 /* #undef DEAL_II_TEMPL_SPEC_FRIEND_BUG */
76 /* #undef DEAL_II_MEMBER_ARRAY_SPECIALIZATION_BUG */
77 /* #undef DEAL_II_CONST_MEMBER_DEDUCTION_BUG */
78 /* #undef DEAL_II_BIND_NO_CONST_OP_PARENTHESES */
79 /* #undef DEAL_II_CONSTEXPR_BUG */
80 
81 
82 /***********************************************************************
83  * Compiler features:
84  *
85  * For documentation see cmake/checks/check_01_compiler_features.cmake
86  */
87 
88 #define DEAL_II_COMPILER_USE_VECTOR_ARITHMETICS
89 /* #undef DEAL_II_VECTOR_ITERATOR_IS_POINTER */
90 #define DEAL_II_HAVE_BUILTIN_EXPECT
91 #define DEAL_II_HAVE_GLIBC_STACKTRACE
92 #define DEAL_II_HAVE_LIBSTDCXX_DEMANGLER
93 /* #undef __PRETTY_FUNCTION__ */
94 #define DEAL_II_DEPRECATED [[deprecated]]
95 #define DEAL_II_ALWAYS_INLINE __attribute__((always_inline))
96 #define DEAL_II_RESTRICT __restrict
97 #define DEAL_II_COMPILER_HAS_DIAGNOSTIC_PRAGMA
98 
99 
100 /***********************************************************************
101  * CPU features:
102  *
103  * For documentation see cmake/checks/check_01_cpu_features.cmake
104  */
105 
106 /* #undef DEAL_II_WORDS_BIGENDIAN */
107 #define DEAL_II_COMPILER_VECTORIZATION_LEVEL 1
108 #define DEAL_II_OPENMP_SIMD_PRAGMA _Pragma("omp simd")
109 
110 
111 /***********************************************************************
112  * Language features:
113  *
114  * For documentation see cmake/checks/check_01_cxx_features.cmake
115  */
116 
117 #define DEAL_II_HAVE_CXX11_IS_TRIVIALLY_COPYABLE
118 #define DEAL_II_HAVE_FP_EXCEPTIONS
119 /* #undef DEAL_II_HAVE_COMPLEX_OPERATOR_OVERLOADS */
120 #define DEAL_II_FALLTHROUGH
121 
122 
123 /***********************************************************************
124  * System features:
125  *
126  * For documentation see cmake/checks/check_02_system_features.cmake
127  */
128 
129 #define DEAL_II_HAVE_SYS_RESOURCE_H
130 #define DEAL_II_HAVE_UNISTD_H
131 #define DEAL_II_HAVE_GETHOSTNAME
132 #define DEAL_II_HAVE_GETPID
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/FindADOLC.cmake */
146 /* #undef DEAL_II_ADOLC_WITH_ATRIG_ERF */
147 /* #undef DEAL_II_ADOLC_WITH_ADVANCED_BRANCHING */
148 /* #undef DEAL_II_ADOLC_WITH_TAPELESS_REFCOUNTING */
149 
150 /* cmake/modules/FindARPACK.cmake */
151 #define DEAL_II_ARPACK_WITH_PARPACK
152 
153 /* cmake/modules/FindPETSC.cmake */
154 #define DEAL_II_PETSC_WITH_HYPRE
155 /* #undef DEAL_II_PETSC_WITH_MUMPS */
156 
157 /* cmake/modules/FindSUNDIALS.cmake */
158 #define DEAL_II_SUNDIALS_WITH_IDAS
159 
160 /* cmake/configure/configure_1_threads.cmake */
161 #define DEAL_II_USE_MT_POSIX
162 /* #undef DEAL_II_USE_MT_POSIX_NO_BARRIERS */
163 
164 /* cmake/configure/configure_2_trilinos.cmake */
165 /* #undef DEAL_II_TRILINOS_CXX_SUPPORTS_SACADO_COMPLEX_RAD */
166 /* #undef DEAL_II_TRILINOS_WITH_ROL */
167 #define DEAL_II_TRILINOS_WITH_SACADO
168 #define DEAL_II_TRILINOS_WITH_ZOLTAN
169 
170 
171 /***********************************************************************
172  * Various macros for version number query and comparison:
173  *
174  * These macros are defined to make testing for specific versions within
175  * the deal.II main code as simple as possible.
176  */
177 
178 /*
179  * deal.II:
180  */
181 
182 #define DEAL_II_VERSION_GTE(major,minor,subminor) \
183  ((DEAL_II_VERSION_MAJOR * 10000 + \
184  DEAL_II_VERSION_MINOR * 100 + \
185  DEAL_II_VERSION_SUBMINOR) \
186  >= \
187  (major)*10000 + (minor)*100 + (subminor))
188 
189 
190 /*
191  * Gmsh:
192  */
193 #ifdef DEAL_II_WITH_GMSH
194 # define DEAL_II_GMSH_EXECUTABLE_PATH "/export/home/darndt/bin/gmsh"
195 #endif
196 
197 /*
198  * p4est:
199  */
200 
201 #ifdef DEAL_II_WITH_P4EST
202 # define DEAL_II_P4EST_VERSION_MAJOR 2
203 # define DEAL_II_P4EST_VERSION_MINOR 0
204 # define DEAL_II_P4EST_VERSION_SUBMINOR 0
205 # define DEAL_II_P4EST_VERSION_PATCH 0
206 
207 # define DEAL_II_P4EST_VERSION_GTE(major,minor,subminor,patch) \
208  ((DEAL_II_P4EST_VERSION_MAJOR * 1000000 + \
209  DEAL_II_P4EST_VERSION_MINOR * 10000 + \
210  DEAL_II_P4EST_VERSION_SUBMINOR * 100 + \
211  DEAL_II_P4EST_VERSION_PATCH) \
212  >= \
213  (major)*1000000 + (minor)*10000 + (subminor)*100 + (patch))
214 #else
215  // p4est up to 0.3.4.1 didn't define P4EST_VERSION_*. since
216  // we didn't supports anything before 0.3.4, we assume 0.3.4
217  // This means that we can't use the new features in 0.3.4.1
218 # define DEAL_II_P4EST_VERSION_GTE(major,minor,subminor,patch) \
219  ((0 * 1000000 + \
220  3 * 10000 + \
221  4 * 100 + \
222  0) \
223  >= \
224  (major)*1000000 + (minor)*10000 + (subminor)*100 + (patch))
225 #endif
226 
227  /*
228  * SUNDIALS:
229  *
230  * Note: The following definitions will be set in sundials_config.h,
231  * so we don't repeat them here.
232  *
233  * SUNDIALS_VERSION_MAJOR
234  * SUNDIALS_VERSION_MINOR
235  * SUNDIALS_VERSION_PATCH
236  */
237 
238  #define DEAL_II_SUNDIALS_VERSION_GTE(major,minor,subminor) \
239  ((SUNDIALS_VERSION_MAJOR * 10000 + \
240  SUNDIALS_VERSION_MINOR * 100 + \
241  SUNDIALS_VERSION_SUBMINOR) \
242  >= \
243  (major)*10000 + (minor)*100 + (subminor))
244 
245  #define DEAL_II_SUNDIALS_VERSION_LT(major,minor,subminor) \
246  ((SUNDIALS_VERSION_MAJOR * 10000 + \
247  SUNDIALS_VERSION_MINOR * 100 + \
248  SUNDIALS_VERSION_SUBMINOR) \
249  < \
250  (major)*10000 + (minor)*100 + (subminor))
251 
252 /*
253  * PETSc:
254  *
255  * Note: The following definitions will be set in petscconf.h and
256  * petscversion.h, so we don't repeat them here.
257  *
258  * PETSC_VERSION_MAJOR
259  * PETSC_VERSION_MINOR
260  * PETSC_VERSION_SUBMINOR
261  * PETSC_VERSION_PATCH
262  * PETSC_VERSION_RELEASE
263  * PETSC_USE_COMPLEX
264  */
265 
266 #define DEAL_II_PETSC_VERSION_LT(major,minor,subminor) \
267  ((PETSC_VERSION_MAJOR * 10000 + \
268  PETSC_VERSION_MINOR * 100 + \
269  PETSC_VERSION_SUBMINOR) \
270  < \
271  (major)*10000 + (minor)*100 + (subminor))
272 
273 #define DEAL_II_PETSC_VERSION_GTE(major,minor,subminor) \
274  ((PETSC_VERSION_MAJOR * 10000 + \
275  PETSC_VERSION_MINOR * 100 + \
276  PETSC_VERSION_SUBMINOR) \
277  >= \
278  (major)*10000 + (minor)*100 + (subminor))
279 
280 /*
281  * SLEPC
282  * see slepcversion.h
283  */
284 #define DEAL_II_SLEPC_VERSION_GTE(major,minor,subminor) \
285  ((SLEPC_VERSION_MAJOR * 10000 + \
286  SLEPC_VERSION_MINOR * 100 + \
287  SLEPC_VERSION_SUBMINOR) \
288  >= \
289  (major)*10000 + (minor)*100 + (subminor))
290 
291 /*
292  * Trilinos:
293  */
294 
295 #ifdef DEAL_II_WITH_TRILINOS
296 # define DEAL_II_TRILINOS_VERSION_MAJOR 12
297 # define DEAL_II_TRILINOS_VERSION_MINOR 10
298 # define DEAL_II_TRILINOS_VERSION_SUBMINOR 1
299 
300 # define DEAL_II_TRILINOS_VERSION_GTE(major,minor,subminor) \
301  ((DEAL_II_TRILINOS_VERSION_MAJOR * 10000 + \
302  DEAL_II_TRILINOS_VERSION_MINOR * 100 + \
303  DEAL_II_TRILINOS_VERSION_SUBMINOR) \
304  >= \
305  (major)*10000 + (minor)*100 + (subminor))
306 #endif
307 
308 /*
309  * MPI
310  */
311 
312 #ifdef DEAL_II_WITH_MPI
313 # define DEAL_II_MPI_VERSION_MAJOR 3
314 # define DEAL_II_MPI_VERSION_MINOR 1
315 
316 # define DEAL_II_MPI_VERSION_GTE(major,minor) \
317  ((DEAL_II_MPI_VERSION_MAJOR * 100 + \
318  DEAL_II_MPI_VERSION_MINOR) \
319  >= \
320  (major)*100 + (minor))
321 #endif
322 
323 /***********************************************************************
324  * Two macro names that we put at the top and bottom of all deal.II files
325  * and that will be expanded to "namespace dealii {" and "}".
326  */
327 
328 #define DEAL_II_NAMESPACE_OPEN namespace dealii {
329 #define DEAL_II_NAMESPACE_CLOSE }
330 
331 /***********************************************************************
332  * Two macros to guard external header includes.
333  *
334  * Selectively disable diagnostics set by "-Wextra" (and similar flags) for
335  * GCC and compiler accepting GCC dialects (such as clang).
336  * "diagnostic push" is supported since gcc-4.6 and clang-3.3.
337  */
338 
339 #ifdef DEAL_II_COMPILER_HAS_DIAGNOSTIC_PRAGMA
340 
341 /* keep pragmas with an exclamation mark in order.. */
342 # define DEAL_II_DISABLE_EXTRA_DIAGNOSTICS \
343 _Pragma("GCC diagnostic push") \
344 _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"") \
345 _Pragma("GCC diagnostic ignored \"-Wpragmas\"") \
346 _Pragma("GCC diagnostic ignored \"-Wunknown-warning-option\"") \
347 _Pragma("GCC diagnostic ignored \"-Wunknown-warning\"") \
348 _Pragma("GCC diagnostic ignored \"-Wextra\"") \
349 _Pragma("GCC diagnostic ignored \"-Waddress-of-packed-member\"") \
350 _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \
351 _Pragma("GCC diagnostic ignored \"-Wexpansion-to-defined\"") \
352 _Pragma("GCC diagnostic ignored \"-Wexpansion-to-defined\"") \
353 _Pragma("GCC diagnostic ignored \"-Wignored-attributes\"") \
354 _Pragma("GCC diagnostic ignored \"-Wignored-qualifiers\"") \
355 _Pragma("GCC diagnostic ignored \"-Wimplicit-fallthrough\"") \
356 _Pragma("GCC diagnostic ignored \"-Winfinite-recursion\"") \
357 _Pragma("GCC diagnostic ignored \"-Wint-in-bool-context\"") \
358 _Pragma("GCC diagnostic ignored \"-Wmisleading-indentation\"") \
359 _Pragma("GCC diagnostic ignored \"-Wmissing-field-initializers\"") \
360 _Pragma("GCC diagnostic ignored \"-Wnested-anon-types\"") \
361 _Pragma("GCC diagnostic ignored \"-Wnon-virtual-dtor\"") \
362 _Pragma("GCC diagnostic ignored \"-Woverflow\"") \
363 _Pragma("GCC diagnostic ignored \"-Woverloaded-virtual\"") \
364 _Pragma("GCC diagnostic ignored \"-Wpedantic\"") \
365 _Pragma("GCC diagnostic ignored \"-Wtautological-constant-out-of-range-compare\"") \
366 _Pragma("GCC diagnostic ignored \"-Wtype-limits\"") \
367 _Pragma("GCC diagnostic ignored \"-Wundef\"") \
368 _Pragma("GCC diagnostic ignored \"-Wunused-but-set-parameter\"") \
369 _Pragma("GCC diagnostic ignored \"-Wunused-but-set-variable\"") \
370 _Pragma("GCC diagnostic ignored \"-Wunused-function\"") \
371 _Pragma("GCC diagnostic ignored \"-Wunused-parameter\"") \
372 _Pragma("GCC diagnostic ignored \"-Wunused-private-field\"") \
373 _Pragma("GCC diagnostic ignored \"-Wunused-variable\"") \
374 _Pragma("GCC diagnostic warning \"-Wpragmas\"")
375 
376 # define DEAL_II_ENABLE_EXTRA_DIAGNOSTICS \
377 _Pragma("GCC diagnostic pop")
378 
379 #else
380 
381 # define DEAL_II_DISABLE_EXTRA_DIAGNOSTICS
382 # define DEAL_II_ENABLE_EXTRA_DIAGNOSTICS
383 
384 #endif
385 
386 /***********************************************************************
387  * Define a portable preprocessor macro that generates custom warnings
388  * reporting the line and the file where the warning appears. Taken from:
389  * http://goodliffe.blogspot.com/2009/07/c-how-to-say-warning-to-visual-studio-c.html
390  */
391 
392 #ifdef _MSC_VER
393  #define DEAL_II_STRINGIZE_HELPER(x) #x
394  #define DEAL_II_STRINGIZE(x) DEAL_II_STRINGIZE_HELPER(x)
395  #define DEAL_II_DO_PRAGMA(x) __pragma(x)
396  #define DEAL_II_WARNING(desc) DEAL_II_DO_PRAGMA(message(__FILE__ "(" DEAL_II_STRINGIZE(__LINE__) ") : warning: " #desc))
397 #else
398  #define DEAL_II_DO_PRAGMA(x) _Pragma(#x)
399  #define DEAL_II_WARNING(desc) DEAL_II_DO_PRAGMA(message(#desc))
400 #endif
401 
402 /***********************************************************************
403  * Final inclusions:
404  */
405 
406 /*
407  * Some systems require including mpi.h before stdio.h which happens in
408  * types.h
409  */
410 #if defined(DEAL_II_WITH_MPI) || defined(DEAL_II_WITH_PETSC)
411 # include <mpi.h>
412 #endif
413 
414 #include <deal.II/base/numbers.h>
415 #include <deal.II/base/types.h>
416 
417 #endif