/*---------------------------------------------------------------------------*\ ========= | \\ / 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) 2017-2022 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 . Description Calculating cut faces of the enriched patch, together with the addressing into master and slave patch. \*---------------------------------------------------------------------------*/ #include "enrichedPatch.H" #include "boolList.H" #include "CircularBuffer.H" #include "DynamicList.H" #include "labelPair.H" #include "primitiveMesh.H" #include "edgeHashes.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // If the cut face gets more than this number of points, it will be checked const Foam::label Foam::enrichedPatch::maxFaceSizeDebug_ = 100; // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // // Index of debug signs: // x - skip a point // l - left turn // r - right turn void Foam::enrichedPatch::calcCutFaces() const { if (cutFacesPtr_ || cutFaceMasterPtr_ || cutFaceSlavePtr_) { FatalErrorInFunction << "Cut faces addressing already calculated." << abort(FatalError); } const faceList& enFaces = enrichedFaces(); const labelList& mp = meshPoints(); const faceList& lf = localFaces(); const pointField& lp = localPoints(); const labelListList& pp = pointPoints(); // Pout<< "enFaces: " << enFaces << endl; // Pout<< "lf: " << lf << endl; // Pout<< "lp: " << lp << endl; // Pout<< "pp: " << pp << endl; const Map& masterPointFaceAddr = masterPointFaces(); // Prepare the storage DynamicList cf(2*lf.size()); DynamicList