ENH: verticalChannel: updated for fowRateInletVelocity

This commit is contained in:
mattijs
2012-09-21 12:03:08 +01:00
parent 1d83996c0f
commit 5dc1c259d4
14 changed files with 139 additions and 596 deletions

View File

@ -52,6 +52,7 @@ Description
} }
} }
\endverbatim \endverbatim
Replacement entries starting with '~' will remove the entry.
Usage Usage
@ -172,6 +173,46 @@ bool addEntry
} }
// List of indices into thisKeys
labelList findMatches
(
const HashTable<wordList, word>& shortcuts,
const wordList& shortcutNames,
const wordList& thisKeys,
const keyType& key
)
{
labelList matches;
if (key.isPattern())
{
// Wildcard match
matches = findStrings(key, thisKeys);
}
else if (shortcuts.size())
{
// See if patchGroups expand to valid thisKeys
labelList indices = findStrings(key, shortcutNames);
forAll(indices, i)
{
const word& name = shortcutNames[indices[i]];
const wordList& keys = shortcuts[name];
forAll(keys, j)
{
label index = findIndex(thisKeys, keys[j]);
if (index != -1)
{
matches.append(index);
}
}
}
}
return matches;
}
// Dictionary merging/editing. // Dictionary merging/editing.
// literalRE: // literalRE:
// - true: behave like dictionary::merge, i.e. add regexps just like // - true: behave like dictionary::merge, i.e. add regexps just like
@ -185,6 +226,8 @@ bool merge
const HashTable<wordList, word>& shortcuts const HashTable<wordList, word>& shortcuts
) )
{ {
const wordList shortcutNames(shortcuts.toc());
bool changed = false; bool changed = false;
// Save current (non-wildcard) keys before adding items. // Save current (non-wildcard) keys before adding items.
@ -203,7 +246,18 @@ bool merge
{ {
const keyType& key = mergeIter().keyword(); const keyType& key = mergeIter().keyword();
if (literalRE || !(key.isPattern() || shortcuts.found(key))) if (key[0] == '~')
{
word eraseKey = key(1, key.size()-1);
if (thisDict.remove(eraseKey))
{
// Mark thisDict entry as having been match for wildcard
// handling later on.
thisKeysSet.erase(eraseKey);
}
changed = true;
}
else if (literalRE || !(key.isPattern() || shortcuts.found(key)))
{ {
entry* entryPtr = thisDict.lookupEntryPtr entry* entryPtr = thisDict.lookupEntryPtr
( (
@ -255,59 +309,69 @@ bool merge
{ {
const keyType& key = mergeIter().keyword(); const keyType& key = mergeIter().keyword();
// List of indices into thisKeys if (key[0] == '~')
labelList matches;
if (key.isPattern())
{ {
// Wildcard match word eraseKey = key(1, key.size()-1);
matches = findStrings(key, thisKeys);
} // List of indices into thisKeys
else if (shortcuts.size()) labelList matches
{
// See if patchGroups expand to valid thisKeys
const wordList shortcutNames = shortcuts.toc();
labelList indices = findStrings(key, shortcutNames);
forAll(indices, i)
{
const word& name = shortcutNames[indices[i]];
const wordList& keys = shortcuts[name];
forAll(keys, j)
{
label index = findIndex(thisKeys, keys[j]);
if (index != -1)
{
matches.append(index);
}
}
}
}
// Add all matches
forAll(matches, i)
{
const word& thisKey = thisKeys[matches[i]];
entry& thisEntry = const_cast<entry&>
( (
thisDict.lookupEntry(thisKey, false, false) findMatches
(
shortcuts,
shortcutNames,
thisKeys,
eraseKey
)
); );
if // Remove all matches
( forAll(matches, i)
addEntry
(
thisDict,
thisEntry,
mergeIter(),
literalRE,
HashTable<wordList, word>(0) // no shortcuts
// at deeper levels
)
)
{ {
changed = true; const word& thisKey = thisKeys[matches[i]];
thisKeysSet.erase(thisKey);
}
changed = true;
}
else
{
// List of indices into thisKeys
labelList matches
(
findMatches
(
shortcuts,
shortcutNames,
thisKeys,
key
)
);
// Add all matches
forAll(matches, i)
{
const word& thisKey = thisKeys[matches[i]];
entry& thisEntry = const_cast<entry&>
(
thisDict.lookupEntry(thisKey, false, false)
);
if
(
addEntry
(
thisDict,
thisEntry,
mergeIter(),
literalRE,
HashTable<wordList, word>(0) // no shortcuts
// at deeper levels
)
)
{
changed = true;
}
} }
} }
} }

View File

@ -32,13 +32,15 @@ boundaryField
inletCentral inletCentral
{ {
type flowRateInletVelocity; type flowRateInletVelocity;
massFlowRate constant 0.00379; //massFlowRate constant 0.00379;
volumetricFlowRate constant 0.00379;
value uniform (0 14.68 0); value uniform (0 14.68 0);
} }
inletSides inletSides
{ {
type flowRateInletVelocity; type flowRateInletVelocity;
massFlowRate constant 0.00832; //massFlowRate constant 0.00832;
volumetricFlowRate constant 0.00832;
value uniform (0 17.79 0); value uniform (0 17.79 0);
} }
outlet outlet

View File

@ -1,54 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object H2O;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0.01;
boundaryField
{
back
{
type symmetryPlane;
}
front
{
type symmetryPlane;
}
walls
{
type zeroGradient;
}
outlet
{
type inletOutlet;
inletValue uniform 0.0;
}
inletSides
{
type fixedValue;
value uniform 0.01;
}
inletCentral
{
type fixedValue;
value uniform 0.01;
}
}
// ************************************************************************* //

View File

@ -1,54 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object T;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 473.0;
boundaryField
{
back
{
type symmetryPlane;
}
front
{
type symmetryPlane;
}
walls
{
type zeroGradient;
}
outlet
{
type inletOutlet;
inletValue uniform 473.0;
}
inletSides
{
type fixedValue;
value uniform 473.0;
}
inletCentral
{
type fixedValue;
value uniform 573.0;
}
}
// ************************************************************************* //

View File

@ -1,57 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
location "0";
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
back
{
type symmetryPlane;
}
front
{
type symmetryPlane;
}
inletCentral
{
type flowRateInletVelocity;
massFlowRate constant 0.00379;
value uniform (0 14.68 0);
}
inletSides
{
type flowRateInletVelocity;
massFlowRate constant 0.00832;
value uniform (0 17.79 0);
}
outlet
{
type inletOutlet;
inletValue uniform (0 0 0);
}
walls
{
type fixedValue;
value uniform (0 0 0);
}
}
// ************************************************************************* //

View File

@ -1,54 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object air;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0.99;
boundaryField
{
back
{
type symmetryPlane;
}
front
{
type symmetryPlane;
}
walls
{
type zeroGradient;
}
outlet
{
type inletOutlet;
inletValue uniform 1.0;
}
inletSides
{
type fixedValue;
value uniform 0.99;
}
inletCentral
{
type fixedValue;
value uniform 0.99;
}
}
// ************************************************************************* //

View File

@ -1,56 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alphat;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
back
{
type symmetryPlane;
}
front
{
type symmetryPlane;
}
inletCentral
{
type calculated;
value uniform 0;
}
inletSides
{
type calculated;
value uniform 0;
}
outlet
{
type calculated;
value uniform 0;
}
walls
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -1,57 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object k;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 3.75e-9;
boundaryField
{
back
{
type symmetryPlane;
}
front
{
type symmetryPlane;
}
inletCentral
{
type turbulentIntensityKineticEnergyInlet;
intensity 0.15;
value uniform 3.75e-9;
}
inletSides
{
type turbulentIntensityKineticEnergyInlet;
intensity 0.16;
value uniform 3.75e-9;
}
outlet
{
type inletOutlet;
inletValue uniform 3.75e-9;
}
walls
{
type compressible::kqRWallFunction;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -1,58 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object mut;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
back
{
type symmetryPlane;
}
front
{
type symmetryPlane;
}
inletCentral
{
type calculated;
value uniform 0;
}
inletSides
{
type calculated;
value uniform 0;
}
outlet
{
type calculated;
value uniform 0;
}
walls
{
type mutkWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -1,62 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object omega;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 -1 0 0 0 0];
internalField uniform 4.5e-3;
boundaryField
{
back
{
type symmetryPlane;
}
front
{
type symmetryPlane;
}
inletCentral
{
type compressible::turbulentMixingLengthFrequencyInlet;
mixingLength 0.007;
k k;
value uniform 4.5e-3;
}
inletSides
{
type compressible::turbulentMixingLengthFrequencyInlet;
mixingLength 0.007;
k k;
value uniform 4.5e-3;
}
outlet
{
type inletOutlet;
inletValue uniform 4.5e-3;
}
walls
{
type compressible::omegaWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -7,10 +7,6 @@ cd ${0%/*} || exit 1 # run from this directory
# remove old time and post-processing folders # remove old time and post-processing folders
rm -rf 0 *[1-9]* processor* postProcessing rm -rf 0 *[1-9]* processor* postProcessing
# copy 0.org to 0
cp -r 0.org 0
cleanCase cleanCase
# ----------------------------------------------------------------- end-of-file # ----------------------------------------------------------------- end-of-file

View File

@ -7,10 +7,16 @@ cd ${0%/*} || exit 1 # run from this directory
# create mesh # create mesh
runApplication blockMesh runApplication blockMesh
cp -r 0.org 0
# initialise with potentialFoam solution # initialise with potentialFoam solution
runApplication potentialFoam runApplication potentialFoam
rm -f 0/phi rm -f 0/phi
# change flowRateInletVelocity to massFlowRate
runApplication changeDictionary
# run the solver # run the solver
runApplication `getApplication` runApplication `getApplication`

View File

@ -1,58 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class polyBoundaryMesh;
location "constant/polyMesh";
object boundary;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
6
(
back
{
type symmetryPlane;
nFaces 9340;
startFace 265900;
}
front
{
type symmetryPlane;
nFaces 9340;
startFace 275240;
}
inletCentral
{
type patch;
nFaces 100;
startFace 284580;
}
inletSides
{
type patch;
nFaces 200;
startFace 284680;
}
outlet
{
type patch;
nFaces 300;
startFace 284880;
}
walls
{
type wall;
nFaces 9320;
startFace 285180;
}
)
// ************************************************************************* //

View File

@ -9,44 +9,29 @@ FoamFile
{ {
version 2.0; version 2.0;
format ascii; format ascii;
class volScalarField; class dictionary;
location "0"; object changeDictionaryDict;
object p;
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0]; dictionaryReplacement
internalField uniform 100000;
boundaryField
{ {
back U
{ {
type symmetryPlane; boundaryField
} {
front inletCentral
{ {
type symmetryPlane; ~volumetricFlowRate;
} massFlowRate constant 0.00379;
inletCentral }
{ inletSides
type zeroGradient; {
} ~volumetricFlowRate;
inletSides massFlowRate constant 0.00832;
{ }
type zeroGradient; }
}
outlet
{
type fixedValue;
value uniform 100000;
}
walls
{
type zeroGradient;
} }
} }
// ************************************************************************* // // ************************************************************************* //