mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
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>());
|