38 template<
class Type,
class Stencil>
50 const GeometricField<Type, fvPatchField, volMesh>& vtf,
55 typedef GeometricField<GradType, fvPatchField, volMesh> GradFieldType;
57 const fvMesh&
mesh = vtf.mesh();
65 tmp<GradFieldType> tlsGrad
79 extrapolatedCalculatedFvPatchField<GradType>::typeName
82 GradFieldType& lsGrad = tlsGrad.ref();
83 Field<GradType>& lsGradIf = lsGrad;
85 const extendedCentredCellToCellStencil& stencil = lsv.stencil();
86 const List<List<label>>& stencilAddr = stencil.stencil();
87 const List<List<vector>>& lsvs = lsv.vectors();
91 List<Type> flatVtf(stencil.map().constructSize(),
Zero);
96 flatVtf[celli] = vtf[celli];
100 forAll(vtf.boundaryField(), patchi)
102 const fvPatchField<Type>& ptf = vtf.boundaryField()[patchi];
106 -
mesh.nInternalFaces()
111 flatVtf[nCompact++] = ptf[i];
116 stencil.map().distribute(flatVtf);
120 forAll(stencilAddr, celli)
122 const labelList& compactCells = stencilAddr[celli];
123 const List<vector>& lsvc = lsvs[celli];
127 lsGradIf[celli] += lsvc[i]*flatVtf[compactCells[i]];
132 lsGrad.correctBoundaryConditions();