/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation Copyright (C) 2019-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- 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 "polyMesh.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template inline Foam::topoDistanceData::topoDistanceData() : distance_(-1), data_() {} template inline Foam::topoDistanceData::topoDistanceData ( const label distance, const Type& data ) : distance_(distance), data_(data) {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template template inline bool Foam::topoDistanceData::valid(TrackingData& td) const { return distance_ != -1; } // No geometric data so never any problem on cyclics template template inline bool Foam::topoDistanceData::sameGeometry ( const polyMesh&, const topoDistanceData&, const scalar, TrackingData& ) const { return true; } // No geometric data. template template inline void Foam::topoDistanceData::leaveDomain ( const polyMesh&, const polyPatch& patch, const label patchFacei, const point& faceCentre, TrackingData& ) {} // No geometric data. template template inline void Foam::topoDistanceData::transform ( const polyMesh&, const tensor& rotTensor, TrackingData& ) {} // No geometric data. template template inline void Foam::topoDistanceData::enterDomain ( const polyMesh&, const polyPatch& patch, const label patchFacei, const point& faceCentre, TrackingData& ) {} // Update cell with neighbouring face information template template inline bool Foam::topoDistanceData::updateCell ( const polyMesh&, const label thisCelli, const label neighbourFacei, const topoDistanceData& neighbourInfo, const scalar tol, TrackingData& ) { if (distance_ == -1) { this->operator=(neighbourInfo); return true; } return false; } // Update face with neighbouring cell information template template inline bool Foam::topoDistanceData::updateFace ( const polyMesh& mesh, const label thisFacei, const label neighbourCelli, const topoDistanceData& neighbourInfo, const scalar tol, TrackingData& ) { // From cell to its faces. if (distance_ == -1) { distance_ = neighbourInfo.distance_ + 1; data_ = neighbourInfo.data_; return true; } return false; } // Update face with coupled face information template template inline bool Foam::topoDistanceData::updateFace ( const polyMesh&, const label thisFacei, const topoDistanceData& neighbourInfo, const scalar tol, TrackingData& ) { // From face to face (e.g. coupled faces) if (distance_ == -1) { this->operator=(neighbourInfo); return true; } return false; } template template inline bool Foam::topoDistanceData::equal ( const topoDistanceData& rhs, TrackingData& td ) const { return operator==(rhs); } // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // template inline bool Foam::topoDistanceData::operator== ( const Foam::topoDistanceData& rhs ) const { return distance() == rhs.distance() && data() == rhs.data(); } template inline bool Foam::topoDistanceData::operator!= ( const Foam::topoDistanceData& rhs ) const { return !(*this == rhs); } // ************************************************************************* //