From 15c7d501bbedb608fec6e8cd0b81a4ae56fc9eb3 Mon Sep 17 00:00:00 2001 From: mattijs <mattijs> Date: Mon, 6 Dec 2010 15:53:50 +0000 Subject: [PATCH] ENH: surfaceInterpolateFields : enable writing --- .../surfaceInterpolateFields.C | 57 +++++++++++++------ .../surfaceInterpolateFields.H | 21 ++++++- 2 files changed, 59 insertions(+), 19 deletions(-) diff --git a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.C b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.C index 1e785b8479c..434f8dea4f8 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; - - // Clear out any previously loaded fields - ssf_.clear(); - svf_.clear(); - sSpheretf_.clear(); - sSymmtf_.clear(); - stf_.clear(); - - interpolateFields<scalar>(ssf_); - interpolateFields<vector>(svf_); - interpolateFields<sphericalTensor>(sSpheretf_); - interpolateFields<symmTensor>(sSymmtf_); - interpolateFields<tensor>(stf_); + if (active_) + { + // Clear out any previously loaded fields + ssf_.clear(); + svf_.clear(); + sSpheretf_.clear(); + sSymmtf_.clear(); + stf_.clear(); + + interpolateFields<scalar>(ssf_); + interpolateFields<vector>(svf_); + interpolateFields<sphericalTensor>(sSpheretf_); + interpolateFields<symmTensor>(sSymmtf_); + interpolateFields<tensor>(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 d8da89b440a..215ff685ee3 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 -- GitLab