/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2015 OpenFOAM Foundation ------------------------------------------------------------------------------- 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 . Class Foam::polyAddFace Description A face addition data class. A face can be inflated either from a point or from another face and can either be in internal or a boundary face. \*---------------------------------------------------------------------------*/ #ifndef polyAddFace_H #define polyAddFace_H // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #include "label.H" #include "face.H" #include "topoAction.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { /*---------------------------------------------------------------------------*\ Class polyAddFace Declaration \*---------------------------------------------------------------------------*/ class polyAddFace : public topoAction { // Private data //- Face identifier face face_; //- Face owner label owner_; //- Face neighbour label neighbour_; //- Master point ID for faces blown up from points label masterPointID_; //- Master edge ID for faces blown up from edges label masterEdgeID_; //- Master face ID for faces blown up from faces label masterFaceID_; //- Does the face flux need to be flipped bool flipFaceFlux_; //- Boundary patch ID label patchID_; //- Face zone ID label zoneID_; //- Face zone flip bool zoneFlip_; public: // Static data members //- Runtime type information TypeName("addFace"); // Constructors //- Construct null. Used for constructing lists polyAddFace() : face_(0), owner_(-1), neighbour_(-1), masterPointID_(-1), masterEdgeID_(-1), masterFaceID_(-1), flipFaceFlux_(false), patchID_(-1), zoneID_(-1), zoneFlip_(false) {} //- Construct from components polyAddFace ( const face& f, const label owner, const label neighbour, const label masterPointID, const label masterEdgeID, const label masterFaceID, const bool flipFaceFlux, const label patchID, const label zoneID, const bool zoneFlip ) : face_(f), owner_(owner), neighbour_(neighbour), masterPointID_(masterPointID), masterEdgeID_(masterEdgeID), masterFaceID_(masterFaceID), flipFaceFlux_(flipFaceFlux), patchID_(patchID), zoneID_(zoneID), zoneFlip_(zoneFlip) { if (face_.size() < 3) { FatalErrorInFunction << "This is not allowed.\n" << "Face: " << face_ << " masterPointID:" << masterPointID_ << " masterEdgeID:" << masterEdgeID_ << " masterFaceID:" << masterFaceID_ << " patchID:" << patchID_ << " owner:" << owner_ << " neighbour:" << neighbour_ << abort(FatalError); } if (min(face_) < 0) { FatalErrorInFunction << "This is not allowed.\n" << "Face: " << face_ << " masterPointID:" << masterPointID_ << " masterEdgeID:" << masterEdgeID_ << " masterFaceID:" << masterFaceID_ << " patchID:" << patchID_ << " owner:" << owner_ << " neighbour:" << neighbour_ << abort(FatalError); } if (min(owner_, neighbour_) >= 0 && owner_ == neighbour_) { FatalErrorInFunction << "This is not allowed.\n" << "Face: " << face_ << " masterPointID:" << masterPointID_ << " masterEdgeID:" << masterEdgeID_ << " masterFaceID:" << masterFaceID_ << " patchID:" << patchID_ << " owner:" << owner_ << " neighbour:" << neighbour_ << abort(FatalError); } if (neighbour_ >= 0 && patchID >= 0) { FatalErrorInFunction << ". This is not allowed.\n" << "Face: " << face_ << " masterPointID:" << masterPointID_ << " masterEdgeID:" << masterEdgeID_ << " masterFaceID:" << masterFaceID_ << " patchID:" << patchID_ << " owner:" << owner_ << " neighbour:" << neighbour_ << abort(FatalError); } if (owner_ < 0 && zoneID < 0) { FatalErrorInFunction << "This is not allowed.\n" << "Face: " << face_ << "Face: " << face_ << " masterPointID:" << masterPointID_ << " masterEdgeID:" << masterEdgeID_ << " masterFaceID:" << masterFaceID_ << " patchID:" << patchID_ << " owner:" << owner_ << " neighbour:" << neighbour_ << abort(FatalError); } if (zoneID_ == -1 && zoneFlip) { FatalErrorInFunction << "belong to zone. This is not allowed.\n" << "Face: " << face_ << " masterPointID:" << masterPointID_ << " masterEdgeID:" << masterEdgeID_ << " masterFaceID:" << masterFaceID_ << " patchID:" << patchID_ << " owner:" << owner_ << " neighbour:" << neighbour_ << abort(FatalError); } } //- Construct and return a clone virtual autoPtr clone() const { return autoPtr(new polyAddFace(*this)); } // Default Destructor // Member Functions //- Return face const face& newFace() const { return face_; } //- Return owner cell label owner() const { return owner_; } //- Return neighbour cell label neighbour() const { return neighbour_; } //- Is the face mastered by a point bool isPointMaster() const { return masterPointID_ >= 0; } //- Is the face mastered by an edge bool isEdgeMaster() const { return masterEdgeID_ >= 0; } //- Is the face mastered by another face bool isFaceMaster() const { return masterFaceID_ >= 0; } //- Is the face appended with no master bool appended() const { return !isPointMaster() && !isEdgeMaster() && !isFaceMaster(); } //- Return master point ID label masterPointID() const { return masterPointID_; } //- Return master edge ID label masterEdgeID() const { return masterEdgeID_; } //- Return master face ID label masterFaceID() const { return masterFaceID_; } //- Does the face flux need to be flipped bool flipFaceFlux() const { return flipFaceFlux_; } //- Does the face belong to a boundary patch? bool isInPatch() const { return patchID_ >= 0; } //- Boundary patch ID label patchID() const { return patchID_; } //- Does the face belong to a zone? bool isInZone() const { return zoneID_ >= 0; } //- Is the face only a zone face (i.e. not belonging to a cell) bool onlyInZone() const { return zoneID_ >= 0 && owner_ < 0 && neighbour_ < 0; } //- Face zone ID label zoneID() const { return zoneID_; } //- Face zone flip label zoneFlip() const { return zoneFlip_; } }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* //