diff --git a/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshCellCentresAndVols.C b/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshCellCentresAndVols.C index c7d4b1bd05..70c9afd550 100644 --- a/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshCellCentresAndVols.C +++ b/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshCellCentresAndVols.C @@ -82,15 +82,18 @@ void Foam::primitiveMesh::makeCellCentresAndVols { typedef Vector solveVector; + // Clear the fields for accumulation. Note1: we're doing this before + // any precision conversion since this might complain about illegal numbers. + // Note2: zero is a special value which is perfectly converted into zero + // in the new precision + cellCtrs_s = Zero; + cellVols_s = 0.0; + PrecisionAdaptor tcellCtrs(cellCtrs_s); Field& cellCtrs = tcellCtrs.ref(); PrecisionAdaptor tcellVols(cellVols_s); Field& cellVols = tcellVols.ref(); - // Clear the fields for accumulation - cellCtrs = Zero; - cellVols = 0.0; - const labelList& own = faceOwner(); const labelList& nei = faceNeighbour();