From c324e4a1d538b0cc49b6e50d82b1bc3c967d8094 Mon Sep 17 00:00:00 2001 From: mattijs Date: Mon, 2 Jul 2012 13:48:19 +0100 Subject: [PATCH 01/38] ENH: ptscotchDecomp: get coeffs from scotchCoeffs instead of ptscotchCoeffs --- src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C b/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C index 81d3851837..56a669b119 100644 --- a/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C +++ b/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C @@ -401,10 +401,10 @@ Foam::label Foam::ptscotchDecomp::decompose } // Dump graph - if (decompositionDict_.found("ptscotchCoeffs")) + if (decompositionDict_.found("scotchCoeffs")) { const dictionary& scotchCoeffs = - decompositionDict_.subDict("ptscotchCoeffs"); + decompositionDict_.subDict("scotchCoeffs"); if (scotchCoeffs.lookupOrDefault("writeGraph", false)) { From cc1d0d27e461e8d8c670a0b9b83869c93ba14db2 Mon Sep 17 00:00:00 2001 From: mattijs Date: Mon, 2 Jul 2012 13:55:57 +0100 Subject: [PATCH 02/38] ENH: mixerAMI: use reconstructPar as well --- tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/Allrun | 1 + 1 file changed, 1 insertion(+) diff --git a/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/Allrun b/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/Allrun index 0df20956c9..3aa63c00d9 100755 --- a/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/Allrun +++ b/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/Allrun @@ -12,5 +12,6 @@ application=`getApplication` #runApplication $application runApplication decomposePar runParallel $application 4 +runApplication reconstructPar # ----------------------------------------------------------------- end-of-file From 83c412403c3c9945da2332298c565332f6e83562 Mon Sep 17 00:00:00 2001 From: mattijs Date: Mon, 2 Jul 2012 13:56:55 +0100 Subject: [PATCH 03/38] STYLE: redistributePar: remove commented out code --- .../redistributePar/redistributePar.C | 302 +----------------- 1 file changed, 6 insertions(+), 296 deletions(-) diff --git a/applications/utilities/parallelProcessing/redistributePar/redistributePar.C b/applications/utilities/parallelProcessing/redistributePar/redistributePar.C index 9a337d7573..0412b67f15 100644 --- a/applications/utilities/parallelProcessing/redistributePar/redistributePar.C +++ b/applications/utilities/parallelProcessing/redistributePar/redistributePar.C @@ -63,294 +63,6 @@ Description static const scalar defaultMergeTol = 1e-6; -//// Read mesh if available. Otherwise create empty mesh with same non-proc -//// patches as proc0 mesh. Requires all processors to have all patches -//// (and in same order). -//autoPtr createMesh -//( -// const Time& runTime, -// const word& regionName, -// const fileName& instDir, -// const bool haveMesh -//) -//{ -// //Pout<< "Create mesh for time = " -// // << runTime.timeName() << nl << endl; -// -// IOobject io -// ( -// regionName, -// instDir, -// runTime, -// IOobject::MUST_READ -// ); -// -// if (!haveMesh) -// { -// // Create dummy mesh. Only used on procs that don't have mesh. -// IOobject noReadIO(io); -// noReadIO.readOpt() = IOobject::NO_READ; -// fvMesh dummyMesh -// ( -// noReadIO, -// xferCopy(pointField()), -// xferCopy(faceList()), -// xferCopy(labelList()), -// xferCopy(labelList()), -// false -// ); -// // Add some dummy zones so upon reading it does not read them -// // from the undecomposed case. Should be done as extra argument to -// // regIOobject::readStream? -// List pz -// ( -// 1, -// new pointZone -// ( -// "dummyPointZone", -// labelList(0), -// 0, -// dummyMesh.pointZones() -// ) -// ); -// List fz -// ( -// 1, -// new faceZone -// ( -// "dummyFaceZone", -// labelList(0), -// boolList(0), -// 0, -// dummyMesh.faceZones() -// ) -// ); -// List cz -// ( -// 1, -// new cellZone -// ( -// "dummyCellZone", -// labelList(0), -// 0, -// dummyMesh.cellZones() -// ) -// ); -// dummyMesh.addZones(pz, fz, cz); -// //Pout<< "Writing dummy mesh to " << dummyMesh.polyMesh::objectPath() -// // << endl; -// dummyMesh.write(); -// } -// -// //Pout<< "Reading mesh from " << io.objectPath() << endl; -// autoPtr meshPtr(new fvMesh(io)); -// fvMesh& mesh = meshPtr(); -// -// -// // Sync patches -// // ~~~~~~~~~~~~ -// -// if (Pstream::master()) -// { -// // Send patches -// for -// ( -// int slave=Pstream::firstSlave(); -// slave<=Pstream::lastSlave(); -// slave++ -// ) -// { -// OPstream toSlave(Pstream::scheduled, slave); -// toSlave << mesh.boundaryMesh(); -// } -// } -// else -// { -// // Receive patches -// IPstream fromMaster(Pstream::scheduled, Pstream::masterNo()); -// PtrList patchEntries(fromMaster); -// -// if (haveMesh) -// { -// // Check master names against mine -// -// const polyBoundaryMesh& patches = mesh.boundaryMesh(); -// -// forAll(patchEntries, patchI) -// { -// const entry& e = patchEntries[patchI]; -// const word type(e.dict().lookup("type")); -// const word& name = e.keyword(); -// -// if (type == processorPolyPatch::typeName) -// { -// break; -// } -// -// if (patchI >= patches.size()) -// { -// FatalErrorIn -// ( -// "createMesh(const Time&, const fileName&, const bool)" -// ) << "Non-processor patches not synchronised." -// << endl -// << "Processor " << Pstream::myProcNo() -// << " has only " << patches.size() -// << " patches, master has " -// << patchI -// << exit(FatalError); -// } -// -// if -// ( -// type != patches[patchI].type() -// || name != patches[patchI].name() -// ) -// { -// FatalErrorIn -// ( -// "createMesh(const Time&, const fileName&, const bool)" -// ) << "Non-processor patches not synchronised." -// << endl -// << "Master patch " << patchI -// << " name:" << type -// << " type:" << type << endl -// << "Processor " << Pstream::myProcNo() -// << " patch " << patchI -// << " has name:" << patches[patchI].name() -// << " type:" << patches[patchI].type() -// << exit(FatalError); -// } -// } -// } -// else -// { -// // Add patch -// List patches(patchEntries.size()); -// label nPatches = 0; -// -// forAll(patchEntries, patchI) -// { -// const entry& e = patchEntries[patchI]; -// const word type(e.dict().lookup("type")); -// const word& name = e.keyword(); -// -// if (type == processorPolyPatch::typeName) -// { -// break; -// } -// -// //Pout<< "Adding patch:" << nPatches -// // << " name:" << name << " type:" << type << endl; -// -// dictionary patchDict(e.dict()); -// patchDict.remove("nFaces"); -// patchDict.add("nFaces", 0); -// patchDict.remove("startFace"); -// patchDict.add("startFace", 0); -// -// patches[patchI] = polyPatch::New -// ( -// name, -// patchDict, -// nPatches++, -// mesh.boundaryMesh() -// ).ptr(); -// } -// patches.setSize(nPatches); -// mesh.addFvPatches(patches, false); // no parallel comms -// -// //// Write empty mesh now we have correct patches -// //meshPtr().write(); -// } -// } -// -// -// // Determine zones -// // ~~~~~~~~~~~~~~~ -// -// wordList pointZoneNames(mesh.pointZones().names()); -// Pstream::scatter(pointZoneNames); -// wordList faceZoneNames(mesh.faceZones().names()); -// Pstream::scatter(faceZoneNames); -// wordList cellZoneNames(mesh.cellZones().names()); -// Pstream::scatter(cellZoneNames); -// -// if (!haveMesh) -// { -// // Add the zones. Make sure to remove the old dummy ones first -// mesh.pointZones().clear(); -// mesh.faceZones().clear(); -// mesh.cellZones().clear(); -// -// List pz(pointZoneNames.size()); -// forAll(pointZoneNames, i) -// { -// pz[i] = new pointZone -// ( -// pointZoneNames[i], -// labelList(0), -// i, -// mesh.pointZones() -// ); -// } -// List fz(faceZoneNames.size()); -// forAll(faceZoneNames, i) -// { -// fz[i] = new faceZone -// ( -// faceZoneNames[i], -// labelList(0), -// boolList(0), -// i, -// mesh.faceZones() -// ); -// } -// List cz(cellZoneNames.size()); -// forAll(cellZoneNames, i) -// { -// cz[i] = new cellZone -// ( -// cellZoneNames[i], -// labelList(0), -// i, -// mesh.cellZones() -// ); -// } -// mesh.addZones(pz, fz, cz); -// } -// -// -// if (!haveMesh) -// { -// // We created a dummy mesh file above. Delete it. -// //Pout<< "Removing dummy mesh " << io.objectPath() << endl; -// rmDir(io.objectPath()); -// } -// -// // Force recreation of globalMeshData. -// mesh.clearOut(); -// mesh.globalData(); -// -// -// // Do some checks. -// -// // Check if the boundary definition is unique -// mesh.boundaryMesh().checkDefinition(true); -// // Check if the boundary processor patches are correct -// mesh.boundaryMesh().checkParallelSync(true); -// // Check names of zones are equal -// mesh.cellZones().checkDefinition(true); -// mesh.cellZones().checkParallelSync(true); -// mesh.faceZones().checkDefinition(true); -// mesh.faceZones().checkParallelSync(true); -// mesh.pointZones().checkDefinition(true); -// mesh.pointZones().checkParallelSync(true); -// -// return meshPtr; -//} - - // Get merging distance when matching face centres scalar getMergeDistance ( @@ -786,14 +498,6 @@ int main(int argc, char *argv[]) Info<< "Per processor mesh availability : " << haveMesh << endl; const bool allHaveMesh = (findIndex(haveMesh, false) == -1); - // Create mesh - //autoPtr meshPtr = createMesh - //( - // runTime, - // regionName, - // masterInstDir, - // haveMesh[Pstream::myProcNo()] - //); autoPtr meshPtr = loadOrCreateMesh ( IOobject @@ -908,6 +612,9 @@ int main(int argc, char *argv[]) objects.erase(iter); } + + // volFields + PtrList volScalarFields; readFields ( @@ -958,6 +665,9 @@ int main(int argc, char *argv[]) volTensorFields ); + + // surfaceFields + PtrList surfScalarFields; readFields ( From e9de9f87d240cc2d33dcca0b15a2de83aa533f94 Mon Sep 17 00:00:00 2001 From: mattijs Date: Mon, 2 Jul 2012 15:30:19 +0100 Subject: [PATCH 04/38] STYLE: polyMeshClear: use polyBoundaryMesh functionality --- src/OpenFOAM/meshes/polyMesh/polyMeshClear.C | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/OpenFOAM/meshes/polyMesh/polyMeshClear.C b/src/OpenFOAM/meshes/polyMesh/polyMeshClear.C index 8960e932ab..9a9830545e 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyMeshClear.C +++ b/src/OpenFOAM/meshes/polyMesh/polyMeshClear.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -63,10 +63,7 @@ void Foam::polyMesh::clearGeom() primitiveMesh::clearGeom(); - forAll(boundary_, patchI) - { - boundary_[patchI].clearGeom(); - } + boundary_.clearGeom(); // Reset valid directions (could change with rotation) geometricD_ = Vector