diff --git a/applications/utilities/mesh/conversion/ansysToFoam/ansysToFoam.L b/applications/utilities/mesh/conversion/ansysToFoam/ansysToFoam.L index c49dc5db31..0bab423114 100644 --- a/applications/utilities/mesh/conversion/ansysToFoam/ansysToFoam.L +++ b/applications/utilities/mesh/conversion/ansysToFoam/ansysToFoam.L @@ -569,21 +569,31 @@ int main(int argc, char *argv[]) << "as type patch. Please reset after mesh conversion as necessary." << endl; - wordList patchTypes(patchFaces.size(), polyPatch::typeName); - wordList patchPhysicalTypes(patchFaces.size()); + PtrList patchDicts; preservePatchTypes ( runTime, runTime.constant(), - polyMesh::defaultRegion, + polyMesh::meshSubDir, patchNames, - patchTypes, + patchDicts, defaultFacesName, - defaultFacesType, - patchPhysicalTypes + defaultFacesType ); + // Add information to dictionary + forAll(patchNames, patchI) + { + if (!patchDicts.set(patchI)) + { + patchDicts.set(patchI, new dictionary()); + } + // Add but not overwrite + patchDicts[patchI].add("type", polyPatch::typeName, false); + } + + polyMesh pShapeMesh ( IOobject @@ -596,10 +606,9 @@ int main(int argc, char *argv[]) cellShapes, patchFaces, patchNames, - patchTypes, + patchDicts, defaultFacesName, - defaultFacesType, - patchPhysicalTypes + defaultFacesType ); diff --git a/applications/utilities/mesh/conversion/cfx4ToFoam/cfx4ToFoam.C b/applications/utilities/mesh/conversion/cfx4ToFoam/cfx4ToFoam.C index 2de1b840e9..ff0f80df53 100644 --- a/applications/utilities/mesh/conversion/cfx4ToFoam/cfx4ToFoam.C +++ b/applications/utilities/mesh/conversion/cfx4ToFoam/cfx4ToFoam.C @@ -578,7 +578,6 @@ int main(int argc, char *argv[]) wordList patchTypes(npatch); word defaultFacesName = "defaultFaces"; word defaultFacesType = wallPolyPatch::typeName; - wordList patchPhysicalTypes(npatch); label nCreatedPatches = 0; @@ -707,18 +706,30 @@ int main(int argc, char *argv[]) patchTypes.setSize(nCreatedPatches); patchNames.setSize(nCreatedPatches); + PtrList patchDicts; + preservePatchTypes ( runTime, runTime.constant(), - polyMesh::defaultRegion, + polyMesh::meshSubDir, patchNames, - patchTypes, + patchDicts, defaultFacesName, - defaultFacesType, - patchPhysicalTypes + defaultFacesType ); + // Add information to dictionary + forAll(patchNames, patchI) + { + if (!patchDicts.set(patchI)) + { + patchDicts.set(patchI, new dictionary()); + } + // Add but not overwrite + patchDicts[patchI].add("type", patchTypes[patchI], false); + } + polyMesh pShapeMesh ( IOobject @@ -731,10 +742,9 @@ int main(int argc, char *argv[]) cellShapes, boundary, patchNames, - patchTypes, + patchDicts, defaultFacesName, - defaultFacesType, - patchPhysicalTypes + defaultFacesType ); // Set the precision of the points data to 10 diff --git a/applications/utilities/mesh/conversion/fluentMeshToFoam/fluentMeshToFoam.L b/applications/utilities/mesh/conversion/fluentMeshToFoam/fluentMeshToFoam.L index 619374396f..51d3cd97ea 100644 --- a/applications/utilities/mesh/conversion/fluentMeshToFoam/fluentMeshToFoam.L +++ b/applications/utilities/mesh/conversion/fluentMeshToFoam/fluentMeshToFoam.L @@ -45,7 +45,6 @@ Description #include "emptyPolyPatch.H" #include "wallPolyPatch.H" #include "symmetryPolyPatch.H" -#include "preservePatchTypes.H" #include "cellShape.H" #include "faceSet.H" #include "cellSet.H" @@ -1542,17 +1541,6 @@ int main(int argc, char *argv[]) } repatcher.repatch(); - preservePatchTypes - ( - runTime, - runTime.constant(), - polyMesh::defaultRegion, - patchNames, - patchTypes, - defaultFacesName, - defaultFacesType, - patchPhysicalTypes - ); // Set the precision of the points data to 10 IOstream::defaultPrecision(10); diff --git a/applications/utilities/mesh/conversion/gambitToFoam/gambitToFoam.L b/applications/utilities/mesh/conversion/gambitToFoam/gambitToFoam.L index c1d2b44e82..bdb3a38c84 100644 --- a/applications/utilities/mesh/conversion/gambitToFoam/gambitToFoam.L +++ b/applications/utilities/mesh/conversion/gambitToFoam/gambitToFoam.L @@ -818,24 +818,32 @@ int main(int argc, char *argv[]) // Scale points points *= scaleFactor; - wordList patchTypes(boundary.size(), polyPatch::typeName); + PtrList patchDicts(boundary.size()); word defaultFacesName = "defaultFaces"; word defaultFacesType = emptyPolyPatch::typeName; - wordList patchPhysicalTypes(boundary.size()); preservePatchTypes ( runTime, runTime.constant(), - polyMesh::defaultRegion, + polyMesh::meshSubDir, patchNames, - patchTypes, + patchDicts, defaultFacesName, - defaultFacesType, - patchPhysicalTypes + defaultFacesType ); - // Mesh will auto-write on construction + // Add information to dictionary + forAll(patchNames, patchI) + { + if (!patchDicts.set(patchI)) + { + patchDicts.set(patchI, new dictionary()); + } + // Add but not overwrite + patchDicts[patchI].add("type", polyPatch::typeName, false); + } + polyMesh pShapeMesh ( IOobject @@ -848,10 +856,9 @@ int main(int argc, char *argv[]) cells, boundary, patchNames, - patchTypes, + patchDicts, defaultFacesName, - defaultFacesType, - patchPhysicalTypes + defaultFacesType ); // Set the precision of the points data to 10 diff --git a/applications/utilities/mesh/conversion/kivaToFoam/readKivaGrid.H b/applications/utilities/mesh/conversion/kivaToFoam/readKivaGrid.H index d4356c2cdc..04b36020ea 100644 --- a/applications/utilities/mesh/conversion/kivaToFoam/readKivaGrid.H +++ b/applications/utilities/mesh/conversion/kivaToFoam/readKivaGrid.H @@ -459,7 +459,6 @@ wordList patchNames(nPatches); wordList patchTypes(nPatches); word defaultFacesName = "defaultFaces"; word defaultFacesType = emptyPolyPatch::typeName; -wordList patchPhysicalTypes(nPatches); label nAddedPatches = 0; @@ -535,17 +534,27 @@ forAll(boundary, patchi) } } +PtrList patchDicts; preservePatchTypes ( runTime, runTime.constant(), - polyMesh::defaultRegion, + polyMesh::meshSubDir, patchNames, - patchTypes, + patchDicts, defaultFacesName, - defaultFacesType, - patchPhysicalTypes + defaultFacesType ); +// Add information to dictionary +forAll(patchNames, patchI) +{ + if (!patchDicts.set(patchI)) + { + patchDicts.set(patchI, new dictionary()); + } + // Add but not overwrite + patchDicts[patchI].add("type", patchTypes[patchI], false); +} // Build the mesh and write it out polyMesh pShapeMesh @@ -560,10 +569,9 @@ polyMesh pShapeMesh cellShapes, boundary, patchNames, - patchTypes, + patchDicts, defaultFacesName, - defaultFacesType, - patchPhysicalTypes + defaultFacesType ); Info << "Writing polyMesh" << endl; diff --git a/applications/utilities/mesh/conversion/plot3dToFoam/plot3dToFoam.C b/applications/utilities/mesh/conversion/plot3dToFoam/plot3dToFoam.C index 40db7f47b5..806b4fdfcc 100644 --- a/applications/utilities/mesh/conversion/plot3dToFoam/plot3dToFoam.C +++ b/applications/utilities/mesh/conversion/plot3dToFoam/plot3dToFoam.C @@ -43,7 +43,6 @@ Description #include "polyMesh.H" #include "wallPolyPatch.H" #include "symmetryPolyPatch.H" -#include "preservePatchTypes.H" #include "cellShape.H" #include "cellModeller.H" #include "mergePoints.H" diff --git a/applications/utilities/mesh/conversion/sammToFoam/readBoundary.C b/applications/utilities/mesh/conversion/sammToFoam/readBoundary.C index b1ec1b772e..53dffd39c6 100644 --- a/applications/utilities/mesh/conversion/sammToFoam/readBoundary.C +++ b/applications/utilities/mesh/conversion/sammToFoam/readBoundary.C @@ -230,17 +230,28 @@ void sammMesh::readBoundary() patchPhysicalTypes_.setSize(patchTypes_.size()); + PtrList patchDicts; + preservePatchTypes ( runTime_, runTime_.constant(), - polyMesh::defaultRegion, + polyMesh::meshSubDir, patchNames_, - patchTypes_, + patchDicts, defaultFacesName_, - defaultFacesType_, - patchPhysicalTypes_ + defaultFacesType_ ); + + forAll(patchDicts, patchI) + { + if (patchDicts.set(patchI)) + { + const dictionary& dict = patchDicts[patchI]; + dict.readIfPresent("type", patchTypes_[patchI]); + dict.readIfPresent("physicalType", patchPhysicalTypes_[patchI]); + } + } } diff --git a/applications/utilities/mesh/conversion/star3ToFoam/readBoundary.C b/applications/utilities/mesh/conversion/star3ToFoam/readBoundary.C index be29c36cd1..a96ee6e96b 100644 --- a/applications/utilities/mesh/conversion/star3ToFoam/readBoundary.C +++ b/applications/utilities/mesh/conversion/star3ToFoam/readBoundary.C @@ -228,17 +228,28 @@ void starMesh::readBoundary() patchPhysicalTypes_.setSize(patchTypes_.size()); + PtrList patchDicts; + preservePatchTypes ( runTime_, runTime_.constant(), - polyMesh::defaultRegion, + polyMesh::meshSubDir, patchNames_, - patchTypes_, + patchDicts, defaultFacesName_, - defaultFacesType_, - patchPhysicalTypes_ + defaultFacesType_ ); + + forAll(patchDicts, patchI) + { + if (patchDicts.set(patchI)) + { + const dictionary& dict = patchDicts[patchI]; + dict.readIfPresent("type", patchTypes_[patchI]); + dict.readIfPresent("physicalType", patchPhysicalTypes_[patchI]); + } + } } diff --git a/applications/utilities/mesh/generation/blockMesh/blockMeshApp.C b/applications/utilities/mesh/generation/blockMesh/blockMeshApp.C index a0baebaae7..a85a4e417f 100644 --- a/applications/utilities/mesh/generation/blockMesh/blockMeshApp.C +++ b/applications/utilities/mesh/generation/blockMesh/blockMeshApp.C @@ -52,7 +52,6 @@ Usage #include "blockMesh.H" #include "attachPolyTopoChanger.H" -#include "preservePatchTypes.H" #include "emptyPolyPatch.H" #include "cellSet.H" @@ -219,6 +218,7 @@ int main(int argc, char *argv[]) xferCopy(blocks.points()), // could we re-use space? blocks.cells(), blocks.patches(), + blocks.patchNames(), blocks.patchDicts(), defaultFacesName, defaultFacesType diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.C b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.C index 06aeb3291a..6216228961 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.C +++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.C @@ -163,6 +163,7 @@ void Foam::ensightMesh::correct() prisms.setSize(nPrisms); wedges.setSize(nWedges); hexes.setSize(nHexes); + hexesWedges.setSize(nHexesWedges); polys.setSize(nPolys); meshCellSets_.nTets = nTets; diff --git a/src/OpenFOAM/meshes/polyMesh/polyMesh.H b/src/OpenFOAM/meshes/polyMesh/polyMesh.H index 62df97511c..74fd718da3 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyMesh.H +++ b/src/OpenFOAM/meshes/polyMesh/polyMesh.H @@ -280,6 +280,7 @@ public: const Xfer& points, const cellShapeList& shapes, const faceListList& boundaryFaces, + const wordList& boundaryPatchNames, const PtrList& boundaryDicts, const word& defaultBoundaryPatchName, const word& defaultBoundaryPatchType, diff --git a/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C b/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C index 73434502f4..f7b1052bfe 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C +++ b/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C @@ -698,6 +698,7 @@ Foam::polyMesh::polyMesh const Xfer& points, const cellShapeList& cellsAsShapes, const faceListList& boundaryFaces, + const wordList& boundaryPatchNames, const PtrList& boundaryDicts, const word& defaultBoundaryPatchName, const word& defaultBoundaryPatchType, @@ -832,12 +833,6 @@ Foam::polyMesh::polyMesh // Remove all of the old mesh files if they exist removeFiles(instance()); - wordList boundaryPatchNames(boundaryDicts.size()); - forAll(boundaryDicts, patchI) - { - boundaryDicts[patchI].lookup("name") >> boundaryPatchNames[patchI]; - } - // Calculate faces and cells labelList patchSizes; labelList patchStarts; @@ -858,7 +853,7 @@ Foam::polyMesh::polyMesh // Warning: Patches can only be added once the face list is // completed, as they hold a subList of the face list - forAll(boundaryFaces, patchI) + forAll(boundaryDicts, patchI) { dictionary patchDict(boundaryDicts[patchI]); diff --git a/src/OpenFOAM/meshes/preservePatchTypes/preservePatchTypes.C b/src/OpenFOAM/meshes/preservePatchTypes/preservePatchTypes.C index 384e718d07..c040e777ae 100644 --- a/src/OpenFOAM/meshes/preservePatchTypes/preservePatchTypes.C +++ b/src/OpenFOAM/meshes/preservePatchTypes/preservePatchTypes.C @@ -25,7 +25,6 @@ License #include "preservePatchTypes.H" #include "polyBoundaryMeshEntries.H" -#include "dictionary.H" // * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // @@ -35,14 +34,16 @@ void Foam::preservePatchTypes const word& meshInstance, const fileName& meshDir, const wordList& patchNames, - wordList& patchTypes, + PtrList& patchDicts, const word& defaultFacesName, - word& defaultFacesType, - wordList& patchPhysicalTypes + word& defaultFacesType ) { + patchDicts.setSize(patchNames.size()); + dictionary patchDictionary; + // Read boundary file as single dictionary { IOobject patchEntriesHeader ( @@ -67,35 +68,27 @@ void Foam::preservePatchTypes } } - if (patchDictionary.size()) + forAll(patchNames, patchi) { - forAll(patchNames, patchi) - { - if (patchDictionary.found(patchNames[patchi])) - { - const dictionary& patchDict = - patchDictionary.subDict(patchNames[patchi]); - - patchDict.lookup("type") >> patchTypes[patchi]; - - patchDict.readIfPresent("geometricType", patchTypes[patchi]); - patchDict.readIfPresent - ( - "physicalType", - patchPhysicalTypes[patchi] - ); - } - } - - if (patchDictionary.found(defaultFacesName)) + if (patchDictionary.found(patchNames[patchi])) { const dictionary& patchDict = - patchDictionary.subDict(defaultFacesName); + patchDictionary.subDict(patchNames[patchi]); - patchDict.readIfPresent("geometricType", defaultFacesType); + patchDicts.set(patchi, patchDict.clone()); + patchDicts[patchi].remove("nFaces"); + patchDicts[patchi].remove("startFace"); } } + if (patchDictionary.found(defaultFacesName)) + { + const dictionary& patchDict = + patchDictionary.subDict(defaultFacesName); + + patchDict.readIfPresent("geometricType", defaultFacesType); + } + Info<< nl << "Default patch type set to " << defaultFacesType << endl; } diff --git a/src/OpenFOAM/meshes/preservePatchTypes/preservePatchTypes.H b/src/OpenFOAM/meshes/preservePatchTypes/preservePatchTypes.H index 5ecf1b34ee..59375fac79 100644 --- a/src/OpenFOAM/meshes/preservePatchTypes/preservePatchTypes.H +++ b/src/OpenFOAM/meshes/preservePatchTypes/preservePatchTypes.H @@ -37,6 +37,7 @@ SourceFiles #include "fileName.H" #include "wordList.H" +#include "dictionary.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -52,10 +53,9 @@ void preservePatchTypes const word& meshInstance, const fileName& meshDir, const wordList& patchNames, - wordList& patchTypes, + PtrList& patchDicts, const word& defaultFacesName, - word& defaultFacesType, - wordList& patchPhysicalTypes + word& defaultFacesType ); } // End namespace Foam diff --git a/src/OpenFOAM/meshes/primitiveShapes/plane/plane.C b/src/OpenFOAM/meshes/primitiveShapes/plane/plane.C index d4407a7d68..8ced550982 100644 --- a/src/OpenFOAM/meshes/primitiveShapes/plane/plane.C +++ b/src/OpenFOAM/meshes/primitiveShapes/plane/plane.C @@ -272,10 +272,10 @@ const Foam::point& Foam::plane::refPoint() const } -// Return coefficcients for plane equation: ax + by + cz + d = 0 -Foam::scalarList Foam::plane::planeCoeffs() const +// Return coefficients for plane equation: ax + by + cz + d = 0 +Foam::FixedList Foam::plane::planeCoeffs() const { - scalarList C(4); + FixedList C(4); scalar magX = mag(unitVector_.x()); scalar magY = mag(unitVector_.y()); @@ -291,8 +291,8 @@ Foam::scalarList Foam::plane::planeCoeffs() const } else { - C[0] = 0; - C[1] = 0; + C[0] = unitVector_.x()/unitVector_.z(); + C[1] = unitVector_.y()/unitVector_.z(); C[2] = 1; } } @@ -300,14 +300,14 @@ Foam::scalarList Foam::plane::planeCoeffs() const { if (magY > magZ) { - C[0] = 0; + C[0] = unitVector_.x()/unitVector_.y(); C[1] = 1; C[2] = unitVector_.z()/unitVector_.y(); } else { - C[0] = 0; - C[1] = 0; + C[0] = unitVector_.x()/unitVector_.z(); + C[1] = unitVector_.y()/unitVector_.z(); C[2] = 1; } } @@ -422,19 +422,18 @@ Foam::point Foam::plane::planePlaneIntersect const plane& plane3 ) const { - List pcs(3); - pcs[0]= planeCoeffs(); - pcs[1]= plane2.planeCoeffs(); - pcs[2]= plane3.planeCoeffs(); + FixedList coeffs1(planeCoeffs()); + FixedList coeffs2(plane2.planeCoeffs()); + FixedList coeffs3(plane3.planeCoeffs()); tensor a ( - pcs[0][0],pcs[0][1],pcs[0][2], - pcs[1][0],pcs[1][1],pcs[1][2], - pcs[2][0],pcs[2][1],pcs[2][2] + coeffs1[0],coeffs1[1],coeffs1[2], + coeffs2[0],coeffs2[1],coeffs2[2], + coeffs3[0],coeffs3[1],coeffs3[2] ); - vector b(pcs[0][3],pcs[1][3],pcs[2][3]); + vector b(coeffs1[3],coeffs2[3],coeffs3[3]); return (inv(a) & (-b)); } diff --git a/src/OpenFOAM/meshes/primitiveShapes/plane/plane.H b/src/OpenFOAM/meshes/primitiveShapes/plane/plane.H index 44eb20cbc0..89fb6afd28 100644 --- a/src/OpenFOAM/meshes/primitiveShapes/plane/plane.H +++ b/src/OpenFOAM/meshes/primitiveShapes/plane/plane.H @@ -149,7 +149,7 @@ public: //- Return coefficients for the // plane equation: ax + by + cz + d = 0 - scalarList planeCoeffs() const; + FixedList planeCoeffs() const; //- Return nearest point in the plane for the given point point nearestPoint(const point& p) const; diff --git a/src/conversion/meshReader/createPolyBoundary.C b/src/conversion/meshReader/createPolyBoundary.C index 16a7e7a31d..16ea5d2a98 100644 --- a/src/conversion/meshReader/createPolyBoundary.C +++ b/src/conversion/meshReader/createPolyBoundary.C @@ -412,6 +412,8 @@ Foam::meshReader::polyBoundaryPatches(const polyMesh& mesh) List p(nPatches); + // All patch dictionaries + PtrList patchDicts(patchNames_.size()); // Default boundary patch types word defaultFacesType(emptyPolyPatch::typeName); @@ -422,20 +424,37 @@ Foam::meshReader::polyBoundaryPatches(const polyMesh& mesh) mesh.instance(), mesh.meshDir(), patchNames_, - patchTypes_, + patchDicts, "defaultFaces", - defaultFacesType, - patchPhysicalTypes_ + defaultFacesType ); + forAll(patchDicts, patchI) + { + if (!patchDicts.set(patchI)) + { + patchDicts.set(patchI, new dictionary()); + } + dictionary& patchDict = patchDicts[patchI]; + + // add but not overwrite type + patchDict.add("type", patchTypes_[patchI], false); + if (patchPhysicalTypes_.size() && patchPhysicalTypes_[patchI].size()) + { + patchDict.add("startFace", patchPhysicalTypes_[patchI], false); + } + + // overwrite sizes and start + patchDict.add("nFaces", patchSizes_[patchI], true); + patchDict.add("startFace", patchStarts_[patchI], true); + } + forAll(patchStarts_, patchI) { p[patchI] = polyPatch::New ( - patchTypes_[patchI], patchNames_[patchI], - patchSizes_[patchI], - patchStarts_[patchI], + patchDicts[patchI], patchI, mesh.boundaryMesh() ).ptr(); diff --git a/src/mesh/blockMesh/blockMesh/blockMesh.C b/src/mesh/blockMesh/blockMesh/blockMesh.C index c0c6041f4c..9a6b97b087 100644 --- a/src/mesh/blockMesh/blockMesh/blockMesh.C +++ b/src/mesh/blockMesh/blockMesh/blockMesh.C @@ -89,7 +89,6 @@ Foam::PtrList Foam::blockMesh::patchDicts() const patchTopologies[patchI].write(os); IStringStream is(os.str()); patchDicts.set(patchI, new dictionary(is)); - patchDicts[patchI].set("name", patchTopologies[patchI].name()); } return patchDicts; } @@ -134,12 +133,12 @@ const Foam::faceListList& Foam::blockMesh::patches() const } -//Foam::wordList Foam::blockMesh::patchNames() const -//{ -// return topology().boundaryMesh().names(); -//} -// -// +Foam::wordList Foam::blockMesh::patchNames() const +{ + return topology().boundaryMesh().names(); +} + + //Foam::wordList Foam::blockMesh::patchTypes() const //{ // return topology().boundaryMesh().types(); diff --git a/src/mesh/blockMesh/blockMesh/blockMesh.H b/src/mesh/blockMesh/blockMesh/blockMesh.H index eb43c80d83..9b989f5356 100644 --- a/src/mesh/blockMesh/blockMesh/blockMesh.H +++ b/src/mesh/blockMesh/blockMesh/blockMesh.H @@ -121,6 +121,7 @@ class blockMesh bool readBoundary ( const dictionary& meshDescription, + wordList& patchNames, faceListList& tmpBlocksPatches, PtrList& patchDicts ); @@ -185,8 +186,8 @@ public: //- Get patch information from the topology mesh PtrList patchDicts() const; -// wordList patchNames() const; -// + wordList patchNames() const; + // wordList patchTypes() const; // // wordList patchPhysicalTypes() const; diff --git a/src/mesh/blockMesh/blockMesh/blockMeshTopology.C b/src/mesh/blockMesh/blockMesh/blockMeshTopology.C index d1fe81c2f1..b82752c947 100644 --- a/src/mesh/blockMesh/blockMesh/blockMeshTopology.C +++ b/src/mesh/blockMesh/blockMesh/blockMeshTopology.C @@ -189,6 +189,7 @@ bool Foam::blockMesh::readPatches bool Foam::blockMesh::readBoundary ( const dictionary& meshDescription, + wordList& patchNames, faceListList& tmpBlocksPatches, PtrList& patchDicts ) @@ -201,6 +202,7 @@ bool Foam::blockMesh::readBoundary meshDescription.lookup("boundary") ); + patchNames.setSize(patchesInfo.size()); tmpBlocksPatches.setSize(patchesInfo.size()); patchDicts.setSize(patchesInfo.size()); @@ -215,9 +217,9 @@ bool Foam::blockMesh::readBoundary << " valid dictionary." << exit(FatalIOError); } - // Construct dictionary and add name + patchNames[patchI] = patchInfo.keyword(); + // Construct dictionary patchDicts.set(patchI, new dictionary(patchInfo.dict())); - patchDicts[patchI].set("name", patchInfo.keyword()); // Read block faces patchDicts[patchI].lookup("faces") >> tmpBlocksPatches[patchI]; @@ -472,7 +474,8 @@ Foam::polyMesh* Foam::blockMesh::createTopology(IOdictionary& meshDescription) Info<< nl << "Reading physicalType from existing boundary file" << endl; - wordList patchPhysicalTypes(tmpBlocksPatches.size()); + PtrList patchDicts(patchNames.size()); + word defaultFacesType; preservePatchTypes ( @@ -480,31 +483,29 @@ Foam::polyMesh* Foam::blockMesh::createTopology(IOdictionary& meshDescription) meshDescription.time().constant(), polyMesh::meshSubDir, patchNames, - patchTypes, + patchDicts, defaultPatchName, - defaultPatchType, - patchPhysicalTypes + defaultPatchType ); - // Convert into dictionary - PtrList patchDicts(patchNames.size()); + // Add cyclic info (might not be present from older file) forAll(patchDicts, patchI) { - patchDicts.set(patchI, new dictionary()); - patchDicts[patchI].set("name", patchNames[patchI]); - patchDicts[patchI].set("type", patchTypes[patchI]); + if (!patchDicts.set(patchI)) + { + patchDicts.set(patchI, new dictionary()); + } + + dictionary& dict = patchDicts[patchI]; + + // Add but not override type + dict.add("type", patchTypes[patchI], false); + + // Override neighbourpatch name if (nbrPatchNames[patchI] != word::null) { - patchDicts[patchI].set("neighbourPatch", nbrPatchNames[patchI]); - } - if (patchPhysicalTypes[patchI] != word::null) - { - patchDicts[patchI].set - ( - "physicalType", - patchPhysicalTypes[patchI] - ); + dict.set("neighbourPatch", nbrPatchNames[patchI]); } } @@ -523,6 +524,7 @@ Foam::polyMesh* Foam::blockMesh::createTopology(IOdictionary& meshDescription) xferCopy(blockPointField_), // copy these points, do NOT move tmpBlockCells, tmpBlocksPatches, + patchNames, patchDicts, defaultPatchName, defaultPatchType @@ -530,12 +532,14 @@ Foam::polyMesh* Foam::blockMesh::createTopology(IOdictionary& meshDescription) } else if (meshDescription.found("boundary")) { + wordList patchNames; faceListList tmpBlocksPatches; PtrList patchDicts; topologyOK = topologyOK && readBoundary ( meshDescription, + patchNames, tmpBlocksPatches, patchDicts ); @@ -553,6 +557,7 @@ Foam::polyMesh* Foam::blockMesh::createTopology(IOdictionary& meshDescription) cellShapeList tmpBlockCells(blocks.size()); createCellShapes(tmpBlockCells); + // Extract blockMeshPtr = new polyMesh ( @@ -568,6 +573,7 @@ Foam::polyMesh* Foam::blockMesh::createTopology(IOdictionary& meshDescription) xferCopy(blockPointField_), // copy these points, do NOT move tmpBlockCells, tmpBlocksPatches, + patchNames, patchDicts, defaultPatchName, defaultPatchType diff --git a/tutorials/compressible/rhoCentralFoam/biconic25-55Run35/datToFoam/datToFoam.C b/tutorials/compressible/rhoCentralFoam/biconic25-55Run35/datToFoam/datToFoam.C index 4a276547b1..4b923009ff 100644 --- a/tutorials/compressible/rhoCentralFoam/biconic25-55Run35/datToFoam/datToFoam.C +++ b/tutorials/compressible/rhoCentralFoam/biconic25-55Run35/datToFoam/datToFoam.C @@ -34,14 +34,7 @@ Description #include "Time.H" #include "IFstream.H" #include "OFstream.H" -#include "meshTools.H" -#include "polyMesh.H" -#include "wallPolyPatch.H" -#include "symmetryPolyPatch.H" -#include "preservePatchTypes.H" -#include "cellShape.H" -#include "cellModeller.H" -#include "mergePoints.H" +#include "pointField.H" #include "unitConversion.H" using namespace Foam; diff --git a/wmake/wmakeScheduler b/wmake/wmakeScheduler index be5f4ba58b..bfff68053a 100755 --- a/wmake/wmakeScheduler +++ b/wmake/wmakeScheduler @@ -184,14 +184,14 @@ do # Set colour colour="${colourList[$colourIndex]}" - if [ "$host" = "$HOST" ]; then + if [ "$host" = "$HOSTNAME" ]; then eval $* 2>&1 | colourPipe "$colour" else ssh $host "$sourceFoam 2>/dev/null; cd $PWD && $rcmd" 2>&1 | colourPipe "$colour" fi retval=$? else - if [ "$host" = "$HOST" ]; then + if [ "$host" = "$HOSTNAME" ]; then eval $* 2>&1 else ssh $host "$sourceFoam 2>/dev/null; cd $PWD && $rcmd" 2>&1