$extrastylesheet
const_fem_function.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_CONST_FEM_FUNCTION_H
00019 #define LIBMESH_CONST_FEM_FUNCTION_H
00020 
00021 #include <string>
00022 
00023 #include "libmesh/dense_vector.h"
00024 #include "libmesh/fem_function_base.h"
00025 #include "libmesh/point.h"
00026 
00027 namespace libMesh {
00028 
00029 template <typename Output=Number>
00030 class ConstFEMFunction : public FEMFunctionBase<Output>
00031 {
00032 public:
00033   ConstFEMFunction (const Output c) : _c(c) {}
00034 
00035   ~ConstFEMFunction() {}
00036 
00037   virtual UniquePtr<FEMFunctionBase<Output> > clone () const
00038   {return UniquePtr<FEMFunctionBase<Output> >( new ConstFEMFunction(*this) ); }
00039 
00040   virtual Output operator() (const FEMContext&, const Point&,
00041                              const Real /* time */ = 0.)
00042   { return _c; }
00043 
00044   virtual void operator() (const FEMContext&, const Point&,
00045                            const Real,
00046                            DenseVector<Output>& output)
00047   {for(unsigned int i = 0; i < output.size(); i++ )
00048       output(i) = _c;}
00049 
00050 private:
00051   Output _c;
00052 };
00053 
00054 } // namespace libMesh;
00055 
00056 
00057 #endif // LIBMESH_CONST_FEM_FUNCTION_H