From d48da0cfacf2402f6c568bdee82b4f430750aecd Mon Sep 17 00:00:00 2001 From: mattijs Date: Tue, 20 Dec 2011 09:36:53 +0000 Subject: [PATCH 01/14] ENH: GaussSeidelSmoother: avoid memory allocation - use in-place negation --- .../GaussSeidel/GaussSeidelSmoother.C | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/OpenFOAM/matrices/lduMatrix/smoothers/GaussSeidel/GaussSeidelSmoother.C b/src/OpenFOAM/matrices/lduMatrix/smoothers/GaussSeidel/GaussSeidelSmoother.C index 842771aed6..b0cb88ed6e 100644 --- a/src/OpenFOAM/matrices/lduMatrix/smoothers/GaussSeidel/GaussSeidelSmoother.C +++ b/src/OpenFOAM/matrices/lduMatrix/smoothers/GaussSeidel/GaussSeidelSmoother.C @@ -107,16 +107,29 @@ void Foam::GaussSeidelSmoother::smooth // To compensate for this, it is necessary to turn the // sign of the contribution. - FieldField mBouCoeffs(interfaceBouCoeffs_.size()); - + //FieldField mBouCoeffs(interfaceBouCoeffs_.size()); + // + //forAll(mBouCoeffs, patchi) + //{ + // if (interfaces_.set(patchi)) + // { + // mBouCoeffs.set(patchi, -interfaceBouCoeffs_[patchi]); + // } + //} + FieldField& mBouCoeffs = + const_cast&> + ( + interfaceBouCoeffs_ + ); forAll(mBouCoeffs, patchi) { if (interfaces_.set(patchi)) { - mBouCoeffs.set(patchi, -interfaceBouCoeffs_[patchi]); + mBouCoeffs[patchi].negate(); } } + for (label sweep=0; sweep Date: Tue, 20 Dec 2011 15:22:24 +0000 Subject: [PATCH 02/14] BUG: cyclicPolyPatch: incorrect transformation if rotation --- .../polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C index 3cab9fa50c..84fd20affc 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C +++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C @@ -266,7 +266,7 @@ void Foam::cyclicPolyPatch::calcTransforms // Calculate using the given rotation axis and centre. Do not // use calculated normals. vector n0 = findFaceMaxRadius(half0Ctrs); - vector n1 = findFaceMaxRadius(half1Ctrs); + vector n1 = -findFaceMaxRadius(half1Ctrs); n0 /= mag(n0) + VSMALL; n1 /= mag(n1) + VSMALL; @@ -424,7 +424,7 @@ void Foam::cyclicPolyPatch::getCentresAndAnchors case ROTATIONAL: { vector n0 = findFaceMaxRadius(half0Ctrs); - vector n1 = findFaceMaxRadius(half1Ctrs); + vector n1 = -findFaceMaxRadius(half1Ctrs); n0 /= mag(n0) + VSMALL; n1 /= mag(n1) + VSMALL; From b16e058221bb024f0395af6f1838b75de0699f92 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 21 Dec 2011 10:16:33 +0000 Subject: [PATCH 03/14] MRFZoneTemplates: Call internalField on phi to ensure the old-time value is stored for ddtPhiCorr --- .../cfdTools/general/MRF/MRFZoneTemplates.C | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZoneTemplates.C b/src/finiteVolume/cfdTools/general/MRF/MRFZoneTemplates.C index 55821dbfde..23cae40603 100644 --- a/src/finiteVolume/cfdTools/general/MRF/MRFZoneTemplates.C +++ b/src/finiteVolume/cfdTools/general/MRF/MRFZoneTemplates.C @@ -44,11 +44,15 @@ void Foam::MRFZone::relativeRhoFlux const vector& origin = origin_.value(); const vector& Omega = Omega_.value(); + const vectorField& Cfi = Cf.internalField(); + const vectorField& Sfi = Sf.internalField(); + scalarField& phii = phi.internalField(); + // Internal faces forAll(internalFaces_, i) { label facei = internalFaces_[i]; - phi[facei] -= rho[facei]*(Omega ^ (Cf[facei] - origin)) & Sf[facei]; + phii[facei] -= rho[facei]*(Omega ^ (Cfi[facei] - origin)) & Sfi[facei]; } // Included patches @@ -91,11 +95,15 @@ void Foam::MRFZone::absoluteRhoFlux const vector& origin = origin_.value(); const vector& Omega = Omega_.value(); + const vectorField& Cfi = Cf.internalField(); + const vectorField& Sfi = Sf.internalField(); + scalarField& phii = phi.internalField(); + // Internal faces forAll(internalFaces_, i) { label facei = internalFaces_[i]; - phi[facei] += rho[facei]*(Omega ^ (Cf[facei] - origin)) & Sf[facei]; + phii[facei] += rho[facei]*(Omega ^ (Cfi[facei] - origin)) & Sfi[facei]; } // Included patches From 7b7fe8cf0a9a803c2a533d530c5c0d5772b70a10 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 21 Dec 2011 10:18:53 +0000 Subject: [PATCH 04/14] multiphaseEulerFoam phaseModel : Correct re-reading of dictionary entries --- .../phaseModel/phaseModel/phaseModel.C | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/phaseModel/phaseModel/phaseModel.C b/applications/solvers/multiphase/multiphaseEulerFoam/phaseModel/phaseModel/phaseModel.C index bf65fe659c..543927e29b 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/phaseModel/phaseModel/phaseModel.C +++ b/applications/solvers/multiphase/multiphaseEulerFoam/phaseModel/phaseModel/phaseModel.C @@ -212,10 +212,10 @@ bool Foam::phaseModel::read(const dictionary& phaseDict) //if (nuModel_->read(phaseDict_)) { - phaseDict_.lookup("nu") >> nu_; - phaseDict_.lookup("kappa") >> kappa_; - phaseDict_.lookup("Cp") >> Cp_; - phaseDict_.lookup("rho") >> rho_; + phaseDict_.lookup("nu") >> nu_.value(); + phaseDict_.lookup("kappa") >> kappa_.value(); + phaseDict_.lookup("Cp") >> Cp_.value(); + phaseDict_.lookup("rho") >> rho_.value(); return true; } From 014c92982afeb4b22f7fe6491d9733a8ec0ef8ac Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 21 Dec 2011 10:20:35 +0000 Subject: [PATCH 05/14] multiphaseEulerFoam damBreak4phase tutorial: improved transport settings --- .../constant/transportProperties | 125 +++++++++++++++++- .../damBreak4phaseFine/system/controlDict | 2 +- 2 files changed, 119 insertions(+), 8 deletions(-) diff --git a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/constant/transportProperties b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/constant/transportProperties index e59dbd8d6f..fad0a7a482 100644 --- a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/constant/transportProperties +++ b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/constant/transportProperties @@ -69,7 +69,7 @@ phases diameterModel constant; constantCoeffs { - d 1e-3; + d 3e-3; } } ); @@ -96,9 +96,9 @@ interfaceCompression virtualMass ( - (air water) 0.5 - (air oil) 0.5 - (air mercury) 0.5 + (air water) 0 + (air oil) 0 + (air mercury) 0 (water oil) 0.5 (water mercury) 0.5 (oil mercury) 0.5 @@ -108,21 +108,132 @@ drag ( (air water) { - type SchillerNaumann; + type blended; + + air + { + type SchillerNaumann; + residualPhaseFraction 0; + residualSlip 0; + } + + water + { + type SchillerNaumann; + residualPhaseFraction 0; + residualSlip 0; + } + residualPhaseFraction 1e-3; residualSlip 1e-3; } (air oil) { - type SchillerNaumann; + type blended; + + air + { + type SchillerNaumann; + residualPhaseFraction 0; + residualSlip 0; + } + + oil + { + type SchillerNaumann; + residualPhaseFraction 0; + residualSlip 0; + } + residualPhaseFraction 1e-3; residualSlip 1e-3; } (air mercury) { - type SchillerNaumann; + type blended; + + air + { + type SchillerNaumann; + residualPhaseFraction 0; + residualSlip 0; + } + + mercury + { + type SchillerNaumann; + residualPhaseFraction 0; + residualSlip 0; + } + + residualPhaseFraction 1e-3; + residualSlip 1e-3; + } + + (water oil) + { + type blended; + + water + { + type SchillerNaumann; + residualPhaseFraction 0; + residualSlip 0; + } + + oil + { + type SchillerNaumann; + residualPhaseFraction 0; + residualSlip 0; + } + + residualPhaseFraction 1e-3; + residualSlip 1e-3; + } + + (water mercury) + { + type blended; + + water + { + type SchillerNaumann; + residualPhaseFraction 0; + residualSlip 0; + } + + mercury + { + type SchillerNaumann; + residualPhaseFraction 0; + residualSlip 0; + } + + residualPhaseFraction 1e-3; + residualSlip 1e-3; + } + + (oil mercury) + { + type blended; + + oil + { + type SchillerNaumann; + residualPhaseFraction 0; + residualSlip 0; + } + + mercury + { + type SchillerNaumann; + residualPhaseFraction 0; + residualSlip 0; + } + residualPhaseFraction 1e-3; residualSlip 1e-3; } diff --git a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/system/controlDict b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/system/controlDict index fdcdcc258c..793c8a9121 100644 --- a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/system/controlDict +++ b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/system/controlDict @@ -17,7 +17,7 @@ FoamFile application multiphaseInterFoam; -startFrom latestTime; +startFrom startTime; startTime 0; From 29d4f2ff33fba32c670cc323668c8ed4d64dcc77 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 21 Dec 2011 10:27:09 +0000 Subject: [PATCH 06/14] multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C: updated drag pre-factor --- .../multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C index 6ae60e42dc..2224030613 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C +++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C @@ -629,8 +629,9 @@ Foam::multiphaseSystem::dragCoeffs() const ( max ( - fvc::average(dm.phase1())*fvc::average(dm.phase2()), - //dm.phase1()*dm.phase2(), + //fvc::average(dm.phase1()*dm.phase2()), + //fvc::average(dm.phase1())*fvc::average(dm.phase2()), + dm.phase1()*dm.phase2(), dm.residualPhaseFraction() ) *dm.K From 5d4030b7f2b5b2e165d193c498c73dd8d65417fb Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 21 Dec 2011 10:34:42 +0000 Subject: [PATCH 07/14] BUG: renumberMesh.C: reading bool from dictionary --- .../utilities/mesh/manipulation/renumberMesh/renumberMesh.C | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C b/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C index 7e090fa30e..924096a22f 100644 --- a/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C +++ b/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C @@ -562,7 +562,7 @@ int main(int argc, char *argv[]) << endl; } - writeMaps = readLabel(renumberDict.lookup("writeMaps")); + renumberDict.lookup("writeMaps") >> writeMaps; if (writeMaps) { Info<< "Writing renumber maps (new to old) to polyMesh." << nl From 744162e74e1e74e890e66b2686f61f1648348ae2 Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 21 Dec 2011 10:35:34 +0000 Subject: [PATCH 08/14] STYLE: tetIndices.H: improved comment --- .../meshes/polyMesh/polyMeshTetDecomposition/tetIndices.H | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/OpenFOAM/meshes/polyMesh/polyMeshTetDecomposition/tetIndices.H b/src/OpenFOAM/meshes/polyMesh/polyMeshTetDecomposition/tetIndices.H index afd31e642a..76f82fa78c 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyMeshTetDecomposition/tetIndices.H +++ b/src/OpenFOAM/meshes/polyMesh/polyMeshTetDecomposition/tetIndices.H @@ -144,11 +144,13 @@ public: inline tetPointRef oldTet(const polyMesh& mesh) const; //- Return the geometry corresponding to the tri on the - // mesh face for this tet from the supplied mesh + // mesh face for this tet from the supplied mesh. Normal of + // the tri points out of the cell. inline triPointRef faceTri(const polyMesh& mesh) const; //- Return the point indices corresponding to the tri on the mesh - // face for this tet from the supplied mesh + // face for this tet from the supplied mesh. Normal of + // the tri points out of the cell. inline triFace faceTriIs(const polyMesh& mesh) const; //- Return the geometry corresponding to the tri on the From 0504c7a4f6a79e4a4cc510fab8062eb5aa32facd Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 21 Dec 2011 11:22:02 +0000 Subject: [PATCH 09/14] STYLE: system/streamLines: documented new tracking option --- .../simpleFoam/motorBike/system/streamLines | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/streamLines b/tutorials/incompressible/simpleFoam/motorBike/system/streamLines index 8b82eccbb1..50b9eefdd1 100644 --- a/tutorials/incompressible/simpleFoam/motorBike/system/streamLines +++ b/tutorials/incompressible/simpleFoam/motorBike/system/streamLines @@ -28,8 +28,15 @@ streamLines // Steps particles can travel before being removed lifeTime 10000; - // Number of steps per cell (estimate). Set to 1 to disable subcycling. - nSubCycle 5; + //- Specify either absolute length of steps (trackLength) or a number + // of subcycling steps per cell (nSubCycle) + + // Size of single track segment [m] + //trackLength 1e-3; + + // Number of steps per cell (estimate). Set to 1 to disable subcycling. + nSubCycle 5; + // Cloud name to use cloudName particleTracks; From 704b33fa79397870c6ba22733e3cce7745b42122 Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 21 Dec 2011 15:13:04 +0000 Subject: [PATCH 10/14] ENH: renumberMesh: get block ordering working - added boundaryFirst renumbering method - renumbering in parallel - make api methods const --- .../manipulation/renumberMesh/Make/options | 2 +- .../manipulation/renumberMesh/renumberMesh.C | 125 +++++++---- .../renumberMesh/renumberMeshDict | 35 ++- .../CuthillMcKeeRenumber.C | 14 +- .../CuthillMcKeeRenumber.H | 6 +- src/renumberMethods/Make/files | 1 + .../boundaryFirstRenumber.C | 201 ++++++++++++++++++ .../boundaryFirstRenumber.H | 129 +++++++++++ .../manualRenumber/manualRenumber.C | 2 +- .../manualRenumber/manualRenumber.H | 6 +- .../randomRenumber/randomRenumber.C | 6 +- .../randomRenumber/randomRenumber.H | 6 +- .../renumberMethod/renumberMethod.C | 4 +- .../renumberMethod/renumberMethod.H | 8 +- .../springRenumber/springRenumber.C | 4 +- .../springRenumber/springRenumber.H | 6 +- 16 files changed, 473 insertions(+), 82 deletions(-) create mode 100644 src/renumberMethods/boundaryFirstRenumber/boundaryFirstRenumber.C create mode 100644 src/renumberMethods/boundaryFirstRenumber/boundaryFirstRenumber.H diff --git a/applications/utilities/mesh/manipulation/renumberMesh/Make/options b/applications/utilities/mesh/manipulation/renumberMesh/Make/options index 2981cf30be..dc78db3436 100644 --- a/applications/utilities/mesh/manipulation/renumberMesh/Make/options +++ b/applications/utilities/mesh/manipulation/renumberMesh/Make/options @@ -11,4 +11,4 @@ EXE_LIBS = \ -lfiniteVolume \ -lgenericPatchFields \ -lrenumberMethods \ - -ldecompositionMethods + -ldecompositionMethods -L$(FOAM_LIBBIN)/dummy -lmetisDecomp -lscotchDecomp diff --git a/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C b/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C index 924096a22f..02e5a06567 100644 --- a/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C +++ b/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C @@ -29,7 +29,7 @@ Description renumbering all fields from all the time directories. By default uses bandCompression (CuthillMcKee) but will - read system/renumberMeshDict if present and use the method from there. + read system/renumberMeshDict if -dict option is present \*---------------------------------------------------------------------------*/ @@ -45,6 +45,7 @@ Description #include "renumberMethod.H" #include "zeroGradientFvPatchFields.H" #include "CuthillMcKeeRenumber.H" +#include "fvMeshSubset.H" using namespace Foam; @@ -455,6 +456,69 @@ autoPtr reorderMesh } +// Return new to old cell numbering +labelList regionRenumber +( + const renumberMethod& method, + const fvMesh& mesh, + const labelList& cellToRegion +) +{ + Info<< "Determining cell order:" << endl; + + labelList cellOrder(cellToRegion.size()); + + label nRegions = max(cellToRegion)+1; + + labelListList regionToCells(invertOneToMany(nRegions, cellToRegion)); + + label cellI = 0; + + forAll(regionToCells, regionI) + { + Info<< " region " << regionI << " starts at " << cellI << endl; + + // Make sure no parallel comms + bool oldParRun = UPstream::parRun(); + UPstream::parRun() = false; + + // Per region do a reordering. + fvMeshSubset subsetter(mesh); + subsetter.setLargeCellSubset(cellToRegion, regionI); + + const fvMesh& subMesh = subsetter.subMesh(); + + labelList subReverseCellOrder = method.renumber + ( + subMesh, + subMesh.cellCentres() + ); + + labelList subCellOrder + ( + invert + ( + subMesh.nCells(), + subReverseCellOrder + ) + ); + + // Restore state + UPstream::parRun() = oldParRun; + + const labelList& cellMap = subsetter.cellMap(); + + forAll(subCellOrder, i) + { + cellOrder[cellI++] = cellMap[subCellOrder[i]]; + } + } + Info<< endl; + + return cellOrder; +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // int main(int argc, char *argv[]) @@ -505,23 +569,28 @@ int main(int argc, char *argv[]) label blockSize = 0; // Construct renumberMethod + autoPtr renumberDictPtr; autoPtr renumberPtr; if (readDict) { Info<< "Renumber according to renumberMeshDict." << nl << endl; - IOdictionary renumberDict + renumberDictPtr.reset ( - IOobject + new IOdictionary ( - "renumberMeshDict", - runTime.system(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE + IOobject + ( + "renumberMeshDict", + runTime.system(), + mesh, + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE + ) ) ); + const IOdictionary renumberDict = renumberDictPtr(); renumberPtr = renumberMethod::New(renumberDict); @@ -683,22 +752,15 @@ int main(int argc, char *argv[]) // fields is done correctly! label nBlocks = mesh.nCells() / blockSize; - Info<< "nBlocks = " << nBlocks << endl; + Info<< "nBlocks = " << nBlocks << endl; - // Read decomposePar dictionary - IOdictionary decomposeDict - ( - IOobject - ( - "decomposeParDict", - runTime.system(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ); + // Read decompositionMethod dictionary + dictionary decomposeDict(renumberDictPtr().subDict("blockCoeffs")); decomposeDict.set("numberOfSubdomains", nBlocks); + bool oldParRun = UPstream::parRun(); + UPstream::parRun() = false; + autoPtr decomposePtr = decompositionMethod::New ( decomposeDict @@ -713,6 +775,9 @@ int main(int argc, char *argv[]) ) ); + // Restore state + UPstream::parRun() = oldParRun; + // For debugging: write out region createScalarField ( @@ -726,23 +791,7 @@ int main(int argc, char *argv[]) << nl << endl; - // Find point per region - pointField regionPoints(nBlocks, vector::zero); - forAll(cellToRegion, cellI) - { - regionPoints[cellToRegion[cellI]] = mesh.cellCentres()[cellI]; - } - - // Use block based renumbering. - // Detemines old to new cell ordering - labelList reverseCellOrder = renumberPtr().renumber - ( - mesh, - cellToRegion, - regionPoints - ); - - cellOrder = invert(mesh.nCells(), reverseCellOrder); + cellOrder = regionRenumber(renumberPtr(), mesh, cellToRegion); // Determine new to old face order with new cell numbering faceOrder = getRegionFaceOrder diff --git a/applications/utilities/mesh/manipulation/renumberMesh/renumberMeshDict b/applications/utilities/mesh/manipulation/renumberMesh/renumberMeshDict index a852fad7db..988379720b 100644 --- a/applications/utilities/mesh/manipulation/renumberMesh/renumberMeshDict +++ b/applications/utilities/mesh/manipulation/renumberMesh/renumberMeshDict @@ -22,10 +22,14 @@ writeMaps true; // e.g. nonBlockingGaussSeidel. sortCoupledFaceCells false; -// Optional entry: renumber on a block-by-block basis. This can be used on -// large cases to keep the blocks fitting in cache with all the the cache -// missed bunched at the end. -//blockSize 0; +// Optional entry: renumber on a block-by-block basis. It uses a +// blockCoeffs dictionary to construct a decompositionMethod to do +// a block subdivision) and then applies the renumberMethod to each +// block in turn. This can be used in large cases to keep the blocks +// fitting in cache with all the the cache misses bunched at the end. +// This number is the approximate size of the blocks - this gets converted +// to a number of blocks that is the input to the decomposition method. +//blockSize 1000; // Optional entry: sort points into internal and boundary points //orderPoints false; @@ -37,11 +41,11 @@ method CuthillMcKee; //method random; //method spring; -CuthillMcKeeCoeffs -{ - // Reverse CuthillMcKee (RCM) or plain - reverse true; -} +//CuthillMcKeeCoeffs +//{ +// // Reverse CuthillMcKee (RCM) or plain +// reverse true; +//} manualCoeffs @@ -65,4 +69,17 @@ springCoeffs } +blockCoeffs +{ + method scotch; + //method hierarchical; + //hierarchicalCoeffs + //{ + // n (1 2 1); + // delta 0.001; + // order xyz; + //} +} + + // ************************************************************************* // diff --git a/src/renumberMethods/CuthillMcKeeRenumber/CuthillMcKeeRenumber.C b/src/renumberMethods/CuthillMcKeeRenumber/CuthillMcKeeRenumber.C index e1ec010335..2732484b36 100644 --- a/src/renumberMethods/CuthillMcKeeRenumber/CuthillMcKeeRenumber.C +++ b/src/renumberMethods/CuthillMcKeeRenumber/CuthillMcKeeRenumber.C @@ -63,7 +63,7 @@ Foam::labelList Foam::CuthillMcKeeRenumber::renumber ( const polyMesh& mesh, const pointField& points -) +) const { CompactListList