49 const GeometricField<Type, fvPatchField, volMesh>& vsf,
60 const fvMesh&
mesh = vsf.mesh();
64 tmp<GeometricField<GradType, fvPatchField, volMesh> > tsecondfGrad
65 = leastSquaresGrad<Type>(
mesh).grad
68 "leastSquaresGrad(" + vsf.name() +
")"
70 const GeometricField<GradType, fvPatchField, volMesh>& secondfGrad =
73 tmp<GeometricField<GradType, fvPatchField, volMesh> > tfGrad
75 new GeometricField<GradType, fvPatchField, volMesh>
88 GeometricField<GradType, fvPatchField, volMesh>& fGrad = tfGrad();
108 Type dDotGradDelta = 0.5*
110 (
C[nei[facei]] -
C[own[facei]])
111 & (secondfGrad[nei[facei]] - secondfGrad[own[facei]])
114 fGrad[own[facei]] -=
lambda[facei]*ownLs[facei]*dDotGradDelta;
115 fGrad[nei[facei]] -= (1.0 -
lambda[facei])*neiLs[facei]*dDotGradDelta;
121 if (secondfGrad.boundaryField()[
patchi].coupled())
124 ownLs.boundaryField()[
patchi];
128 const fvPatch&
p = fGrad.boundaryField()[
patchi].patch();
135 const Field<GradType> neighbourSecondfGrad
137 secondfGrad.boundaryField()[
patchi].patchNeighbourField()
140 forAll(faceCells, patchFaceI)
142 fGrad[faceCells[patchFaceI]] -=
143 0.5*lambdap[patchFaceI]*patchOwnLs[patchFaceI]
147 neighbourSecondfGrad[patchFaceI]
148 - secondfGrad[faceCells[patchFaceI]]
155 fGrad.correctBoundaryConditions();