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.
44 lines
1.0 KiB
C
44 lines
1.0 KiB
C
// Read time index from */uniform/time, but treat 0 and constant specially
|
|
// or simply increment from the '-index' option if it was supplied
|
|
|
|
label timeIndex = 0;
|
|
|
|
if (optIndex)
|
|
{
|
|
timeIndex = indexingNumber++;
|
|
}
|
|
else if
|
|
(
|
|
runTime.timeName() != runTime.constant()
|
|
&& runTime.timeName() != "0"
|
|
)
|
|
{
|
|
IOobject io
|
|
(
|
|
"time",
|
|
runTime.timeName(),
|
|
"uniform",
|
|
runTime,
|
|
IOobject::READ_IF_PRESENT,
|
|
IOobject::NO_WRITE,
|
|
false
|
|
);
|
|
|
|
if (io.typeHeaderOk<IOdictionary>(true))
|
|
{
|
|
io.readOpt() = IOobject::MUST_READ_IF_MODIFIED;
|
|
IOdictionary timeObject(io);
|
|
|
|
timeObject.lookup("index") >> timeIndex;
|
|
}
|
|
else
|
|
{
|
|
Info<< "skip ... missing entry " << io.objectPath() << endl;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
timeIndices.insert(timeIndex, timeDirs[timeI].value());
|
|
Info<< nl << "Time [" << timeIndex << "] = " << runTime.timeName() << nl;
|
|
|