Flow123d  release_2.2.0-914-gf1a3a4f
field_instances.hh
Go to the documentation of this file.
1 /*!
2  *
3  * Copyright (C) 2015 Technical University of Liberec. All rights reserved.
4  *
5  * This program is free software; you can redistribute it and/or modify it under
6  * the terms of the GNU General Public License version 3 as published by the
7  * Free Software Foundation. (http://www.gnu.org/licenses/gpl-3.0.en.html)
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12  *
13  *
14  * @file field_instances.hh
15  * @brief
16  */
17 
18 #ifndef FIELD_INSTANCES_HH_
19 #define FIELD_INSTANCES_HH_
20 
21 /****************************************************************************
22  * Macros for explicit instantiation of particular field class template.
23  */
24 
25 
26 // Instantiation of fields with values dependent of the dimension of range space
27 #define INSTANCE_DIM_DEP_VALUES( field, dim_from, dim_to) \
28 template class field<dim_from, FieldValue<dim_to>::VectorFixed >; \
29 template class field<dim_from, FieldValue<dim_to>::TensorFixed >; \
30 
31 // Instantiation of fields with domain in the ambient space of dimension @p dim_from
32 #define INSTANCE_TO_ALL(field, dim_from) \
33 template class field<dim_from, FieldValue<0>::Enum >; \
34 template class field<dim_from, FieldValue<0>::Integer >; \
35 template class field<dim_from, FieldValue<0>::Scalar >; \
36 \
37 INSTANCE_DIM_DEP_VALUES( field, dim_from, dim_from) \
38 
39 
40 // All instances of one field class template @p field.
41 // currently we need only fields on 3D ambient space (and 2D for some tests)
42 // so this is to save compilation time and avoid memory problems on the test server
43 #define INSTANCE_ALL(field) \
44 INSTANCE_TO_ALL( field, 3) \
45 INSTANCE_TO_ALL( field, 2)
46 // currently we use only 3D ambient space
47 
48 
49 #endif /* FIELD_INSTANCES_HH_ */