$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 #ifndef LIBMESH_H1_FE_TRANSFORMATION_H 00019 #define LIBMESH_H1_FE_TRANSFORMATION_H 00020 00021 #include "libmesh/fe_transformation_base.h" 00022 #include "libmesh/compare_types.h" 00023 #include "libmesh/elem.h" 00024 00025 namespace libMesh 00026 { 00034 template< typename OutputShape > 00035 class H1FETransformation : public FETransformationBase<OutputShape> 00036 { 00037 public: 00038 00039 H1FETransformation() 00040 : FETransformationBase<OutputShape>(){} 00041 00042 virtual ~H1FETransformation(){} 00043 00048 virtual void map_phi( const unsigned int, 00049 const Elem* const, 00050 const std::vector<Point>&, 00051 const FEGenericBase<OutputShape>&, 00052 std::vector<std::vector<OutputShape> >& ) const; 00053 00058 virtual void map_dphi( const unsigned int dim, 00059 const Elem* const elem, 00060 const std::vector<Point>& qp, 00061 const FEGenericBase<OutputShape>& fe, 00062 std::vector<std::vector<typename FEGenericBase<OutputShape>::OutputGradient> >& dphi, 00063 std::vector<std::vector<OutputShape> >& dphidx, 00064 std::vector<std::vector<OutputShape> >& dphidy, 00065 std::vector<std::vector<OutputShape> >& dphidz) const; 00066 00067 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES 00068 00074 virtual void map_d2phi( const unsigned int dim, 00075 const Elem* const elem, 00076 const std::vector<Point>& qp, 00077 const FEGenericBase<OutputShape>& fe, 00078 std::vector<std::vector<typename FEGenericBase<OutputShape>::OutputTensor> >& d2phi, 00079 std::vector<std::vector<OutputShape> >& d2phidx2, 00080 std::vector<std::vector<OutputShape> >& d2phidxdy, 00081 std::vector<std::vector<OutputShape> >& d2phidxdz, 00082 std::vector<std::vector<OutputShape> >& d2phidy2, 00083 std::vector<std::vector<OutputShape> >& d2phidydz, 00084 std::vector<std::vector<OutputShape> >& d2phidz2 ) const; 00085 #endif //LIBMESH_ENABLE_SECOND_DERIVATIVES 00086 00091 virtual void map_curl( const unsigned int dim, 00092 const Elem* const elem, 00093 const std::vector<Point>& qp, 00094 const FEGenericBase<OutputShape>& fe, 00095 std::vector<std::vector<OutputShape> >& curl_phi ) const; 00096 00101 virtual void map_div( const unsigned int dim, 00102 const Elem* const elem, 00103 const std::vector<Point>& qp, 00104 const FEGenericBase<OutputShape>& fe, 00105 std::vector<std::vector<typename FEGenericBase<OutputShape>::OutputDivergence> >& div_phi ) const; 00106 00107 }; // class H1FETransformation 00108 00109 } 00110 00111 #endif // LIBMESH_H1_FE_TRANSFORMATION_H