mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
BUG: questionable findInstance handling of constant (related to #1112)
- when searching for a file that may not actually exist, the short-cut optimization could lead to the 'constant' directory being ignored. STYLE: simplify logic in points0MotionSolver::points0IO
This commit is contained in:
committed by
Andrew Heather
parent
79bf4fafb6
commit
eaacf0a20a
@ -757,8 +757,8 @@ Foam::IOobject Foam::fileOperation::findInstance
|
||||
return io;
|
||||
}
|
||||
|
||||
// Search back through the time directories to find the time
|
||||
// closest to and lower than current time
|
||||
// Search back through the time directories to find the first time
|
||||
// that is less than or equal to the current time
|
||||
|
||||
instantList ts = time.times();
|
||||
label instanceI = ts.size()-1;
|
||||
@ -771,20 +771,21 @@ Foam::IOobject Foam::fileOperation::findInstance
|
||||
}
|
||||
}
|
||||
|
||||
// Continue searching from here
|
||||
// Found the time, continue from here
|
||||
for (; instanceI >= 0; --instanceI)
|
||||
{
|
||||
io.instance() = ts[instanceI].name();
|
||||
|
||||
// Shortcut: if actual directory is the timeName we've already tested it
|
||||
if
|
||||
(
|
||||
ts[instanceI].name() == startIO.instance()
|
||||
&& ts[instanceI].name() != stopInstance
|
||||
io.instance() == startIO.instance()
|
||||
&& io.instance() != stopInstance
|
||||
)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
io.instance() = ts[instanceI].name();
|
||||
if (exists(io))
|
||||
{
|
||||
DebugInFunction
|
||||
@ -796,7 +797,7 @@ Foam::IOobject Foam::fileOperation::findInstance
|
||||
}
|
||||
|
||||
// Check if hit minimum instance
|
||||
if (ts[instanceI].name() == stopInstance)
|
||||
if (io.instance() == stopInstance)
|
||||
{
|
||||
DebugInFunction
|
||||
<< "Hit stopInstance " << stopInstance << endl;
|
||||
|
||||
@ -48,26 +48,6 @@ Foam::IOobject Foam::points0MotionSolver::points0IO(const polyMesh& mesh)
|
||||
IOobject::READ_IF_PRESENT
|
||||
);
|
||||
|
||||
if (instance != mesh.time().constant())
|
||||
{
|
||||
// points0 written to a time folder
|
||||
|
||||
return
|
||||
IOobject
|
||||
(
|
||||
"points0",
|
||||
instance,
|
||||
polyMesh::meshSubDir,
|
||||
mesh,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::NO_WRITE,
|
||||
false
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Check that points0 are actually in constant directory
|
||||
|
||||
IOobject io
|
||||
(
|
||||
"points0",
|
||||
@ -79,27 +59,18 @@ Foam::IOobject Foam::points0MotionSolver::points0IO(const polyMesh& mesh)
|
||||
false
|
||||
);
|
||||
|
||||
if (io.typeHeaderOk<pointIOField>())
|
||||
{
|
||||
return io;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Copy of original mesh points
|
||||
|
||||
return
|
||||
IOobject
|
||||
// If points0 are located in constant directory, verify their existence
|
||||
// or fallback to a copy of the original mesh points
|
||||
if
|
||||
(
|
||||
"points",
|
||||
instance,
|
||||
polyMesh::meshSubDir,
|
||||
mesh,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::NO_WRITE,
|
||||
false
|
||||
);
|
||||
}
|
||||
instance == mesh.time().constant()
|
||||
&& !io.typeHeaderOk<pointIOField>()
|
||||
)
|
||||
{
|
||||
io.rename("points");
|
||||
}
|
||||
|
||||
return io;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user