$extrastylesheet
00001 // The libMesh Finite Element Library. 00002 // Copyright (C) 2002-2014 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner 00003 00004 // This library is free software; you can redistribute it and/or 00005 // modify it under the terms of the GNU Lesser General Public 00006 // License as published by the Free Software Foundation; either 00007 // version 2.1 of the License, or (at your option) any later version. 00008 00009 // This library is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 // Lesser General Public License for more details. 00013 00014 // You should have received a copy of the GNU Lesser General Public 00015 // License along with this library; if not, write to the Free Software 00016 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00017 00018 00019 #ifndef LIBMESH_FE_MACRO_H 00020 #define LIBMESH_FE_MACRO_H 00021 00022 00023 00024 00031 #define INSTANTIATE_MAPS(_dim,_type) \ 00032 template Point FE<_dim,_type>::map(const Elem*,const Point&); \ 00033 template Point FE<_dim,_type>::map_xi(const Elem*,const Point&); \ 00034 template Point FE<_dim,_type>::map_eta(const Elem*,const Point&); \ 00035 template Point FE<_dim,_type>::map_zeta(const Elem*,const Point&); \ 00036 template void FE<_dim,_type>::inverse_map(const Elem*,const std::vector<Point>&,std::vector<Point>&,Real,bool); \ 00037 template Point FE<_dim,_type>::inverse_map(const Elem*,const Point&,Real,bool) 00038 00039 #define INSTANTIATE_SUBDIVISION_MAPS \ 00040 template Point FE<2,SUBDIVISION>::map(const Elem*,const Point&); \ 00041 template Point FE<2,SUBDIVISION>::map_xi(const Elem*,const Point&); \ 00042 template Point FE<2,SUBDIVISION>::map_eta(const Elem*,const Point&); \ 00043 template Point FE<2,SUBDIVISION>::map_zeta(const Elem*,const Point&) 00044 00045 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 00046 00047 #define INSTANTIATE_SUBDIVISION_FE \ 00048 template unsigned int FE<2,SUBDIVISION>::n_shape_functions () const; \ 00049 template void FE<2,SUBDIVISION>::attach_quadrature_rule (QBase*); \ 00050 template unsigned int FE<2,SUBDIVISION>::n_quadrature_points () const; \ 00051 template void FE<2,SUBDIVISION>::reinit(const Elem*,const std::vector<Point>* const,const std::vector<Real>* const); \ 00052 template void FE<2,SUBDIVISION>::init_base_shape_functions(const std::vector<Point>&, const Elem*); \ 00053 template void FE<2,SUBDIVISION>::init_shape_functions(const std::vector<Point>&, const Elem*) 00054 00055 #else // LIBMESH_ENABLE_INFINITE_ELEMENTS 00056 00057 #define INSTANTIATE_SUBDIVISION_FE \ 00058 template unsigned int FE<2,SUBDIVISION>::n_shape_functions () const; \ 00059 template void FE<2,SUBDIVISION>::attach_quadrature_rule (QBase*); \ 00060 template unsigned int FE<2,SUBDIVISION>::n_quadrature_points () const; \ 00061 template void FE<2,SUBDIVISION>::reinit(const Elem*,const std::vector<Point>* const,const std::vector<Real>* const); \ 00062 template void FE<2,SUBDIVISION>::init_shape_functions(const std::vector<Point>&, const Elem*) 00063 00064 #endif // LIBMESH_ENABLE_INFINITE_ELEMENTS 00065 00066 00067 #ifndef LIBMESH_ENABLE_HIGHER_ORDER_SHAPES 00068 00069 #define INSTANTIATE_FE(_dim) template class FE< (_dim), CLOUGH>; \ 00070 template class FE< (_dim), HERMITE>; \ 00071 template class FE< (_dim), HIERARCHIC>; \ 00072 template class FE< (_dim), L2_HIERARCHIC>; \ 00073 template class FE< (_dim), LAGRANGE>; \ 00074 template class FE< (_dim), LAGRANGE_VEC>; \ 00075 template class FE< (_dim), L2_LAGRANGE>; \ 00076 template class FE< (_dim), MONOMIAL>; \ 00077 template class FE< (_dim), SCALAR>; \ 00078 template class FE< (_dim), XYZ>; \ 00079 template class FE< (_dim), NEDELEC_ONE> 00080 00081 #define INSTANTIATE_ALL_MAPS(_dim) \ 00082 INSTANTIATE_MAPS(_dim,CLOUGH); \ 00083 INSTANTIATE_MAPS(_dim,HERMITE); \ 00084 INSTANTIATE_MAPS(_dim,HIERARCHIC); \ 00085 INSTANTIATE_MAPS(_dim,L2_HIERARCHIC); \ 00086 INSTANTIATE_MAPS(_dim,LAGRANGE); \ 00087 INSTANTIATE_MAPS(_dim,LAGRANGE_VEC); \ 00088 INSTANTIATE_MAPS(_dim,L2_LAGRANGE); \ 00089 INSTANTIATE_MAPS(_dim,MONOMIAL); \ 00090 INSTANTIATE_MAPS(_dim,SCALAR); \ 00091 INSTANTIATE_MAPS(_dim,XYZ); \ 00092 INSTANTIATE_MAPS(_dim,NEDELEC_ONE) 00093 00094 #else //LIBMESH_ENABLE_HIGHER_ORDER_SHAPES 00095 00096 #define INSTANTIATE_FE(_dim) template class FE< (_dim), CLOUGH>; \ 00097 template class FE< (_dim), HERMITE>; \ 00098 template class FE< (_dim), HIERARCHIC>; \ 00099 template class FE< (_dim), L2_HIERARCHIC>; \ 00100 template class FE< (_dim), LAGRANGE>; \ 00101 template class FE< (_dim), LAGRANGE_VEC>; \ 00102 template class FE< (_dim), L2_LAGRANGE>; \ 00103 template class FE< (_dim), MONOMIAL>; \ 00104 template class FE< (_dim), SCALAR>; \ 00105 template class FE< (_dim), BERNSTEIN>; \ 00106 template class FE< (_dim), SZABAB>; \ 00107 template class FE< (_dim), XYZ>; \ 00108 template class FE< (_dim), NEDELEC_ONE> 00109 00110 #define INSTANTIATE_ALL_MAPS(_dim) \ 00111 INSTANTIATE_MAPS(_dim,CLOUGH); \ 00112 INSTANTIATE_MAPS(_dim,HERMITE); \ 00113 INSTANTIATE_MAPS(_dim,HIERARCHIC); \ 00114 INSTANTIATE_MAPS(_dim,L2_HIERARCHIC); \ 00115 INSTANTIATE_MAPS(_dim,LAGRANGE); \ 00116 INSTANTIATE_MAPS(_dim,LAGRANGE_VEC); \ 00117 INSTANTIATE_MAPS(_dim,L2_LAGRANGE); \ 00118 INSTANTIATE_MAPS(_dim,MONOMIAL); \ 00119 INSTANTIATE_MAPS(_dim,SCALAR); \ 00120 INSTANTIATE_MAPS(_dim,BERNSTEIN); \ 00121 INSTANTIATE_MAPS(_dim,SZABAB); \ 00122 INSTANTIATE_MAPS(_dim,XYZ); \ 00123 INSTANTIATE_MAPS(_dim,NEDELEC_ONE) 00124 00125 #endif //LIBMESH_ENABLE_HIGHER_ORDER_SHAPES 00126 00127 #endif // LIBMESH_FE_MACRO_H