diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearUpwind/linearUpwind.C b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearUpwind/linearUpwind.C index 9cc8cf488..6fceae450 100644 --- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearUpwind/linearUpwind.C +++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearUpwind/linearUpwind.C @@ -65,66 +65,65 @@ Foam::linearUpwind::correction const volVectorField& C = mesh.C(); const surfaceVectorField& Cf = mesh.Cf(); - tmp - < - GeometricField - < - typename outerProduct::type, - fvPatchField, - volMesh - > - > tgradVf = gradScheme_().grad(vf, gradSchemeName_); - - const GeometricField - < - typename outerProduct::type, - fvPatchField, - volMesh - >& gradVf = tgradVf(); - - forAll(faceFlux, facei) + for (direction cmpt = 0; cmpt < pTraits::nComponents; cmpt++) { - label celli = (faceFlux[facei] > 0) ? owner[facei] : neighbour[facei]; - sfCorr[facei] = (Cf[facei] - C[celli]) & gradVf[celli]; - } + tmp tgradVf = + gradScheme_().grad(vf.component(cmpt), gradSchemeName_); + const volVectorField& gradVf = tgradVf(); - typename GeometricField:: - Boundary& bSfCorr = sfCorr.boundaryFieldRef(); - - forAll(bSfCorr, patchi) - { - fvsPatchField& pSfCorr = bSfCorr[patchi]; - - if (pSfCorr.coupled()) + forAll(faceFlux, facei) { - const labelUList& pOwner = - mesh.boundary()[patchi].faceCells(); + const label celli = + (faceFlux[facei] > 0) ? owner[facei] : neighbour[facei]; - const vectorField& pCf = Cf.boundaryField()[patchi]; + setComponent(sfCorr[facei], cmpt) = + (Cf[facei] - C[celli]) & gradVf[celli]; + } - const scalarField& pFaceFlux = faceFlux.boundaryField()[patchi]; + typename GeometricField:: + Boundary& bSfCorr = sfCorr.boundaryFieldRef(); - const Field::type> pGradVfNei - ( - gradVf.boundaryField()[patchi].patchNeighbourField() - ); + forAll(bSfCorr, patchi) + { + fvsPatchField& pSfCorr = bSfCorr[patchi]; - // Build the d-vectors - vectorField pd(Cf.boundaryField()[patchi].patch().delta()); - - forAll(pOwner, facei) + if (pSfCorr.coupled()) { - label own = pOwner[facei]; + const labelUList& pOwner = + mesh.boundary()[patchi].faceCells(); - if (pFaceFlux[facei] > 0) + const vectorField& pCf = Cf.boundaryField()[patchi]; + + const scalarField& pFaceFlux = faceFlux.boundaryField()[patchi]; + + const vectorField pGradVfNei + ( + gradVf.boundaryField()[patchi].patchNeighbourField() + ); + + // Build the d-vectors + const vectorField pd + ( + Cf.boundaryField()[patchi].patch().delta() + ); + + forAll(pOwner, facei) { - pSfCorr[facei] = (pCf[facei] - C[own]) & gradVf[own]; - } - else - { - pSfCorr[facei] = - (pCf[facei] - pd[facei] - C[own]) & pGradVfNei[facei]; + label own = pOwner[facei]; + + if (pFaceFlux[facei] > 0) + { + setComponent(pSfCorr[facei], cmpt) = + (pCf[facei] - C[own]) + & gradVf[own]; + } + else + { + setComponent(pSfCorr[facei], cmpt) = + (pCf[facei] - pd[facei] - C[own]) + & pGradVfNei[facei]; + } } } } @@ -136,9 +135,7 @@ Foam::linearUpwind::correction namespace Foam { - //makelimitedSurfaceInterpolationScheme(linearUpwind) - makelimitedSurfaceInterpolationTypeScheme(linearUpwind, scalar) - makelimitedSurfaceInterpolationTypeScheme(linearUpwind, vector) + makelimitedSurfaceInterpolationScheme(linearUpwind) } // ************************************************************************* // diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearUpwind/linearUpwind.H b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearUpwind/linearUpwind.H index 6039f416a..d7f0e4351 100644 --- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearUpwind/linearUpwind.H +++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearUpwind/linearUpwind.H @@ -57,7 +57,7 @@ class linearUpwind // Private Data word gradSchemeName_; - tmp> gradScheme_; + tmp> gradScheme_; // Private Member Functions @@ -88,7 +88,7 @@ public: gradSchemeName_("grad"), gradScheme_ ( - new fv::gaussGrad(mesh) + new fv::gaussGrad(mesh) ) {} @@ -105,7 +105,7 @@ public: gradSchemeName_(schemeData), gradScheme_ ( - fv::gradScheme::New + fv::gradScheme::New ( mesh, mesh.gradScheme(gradSchemeName_) @@ -125,7 +125,7 @@ public: gradSchemeName_(schemeData), gradScheme_ ( - fv::gradScheme::New + fv::gradScheme::New ( mesh, mesh.gradScheme(gradSchemeName_) @@ -148,7 +148,6 @@ public: ( const GeometricField& ) const; - };