ENH: output function objects - added evaluateControl

This commit is contained in:
andy 2013-11-29 09:24:11 +00:00
parent 1c4d93e637
commit d24bc269f2
4 changed files with 40 additions and 13 deletions

View File

@ -110,7 +110,8 @@ Foam::OutputFilterFunctionObject<OutputFilter>::OutputFilterFunctionObject
storeFilter_(true),
timeStart_(-VGREAT),
timeEnd_(VGREAT),
outputControl_(t, dict)
outputControl_(t, dict, "output"),
evaluateControl_(t, dict, "evaluate")
{
readDict();
}
@ -159,7 +160,10 @@ bool Foam::OutputFilterFunctionObject<OutputFilter>::execute
allocateFilter();
}
ptr_->execute();
if (evaluateControl_.output())
{
ptr_->execute();
}
if (forceWrite || outputControl_.output())
{

View File

@ -98,6 +98,9 @@ class OutputFilterFunctionObject
//- Output controls
outputFilterOutputControl outputControl_;
//- Evaluate controls
outputFilterOutputControl evaluateControl_;
//- Pointer to the output filter
autoPtr<OutputFilter> ptr_;

View File

@ -31,7 +31,7 @@ License
namespace Foam
{
template<>
const char* NamedEnum<outputFilterOutputControl::outputControls, 6>::
const char* NamedEnum<outputFilterOutputControl::outputControls, 7>::
names[] =
{
"timeStep",
@ -39,11 +39,12 @@ namespace Foam
"adjustableTime",
"runTime",
"clockTime",
"cpuTime"
"cpuTime",
"none"
};
}
const Foam::NamedEnum<Foam::outputFilterOutputControl::outputControls, 6>
const Foam::NamedEnum<Foam::outputFilterOutputControl::outputControls, 7>
Foam::outputFilterOutputControl::outputControlNames_;
@ -52,10 +53,12 @@ const Foam::NamedEnum<Foam::outputFilterOutputControl::outputControls, 6>
Foam::outputFilterOutputControl::outputFilterOutputControl
(
const Time& t,
const dictionary& dict
const dictionary& dict,
const word& prefix
)
:
time_(t),
prefix_(prefix),
outputControl_(ocTimeStep),
outputInterval_(0),
outputTimeLastDump_(0),
@ -75,9 +78,12 @@ Foam::outputFilterOutputControl::~outputFilterOutputControl()
void Foam::outputFilterOutputControl::read(const dictionary& dict)
{
if (dict.found("outputControl"))
const word controlName(prefix_ + "Control");
const word intervalName(prefix_ + "Interval");
if (dict.found(controlName))
{
outputControl_ = outputControlNames_.read(dict.lookup("outputControl"));
outputControl_ = outputControlNames_.read(dict.lookup(controlName));
}
else
{
@ -88,13 +94,13 @@ void Foam::outputFilterOutputControl::read(const dictionary& dict)
{
case ocTimeStep:
{
outputInterval_ = dict.lookupOrDefault<label>("outputInterval", 0);
outputInterval_ = dict.lookupOrDefault<label>(intervalName, 0);
break;
}
case ocOutputTime:
{
outputInterval_ = dict.lookupOrDefault<label>("outputInterval", 1);
outputInterval_ = dict.lookupOrDefault<label>(intervalName, 1);
break;
}
@ -190,6 +196,11 @@ bool Foam::outputFilterOutputControl::output()
break;
}
case ocNone:
{
return false;
}
default:
{
// this error should not actually be possible

View File

@ -61,7 +61,8 @@ public:
ocAdjustableTime, /*!< Adjust time step for dumping */
ocRunTime, /*!< run time for dumping */
ocClockTime, /*!< clock time for dumping */
ocCpuTime /*!< cpu time for dumping */
ocCpuTime, /*!< cpu time for dumping */
ocNone /*!< no output */
};
@ -72,8 +73,11 @@ private:
//- Time object
const Time& time_;
//- Prefix
const word prefix_;
//- String representation of outputControls enums
static const NamedEnum<outputControls, 6> outputControlNames_;
static const NamedEnum<outputControls, 7> outputControlNames_;
//- Type of output
outputControls outputControl_;
@ -101,7 +105,12 @@ public:
// Constructors
//- Construct from Time object and dictionary
outputFilterOutputControl(const Time&, const dictionary&);
outputFilterOutputControl
(
const Time&,
const dictionary&,
const word& prefix
);
//- Destructor