Old code: Found 10990 time steps Search for moving mesh ... no moving mesh detected. Startup in 329.09 s Updated: Found 10990 time steps Search for moving mesh ... no moving mesh detected. Startup in 1.6 s - Cause was checking "polyMesh/points" via an IOobject. Short-circuit with a check for a polyMesh/ directory first. Limit the check to the master-node as well to further reduce load on the file-system. ------------------------------ ENH: improve per-step conversion times for foamToEnsight. Old code: Converting 11001 time steps Time [0] = 0 Wrote in 1.53 s Time [1] = 1 Wrote in 1.52 s ... Time [100] = 100 Elapsed time 205.35 s Updated: Converting 11001 time steps Time [0] = 0 Wrote in 1.4 s Time [1] = 1 Wrote in 0.07 s ... Time [100] = 100 Elapsed time 42.4 s - Speedup by hashing test results from the first conversion step instead of checking each time. Check data on all nodes to avoid problems with incomplete writes. ------------------------------ BUG: moving mesh detection failed for foamToEnsightParts - adjusted to agree with updated foamToEnsight ------------------------------ Note: - foamToEnsightParts (serial) still has about twice the throughput of foamToEnsight.
49 lines
1.1 KiB
C
49 lines
1.1 KiB
C
// check for "points" in all of the result directories
|
|
// - could restrict to the selected times
|
|
|
|
bool hasMovingMesh = false;
|
|
|
|
if (timeDirs.size() > 1 && Pstream::master())
|
|
{
|
|
// We already loaded a mesh (usually from constant).
|
|
// See if any other "polyMesh/points" files exist too.
|
|
|
|
const fileName& baseDir = mesh.time().path();
|
|
|
|
Info<< "Search for moving mesh ... " << flush;
|
|
forAll(timeDirs, timeI)
|
|
{
|
|
hasMovingMesh =
|
|
(
|
|
isDir(baseDir/timeDirs[timeI].name()/polyMesh::meshSubDir)
|
|
&& IOobject
|
|
(
|
|
"points",
|
|
timeDirs[timeI].name(),
|
|
polyMesh::meshSubDir,
|
|
mesh,
|
|
IOobject::NO_READ,
|
|
IOobject::NO_WRITE,
|
|
false // no register
|
|
).typeHeaderOk<pointIOField>(true)
|
|
);
|
|
|
|
if (hasMovingMesh)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (hasMovingMesh)
|
|
{
|
|
Info<< "found." << nl
|
|
<< " Writing meshes for every timestep." << endl;
|
|
}
|
|
else
|
|
{
|
|
Info<< "none detected." << endl;
|
|
}
|
|
}
|
|
|
|
reduce(hasMovingMesh, orOp<bool>());
|