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: VariationalLinearOperator.hpp,v 1.8 2007/06/10 15:03:32 delpinux Exp $ 00019 00020 #ifndef VARIATIONAL_LINEAR_OPERATOR_HPP 00021 #define VARIATIONAL_LINEAR_OPERATOR_HPP 00022 00023 #include <VariationalOperator.hpp> 00024 00034 class VariationalLinearOperator 00035 : public VariationalOperator 00036 { 00037 public: 00038 enum Type { 00039 FV, 00040 FdxGV, 00041 FdxV, 00042 FgradGgradV 00043 }; 00044 00045 private: 00046 const VariationalLinearOperator::Type 00047 __type; 00049 public: 00055 const VariationalLinearOperator::Type& type() const 00056 { 00057 return __type; 00058 } 00059 00067 virtual ReferenceCounting<VariationalLinearOperator> 00068 operator*(const ConstReferenceCounting<ScalarFunctionBase>& u) const = 0; 00069 00077 VariationalLinearOperator(const VariationalLinearOperator::Type& t, 00078 const size_t& testFunctionNumber, 00079 const VariationalOperator::Property& testFunctionProperty) 00080 : VariationalOperator(testFunctionNumber, testFunctionProperty), 00081 __type(t) 00082 { 00083 ; 00084 } 00085 00091 VariationalLinearOperator(const VariationalLinearOperator& V) 00092 : VariationalOperator(V), 00093 __type(V.__type) 00094 { 00095 ; 00096 } 00097 00102 virtual ~VariationalLinearOperator() 00103 { 00104 ; 00105 } 00106 }; 00107 00108 #endif // VARIATIONAL_LINEAR_OPERATOR_HPP
1.5.6