57 const GeometricField<Type, fvPatchField, volMesh>& vsf
62 const fvMesh&
mesh = vsf.mesh();
64 tmp<GeometricField<GradType, fvPatchField, volMesh> > tlsGrad
66 new GeometricField<GradType, fvPatchField, volMesh>
70 "grad("+vsf.name()+
')',
81 pTraits<GradType>::zero
83 zeroGradientFvPatchField<GradType>::typeName
86 GeometricField<GradType, fvPatchField, volMesh>& lsGrad = tlsGrad();
103 label own = owner[facei];
104 label nei = neighbour[facei];
106 Type deltaVsf = vsf[nei] - vsf[own];
108 lsGrad[own] += ownLs[facei]*deltaVsf;
109 lsGrad[nei] -= neiLs[facei]*deltaVsf;
118 lsGrad.boundaryField()[
patchi].patch().faceCells();
120 if (vsf.boundaryField()[
patchi].coupled())
123 vsf.boundaryField()[
patchi].patchNeighbourField();
125 forAll(neiVsf, patchFaceI)
127 lsGrad[faceCells[patchFaceI]] +=
128 patchOwnLs[patchFaceI]
129 *(neiVsf[patchFaceI] - vsf[faceCells[patchFaceI]]);
134 const fvPatchField<Type>& patchVsf = vsf.boundaryField()[
patchi];
136 forAll(patchVsf, patchFaceI)
138 lsGrad[faceCells[patchFaceI]] +=
139 patchOwnLs[patchFaceI]
140 *(patchVsf[patchFaceI] - vsf[faceCells[patchFaceI]]);
146 const List<labelPair>& additionalCells = lsv.additionalCells();
147 const vectorField& additionalVectors = lsv.additionalVectors();
149 forAll(additionalCells, i)
151 lsGrad[additionalCells[i][0]] +=
153 *(vsf[additionalCells[i][1]] - vsf[additionalCells[i][0]]);
157 lsGrad.correctBoundaryConditions();