57 const GeometricField<Type, fvPatchField, volMesh>& vsf
67 const fvMesh&
mesh = vsf.mesh();
71 tmp<GeometricField<GradType, fvPatchField, volMesh> > tsecondfGrad
72 = leastSquaresGrad<Type>(
mesh).
grad(vsf);
73 const GeometricField<GradType, fvPatchField, volMesh>& secondfGrad =
76 tmp<GeometricField<GradType, fvPatchField, volMesh> > tfGrad
78 new GeometricField<GradType, fvPatchField, volMesh>
82 "grad("+vsf.name()+
')',
91 GeometricField<GradType, fvPatchField, volMesh>& fGrad = tfGrad();
111 Type dDotGradDelta = 0.5*
113 (C[nei[facei]] - C[own[facei]])
114 & (secondfGrad[nei[facei]] - secondfGrad[own[facei]])
117 fGrad[own[facei]] -= lambda[facei]*ownLs[facei]*dDotGradDelta;
118 fGrad[nei[facei]] -= (1.0 - lambda[facei])*neiLs[facei]*dDotGradDelta;
124 if (secondfGrad.boundaryField()[
patchi].coupled())
127 ownLs.boundaryField()[
patchi];
133 mesh.Sf().boundaryField()[
patchi]
135 mesh.magSf().boundaryField()[
patchi]
136 *mesh.deltaCoeffs().boundaryField()[
patchi]
139 if (!mesh.orthogonal())
141 pd -= mesh.correctionVectors().boundaryField()[
patchi]
142 /mesh.deltaCoeffs().boundaryField()[
patchi];
146 fGrad.boundaryField()[
patchi].patch().faceCells();
148 Field<GradType> neighbourSecondfGrad =
149 secondfGrad.boundaryField()[
patchi].patchNeighbourField();
151 forAll(faceCells, patchFaceI)
153 fGrad[faceCells[patchFaceI]] -=
154 0.5*lambdap[patchFaceI]*patchOwnLs[patchFaceI]
158 neighbourSecondfGrad[patchFaceI]
159 - secondfGrad[faceCells[patchFaceI]]
166 fGrad.correctBoundaryConditions();