BUG: sampledSets - ensure results are written on all procs
This commit is contained in:
parent
65bc8d1140
commit
f6ccd77d8c
@ -136,26 +136,40 @@ Foam::fileName Foam::sampledSets::writeSampleFile
|
||||
{
|
||||
wordList valueSetNames(masterFields.size());
|
||||
List<const Field<Type>*> valueSets(masterFields.size());
|
||||
|
||||
forAll(masterFields, fieldi)
|
||||
{
|
||||
const word& fieldName = masterFields[fieldi].name();
|
||||
|
||||
valueSetNames[fieldi] = fieldName;
|
||||
|
||||
// Values only available on master
|
||||
Type averageValue, minValue, maxValue;
|
||||
label sizeValue;
|
||||
if (Pstream::master())
|
||||
{
|
||||
valueSets[fieldi] = &masterFields[fieldi][setI];
|
||||
averageValue = average(*valueSets[fieldi]);
|
||||
minValue = min(*valueSets[fieldi]);
|
||||
maxValue = max(*valueSets[fieldi]);
|
||||
sizeValue = valueSets[fieldi]->size();
|
||||
}
|
||||
Pstream::scatter(averageValue);
|
||||
Pstream::scatter(minValue);
|
||||
Pstream::scatter(maxValue);
|
||||
Pstream::scatter(sizeValue);
|
||||
|
||||
// Set results
|
||||
|
||||
setResult("average(" + fieldName + ")", average(*valueSets[fieldi]));
|
||||
setResult("min(" + fieldName + ")", min(*valueSets[fieldi]));
|
||||
setResult("max(" + fieldName + ")", max(*valueSets[fieldi]));
|
||||
setResult("size(" + fieldName + ")", valueSets[fieldi]->size());
|
||||
setResult("average(" + fieldName + ")", averageValue);
|
||||
setResult("min(" + fieldName + ")", minValue);
|
||||
setResult("max(" + fieldName + ")", maxValue);
|
||||
setResult("size(" + fieldName + ")", sizeValue);
|
||||
}
|
||||
|
||||
fileName fName
|
||||
(
|
||||
timeDir/formatter.getFileName(masterSampleSet, valueSetNames)
|
||||
);
|
||||
fileName fName;
|
||||
if (Pstream::master())
|
||||
{
|
||||
fName = timeDir/formatter.getFileName(masterSampleSet, valueSetNames);
|
||||
|
||||
OFstream ofs(fName);
|
||||
if (ofs.opened())
|
||||
@ -167,17 +181,20 @@ Foam::fileName Foam::sampledSets::writeSampleFile
|
||||
valueSets,
|
||||
ofs
|
||||
);
|
||||
return fName;
|
||||
}
|
||||
else
|
||||
{
|
||||
WarningInFunction
|
||||
<< "File " << ofs.name() << " could not be opened. "
|
||||
<< "No data will be written" << endl;
|
||||
return fileName::null;
|
||||
}
|
||||
}
|
||||
|
||||
Pstream::scatter(fName);
|
||||
|
||||
return fName;
|
||||
}
|
||||
|
||||
|
||||
template<class T>
|
||||
void Foam::sampledSets::combineSampledValues
|
||||
@ -325,10 +342,7 @@ void Foam::sampledSets::sampleAndWrite(fieldGroup<Type>& fields)
|
||||
|
||||
forAll(masterSampledSets_, setI)
|
||||
{
|
||||
fileName sampleFile;
|
||||
if (Pstream::master())
|
||||
{
|
||||
sampleFile = writeSampleFile
|
||||
fileName sampleFile = writeSampleFile
|
||||
(
|
||||
masterSampledSets_[setI],
|
||||
masterFields,
|
||||
@ -336,9 +350,7 @@ void Foam::sampledSets::sampleAndWrite(fieldGroup<Type>& fields)
|
||||
outputPath_/mesh_.time().timeName(),
|
||||
fields.formatter()
|
||||
);
|
||||
}
|
||||
|
||||
Pstream::scatter(sampleFile);
|
||||
if (sampleFile.size())
|
||||
{
|
||||
// Case-local file name with "<case>" to make relocatable
|
||||
|
Loading…
Reference in New Issue
Block a user