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.
34 lines
777 B
C
34 lines
777 B
C
// ignore special fields (_0 fields),
|
|
// ignore fields we don't handle,
|
|
// ignore fields that are not available for all time-steps
|
|
|
|
// hash by field-name in fieldsToUse
|
|
if (!fieldsToUse.found(fieldName))
|
|
{
|
|
bool variableGood = false;
|
|
|
|
forAll(timeDirs, n1)
|
|
{
|
|
variableGood =
|
|
(
|
|
fieldName.size() > 2 && fieldName(fieldName.size() - 2, 2) == "_0"
|
|
? false
|
|
: IOobject
|
|
(
|
|
fieldName,
|
|
timeDirs[n1].name(),
|
|
mesh,
|
|
IOobject::NO_READ
|
|
).typeHeaderOk<volScalarField>(false)
|
|
);
|
|
|
|
if (variableGood)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
reduce(variableGood, andOp<bool>());
|
|
fieldsToUse.set(fieldName, variableGood);
|
|
}
|