Reference documentation for deal.II version 8.1.0
config.h
1 // ---------------------------------------------------------------------
2 // @f$Id: config.h.in 31349 2013-10-20 19:07:06Z maier @f$
3 //
4 // Copyright (C) 2012 - 2013 by the deal.II authors
5 //
6 // This file is part of the deal.II library.
7 //
8 // The deal.II library is free software; you can use it, redistribute
9 // it, and/or modify it under the terms of the GNU Lesser General
10 // Public License as published by the Free Software Foundation; either
11 // version 2.1 of the License, or (at your option) any later version.
12 // The full text of the license can be found in the file LICENSE at
13 // the top level of the deal.II distribution.
14 //
15 // ---------------------------------------------------------------------
16 
17 #ifndef __deal2__config_h
18 #define __deal2__config_h
19 
20 
25 #define DEAL_II_NAMESPACE_OPEN namespace dealii {
26 #define DEAL_II_NAMESPACE_CLOSE }
27 
28 
29 /***********************************************
30  * Configured in setup_cached_variables.cmake: *
31  ***********************************************/
32 
33 /* #undef DEAL_II_WITH_64BIT_INDICES */
34 #ifdef DEAL_II_WITH_64BIT_INDICES
35 # define DEAL_II_USE_LARGE_INDEX_TYPE
36 #endif
37 
38 
39 /**************************************
40  * Configured in setup_deal_ii.cmake: *
41  **************************************/
42 
43 /* Defined to the full name of this package. */
44 #define DEAL_II_PACKAGE_NAME "deal.II"
45 
46 /* Defined to the version of this package. */
47 #define DEAL_II_PACKAGE_VERSION "8.1.0"
48 
49 /* Major version number of deal.II */
50 #define DEAL_II_VERSION_MAJOR 8
51 #define DEAL_II_MAJOR 8
52 
53 /* Minor version number of deal.II */
54 #define DEAL_II_VERSION_MINOR 1
55 #define DEAL_II_MINOR 1
56 
57 
58 /********************************************
59  * Configured in check_1_compiler_features: *
60  ********************************************/
61 
62 /* Defined if the compiler can use arithmetic operations on vectorized data types */
63 #define DEAL_II_COMPILER_USE_VECTOR_ARITHMETICS
64 
65 /* Defined if vector iterators are just plain pointers */
66 /* #undef DEAL_II_VECTOR_ITERATOR_IS_POINTER */
67 
68 /* Define if the compiler provides __builtin_expect */
69 #define HAVE_BUILTIN_EXPECT
70 
71 /* Define if the compiler provides __verbose_terminate_handler */
72 #define HAVE_VERBOSE_TERMINATE
73 
74 /* Define if deal.II is linked against a libc that provides stacktrace
75  * debug information that can be printed out in the exception class
76  * */
77 #define HAVE_GLIBC_STACKTRACE
78 
79 /* Defined if the std c++ library provides a demangler conforming to the
80  * GCC libstdc++ interface.
81  */
82 #define HAVE_LIBSTDCXX_DEMANGLER
83 
84 /* If already available, do not define at all. Otherwise, define to
85  * __func__ if that is available. In all other cases, indicate that no
86  * information about the present function is available for this compiler.
87  */
88 /* #undef __PRETTY_FUNCTION__ */
89 
90 /* If the compiler supports it, then this variable is defined to a string
91  * that when written after a function name makes the compiler emit a warning
92  * whenever this function is used somewhere that its use is deprecated.
93  */
94 #define DEAL_II_DEPRECATED __attribute__((deprecated))
95 
96 
97 /***************************************
98  * Configured in check_1_cpu_features: *
99  ***************************************/
100 
101 /* Defined if the system stores words with the most significant byte first */
102 /* #undef DEAL_II_WORDS_BIGENDIAN */
103 
104 /* Equal to 0 in the generic case, equal to 1 if CPU compiled for supports
105  * SSE2, equal to 2 if CPU compiled for supports AVX
106  */
107 #define DEAL_II_COMPILER_VECTORIZATION_LEVEL 0
108 
109 
110 /***************************************
111  * Configured in check_1_cxx_features: *
112  ***************************************/
113 
114 /* Defined if the compiler we use supports the C++2011 standard well enough
115  * to allow using the standard library classes instead of the corresponding
116  * BOOST classes.
117  */
118 #define DEAL_II_USE_CXX11
119 #ifdef DEAL_II_USE_CXX11
120 # define DEAL_II_CAN_USE_CXX11
121 # define DEAL_II_CAN_USE_CXX1X
122 #endif
123 
124 /* Defined if C++11 is enabled and the standard library supports
125  * template<typename T> std::is_trivially_copyable<T>
126  */
127 #define DEAL_II_HAVE_CXX11_IS_TRIVIALLY_COPYABLE
128 
129 /* Defined if isnan is available */
130 /* #undef HAVE_ISNAN */
131 
132 /* Defined if _isnan is available */
133 /* #undef HAVE_UNDERSCORE_ISNAN */
134 
135 /* Defined if std::isfinite is available */
136 #define DEAL_II_HAVE_ISFINITE
137 
138 
139 /******************************************
140  * Configured in check_1_system_features: *
141  ******************************************/
142 
143 /* Defined if you have the <sys/resource.h> header file */
144 #define HAVE_SYS_RESOURCE_H
145 
146 /* Defined if you have the <sys/time.h> header file. */
147 #define HAVE_SYS_TIME_H
148 
149 /* Defined if you have the <sys/times.h> header file. */
150 #define HAVE_SYS_TIMES_H
151 
152 /* Defined if you have the <sys/types.h> header file. */
153 #define HAVE_SYS_TYPES_H
154 
155 /* Defined if you have the <unistd.h> header file. */
156 #define HAVE_UNISTD_H
157 
158 /* Defined if you have the "gethostname" function. */
159 #define HAVE_GETHOSTNAME
160 
161 /* Defined if you have the "getpid' function. */
162 #define HAVE_GETPID
163 
164 /* Defined if you have the "rand_r" function */
165 #define HAVE_RAND_R
166 
167 /* Defined if you have the "times" function. */
168 #define HAVE_TIMES
169 
170 /* Defined if you have the "jn" function. */
171 #define HAVE_JN
172 
173 /* Defined if deal.II was configured on a native Windows platform. */
174 /* #undef DEAL_II_MSVC */
175 
176 /* Disable a bunch of warnings for Microsoft Visual C++. */
177 #ifdef _MSC_VER
178 # pragma warning( disable : 4244 ) /* implied downcasting from double to float */
179 # pragma warning( disable : 4267 ) /* implied downcasting from size_t to unsigned int */
180 # pragma warning( disable : 4996 ) /* unsafe functions, such as strcat and sprintf */
181 # pragma warning( disable : 4355 ) /* 'this' : used in base member initializer list */
182 # pragma warning( disable : 4661 ) /* no suitable definition provided for explicit template instantiation request */
183 # pragma warning( disable : 4800 ) /* forcing value to bool 'true' or 'false' (performance warning) */
184 # pragma warning( disable : 4146 ) /* unary minus operator applied to unsigned type, result still unsigned */
185 # pragma warning( disable : 4667 ) /* no function template defined that matches forced instantiation */
186 # pragma warning( disable : 4520 ) /* multiple default constructors specified */
187 # pragma warning( disable : 4700 ) /* uninitialized local variable */
188 # pragma warning( disable : 4789 ) /* destination of memory copy is too small */
189 # pragma warning( disable : 4808 ) /* case 'value' is not a valid value for switch condition of type 'bool */
190 #endif /*_MSC_VER*/
191 
192 
193 /****************************************
194  * Configured in check_3_compiler_bugs: *
195  ****************************************/
196 
197 /* Defined if we have to work around a bug with some compilers that will not
198  * allow us to specify a fully specialized class of a template as a friend.
199  * See the aclocal.m4 file in the top-level directory for a description of
200  * this bug.
201  * */
202 /* #undef DEAL_II_TEMPL_SPEC_FRIEND_BUG */
203 
204 /* Defined if the compiler refuses to allow the explicit specialization of
205  * static member arrays. For the exact failure mode, look at aclocal.m4 in the
206  * top-level directory.
207  */
208 /* #undef DEAL_II_MEMBER_ARRAY_SPECIALIZATION_BUG */
209 
210 /* Defined if the compiler refuses to allow the explicit specialization of
211  * static member variables.
212  */
213 /* #undef DEAL_II_MEMBER_VAR_SPECIALIZATION_BUG */
214 
215 /* Defined if the compiler does not honor the explicit keyword on template
216  * constructors.
217  */
218 /* #undef DEAL_II_EXPLICIT_CONSTRUCTOR_BUG */
219 
220 /* Defined if the compiler has a bug in deducing the type of pointers to const
221  * member functions.
222  */
223 /* #undef DEAL_II_CONST_MEMBER_DEDUCTION_BUG */
224 
225 /* Defined if the compiler gets an internal error compiling some code that
226  * involves boost::bind
227  */
228 /* #undef DEAL_II_BOOST_BIND_COMPILER_BUG */
229 
230 /* Defined if the compiler incorrectly deduces a constexpr as not being a
231  * constant integral expression under certain optimization (notably
232  * gcc-4.8.1 on Windows and Mac)
233  */
234 /* #undef DEAL_II_CONSTEXPR_BUG */
235 
236 
237 /*****************************************
238  * Configured in configure_arpack.cmake: *
239  *****************************************/
240 
241 /* #undef DEAL_II_WITH_ARPACK */
242 #ifdef DEAL_II_WITH_ARPACK
243 # define DEAL_II_USE_ARPACK
244 #endif
245 
246 /*************************************************
247  * Configured in configure_functionparser.cmake: *
248  *************************************************/
249 
250 /* #undef DEAL_II_WITH_FUNCTIONPARSER */
251 #ifdef DEAL_II_WITH_FUNCTIONPARSER
252 # define HAVE_FUNCTIONPARSER
253 #endif
254 
255 /***************************************
256  * Configured in configure_hdf5.cmake: *
257  ***************************************/
258 
259 /* #undef DEAL_II_WITH_HDF5 */
260 #ifdef DEAL_II_WITH_HDF5
261 # define DEAL_II_HAVE_HDF5
262 #endif
263 
264 /*****************************************
265  * Configured in configure_lapack.cmake: *
266  *****************************************/
267 
268 #define DEAL_II_WITH_LAPACK
269 #ifdef DEAL_II_WITH_LAPACK
270 # define HAVE_LIBLAPACK
271 
272 /* Defined if the corresponding BLAS or LAPACK function is available */
273 #define HAVE_DAXPY_
274 #define HAVE_DGEEVX_
275 #define HAVE_DGEEV_
276 #define HAVE_DGELSD_
277 #define HAVE_DGEMM_
278 #define HAVE_DGEMV_
279 #define HAVE_DGEQRF_
280 #define HAVE_DGESDD_
281 #define HAVE_DGESVD_
282 #define HAVE_DGETRF_
283 #define HAVE_DGETRI_
284 #define HAVE_DGETRS_
285 #define HAVE_DORGQR_
286 #define HAVE_DORMQR_
287 #define HAVE_DSTEV_
288 #define HAVE_DSYEVX_
289 #define HAVE_DSYGV_
290 #define HAVE_DSYGVX_
291 #define HAVE_DTRTRS_
292 #define HAVE_SAXPY_
293 #define HAVE_SGEEVX_
294 #define HAVE_SGEEV_
295 #define HAVE_SGELSD_
296 #define HAVE_SGEMM_
297 #define HAVE_SGEMV_
298 #define HAVE_SGEQRF_
299 #define HAVE_SGESDD_
300 #define HAVE_SGESVD_
301 #define HAVE_SGETRF_
302 #define HAVE_SGETRI_
303 #define HAVE_SGETRS_
304 #define HAVE_SORGQR_
305 #define HAVE_SORMQR_
306 #define HAVE_SSTEV_
307 #define HAVE_SSYEVX_
308 #define HAVE_SSYGV_
309 #define HAVE_SSYGVX_
310 #define HAVE_STRTRS_
311 #endif
312 
313 
314 
315 /****************************************
316  * Configured in configure_metis.cmake: *
317  ****************************************/
318 
319 /* #undef DEAL_II_WITH_METIS */
320 #ifdef DEAL_II_WITH_METIS
321 # define DEAL_II_USE_METIS
322 #endif
323 
324 
325 /**************************************
326  * Configured in configure_mpi.cmake: *
327  **************************************/
328 
329 /* #undef DEAL_II_WITH_MPI */
330 #ifdef DEAL_II_WITH_MPI
331 # define DEAL_II_COMPILER_SUPPORTS_MPI
332 #endif
333 
334 
335 /*****************************************
336  * Configured in configure_mumps.cmake: *
337  *****************************************/
338 
339 /* #undef DEAL_II_WITH_MUMPS */
340 #ifdef DEAL_II_WITH_MUMPS
341 # define DEAL_II_USE_MUMPS
342 #endif
343 
344 
345 /*****************************************
346  * Configured in configure_netcdf.cmake: *
347  *****************************************/
348 
349 /* #undef DEAL_II_WITH_NETCDF */
350 #ifdef DEAL_II_WITH_NETCDF
351 # define HAVE_LIBNETCDF
352 #endif
353 
354 
355 /****************************************
356  * Configured in configure_p4est.cmake: *
357  ****************************************/
358 
359 /* #undef DEAL_II_WITH_P4EST */
360 #ifdef DEAL_II_WITH_P4EST
361 # define DEAL_II_USE_P4EST
362 
363 # define DEAL_II_P4EST_VERSION_MAJOR
364 # define DEAL_II_P4EST_VERSION_MINOR
365 # define DEAL_II_P4EST_VERSION_SUBMINOR
366 # define DEAL_II_P4EST_VERSION_PATCH
367 
368 # define DEAL_II_P4EST_VERSION_GTE(major,minor,subminor,patch) \
369  ((DEAL_II_P4EST_VERSION_MAJOR * 1000000 + \
370  DEAL_II_P4EST_VERSION_MINOR * 10000 + \
371  DEAL_II_P4EST_VERSION_SUBMINOR * 100 + \
372  DEAL_II_P4EST_VERSION_PATCH) \
373  >= \
374  (major)*1000000 + (minor)*10000 + (subminor)*100 + (patch))
375 #else
376  // p4est up to 0.3.4.1 didn't define P4EST_VERSION_*. since
377  // we didn't supports anything before 0.3.4, we assume 0.3.4
378  // This means that we can't use the new features in 0.3.4.1
379 # define DEAL_II_P4EST_VERSION_GTE(major,minor,subminor,patch) \
380  ((0 * 1000000 + \
381  3 * 10000 + \
382  4 * 100 + \
383  0) \
384  >= \
385  (major)*1000000 + (minor)*10000 + (subminor)*100 + (patch))
386 
387 #endif
388 
389 
390 /****************************************
391  * Configured in configure_petsc.cmake: *
392  ****************************************/
393 
394 /* #undef DEAL_II_WITH_PETSC */
395 #ifdef DEAL_II_WITH_PETSC
396 # define DEAL_II_USE_PETSC
397 #endif
398 
399 
400 /*
401  * Note: The following definitions will be set in petscconf.h and
402  * petscversion.h, so we don't repeat them here.
403  *
404  * PETSC_VERSION_MAJOR
405  * PETSC_VERSION_MINOR
406  * PETSC_VERSION_SUBMINOR
407  * PETSC_VERSION_PATCH
408  * PETSC_VERSION_RELEASE
409  * PETSC_USE_COMPLEX
410  */
411 
424 #define DEAL_II_PETSC_VERSION_LT(major,minor,subminor) \
425  ((PETSC_VERSION_MAJOR * 10000 + \
426  PETSC_VERSION_MINOR * 100 + \
427  PETSC_VERSION_SUBMINOR) \
428  < \
429  (major)*10000 + (minor)*100 + (subminor))
430 
431 #define DEAL_II_PETSC_VERSION_GTE(major,minor,subminor) \
432  ((PETSC_VERSION_MAJOR * 10000 + \
433  PETSC_VERSION_MINOR * 100 + \
434  PETSC_VERSION_SUBMINOR) \
435  >= \
436  (major)*10000 + (minor)*100 + (subminor))
437 
438 /****************************************
439  * Configured in configure_slepc.cmake: *
440  ****************************************/
441 
442 /* #undef DEAL_II_WITH_SLEPC */
443 #ifdef DEAL_II_WITH_SLEPC
444 # define DEAL_II_USE_SLEPC
445 #endif
446 
447 
448 /********************************************
449  * Configured in configure_1_threads.cmake: *
450  ********************************************/
451 
452 #define DEAL_II_WITH_THREADS
453 #ifdef DEAL_II_WITH_THREADS
454 # define DEAL_II_USE_MT
455 #endif
456 
460 #define DEAL_II_USE_MT_POSIX
461 
462 /* Defined if POSIX is supported but not the newer POSIX barrier functions.
463  * Barriers will then not work in the library, but the other threading
464  * functionality is available.
465  */
466 /* #undef DEAL_II_USE_MT_POSIX_NO_BARRIERS */
467 
473 #ifdef DEAL_II_WITH_THREADS
474 # define DEAL_VOLATILE volatile
475 #else
476 # define DEAL_VOLATILE
477 #endif
478 
479 
480 /*******************************************
481  * Configured in configure_trilinos.cmake: *
482  *******************************************/
483 
484 /* #undef DEAL_II_WITH_TRILINOS */
485 #ifdef DEAL_II_WITH_TRILINOS
486 # define DEAL_II_USE_TRILINOS
487 #endif
488 
489 
490 /******************************************
491  * Configured in configure_umfpack.cmake: *
492  ******************************************/
493 
494 #define DEAL_II_WITH_UMFPACK
495 #ifdef DEAL_II_WITH_UMFPACK
496 # define HAVE_LIBUMFPACK
497 #endif
498 
499 
500 /***************************************
501  * Configured in configure_zlib.cmake: *
502  ***************************************/
503 
504 #define DEAL_II_WITH_ZLIB
505 #ifdef DEAL_II_WITH_ZLIB
506 # define HAVE_LIBZ
507 #endif
508 
509 
510 #include <deal.II/base/numbers.h>
511 #include <deal.II/base/types.h>
512 
513 #endif
514