Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "preservePatchTypes.H"
00027 #include <OpenFOAM/polyBoundaryMeshEntries.H>
00028 #include <OpenFOAM/dictionary.H>
00029
00030
00031
00032 void Foam::preservePatchTypes
00033 (
00034 const objectRegistry& obr,
00035 const word& meshInstance,
00036 const fileName& meshDir,
00037 const wordList& patchNames,
00038 wordList& patchTypes,
00039 const word& defaultFacesName,
00040 word& defaultFacesType,
00041 wordList& patchPhysicalTypes
00042 )
00043 {
00044 dictionary patchDictionary;
00045
00046 {
00047 IOobject patchEntriesHeader
00048 (
00049 "boundary",
00050 meshInstance,
00051 meshDir,
00052 obr,
00053 IOobject::MUST_READ,
00054 IOobject::NO_WRITE,
00055 false
00056 );
00057
00058 if (patchEntriesHeader.headerOk())
00059 {
00060
00061 polyBoundaryMeshEntries patchEntries(patchEntriesHeader);
00062
00063 forAll(patchEntries, patchi)
00064 {
00065 patchDictionary.add(patchEntries[patchi]);
00066 }
00067 }
00068 }
00069
00070 if (patchDictionary.size())
00071 {
00072 forAll(patchNames, patchi)
00073 {
00074 if (patchDictionary.found(patchNames[patchi]))
00075 {
00076 const dictionary& patchDict =
00077 patchDictionary.subDict(patchNames[patchi]);
00078
00079 patchDict.lookup("type") >> patchTypes[patchi];
00080
00081 patchDict.readIfPresent("geometricType", patchTypes[patchi]);
00082 patchDict.readIfPresent
00083 (
00084 "physicalType",
00085 patchPhysicalTypes[patchi]
00086 );
00087 }
00088 }
00089
00090 if (patchDictionary.found(defaultFacesName))
00091 {
00092 const dictionary& patchDict =
00093 patchDictionary.subDict(defaultFacesName);
00094
00095 patchDict.readIfPresent("geometricType", defaultFacesType);
00096 }
00097 }
00098
00099 Info << nl << "Default patch type set to " << defaultFacesType << endl;
00100 }
00101
00102
00103