/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ 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 "findRefCell.H" // * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // void Foam::setRefCell ( const volScalarField& field, const volScalarField& fieldRef, const dictionary& dict, label& refCelli, scalar& refValue, const bool forceReference ) { if (fieldRef.needReference() || forceReference) { word refCellName = field.name() + "RefCell"; word refPointName = field.name() + "RefPoint"; word refValueName = field.name() + "RefValue"; if (dict.found(refCellName)) { if (Pstream::master()) { refCelli = readLabel(dict.lookup(refCellName)); if (refCelli < 0 || refCelli >= field.mesh().nCells()) { FatalIOErrorIn ( "void Foam::setRefCell\n" " (\n" " const volScalarField&,\n" " const volScalarField&,\n" " const dictionary&,\n" " label& scalar&,\n" " bool\n" ")", dict ) << "Illegal master cellID " << refCelli << ". Should be 0.." << field.mesh().nCells() << exit(FatalIOError); } } else { refCelli = -1; } } else if (dict.found(refPointName)) { point refPointi(dict.lookup(refPointName)); // Try fast approximate search avoiding octree construction refCelli = field.mesh().findCell(refPointi, polyMesh::FACE_PLANES); label hasRef = (refCelli >= 0 ? 1 : 0); label sumHasRef = returnReduce