Go to the documentation of this file.
19 #ifndef LIBMESH_FE_MACRO_H
20 #define LIBMESH_FE_MACRO_H
28 #define INSTANTIATE_MAPS(_dim,_type) \
29 template Point FE<_dim, _type>::map(const Elem *, const Point &); \
30 template Point FE<_dim, _type>::map_xi(const Elem *, const Point &); \
31 template Point FE<_dim, _type>::map_eta(const Elem *, const Point &); \
32 template Point FE<_dim, _type>::map_zeta(const Elem *, const Point &); \
33 template void FE<_dim, _type>::inverse_map(const Elem *, const std::vector<Point> &, std::vector<Point> &, Real, bool); \
34 template Point FE<_dim, _type>::inverse_map(const Elem *, const Point &, Real, bool)
36 #define INSTANTIATE_SUBDIVISION_MAPS \
37 template Point FE<2, SUBDIVISION>::map(const Elem *, const Point &); \
38 template Point FE<2, SUBDIVISION>::map_xi(const Elem *, const Point &); \
39 template Point FE<2, SUBDIVISION>::map_eta(const Elem *, const Point &); \
40 template Point FE<2, SUBDIVISION>::map_zeta(const Elem *, const Point &)
42 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
44 #define INSTANTIATE_SUBDIVISION_FE \
45 template FE<2,SUBDIVISION>::FE(const FEType & fet); \
46 template unsigned int FE<2,SUBDIVISION>::n_shape_functions () const; \
47 template void FE<2,SUBDIVISION>::attach_quadrature_rule (QBase *); \
48 template unsigned int FE<2,SUBDIVISION>::n_quadrature_points () const; \
49 template void FE<2,SUBDIVISION>::reinit(const Elem *,const std::vector<Point> * const,const std::vector<Real> * const); \
50 template void FE<2,SUBDIVISION>::init_base_shape_functions(const std::vector<Point> &, const Elem *); \
51 template void FE<2,SUBDIVISION>::init_shape_functions(const std::vector<Point> &, const Elem *)
53 #else // LIBMESH_ENABLE_INFINITE_ELEMENTS
55 #define INSTANTIATE_SUBDIVISION_FE \
56 template FE<2,SUBDIVISION>::FE(const FEType & fet); \
57 template unsigned int FE<2,SUBDIVISION>::n_shape_functions () const; \
58 template void FE<2,SUBDIVISION>::attach_quadrature_rule (QBase *); \
59 template unsigned int FE<2,SUBDIVISION>::n_quadrature_points () const; \
60 template void FE<2,SUBDIVISION>::reinit(const Elem *,const std::vector<Point> * const,const std::vector<Real> * const); \
61 template void FE<2,SUBDIVISION>::init_shape_functions(const std::vector<Point> &, const Elem *)
63 #endif // LIBMESH_ENABLE_INFINITE_ELEMENTS
66 #ifndef LIBMESH_ENABLE_HIGHER_ORDER_SHAPES
68 #define INSTANTIATE_FE(_dim) template class FE< (_dim), CLOUGH>; \
69 template class FE< (_dim), HERMITE>; \
70 template class FE< (_dim), HIERARCHIC>; \
71 template class FE< (_dim), L2_HIERARCHIC>; \
72 template class FE< (_dim), LAGRANGE>; \
73 template class FE< (_dim), LAGRANGE_VEC>; \
74 template class FE< (_dim), L2_LAGRANGE>; \
75 template class FE< (_dim), MONOMIAL>; \
76 template class FE< (_dim), SCALAR>; \
77 template class FE< (_dim), XYZ>; \
78 template class FE< (_dim), NEDELEC_ONE>; \
79 template class FE< (_dim), MONOMIAL_VEC>
81 #else //LIBMESH_ENABLE_HIGHER_ORDER_SHAPES
83 #define INSTANTIATE_FE(_dim) template class FE< (_dim), CLOUGH>; \
84 template class FE< (_dim), HERMITE>; \
85 template class FE< (_dim), HIERARCHIC>; \
86 template class FE< (_dim), L2_HIERARCHIC>; \
87 template class FE< (_dim), LAGRANGE>; \
88 template class FE< (_dim), LAGRANGE_VEC>; \
89 template class FE< (_dim), L2_LAGRANGE>; \
90 template class FE< (_dim), MONOMIAL>; \
91 template class FE< (_dim), SCALAR>; \
92 template class FE< (_dim), BERNSTEIN>; \
93 template class FE< (_dim), SZABAB>; \
94 template class FE< (_dim), XYZ>; \
95 template class FE< (_dim), RATIONAL_BERNSTEIN>; \
96 template class FE< (_dim), NEDELEC_ONE>; \
97 template class FE< (_dim), MONOMIAL_VEC>
99 #endif //LIBMESH_ENABLE_HIGHER_ORDER_SHAPES
101 #endif // LIBMESH_FE_MACRO_H