Merge branch 'master' of ssh://dm/home/dm4/OpenFOAM/OpenFOAM-dev

This commit is contained in:
Henry
2012-10-08 15:40:34 +01:00
2 changed files with 104 additions and 2 deletions

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -41,6 +41,45 @@ int main(int argc, char *argv[])
Info<< ds*dt << " " << dt*ds << endl; Info<< ds*dt << " " << dt*ds << endl;
// dimensionSet
{
Pout<< "dimensionSet construct from is:"
<< dimensionSet(IStringStream("[Pa m^2 s^-2]")())
<< endl;
IStringStream is("[Pa m^2 s^-2]");
dimensionSet dset(dimless);
is >> dset;
Pout<< "dimensionSet read:" << dset << endl;
}
// dimensionedType
{
Pout<< "construct from is:"
<< dimensionedScalar(IStringStream("bla [Pa mm^2 s^-2] 3.0")())
<< endl;
Pout<< "construct from name,is:"
<< dimensionedScalar
(
"ABC",
IStringStream("[Pa mm^2 s^-2] 3.0")()
) << endl;
Pout<< "construct from name,dimensionSet,is:"
<< dimensionedScalar
(
"ABC",
dimLength,
IStringStream("bla [mm] 3.0")()
) << endl;
{
IStringStream is("bla [mm] 3.0");
dimensionedScalar ds;
is >> ds;
Pout<< "read:" << ds << endl;
}
}
Info<< "End\n" << endl; Info<< "End\n" << endl;
return 0; return 0;

View File

@ -55,6 +55,8 @@ Description
this if you don't mind having disconnected domains in a single region. this if you don't mind having disconnected domains in a single region.
This option requires all cells to be in one (and one only) cellZone. This option requires all cells to be in one (and one only) cellZone.
- prefixRegion prefixes all normal patches with region name (interface
(patches already have region name prefix)
- Should work in parallel. - Should work in parallel.
cellZones can differ on either side of processor boundaries in which case cellZones can differ on either side of processor boundaries in which case
@ -389,6 +391,40 @@ void reorderPatches
} }
// Prepend prefix to selected patches.
void renamePatches
(
fvMesh& mesh,
const word& prefix,
const labelList& patchesToRename
)
{
polyBoundaryMesh& polyPatches =
const_cast<polyBoundaryMesh&>(mesh.boundaryMesh());
forAll(patchesToRename, i)
{
label patchI = patchesToRename[i];
polyPatch& pp = polyPatches[patchI];
if (isA<coupledPolyPatch>(pp))
{
WarningIn
(
"renamePatches(fvMesh&, const word&, const labelList&"
) << "Encountered coupled patch " << pp.name()
<< ". Will only rename the patch itself,"
<< " not any referred patches."
<< " This might have to be done by hand."
<< endl;
}
pp.name() = prefix + '_' + pp.name();
}
// Recalculate any demand driven data (e.g. group to name lookup)
polyPatches.updateMesh();
}
template<class GeoField> template<class GeoField>
void subsetVolFields void subsetVolFields
( (
@ -987,6 +1023,7 @@ void createAndWriteRegion
const fvMesh& mesh, const fvMesh& mesh,
const labelList& cellRegion, const labelList& cellRegion,
const wordList& regionNames, const wordList& regionNames,
const bool prefixRegion,
const labelList& faceToInterface, const labelList& faceToInterface,
const labelList& interfacePatches, const labelList& interfacePatches,
const label regionI, const label regionI,
@ -1017,6 +1054,7 @@ void createAndWriteRegion
addedPatches.insert(interfacePatches[interfaceI]+1); addedPatches.insert(interfacePatches[interfaceI]+1);
} }
Info<< "Mapping fields" << endl; Info<< "Mapping fields" << endl;
// Map existing fields // Map existing fields
@ -1109,6 +1147,7 @@ void createAndWriteRegion
// Create reordering list to move patches-to-be-deleted to end // Create reordering list to move patches-to-be-deleted to end
labelList oldToNew(newPatches.size(), -1); labelList oldToNew(newPatches.size(), -1);
DynamicList<label> sharedPatches(newPatches.size());
label newI = 0; label newI = 0;
Info<< "Deleting empty patches" << endl; Info<< "Deleting empty patches" << endl;
@ -1122,7 +1161,12 @@ void createAndWriteRegion
{ {
if (returnReduce(pp.size(), sumOp<label>()) > 0) if (returnReduce(pp.size(), sumOp<label>()) > 0)
{ {
oldToNew[patchI] = newI++; oldToNew[patchI] = newI;
if (!addedPatches.found(patchI))
{
sharedPatches.append(newI);
}
newI++;
} }
} }
} }
@ -1152,6 +1196,15 @@ void createAndWriteRegion
reorderPatches(newMesh(), oldToNew, nNewPatches); reorderPatches(newMesh(), oldToNew, nNewPatches);
// Rename shared patches with region name
if (prefixRegion)
{
Info<< "Prefixing patches with region name" << endl;
renamePatches(newMesh(), regionNames[regionI], sharedPatches);
}
Info<< "Writing new mesh" << endl; Info<< "Writing new mesh" << endl;
newMesh().setInstance(newMeshInstance); newMesh().setInstance(newMeshInstance);
@ -1672,6 +1725,11 @@ int main(int argc, char *argv[])
"useFaceZones", "useFaceZones",
"use faceZones to patch inter-region faces instead of single patch" "use faceZones to patch inter-region faces instead of single patch"
); );
argList::addBoolOption
(
"prefixRegion",
"prefix region name to all patches, not just coupling patches"
);
#include "setRootCase.H" #include "setRootCase.H"
#include "createTime.H" #include "createTime.H"
@ -1696,6 +1754,8 @@ int main(int argc, char *argv[])
const bool detectOnly = args.optionFound("detectOnly"); const bool detectOnly = args.optionFound("detectOnly");
const bool sloppyCellZones = args.optionFound("sloppyCellZones"); const bool sloppyCellZones = args.optionFound("sloppyCellZones");
const bool useFaceZones = args.optionFound("useFaceZones"); const bool useFaceZones = args.optionFound("useFaceZones");
const bool prefixRegion = args.optionFound("prefixRegion");
if if
( (
@ -2226,6 +2286,7 @@ int main(int argc, char *argv[])
mesh, mesh,
cellRegion, cellRegion,
regionNames, regionNames,
prefixRegion,
faceToInterface, faceToInterface,
interfacePatches, interfacePatches,
regionI, regionI,
@ -2246,6 +2307,7 @@ int main(int argc, char *argv[])
mesh, mesh,
cellRegion, cellRegion,
regionNames, regionNames,
prefixRegion,
faceToInterface, faceToInterface,
interfacePatches, interfacePatches,
regionI, regionI,
@ -2266,6 +2328,7 @@ int main(int argc, char *argv[])
mesh, mesh,
cellRegion, cellRegion,
regionNames, regionNames,
prefixRegion,
faceToInterface, faceToInterface,
interfacePatches, interfacePatches,
regionI, regionI,