From 15c7d501bbedb608fec6e8cd0b81a4ae56fc9eb3 Mon Sep 17 00:00:00 2001 From: mattijs Date: Mon, 6 Dec 2010 15:53:50 +0000 Subject: [PATCH] ENH: surfaceInterpolateFields : enable writing --- .../surfaceInterpolateFields.C | 55 ++++++++++++++----- .../surfaceInterpolateFields.H | 21 ++++++- 2 files changed, 58 insertions(+), 18 deletions(-) diff --git a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.C b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.C index 1e785b8479..434f8dea4f 100644 --- a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.C +++ b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.C @@ -24,7 +24,6 @@ License \*---------------------------------------------------------------------------*/ #include "surfaceInterpolateFields.H" -//#include "dictionary.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -89,20 +88,21 @@ void Foam::surfaceInterpolateFields::read(const dictionary& dict) void Foam::surfaceInterpolateFields::execute() { - //Info<< type() << " " << name_ << ":" << nl; + if (active_) + { + // Clear out any previously loaded fields + ssf_.clear(); + svf_.clear(); + sSpheretf_.clear(); + sSymmtf_.clear(); + stf_.clear(); - // Clear out any previously loaded fields - ssf_.clear(); - svf_.clear(); - sSpheretf_.clear(); - sSymmtf_.clear(); - stf_.clear(); - - interpolateFields(ssf_); - interpolateFields(svf_); - interpolateFields(sSpheretf_); - interpolateFields(sSymmtf_); - interpolateFields(stf_); + interpolateFields(ssf_); + interpolateFields(svf_); + interpolateFields(sSpheretf_); + interpolateFields(sSymmtf_); + interpolateFields(stf_); + } } @@ -114,7 +114,32 @@ void Foam::surfaceInterpolateFields::end() void Foam::surfaceInterpolateFields::write() { - // Do nothing + if (active_) + { + Info<< "Writing interpolated surface fields to " + << obr_.time().timeName() << endl; + + forAll(ssf_, i) + { + ssf_[i].write(); + } + forAll(svf_, i) + { + svf_[i].write(); + } + forAll(sSpheretf_, i) + { + sSpheretf_[i].write(); + } + forAll(sSymmtf_, i) + { + sSymmtf_[i].write(); + } + forAll(stf_, i) + { + stf_[i].write(); + } + } } diff --git a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.H b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.H index d8da89b440..215ff685ee 100644 --- a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.H +++ b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.H @@ -27,9 +27,24 @@ Class Description Linear interpolates volFields to surfaceFields - Note: gets executed every time step. Could move it to write() but then - you'd have problems if you have different write frequencies for different - function objects. + - at write it writes the fields + - it executes every time step + + so it can either be used to calculate and write the interpolate or + (since the interpolates are registered) use some other functionObject + to work on them. + + sampleSomeFields + { + type surfaceInterpolateFields; + .. + enabled true; + outputControl outputTime; + .. + // Name of volField and corresponding surfaceField + fields ((p pInterpolate)(U UInterpolate)); + } + SourceFiles surfaceInterpolateFields.C