$extrastylesheet
h1_fe_transformation.h
Go to the documentation of this file.
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