diff --git a/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshCellCentresAndVols.C b/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshCellCentresAndVols.C index c7d4b1bd05547a89d9a88fd20c65d78d811de989..70c9afd550a5340444964765311729cace23546f 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<solveScalar> 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<solveVector, vector> tcellCtrs(cellCtrs_s); Field<solveVector>& cellCtrs = tcellCtrs.ref(); PrecisionAdaptor<solveScalar, scalar> tcellVols(cellVols_s); Field<solveScalar>& cellVols = tcellVols.ref(); - // Clear the fields for accumulation - cellCtrs = Zero; - cellVols = 0.0; - const labelList& own = faceOwner(); const labelList& nei = faceNeighbour();