51 const GeometricField<Type, fvPatchField, volMesh>& vsf,
62 const fvMesh&
mesh = vsf.mesh();
66 tmp<GeometricField<GradType, fvPatchField, volMesh>> tsecondfGrad
67 = leastSquaresGrad<Type>(
mesh).grad
70 "leastSquaresGrad(" + vsf.name() +
")"
72 const GeometricField<GradType, fvPatchField, volMesh>& secondfGrad =
75 tmp<GeometricField<GradType, fvPatchField, volMesh>> tfGrad
77 new GeometricField<GradType, fvPatchField, volMesh>
90 GeometricField<GradType, fvPatchField, volMesh>& fGrad = tfGrad.ref();
110 Type dDotGradDelta = 0.5*
112 (
C[nei[facei]] -
C[own[facei]])
113 & (secondfGrad[nei[facei]] - secondfGrad[own[facei]])
116 fGrad[own[facei]] -=
lambda[facei]*ownLs[facei]*dDotGradDelta;
117 fGrad[nei[facei]] -= (1.0 -
lambda[facei])*neiLs[facei]*dDotGradDelta;
121 forAll(vsf.boundaryField(), patchi)
123 if (secondfGrad.boundaryField()[patchi].coupled())
126 ownLs.boundaryField()[patchi];
130 const fvPatch&
p = vsf.boundaryField()[patchi].patch();
137 const Field<GradType> neighbourSecondfGrad
139 secondfGrad.boundaryField()[patchi].patchNeighbourField()
142 forAll(faceCells, patchFacei)
144 fGrad[faceCells[patchFacei]] -=
145 0.5*lambdap[patchFacei]*patchOwnLs[patchFacei]
149 neighbourSecondfGrad[patchFacei]
150 - secondfGrad[faceCells[patchFacei]]
157 fGrad.correctBoundaryConditions();