mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
BUG: multiLevelCoeffs entry not mandatory (closes #620)
This commit is contained in:
@ -275,21 +275,27 @@ void Foam::multiLevelDecomp::decompose
|
|||||||
const label nNext = methods_[nextLevel].nDomains();
|
const label nNext = methods_[nextLevel].nDomains();
|
||||||
const label nTotal = nCurrDomains * nNext;
|
const label nTotal = nCurrDomains * nNext;
|
||||||
|
|
||||||
// Retrieve original level0 dictionary and modify number of domains
|
// Get original level0 dictionary and modify numberOfSubdomains
|
||||||
dictionary::const_iterator iter =
|
dictionary level0Dict;
|
||||||
decompositionDict_.optionalSubDict(typeName + "Coeffs").begin();
|
forAllConstIter(dictionary, methodsDict_, iter)
|
||||||
dictionary myDict = iter().dict();
|
{
|
||||||
myDict.set("numberOfSubdomains", nTotal);
|
if (iter().isDict())
|
||||||
|
{
|
||||||
|
level0Dict = iter().dict();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
level0Dict.set("numberOfSubdomains", nTotal);
|
||||||
|
|
||||||
if (debug && Pstream::master())
|
if (debug && Pstream::master())
|
||||||
{
|
{
|
||||||
Pout<< "Reference decomposition with " << myDict << " :"
|
Pout<< "Reference decomposition with " << level0Dict << " :"
|
||||||
<< endl;
|
<< endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
autoPtr<decompositionMethod> method0 = decompositionMethod::New
|
autoPtr<decompositionMethod> method0 = decompositionMethod::New
|
||||||
(
|
(
|
||||||
myDict
|
level0Dict
|
||||||
);
|
);
|
||||||
labelList dist
|
labelList dist
|
||||||
(
|
(
|
||||||
@ -364,31 +370,37 @@ void Foam::multiLevelDecomp::decompose
|
|||||||
Foam::multiLevelDecomp::multiLevelDecomp(const dictionary& decompositionDict)
|
Foam::multiLevelDecomp::multiLevelDecomp(const dictionary& decompositionDict)
|
||||||
:
|
:
|
||||||
decompositionMethod(decompositionDict),
|
decompositionMethod(decompositionDict),
|
||||||
methodsDict_(decompositionDict_.optionalSubDict(typeName + "Coeffs"))
|
methodsDict_(decompositionDict_.subDict(typeName + "Coeffs"))
|
||||||
{
|
{
|
||||||
methods_.setSize(methodsDict_.size());
|
methods_.setSize(methodsDict_.size());
|
||||||
label i = 0;
|
label nLevels = 0;
|
||||||
forAllConstIter(dictionary, methodsDict_, iter)
|
forAllConstIter(dictionary, methodsDict_, iter)
|
||||||
{
|
{
|
||||||
methods_.set(i++, decompositionMethod::New(iter().dict()));
|
// Ignore primitive entries which may be there for additional control
|
||||||
|
if (iter().isDict())
|
||||||
|
{
|
||||||
|
methods_.set(nLevels++, decompositionMethod::New(iter().dict()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
label n = 1;
|
methods_.setSize(nLevels);
|
||||||
|
|
||||||
|
label nTot = 1;
|
||||||
Info<< "decompositionMethod " << type() << " :" << endl;
|
Info<< "decompositionMethod " << type() << " :" << endl;
|
||||||
forAll(methods_, i)
|
forAll(methods_, i)
|
||||||
{
|
{
|
||||||
Info<< " level " << i << " decomposing with " << methods_[i].type()
|
Info<< " level " << i << " decomposing with " << methods_[i].type()
|
||||||
<< " into " << methods_[i].nDomains() << " subdomains." << endl;
|
<< " into " << methods_[i].nDomains() << " subdomains." << endl;
|
||||||
|
|
||||||
n *= methods_[i].nDomains();
|
nTot *= methods_[i].nDomains();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (n != nDomains())
|
if (nTot != nDomains())
|
||||||
{
|
{
|
||||||
FatalErrorInFunction
|
FatalErrorInFunction
|
||||||
<< "Top level decomposition specifies " << nDomains()
|
<< "Top level decomposition specifies " << nDomains()
|
||||||
<< " domains which is not equal to the product of"
|
<< " domains which is not equal to the product of"
|
||||||
<< " all sub domains " << n
|
<< " all sub domains " << nTot
|
||||||
<< exit(FatalError);
|
<< exit(FatalError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user