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 Description 00025 00026 \*---------------------------------------------------------------------------*/ 00027 00028 #include "vtkMesh.H" 00029 #include <finiteVolume/fvMeshSubset.H> 00030 #include <OpenFOAM/Time.H> 00031 #include <meshTools/cellSet.H> 00032 00033 // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // 00034 00035 00036 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // 00037 00038 // Construct from components 00039 Foam::vtkMesh::vtkMesh 00040 ( 00041 fvMesh& baseMesh, 00042 const word& setName 00043 ) 00044 : 00045 baseMesh_(baseMesh), 00046 subsetter_(baseMesh), 00047 setName_(setName) 00048 { 00049 if (setName.size()) 00050 { 00051 // Read cellSet using whole mesh 00052 cellSet currentSet(baseMesh_, setName_); 00053 00054 // Set current subset 00055 subsetter_.setLargeCellSubset(currentSet); 00056 } 00057 } 00058 00059 00060 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // 00061 00062 Foam::polyMesh::readUpdateState Foam::vtkMesh::readUpdate() 00063 { 00064 polyMesh::readUpdateState meshState = baseMesh_.readUpdate(); 00065 00066 if (meshState != polyMesh::UNCHANGED) 00067 { 00068 // Note: since fvMeshSubset has no movePoints() functionality reconstruct 00069 // the subset even if only movement. 00070 00071 topoPtr_.clear(); 00072 00073 if (setName_.size()) 00074 { 00075 Info<< "Subsetting mesh based on cellSet " << setName_ << endl; 00076 00077 // Read cellSet using whole mesh 00078 cellSet currentSet(baseMesh_, setName_); 00079 00080 subsetter_.setLargeCellSubset(currentSet); 00081 } 00082 } 00083 00084 return meshState; 00085 } 00086 00087 00088 // ************************ vim: set sw=4 sts=4 et: ************************ //