00001 // This file is part of ff3d - http://www.freefem.org/ff3d 00002 // Copyright (C) 2007 Driss Yakoubi 00003 00004 // This program is free software; you can redistribute it and/or modify 00005 // it under the terms of the GNU General Public License as published by 00006 // the Free Software Foundation; either version 2, or (at your option) 00007 // any later version. 00008 00009 // This program 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 00012 // GNU General Public License for more details. 00013 00014 // You should have received a copy of the GNU General Public License 00015 // along with this program; if not, write to the Free Software Foundation, 00016 // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00017 00018 // $Id: LagrangeBasis.hpp,v 1.1 2008/01/23 21:17:39 yakoubix Exp $ 00019 00020 #ifndef LAGRANGE_BASIS_HPP 00021 #define LAGRANGE_BASIS_HPP 00022 00023 #include <Types.hpp> 00024 #include <Vector.hpp> 00025 00026 class LagrangeBasis 00027 { 00028 private: 00029 const Vector<real_t> __nodes; 00030 Vector<real_t> __denominatorValues; 00031 public: 00032 size_t degree() const 00033 { 00034 return __nodes.size()-1; 00035 } 00036 00037 size_t dimension() const 00038 { 00039 return __nodes.size(); 00040 } 00041 00042 00043 void getValues(const real_t& x, 00044 Vector<real_t>& values) const; 00045 00046 00047 real_t getValue(const real_t& x, 00048 const size_t& i) const; 00049 00050 void getDerivativeValues(const real_t& x, 00051 Vector<real_t>& values) const; 00052 00053 00054 real_t getDerivativeValue(const real_t& x, 00055 const size_t& i) const; 00056 00057 00058 LagrangeBasis(const Vector<real_t>& nodes); 00059 00060 LagrangeBasis(const LagrangeBasis& lagrangeBasis); 00061 00062 ~LagrangeBasis(); 00063 }; 00064 #endif // LAGRANGE_BASIS_HPP 00065 00066 00067 00068
1.5.6