BUG: redistributePar: fix global object headerOk. See !605

- mesh/parallel/cavity not yet working since zero-sized mesh
  not written on new processors.
This commit is contained in:
mattijs 2023-12-04 14:38:45 +00:00
parent 75790ba540
commit 4609aa38e1
2 changed files with 59 additions and 22 deletions

View File

@ -110,7 +110,8 @@ using namespace Foam;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
const int debug(::Foam::debug::debugSwitch("redistributePar", 0));
// Use -verbose -verbose to switch on debug info. TBD.
int debug(::Foam::debug::debugSwitch("redistributePar", 0));
#define InfoOrPout (::debug ? Pout : Info())
@ -1307,6 +1308,14 @@ int main(int argc, char *argv[])
if (optVerbose)
{
if (optVerbose == 2)
{
WarningInFunction
<< "-verbose -verbose switches on full debugging"
<< nl << endl;
::debug = 1;
}
// Report on output
faMeshDistributor::verbose_ = 1;
parPointFieldDistributor::verbose_ = 1;

View File

@ -59,30 +59,58 @@ bool Foam::IOobject::typeHeaderOk
// Determine local status
bool ok = false;
fileName fName;
if (!masterOnly || UPstream::master())
{
fName = typeFilePath<Type>(*this, search);
ok = fp.readHeader(*this, fName, Type::typeName);
}
if (ok && checkType && headerClassName_ != Type::typeName)
{
ok = false;
if (verbose)
{
WarningInFunction
<< "Unexpected class name \"" << headerClassName_
<< "\" expected \"" << Type::typeName
<< "\" when reading " << fName << endl;
}
}
// If masterOnly make sure all processors know about it
if (masterOnly)
{
Pstream::broadcast(ok);
if (UPstream::master())
{
// Force master-only header reading
const bool oldParRun = UPstream::parRun(false);
const fileName fName(typeFilePath<Type>(*this, search));
ok = fp.readHeader(*this, fName, Type::typeName);
UPstream::parRun(oldParRun);
if (ok && checkType && headerClassName_ != Type::typeName)
{
ok = false;
if (verbose)
{
WarningInFunction
<< "Unexpected class name \"" << headerClassName_
<< "\" expected \"" << Type::typeName
<< "\" when reading " << fName << endl;
}
}
}
// If masterOnly make sure all processors know about the read
// information. Note: should ideally be inside fileHandler...
Pstream::broadcasts
(
fp.comm(),
ok,
headerClassName_,
note_
);
}
else
{
const fileName fName(typeFilePath<Type>(*this, search));
// All read header
ok = fp.readHeader(*this, fName, Type::typeName);
if (ok && checkType && headerClassName_ != Type::typeName)
{
ok = false;
if (verbose)
{
WarningInFunction
<< "Unexpected class name \"" << headerClassName_
<< "\" expected \"" << Type::typeName
<< "\" when reading " << fName << endl;
}
}
}
return ok;