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: BoundaryConditionExpression.hpp,v 1.10 2007/12/19 00:45:45 delpinux Exp $ 00019 00020 #ifndef BOUNDARY_CONDITION_EXPRESSION_HPP 00021 #define BOUNDARY_CONDITION_EXPRESSION_HPP 00022 00023 #include <Expression.hpp> 00024 #include <Variable.hpp> 00025 00026 #include <BoundaryExpression.hpp> 00027 00036 class BoundaryCondition; 00037 class BoundaryConditionExpression 00038 : public Expression 00039 { 00040 protected: 00041 ConstReferenceCounting<BoundaryCondition> __boundaryCondition; 00042 00043 ReferenceCounting<BoundaryExpression> __boundary; 00044 00045 const std::string __unknownName; 00046 00047 public: 00048 enum BoundaryConditionType { 00049 dirichlet, 00050 neumann, 00051 fourrier // also known as Robin 00052 }; 00053 00054 const std::string& unknownName() const 00055 { 00056 return __unknownName; 00057 } 00058 00059 private: 00060 BoundaryConditionExpression::BoundaryConditionType __boundaryConditionType; 00061 00062 public: 00063 bool hasPOVBoundary() const 00064 { 00065 return __boundary->hasPOVBoundary(); 00066 } 00067 00068 bool hasPredefinedBoundary() const 00069 { 00070 return __boundary->hasPredefinedBoundary(); 00071 } 00072 00073 ConstReferenceCounting<BoundaryCondition> boundaryCondition() const; 00074 00075 const BoundaryConditionExpression::BoundaryConditionType& boundaryConditionType() const 00076 { 00077 return __boundaryConditionType; 00078 } 00079 00080 BoundaryConditionExpression(const BoundaryConditionExpression& e); 00081 00082 BoundaryConditionExpression(ReferenceCounting<BoundaryExpression> boundary, 00083 const std::string& unknownName, 00084 const BoundaryConditionExpression::BoundaryConditionType& t); 00085 00086 virtual ~BoundaryConditionExpression(); 00087 }; 00088 00089 #endif // BOUNDARY_CONDITION_EXPRESSION_HPP
1.5.6