diff --git a/src/finiteArea/faMesh/faMesh.C b/src/finiteArea/faMesh/faMesh.C index 5703a8ad3d60b29506e96ec85e768f8485c2035d..87ad1d36406e9bead768a2d485f1b095d44c5a49 100644 --- a/src/finiteArea/faMesh/faMesh.C +++ b/src/finiteArea/faMesh/faMesh.C @@ -284,11 +284,17 @@ bool Foam::faMesh::init(const bool doInit) // Calculate the geometry for the patches (transformation tensors etc.) boundary_.calcGeometry(); - // Ensure area information is properly synchronised + // Ensure processor/processor information is properly synchronised if (Pstream::parRun()) { const_cast<areaVectorField&>(areaCentres()).boundaryFieldRef() .evaluateCoupled<processorFaPatch>(); + + // This roughly corresponds to what OpenFOAM-v2112 (and earlier) had, + // but should nominally be unnecessary. + // + /// const_cast<areaVectorField&>(faceAreaNormals()).boundaryFieldRef() + /// .evaluateCoupled<processorFaPatch>(); } return false; diff --git a/src/finiteArea/interpolation/edgeInterpolation/schemes/NVDscheme/faNVDscheme.C b/src/finiteArea/interpolation/edgeInterpolation/schemes/NVDscheme/faNVDscheme.C index c58f99589179a819d28dd670370e9ac134dc3e92..c659ad3f4f06bb6c2f0d3c25dc56de9ca4cba098 100644 --- a/src/finiteArea/interpolation/edgeInterpolation/schemes/NVDscheme/faNVDscheme.C +++ b/src/finiteArea/interpolation/edgeInterpolation/schemes/NVDscheme/faNVDscheme.C @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2016-2017 Wikki Ltd + Copyright (C) 2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -94,20 +95,18 @@ Foam::tmp<Foam::edgeScalarField> Foam::faNVDscheme<Type,NVDweight>::weights forAll(weights, edge) { - vector d(Zero); + vector d(c[neighbour[edge]] - c[owner[edge]]); if (edgeFlux_[edge] > 0) { - d = c[neighbour[edge]] - c[owner[edge]]; - d -= n[owner[edge]]*(n[owner[edge]]&d); - d /= mag(d)/mesh.edgeInterpolation::lPN().internalField()[edge]; + d.removeCollinear(n[owner[edge]]); } else { - d = c[neighbour[edge]] - c[owner[edge]]; - d -= n[neighbour[edge]]*(n[neighbour[edge]]&d); - d /= mag(d)/mesh.edgeInterpolation::lPN().internalField()[edge]; + d.removeCollinear(n[neighbour[edge]]); } + d.normalise(); + d *= mesh.edgeInterpolation::lPN().internalField()[edge]; weights[edge] = this->weight @@ -177,20 +176,18 @@ Foam::tmp<Foam::edgeScalarField> Foam::faNVDscheme<Type,NVDweight>::weights forAll(pWeights, edgeI) { - vector d(Zero); + vector d(CN[edgeI] - CP[edgeI]); if (pEdgeFlux[edgeI] > 0) { - d = CN[edgeI] - CP[edgeI]; - d -= nP[edgeI]*(nP[edgeI]&d); - d /= mag(d)/pLPN[edgeI]; + d.removeCollinear(nP[edgeI]); } else { - d = CN[edgeI] - CP[edgeI]; - d -= nN[edgeI]*(nN[edgeI]&d); - d /= mag(d)/pLPN[edgeI]; + d.removeCollinear(nN[edgeI]); } + d.normalise(); + d *= pLPN[edgeI]; pWeights[edgeI] = this->weight diff --git a/src/finiteArea/interpolation/edgeInterpolation/schemes/NVDscheme/faNVDscheme.H b/src/finiteArea/interpolation/edgeInterpolation/schemes/NVDscheme/faNVDscheme.H index fad7dbe9712664aba31ab6dcc3d5fa4efa94ca68..67270a7f12810ecea273a057b371b36ea9de2e97 100644 --- a/src/finiteArea/interpolation/edgeInterpolation/schemes/NVDscheme/faNVDscheme.H +++ b/src/finiteArea/interpolation/edgeInterpolation/schemes/NVDscheme/faNVDscheme.H @@ -46,8 +46,8 @@ SourceFiles \*---------------------------------------------------------------------------*/ -#ifndef faNVDscheme_H -#define faNVDscheme_H +#ifndef Foam_faNVDscheme_H +#define Foam_faNVDscheme_H #include "edgeInterpolationScheme.H" @@ -66,17 +66,13 @@ class faNVDscheme public edgeInterpolationScheme<Type>, public NVDweight { - protected: - // Protected data + // Protected Data const edgeScalarField& edgeFlux_; - -private: - - // Private Member Functions + // Protected Member Functions //- No copy construct faNVDscheme(const faNVDscheme&) = delete;