diff --git a/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoCutCell/isoCutCell.C b/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoCutCell/isoCutCell.C index 33563d728d86c1a6a605159245f1c25214882e6e..30aaa5f72b74364759a62c8f510583e89722510a 100644 --- a/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoCutCell/isoCutCell.C +++ b/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoCutCell/isoCutCell.C @@ -361,6 +361,23 @@ Foam::label Foam::isoCutCell::calcSubCell // Cell cut at least at one face cellStatus_ = 0; calcIsoFaceCentreAndArea(); + + // In the rare but occuring cases where a cell is only touched at a + // point or a line the isoFaceArea_ will have zero length and here the + // cell should be treated as either completely empty or full. + if (mag(isoFaceArea_) < 10*SMALL) + { + if (fullySubFaces_.empty()) + { + // Cell fully above isosurface + cellStatus_ = 1; + } + else + { + // Cell fully below isosurface + cellStatus_ = -1; + } + } } else if (fullySubFaces_.empty()) {