diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/laserDTRM/DTRMParticle/DTRMParticleIO.C b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/laserDTRM/DTRMParticle/DTRMParticleIO.C index d65c864ea7..219c0ecb35 100644 --- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/laserDTRM/DTRMParticle/DTRMParticleIO.C +++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/laserDTRM/DTRMParticle/DTRMParticleIO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2017-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -61,6 +61,21 @@ Foam::DTRMParticle::DTRMParticle { is >> p0_ >> p1_ >> I0_ >> I_ >> dA_ >> transmissiveId_; } + else if (!is.checkLabelSize<>() || !is.checkScalarSize<>()) + { + // Non-native label or scalar size + + is.beginRawRead(); + + readRawScalar(is, p0_.data(), vector::nComponents); + readRawScalar(is, p1_.data(), vector::nComponents); + readRawScalar(is, &I0_); + readRawScalar(is, &I_); + readRawScalar(is, &dA_); + readRawLabel(is, &transmissiveId_); + + is.endRawRead(); + } else { is.read(reinterpret_cast(&p0_), sizeofFields_); diff --git a/src/OpenFOAM/meshes/primitiveShapes/objectHit/PointIndexHit.H b/src/OpenFOAM/meshes/primitiveShapes/objectHit/PointIndexHit.H index 8b48106964..e6286a765f 100644 --- a/src/OpenFOAM/meshes/primitiveShapes/objectHit/PointIndexHit.H +++ b/src/OpenFOAM/meshes/primitiveShapes/objectHit/PointIndexHit.H @@ -227,6 +227,10 @@ public: } else { + // TODO (2019-08-06): + // cannot properly handle mixed-precision reading + // owning to bool and Point type. + is.read ( reinterpret_cast(&pHit), diff --git a/src/dynamicMesh/meshCut/directions/directionInfo/directionInfo.C b/src/dynamicMesh/meshCut/directions/directionInfo/directionInfo.C index f7580c61d4..c5c1738f33 100644 --- a/src/dynamicMesh/meshCut/directions/directionInfo/directionInfo.C +++ b/src/dynamicMesh/meshCut/directions/directionInfo/directionInfo.C @@ -231,6 +231,16 @@ Foam::Istream& Foam::operator>>(Foam::Istream& is, Foam::directionInfo& wDist) { is >> wDist.index_ >> wDist.n_; } + else if (!is.checkLabelSize<>() || !is.checkScalarSize<>()) + { + // Non-native label or scalar size + is.beginRawRead(); + + readRawLabel(is, &wDist.index_); + readRawScalar(is, wDist.n_.data(), vector::nComponents); + + is.endRawRead(); + } else { is.read diff --git a/src/dynamicMesh/meshCut/wallLayerCells/wallNormalInfo/wallNormalInfo.C b/src/dynamicMesh/meshCut/wallLayerCells/wallNormalInfo/wallNormalInfo.C index 28871b271c..dccfe125e6 100644 --- a/src/dynamicMesh/meshCut/wallLayerCells/wallNormalInfo/wallNormalInfo.C +++ b/src/dynamicMesh/meshCut/wallLayerCells/wallNormalInfo/wallNormalInfo.C @@ -59,6 +59,15 @@ Foam::Istream& Foam::operator>>(Foam::Istream& is, Foam::wallNormalInfo& wDist) { is >> wDist.normal_; } + else if (!is.checkLabelSize<>() || !is.checkScalarSize<>()) + { + // Non-native label or scalar size + is.beginRawRead(); + + readRawScalar(is, wDist.normal_.data(), vector::nComponents); + + is.endRawRead(); + } else { is.read diff --git a/src/functionObjects/field/nearWallFields/findCellParticle.C b/src/functionObjects/field/nearWallFields/findCellParticle.C index 1c266b7a1b..1b26bd19c7 100644 --- a/src/functionObjects/field/nearWallFields/findCellParticle.C +++ b/src/functionObjects/field/nearWallFields/findCellParticle.C @@ -79,6 +79,17 @@ Foam::findCellParticle::findCellParticle { is >> start_ >> end_ >> data_; } + else if (!is.checkLabelSize<>() || !is.checkScalarSize<>()) + { + // Non-native label or scalar size + is.beginRawRead(); + + readRawScalar(is, start_.data(), vector::nComponents); + readRawScalar(is, end_.data(), vector::nComponents); + readRawLabel(is, &data_); + + is.endRawRead(); + } else { is.read diff --git a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.C b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.C index d09a5dac06..a77298166f 100644 --- a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.C +++ b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2017-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -418,7 +418,6 @@ Foam::wallBoundedParticle::wallBoundedParticle const label diagEdge ) : -// particle(mesh, barycentric(1, 0, 0, 0), celli, tetFacei, tetPti), particle(mesh, position, celli, tetFacei, tetPti, false), localPosition_(position), meshEdgeStart_(meshEdgeStart), @@ -442,6 +441,18 @@ Foam::wallBoundedParticle::wallBoundedParticle { is >> localPosition_ >> meshEdgeStart_ >> diagEdge_; } + if (!is.checkLabelSize<>() || !is.checkScalarSize<>()) + { + // Non-native label or scalar size + + is.beginRawRead(); + + readRawScalar(is, localPosition_.data(), vector::nComponents); + readRawLabel(is, &meshEdgeStart_); + readRawLabel(is, &diagEdge_); + + is.endRawRead(); + } else { is.read(reinterpret_cast(&localPosition_), sizeofFields_); diff --git a/src/mesh/snappyHexMesh/trackedParticle/trackedParticle.C b/src/mesh/snappyHexMesh/trackedParticle/trackedParticle.C index d5d1f47e80..2a93e7aa70 100644 --- a/src/mesh/snappyHexMesh/trackedParticle/trackedParticle.C +++ b/src/mesh/snappyHexMesh/trackedParticle/trackedParticle.C @@ -99,6 +99,20 @@ Foam::trackedParticle::trackedParticle { is >> start_ >> end_ >> level_ >> i_ >> j_ >> k_; } + else if (!is.checkLabelSize<>() || !is.checkScalarSize<>()) + { + // Non-native label or scalar size + is.beginRawRead(); + + readRawScalar(is, start_.data(), vector::nComponents); + readRawScalar(is, end_.data(), vector::nComponents); + readRawLabel(is, &level_); + readRawLabel(is, &i_); + readRawLabel(is, &j_); + readRawLabel(is, &k_); + + is.endRawRead(); + } else { is.read