diff --git a/src/finiteVolume/finiteVolume/fvc/fvcReconstruct.C b/src/finiteVolume/finiteVolume/fvc/fvcReconstruct.C index ac3762db048d5c5476ed42b99e9608d5176ad65b..c1ad179ee1bafa70fdcc6f990d273987ac35a84f 100644 --- a/src/finiteVolume/finiteVolume/fvc/fvcReconstruct.C +++ b/src/finiteVolume/finiteVolume/fvc/fvcReconstruct.C @@ -56,6 +56,48 @@ reconstruct const fvMesh& mesh = ssf.mesh(); + surfaceVectorField faceVols + ( + mesh.Sf()/(mesh.magSf()*mesh.nonOrthDeltaCoeffs()) + ); + + faceVols.internalField() *= (1.0 - mesh.weights().internalField()); + forAll(faceVols.boundaryField(), patchi) + { + if (faceVols.boundaryField()[patchi].coupled()) + { + faceVols.boundaryField()[patchi] *= + (1.0 - mesh.weights().boundaryField()[patchi]); + } + } + + tmp<GeometricField<GradType, fvPatchField, volMesh> > treconField + ( + new GeometricField<GradType, fvPatchField, volMesh> + ( + IOobject + ( + "volIntegrate("+ssf.name()+')', + ssf.instance(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + inv(surfaceSum(mesh.Sf()*faceVols))&surfaceSum(faceVols*ssf), + zeroGradientFvPatchField<GradType>::typeName + ) + ); + + treconField().correctBoundaryConditions(); + + return treconField; +} +/* +{ + typedef typename outerProduct<vector, Type>::type GradType; + + const fvMesh& mesh = ssf.mesh(); + tmp<GeometricField<GradType, fvPatchField, volMesh> > treconField ( new GeometricField<GradType, fvPatchField, volMesh> @@ -78,6 +120,7 @@ reconstruct return treconField; } +*/ template<class Type>