37 template<
class Type,
class Stencil>
49 const GeometricField<Type, fvPatchField, volMesh>& vtf,
55 const fvMesh&
mesh = vtf.mesh();
63 tmp<GeometricField<GradType, fvPatchField, volMesh>> tlsGrad
65 new GeometricField<GradType, fvPatchField, volMesh>
77 extrapolatedCalculatedFvPatchField<GradType>::typeName
80 GeometricField<GradType, fvPatchField, volMesh>& lsGrad = tlsGrad.ref();
81 Field<GradType>& lsGradIf = lsGrad;
83 const extendedCentredCellToCellStencil& stencil = lsv.stencil();
84 const List<List<label>>& stencilAddr = stencil.stencil();
85 const List<List<vector>>& lsvs = lsv.vectors();
89 List<Type> flatVtf(stencil.map().constructSize(),
Zero);
94 flatVtf[celli] = vtf[celli];
98 forAll(vtf.boundaryField(), patchi)
100 const fvPatchField<Type>& ptf = vtf.boundaryField()[patchi];
104 -
mesh.nInternalFaces()
109 flatVtf[nCompact++] = ptf[i];
114 stencil.map().distribute(flatVtf);
118 forAll(stencilAddr, celli)
120 const labelList& compactCells = stencilAddr[celli];
121 const List<vector>& lsvc = lsvs[celli];
125 lsGradIf[celli] += lsvc[i]*flatVtf[compactCells[i]];
130 lsGrad.correctBoundaryConditions();