BUG: UListIO: byteSize overflowing on really big faceLists
[OpenFOAM-2.0.x.git] / src / OpenFOAM / meshes / preservePatchTypes / preservePatchTypes.C
blobdaa989021f3a15eefc61f10a0a506997b9891480
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by
13     the Free Software Foundation, either version 3 of the License, or
14     (at your option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 #include "preservePatchTypes.H"
27 #include "polyBoundaryMeshEntries.H"
29 // * * * * * * * * * * * * * * * Global Functions  * * * * * * * * * * * * * //
31 void Foam::preservePatchTypes
33     const objectRegistry& obr,
34     const word& meshInstance,
35     const fileName& meshDir,
36     const wordList& patchNames,
37     PtrList<dictionary>& patchDicts,
38     const word& defaultFacesName,
39     word& defaultFacesType
42     patchDicts.setSize(patchNames.size());
44     dictionary patchDictionary;
46     // Read boundary file as single dictionary
47     {
48         IOobject patchEntriesHeader
49         (
50             "boundary",
51             meshInstance,
52             meshDir,
53             obr,
54             IOobject::MUST_READ,
55             IOobject::NO_WRITE,
56             false
57         );
59         if (patchEntriesHeader.headerOk())
60         {
61             // Create a list of entries from the boundary file.
62             polyBoundaryMeshEntries patchEntries(patchEntriesHeader);
64             forAll(patchEntries, patchi)
65             {
66                 patchDictionary.add(patchEntries[patchi]);
67             }
68         }
69     }
71     forAll(patchNames, patchi)
72     {
73         if (patchDictionary.found(patchNames[patchi]))
74         {
75             const dictionary& patchDict =
76                 patchDictionary.subDict(patchNames[patchi]);
78             patchDicts.set(patchi, patchDict.clone());
79             patchDicts[patchi].remove("nFaces");
80             patchDicts[patchi].remove("startFace");
81         }
82     }
84     if (patchDictionary.found(defaultFacesName))
85     {
86         const dictionary& patchDict =
87             patchDictionary.subDict(defaultFacesName);
89         patchDict.readIfPresent("geometricType", defaultFacesType);
90     }
92     Info<< nl << "Default patch type set to " << defaultFacesType << endl;
96 // ************************************************************************* //