diff --git a/applications/utilities/mesh/conversion/ansysToFoam/ansysToFoam.L b/applications/utilities/mesh/conversion/ansysToFoam/ansysToFoam.L index c49dc5db317eadcb12fd9e269b39338bc9c3d7c9..0bab423114b329e6ecc55258318fe93627e90e15 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<dictionary> 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 2de1b840e9109fa0188157b5ced5e5198b89d57e..ff0f80df53bf3fa3a73233cd654ffc34c7b1aa84 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<dictionary> 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 619374396ffc78da2130b8789eff6ffece805cb3..51d3cd97ea4bd2ddf14d5d365ffeec8bf4ba4bd0 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 c1d2b44e829805db413afbaec3e6fde7b775791c..bdb3a38c842177ae61e790c4d8e2f1526bd8ba22 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<dictionary> 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 d4356c2cdcc1fd12ecffd32f9f780130acc3f938..04b36020ea210bf0e3a5d88e8ea8e8297d2d36e2 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<dictionary> 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 40db7f47b57530d20ca0207686be62d15b4853dd..806b4fdfcc2129a8d5471dc3930ba0b22ded73bc 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 b1ec1b772e50712d398d0617f7b755c64e122f15..53dffd39c6bca64173bc5b5d6f7881e02d9e72ea 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<dictionary> 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 be29c36cd127a36b72361b30d5fbad99c2b0bc17..a96ee6e96bb71a7df1ae627caf201cce00339f51 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<dictionary> 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 a0baebaae710f6e487bd78766da9a324f9833848..a85a4e417fa809c316f5c71b4418aed304809d0a 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 06aeb3291a26a0a9205736697e72f5e236639d5a..6216228961504504dad5cafa7dc61b69d69c5a20 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 62df97511ca5b5fbe6cdfc9eb7766cd188c5f306..74fd718da3998ec8586e0ee0bac4fe4a8a3ec23a 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyMesh.H +++ b/src/OpenFOAM/meshes/polyMesh/polyMesh.H @@ -280,6 +280,7 @@ public: const Xfer<pointField>& points, const cellShapeList& shapes, const faceListList& boundaryFaces, + const wordList& boundaryPatchNames, const PtrList<dictionary>& boundaryDicts, const word& defaultBoundaryPatchName, const word& defaultBoundaryPatchType, diff --git a/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C b/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C index 73434502f4532f32eba38527107a1827287e01d2..f7b1052bfe13514b662f24d88dcd489f0831abe7 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C +++ b/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C @@ -698,6 +698,7 @@ Foam::polyMesh::polyMesh const Xfer<pointField>& points, const cellShapeList& cellsAsShapes, const faceListList& boundaryFaces, + const wordList& boundaryPatchNames, const PtrList<dictionary>& 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 384e718d078f480984e424f90f4aa2c6122c6b75..c040e777aee36aafc02c6055507e978105844893 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<dictionary>& 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,33 +68,25 @@ void Foam::preservePatchTypes } } - if (patchDictionary.size()) + forAll(patchNames, patchi) { - forAll(patchNames, patchi) + if (patchDictionary.found(patchNames[patchi])) { - if (patchDictionary.found(patchNames[patchi])) - { - const dictionary& patchDict = - patchDictionary.subDict(patchNames[patchi]); - - patchDict.lookup("type") >> patchTypes[patchi]; + const dictionary& patchDict = + patchDictionary.subDict(patchNames[patchi]); - patchDict.readIfPresent("geometricType", patchTypes[patchi]); - patchDict.readIfPresent - ( - "physicalType", - patchPhysicalTypes[patchi] - ); - } + patchDicts.set(patchi, patchDict.clone()); + patchDicts[patchi].remove("nFaces"); + patchDicts[patchi].remove("startFace"); } + } - if (patchDictionary.found(defaultFacesName)) - { - const dictionary& patchDict = - patchDictionary.subDict(defaultFacesName); + if (patchDictionary.found(defaultFacesName)) + { + const dictionary& patchDict = + patchDictionary.subDict(defaultFacesName); - patchDict.readIfPresent("geometricType", defaultFacesType); - } + 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 5ecf1b34ee98272bd1ee935dda12b65798c20f4a..59375fac795c288e741c1f550bca213237b3d7df 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<dictionary>& 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 d4407a7d6881ebcb0195bcc7574343e5c0aad733..8ced550982428bbe2cf3778dbbe0ce8686b6e8ca 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::scalar, 4> Foam::plane::planeCoeffs() const { - scalarList C(4); + FixedList<scalar, 4> 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<scalarList> pcs(3); - pcs[0]= planeCoeffs(); - pcs[1]= plane2.planeCoeffs(); - pcs[2]= plane3.planeCoeffs(); + FixedList<scalar, 4> coeffs1(planeCoeffs()); + FixedList<scalar, 4> coeffs2(plane2.planeCoeffs()); + FixedList<scalar, 4> 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 44eb20cbc07a2d3178dbbd9b4a2d9b947688375f..89fb6afd282050b2d7ef78f812d6c958e9c91e24 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<scalar, 4> 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 16a7e7a31d3d48284623744011504581f801a87a..16ea5d2a980992493f4d3f8e905d0dbf7621bc67 100644 --- a/src/conversion/meshReader/createPolyBoundary.C +++ b/src/conversion/meshReader/createPolyBoundary.C @@ -412,6 +412,8 @@ Foam::meshReader::polyBoundaryPatches(const polyMesh& mesh) List<polyPatch*> p(nPatches); + // All patch dictionaries + PtrList<dictionary> 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 c0c6041f4c2e2e008f35628e03ec204ff190c052..9a6b97b0876c19b05fd5f5956217e213b9d1bac4 100644 --- a/src/mesh/blockMesh/blockMesh/blockMesh.C +++ b/src/mesh/blockMesh/blockMesh/blockMesh.C @@ -89,7 +89,6 @@ Foam::PtrList<Foam::dictionary> 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 eb43c80d83b0355a2da3a33abdfbc8614d05c646..9b989f535683298cb6a0fcba4c7dff38ebf296f0 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<dictionary>& patchDicts ); @@ -185,8 +186,8 @@ public: //- Get patch information from the topology mesh PtrList<dictionary> 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 d1fe81c2f17deda8dfce6aec97b5541246cbb8f8..b82752c947c75b491eb0ff9c7cfb519395d05cdc 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<dictionary>& 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<dictionary> 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<dictionary> 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 (nbrPatchNames[patchI] != word::null) + if (!patchDicts.set(patchI)) { - patchDicts[patchI].set("neighbourPatch", nbrPatchNames[patchI]); + patchDicts.set(patchI, new dictionary()); } - if (patchPhysicalTypes[patchI] != word::null) + + 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 - ( - "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<dictionary> 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 4a276547b1eed0a84b0b187b3bdc23d525a42744..4b923009ffef1f60207b62715c6a8b89cdb98e9c 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 be5f4ba58bb3e7e273e20792f697833f79291b1a..bfff68053a9da4e1cd2ea0b4f4f58f908a3b5a33 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