diff --git a/src/meshTools/Make/files b/src/meshTools/Make/files index dbed9146d3..d46d774d88 100644 --- a/src/meshTools/Make/files +++ b/src/meshTools/Make/files @@ -129,6 +129,7 @@ faceZoneSources = sets/faceZoneSources $(faceZoneSources)/faceZoneToFaceZone/faceZoneToFaceZone.C $(faceZoneSources)/setsToFaceZone/setsToFaceZone.C $(faceZoneSources)/setToFaceZone/setToFaceZone.C +$(faceZoneSources)/setAndNormalToFaceZone/setAndNormalToFaceZone.C $(faceZoneSources)/searchableSurfaceToFaceZone/searchableSurfaceToFaceZone.C cellZoneSources = sets/cellZoneSources diff --git a/src/meshTools/sets/faceZoneSources/setAndNormalToFaceZone/setAndNormalToFaceZone.C b/src/meshTools/sets/faceZoneSources/setAndNormalToFaceZone/setAndNormalToFaceZone.C new file mode 100644 index 0000000000..e94a2bf6d0 --- /dev/null +++ b/src/meshTools/sets/faceZoneSources/setAndNormalToFaceZone/setAndNormalToFaceZone.C @@ -0,0 +1,189 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 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 "setAndNormalToFaceZone.H" +#include "polyMesh.H" +#include "faceZoneSet.H" + +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + +defineTypeNameAndDebug(setAndNormalToFaceZone, 0); + +addToRunTimeSelectionTable(topoSetSource, setAndNormalToFaceZone, word); + +addToRunTimeSelectionTable(topoSetSource, setAndNormalToFaceZone, istream); + +} + + +Foam::topoSetSource::addToUsageTable Foam::setAndNormalToFaceZone::usage_ +( + setAndNormalToFaceZone::typeName, + "\n Usage: setAndNormalToFaceZone \n\n" + " Select all faces in the faceSet and orient using normal.\n\n" +); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::setAndNormalToFaceZone::setAndNormalToFaceZone +( + const polyMesh& mesh, + const word& setName, + const vector& normal +) +: + topoSetSource(mesh), + setName_(setName), + normal_(normal) +{} + + +Foam::setAndNormalToFaceZone::setAndNormalToFaceZone +( + const polyMesh& mesh, + const dictionary& dict +) +: + topoSetSource(mesh), + setName_(dict.lookup("faceSet")), + normal_(dict.lookup("normal")) +{} + + +Foam::setAndNormalToFaceZone::setAndNormalToFaceZone +( + const polyMesh& mesh, + Istream& is +) +: + topoSetSource(mesh), + setName_(checkIs(is)), + normal_(checkIs(is)) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::setAndNormalToFaceZone::~setAndNormalToFaceZone() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::setAndNormalToFaceZone::applyToSet +( + const topoSetSource::setAction action, + topoSet& set +) const +{ + if (!isA(set)) + { + WarningIn + ( + "setAndNormalToFaceZone::applyToSet" + "(" + "const topoSetSource::setAction, " + "topoSet&" + ")" + ) << "Operation only allowed on a faceZoneSet." << endl; + } + else + { + faceZoneSet& fzSet = refCast(set); + + if ((action == topoSetSource::NEW) || (action == topoSetSource::ADD)) + { + Info<< " Adding all faces from faceSet " << setName_ + << " ..." << endl; + + // Load the sets + faceSet fSet(mesh_, setName_); + + // Start off from copy + DynamicList