diff --git a/src/functionObjects/field/Make/files b/src/functionObjects/field/Make/files index bcd494e51d..6746b0b4a1 100644 --- a/src/functionObjects/field/Make/files +++ b/src/functionObjects/field/Make/files @@ -60,6 +60,7 @@ blendingFactor/blendingFactor.C pressure/pressure.C MachNo/MachNo.C Curle/Curle.C +reference/reference.C fieldsExpression/fieldsExpression.C add/add.C diff --git a/src/functionObjects/field/reference/reference.C b/src/functionObjects/field/reference/reference.C new file mode 100644 index 0000000000..2ef1682204 --- /dev/null +++ b/src/functionObjects/field/reference/reference.C @@ -0,0 +1,133 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "reference.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace functionObjects +{ + defineTypeNameAndDebug(reference, 0); + + addToRunTimeSelectionTable + ( + functionObject, + reference, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +bool Foam::functionObjects::reference::calc() +{ + Log << type() << " " << name() << " output:" << nl; + + bool processed = calcType(); + processed = processed || calcType(); + processed = processed || calcType(); + processed = processed || calcType(); + processed = processed || calcType(); + + Log << endl; + + + return returnReduce(processed, orOp()); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::functionObjects::reference::reference +( + const word& name, + const Time& runTime, + const dictionary& dict +) +: + fieldExpression(name, runTime, dict), + localDict_(dict), + position_(point::zero), + celli_(-1), + interpolationScheme_("cell"), + scale_(1) +{ + read(dict); + + // Forcing default result name to include the name of the field + setResultName(typeName, word::null); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::functionObjects::reference::~reference() +{} + + +bool Foam::functionObjects::reference::read(const dictionary& dict) +{ + if (fieldExpression::read(dict)) + { + localDict_ = dict; + + dict.lookup("position") >> position_; + + interpolationScheme_ = + dict.lookupOrDefault("interpolationScheme", "cell"); + + + dict.readIfPresent("scale", scale_); + + celli_ = mesh_.findCell(position_); + + label celli = returnReduce(celli_, maxOp