00001 /*---------------------------------------------------------------------------*\ 00002 ========= | 00003 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox 00004 \\ / O peration | 00005 \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd. 00006 \\/ M anipulation | 00007 ------------------------------------------------------------------------------- 00008 License 00009 This file is part of OpenFOAM. 00010 00011 OpenFOAM is free software: you can redistribute it and/or modify it 00012 under the terms of the GNU General Public License as published by 00013 the Free Software Foundation, either version 3 of the License, or 00014 (at your option) any later version. 00015 00016 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT 00017 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00018 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 00019 for more details. 00020 00021 You should have received a copy of the GNU General Public License 00022 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. 00023 00024 Class 00025 Foam::MapFvVolField 00026 00027 Description 00028 Map volume internal field on topology change. This is a partial 00029 template specialisation, see MapGeometricFields. 00030 00031 \*---------------------------------------------------------------------------*/ 00032 00033 #ifndef MapFvVolField_H 00034 #define MapFvVolField_H 00035 00036 #include <OpenFOAM/Field.H> 00037 #include <finiteVolume/volMesh.H> 00038 00039 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00040 00041 namespace Foam 00042 { 00043 00044 template<class Type, class MeshMapper> 00045 class MapInternalField<Type, MeshMapper, volMesh> 00046 { 00047 public: 00048 00049 MapInternalField() 00050 {} 00051 00052 void operator() 00053 ( 00054 Field<Type>& field, 00055 const MeshMapper& mapper 00056 ) const; 00057 }; 00058 00059 00060 template<class Type, class MeshMapper> 00061 void MapInternalField<Type, MeshMapper, volMesh>::operator() 00062 ( 00063 Field<Type>& field, 00064 const MeshMapper& mapper 00065 ) const 00066 { 00067 if (field.size() != mapper.volMap().sizeBeforeMapping()) 00068 { 00069 FatalErrorIn 00070 ( 00071 "void MapInternalField<Type, MeshMapper, volMesh>::operator()\n" 00072 "(\n" 00073 " Field<Type>& field,\n" 00074 " const MeshMapper& mapper\n" 00075 ") const" 00076 ) << "Incompatible size before mapping. Field size: " << field.size() 00077 << " map size: " << mapper.volMap().sizeBeforeMapping() 00078 << abort(FatalError); 00079 } 00080 00081 field.autoMap(mapper.volMap()); 00082 } 00083 00084 00085 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00086 00087 } // End namespace Foam 00088 00089 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00090 00091 #endif 00092 00093 // ************************ vim: set sw=4 sts=4 et: ************************ //