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: ScalarFunctionMeshElementsReferences.hpp,v 1.4 2007/11/20 22:00:05 delpinux Exp $ 00019 00020 #ifndef SCALAR_FUNCTION_MESH_ELEMENTS_REFERENCES_HPP 00021 #define SCALAR_FUNCTION_MESH_ELEMENTS_REFERENCES_HPP 00022 00023 #include <ScalarFunctionBase.hpp> 00024 #include <ReferenceCounting.hpp> 00025 00026 #include <map> 00027 00028 class Mesh; 00029 00039 class ScalarFunctionMeshElementsReferences 00040 : public ScalarFunctionBase 00041 { 00042 public: 00043 typedef 00044 std::map<size_t, ConstReferenceCounting<ScalarFunctionBase> > 00045 FunctionMap; 00048 private: 00049 FunctionMap 00050 __functionMap; 00052 ConstReferenceCounting<Mesh> 00053 __mesh; 00062 std::ostream& __put(std::ostream& os) const 00063 { 00064 os << "references(elements,{mesh}"; 00065 for (FunctionMap::const_iterator i = __functionMap.begin(); 00066 i != __functionMap.end(); ++i) { 00067 os << ',' << i->first << ':' << *i->second; 00068 } 00069 os << ')'; 00070 return os; 00071 } 00072 00082 template <typename MeshType> 00083 real_t __evaluate(const TinyVector<3,real_t>& X) const; 00084 00085 public: 00093 real_t operator()(const TinyVector<3, real_t>& X) const; 00094 00100 bool canBeSimplified() const 00101 { 00102 return false; 00103 } 00104 00111 ScalarFunctionMeshElementsReferences(const FunctionMap& functionMap, 00112 ConstReferenceCounting<Mesh> mesh); 00113 00119 ScalarFunctionMeshElementsReferences(const ScalarFunctionMeshElementsReferences& f); 00120 00125 ~ScalarFunctionMeshElementsReferences(); 00126 }; 00127 00128 #endif // SCALAR_FUNCTION_MESH_ELEMENTS_REFERENCES_HPP
1.5.6