label pRefCell = 0; scalar pRefValue = 0.0; bool pNeedRef = false; bool procHasRef = false; if (interface.twoFluids()) { pNeedRef = true; } forAll (p.boundaryField(), patchI) { // Check only fluid B if (fluidIndicator.boundaryField()[patchI].size()) { if (min(fluidIndicator.boundaryField()[patchI]) < SMALL) { if (p.boundaryField()[patchI].fixesValue()) { pNeedRef = false; } } } } pNeedRef = returnReduce<bool>(pNeedRef, andOp<bool>()); // Find reference cell if (pNeedRef) { point refPointi(mesh.solutionDict().subDict("PISO").lookup("pRefPoint")); label refCelli = mesh.findCell(refPointi); label hasRef = (refCelli >= 0 ? 1 : 0); label sumHasRef = returnReduce<label>(hasRef, sumOp<label>()); if (sumHasRef != 1) { FatalErrorIn(args.executable()) << "Unable to set reference cell for field " << p.name() << nl << " Reference point pRefPoint" << " found on " << sumHasRef << " domains (should be one)" << nl << exit(FatalError); } if (hasRef) { pRefCell = refCelli; procHasRef = true; } pRefValue = readScalar(mesh.solutionDict().subDict("PISO").lookup("pRefValue")); }