mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: improve robustness of outputFilterOutputControl
This commit is contained in:
@ -33,25 +33,25 @@ Foam::NamedEnum<Enum, nEnum>::NamedEnum()
|
|||||||
:
|
:
|
||||||
HashTable<int>(2*nEnum)
|
HashTable<int>(2*nEnum)
|
||||||
{
|
{
|
||||||
for (int i=0; i<nEnum; i++)
|
for (int enumI = 0; enumI < nEnum; ++enumI)
|
||||||
{
|
{
|
||||||
if (!names[i] || names[i][0] == '\0')
|
if (!names[enumI] || names[enumI][0] == '\0')
|
||||||
{
|
{
|
||||||
stringList goodNames(i);
|
stringList goodNames(enumI);
|
||||||
|
|
||||||
for (int j = 0; j < i; j++)
|
for (int i = 0; i < enumI; ++i)
|
||||||
{
|
{
|
||||||
goodNames[j] = names[j];
|
goodNames[i] = names[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
FatalErrorIn("NamedEnum<Enum, nEnum>::NamedEnum()")
|
FatalErrorIn("NamedEnum<Enum, nEnum>::NamedEnum()")
|
||||||
<< "Illegal enumeration name at position " << i << endl
|
<< "Illegal enumeration name at position " << enumI << endl
|
||||||
<< "after entries " << goodNames << ".\n"
|
<< "after entries " << goodNames << ".\n"
|
||||||
<< "Possibly your NamedEnum<Enum, nEnum>::names array"
|
<< "Possibly your NamedEnum<Enum, nEnum>::names array"
|
||||||
<< " is not of size " << nEnum << endl
|
<< " is not of size " << nEnum << endl
|
||||||
<< abort(FatalError);
|
<< abort(FatalError);
|
||||||
}
|
}
|
||||||
insert(names[i], i);
|
insert(names[enumI], enumI);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ Foam::NamedEnum<Enum, nEnum>::NamedEnum()
|
|||||||
template<class Enum, int nEnum>
|
template<class Enum, int nEnum>
|
||||||
Enum Foam::NamedEnum<Enum, nEnum>::read(Istream& is) const
|
Enum Foam::NamedEnum<Enum, nEnum>::read(Istream& is) const
|
||||||
{
|
{
|
||||||
word name(is);
|
const word name(is);
|
||||||
|
|
||||||
HashTable<int>::const_iterator iter = find(name);
|
HashTable<int>::const_iterator iter = find(name);
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ Enum Foam::NamedEnum<Enum, nEnum>::read(Istream& is) const
|
|||||||
(
|
(
|
||||||
"NamedEnum<Enum, nEnum>::read(Istream&) const", is
|
"NamedEnum<Enum, nEnum>::read(Istream&) const", is
|
||||||
) << name << " is not in enumeration: "
|
) << name << " is not in enumeration: "
|
||||||
<< toc() << exit(FatalIOError);
|
<< sortedToc() << exit(FatalIOError);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Enum(iter());
|
return Enum(iter());
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
|
\\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -68,17 +68,27 @@ Foam::outputFilterOutputControl::~outputFilterOutputControl()
|
|||||||
|
|
||||||
void Foam::outputFilterOutputControl::read(const dictionary& dict)
|
void Foam::outputFilterOutputControl::read(const dictionary& dict)
|
||||||
{
|
{
|
||||||
outputControl_ = outputControlNames_.read(dict.lookup("outputControl"));
|
if (dict.found("outputControl"))
|
||||||
|
{
|
||||||
|
outputControl_ = outputControlNames_.read(dict.lookup("outputControl"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
outputControl_ = ocTimeStep;
|
||||||
|
}
|
||||||
|
|
||||||
switch (outputControl_)
|
switch (outputControl_)
|
||||||
{
|
{
|
||||||
case ocTimeStep:
|
case ocTimeStep:
|
||||||
{
|
{
|
||||||
dict.lookup("outputInterval") >> outputInterval_;
|
outputInterval_ = dict.lookupOrDefault<label>("outputInterval", 0);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
// do nothing
|
// do nothing
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -97,17 +107,21 @@ bool Foam::outputFilterOutputControl::output() const
|
|||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case ocOutputTime:
|
case ocOutputTime:
|
||||||
{
|
{
|
||||||
return time_.outputTime();
|
return time_.outputTime();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
|
// this error should not actually be possible
|
||||||
FatalErrorIn("bool Foam::outputFilterOutputControl::output()")
|
FatalErrorIn("bool Foam::outputFilterOutputControl::output()")
|
||||||
<< "Unknown output control: "
|
<< "Undefined output control: "
|
||||||
<< outputControlNames_[outputControl_] << nl
|
<< outputControlNames_[outputControl_] << nl
|
||||||
<< abort(FatalError);
|
<< abort(FatalError);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -25,6 +25,8 @@ Class
|
|||||||
Foam::outputFilterOutputControl
|
Foam::outputFilterOutputControl
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
An output control for function objects.
|
||||||
|
The default is time-step execution at every interval.
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
outputFilterOutputControl.C
|
outputFilterOutputControl.C
|
||||||
@ -51,10 +53,11 @@ class outputFilterOutputControl
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
//- The output control options
|
||||||
enum outputControls
|
enum outputControls
|
||||||
{
|
{
|
||||||
ocTimeStep,
|
ocTimeStep, /*!< execution is coupled to the time-step */
|
||||||
ocOutputTime
|
ocOutputTime /*!< execution is coupled to the output-time */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -71,7 +74,7 @@ private:
|
|||||||
//- Type of output
|
//- Type of output
|
||||||
outputControls outputControl_;
|
outputControls outputControl_;
|
||||||
|
|
||||||
//- The execution interval (in time steps) when using TIMESTEP mode
|
//- The execution interval (in time steps) when using @c timeStep mode,
|
||||||
// a value <= 1 means execute at every time step
|
// a value <= 1 means execute at every time step
|
||||||
label outputInterval_;
|
label outputInterval_;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user