Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Development
openfoam
Commits
a13f97d5
Commit
a13f97d5
authored
Dec 02, 2008
by
Mark Olesen
Browse files
timeSelector - handle cases with missing constant/ or 0/ directories
parent
507e7a1b
Changes
2
Hide whitespace changes
Inline
Side-by-side
applications/test/findTimes/findTimes.C
View file @
a13f97d5
...
...
@@ -28,6 +28,7 @@ Description
#include
"argList.H"
#include
"Time.H"
#include
"timeSelector.H"
using
namespace
Foam
;
...
...
@@ -36,13 +37,18 @@ using namespace Foam;
int
main
(
int
argc
,
char
*
argv
[])
{
argList
::
noParallel
();
Foam
::
timeSelector
::
addOptions
();
# include "setRootCase.H"
# include "createTime.H"
Info
<<
runTime
.
times
()
<<
endl
;
Info
<<
"Times found:"
<<
runTime
.
times
()
<<
endl
;
Info
<<
"End
\n
"
<<
endl
;
instantList
timeDirs
=
Foam
::
timeSelector
::
select0
(
runTime
,
args
);
Info
<<
"Times selected:"
<<
timeDirs
<<
endl
;
Info
<<
"
\n
End
\n
"
<<
endl
;
return
0
;
}
...
...
src/OpenFOAM/db/Time/timeSelector.C
View file @
a13f97d5
...
...
@@ -56,22 +56,12 @@ Foam::List<bool> Foam::timeSelector::selected(const List<instant>& Times) const
{
List
<
bool
>
lst
(
Times
.
size
(),
false
);
// check ranges
forAll
(
Times
,
i
)
// check ranges
, avoid false positive on constant/
forAll
(
Times
,
timeI
)
{
if
(
selected
(
Times
[
i
]))
if
(
Times
[
timeI
].
name
()
!=
"constant"
&&
selected
(
Times
[
timeI
]))
{
lst
[
i
]
=
true
;
}
}
// avoid false positive on "constant"
forAll
(
Times
,
i
)
{
if
(
Times
[
i
].
name
()
==
"constant"
)
{
lst
[
i
]
=
false
;
break
;
lst
[
timeI
]
=
true
;
}
}
...
...
@@ -85,15 +75,15 @@ Foam::List<bool> Foam::timeSelector::selected(const List<instant>& Times) const
int
nearestIndex
=
-
1
;
scalar
nearestDiff
=
Foam
::
GREAT
;
forAll
(
Times
,
timeI
ndex
)
forAll
(
Times
,
timeI
)
{
if
(
Times
[
timeI
ndex
].
name
()
==
"constant"
)
continue
;
if
(
Times
[
timeI
].
name
()
==
"constant"
)
continue
;
scalar
diff
=
fabs
(
Times
[
timeI
ndex
].
value
()
-
target
);
scalar
diff
=
fabs
(
Times
[
timeI
].
value
()
-
target
);
if
(
diff
<
nearestDiff
)
{
nearestDiff
=
diff
;
nearestIndex
=
timeI
ndex
;
nearestIndex
=
timeI
;
}
}
...
...
@@ -156,6 +146,27 @@ Foam::List<Foam::instant> Foam::timeSelector::select
{
List
<
bool
>
selectTimes
(
timeDirs
.
size
(),
true
);
// determine locations of constant/ and 0/ directories
label
constantIdx
=
-
1
;
label
zeroIdx
=
-
1
;
forAll
(
timeDirs
,
timeI
)
{
if
(
timeDirs
[
timeI
].
name
()
==
"constant"
)
{
constantIdx
=
timeI
;
}
else
if
(
timeDirs
[
timeI
].
value
()
==
0
)
{
zeroIdx
=
timeI
;
}
if
(
constantIdx
>=
0
&&
zeroIdx
>=
0
)
{
break
;
}
}
if
(
args
.
options
().
found
(
"time"
))
{
selectTimes
=
timeSelector
...
...
@@ -166,25 +177,31 @@ Foam::List<Foam::instant> Foam::timeSelector::select
else
if
(
args
.
options
().
found
(
"latestTime"
))
{
selectTimes
=
false
;
const
label
latestIdx
=
timeDirs
.
size
()
-
1
;
// avoid false match on constant/ or 0/
if
(
timeDirs
.
size
()
>
2
)
if
(
latestIdx
!=
constantIdx
&&
latestIdx
!=
zeroIdx
)
{
selectTimes
[
timeDirs
.
size
()
-
1
]
=
true
;
selectTimes
[
latestIdx
]
=
true
;
}
}
if
(
timeDirs
.
size
()
>
1
)
// special treatment for constant/
if
(
constantIdx
>=
0
)
{
selectTimes
[
0
]
=
args
.
options
().
found
(
"constant"
);
selectTimes
[
constantIdx
]
=
args
.
options
().
found
(
"constant"
);
}
// special treatment for 0/
if
(
zeroIdx
>=
0
)
{
if
(
args
.
options
().
found
(
"noZero"
))
{
selectTimes
[
1
]
=
false
;
selectTimes
[
zeroIdx
]
=
false
;
}
else
if
(
argList
::
validOptions
.
found
(
"zeroTime"
))
{
selectTimes
[
1
]
=
args
.
options
().
found
(
"zeroTime"
);
selectTimes
[
zeroIdx
]
=
args
.
options
().
found
(
"zeroTime"
);
}
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment