00001 // This file is part of ff3d - http://www.freefem.org/ff3d 00002 // Copyright (C) 2001, 2002, 2003 Stéphane Del Pino 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: LegendreSolution.cpp,v 1.2 2007/07/27 16:27:46 delpinux Exp $ 00019 00020 #include <LegendreSolution.hpp> 00021 #include <SpectralFunction.hpp> 00022 00023 void 00024 LegendreSolution:: 00025 setUserFunction (const std::vector<ReferenceCounting<SpectralFunction> >& U) 00026 { 00027 Vector<real_t>& v = *__values; 00028 for (size_t i=0; i<__degreeOfFreedomSet.numberOfVariables(); ++i) { 00029 const ScalarDegreeOfFreedomPositionsSet& dofPositionSet = __degreeOfFreedomSet.positionsSet(i); 00030 const SpectralFunction& u = *U[i]; 00031 for(size_t j=0; j<dofPositionSet.number(); ++j) { 00032 v[__degreeOfFreedomSet(i,j)]=u[j]; 00033 } 00034 } 00035 } 00036 00037 void 00038 LegendreSolution:: 00039 getUserFunction(std::vector<ReferenceCounting<SpectralFunction> >& U) const 00040 { 00041 const Vector<real_t>& v = *__values; 00042 for (size_t i=0; i<__degreeOfFreedomSet.numberOfVariables(); ++i) { 00043 const ScalarDegreeOfFreedomPositionsSet& dofPositionSet = __degreeOfFreedomSet.positionsSet(i); 00044 SpectralFunction& u = *U[i]; 00045 for(size_t j=0; j<dofPositionSet.number(); ++j) { 00046 u[j] = v[__degreeOfFreedomSet(i,j)]; 00047 } 00048 } 00049 }
1.5.6