diff --git a/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoAdvection/isoAdvection.C b/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoAdvection/isoAdvection.C index 57de8b3cce63544a00dd74957fbb5ec6e0e99947..f6adea122e565004b826caa0dd49e6a12688edc3 100644 --- a/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoAdvection/isoAdvection.C +++ b/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoAdvection/isoAdvection.C @@ -615,8 +615,8 @@ void Foam::isoAdvection::limitFluxes() const scalar aTol = 1.0e-12; // Note: tolerances const scalar maxAlphaMinus1 = 1; // max(alphaNew - 1); const scalar minAlpha = -1; // min(alphaNew); - const label nUndershoots = 20; // sum(neg(alphaNew + aTol)); - const label nOvershoots = 20; // sum(pos(alphaNew - 1 - aTol)); + const label nUndershoots = 20; // sum(neg0(alphaNew + aTol)); + const label nOvershoots = 20; // sum(pos0(alphaNew - 1 - aTol)); cellIsBounded_ = false; // Loop number of bounding steps @@ -682,8 +682,8 @@ void Foam::isoAdvection::limitFluxes() scalarField alphaNew(alpha1In_ - fvc::surfaceIntegrate(dVf_)()); label maxAlphaMinus1 = max(alphaNew - 1); scalar minAlpha = min(alphaNew); - label nUndershoots = sum(neg(alphaNew + aTol)); - label nOvershoots = sum(pos(alphaNew - 1 - aTol)); + label nUndershoots = sum(neg0(alphaNew + aTol)); + label nOvershoots = sum(pos0(alphaNew - 1 - aTol)); Info<< "After bounding number " << n + 1 << " of time " << mesh_.time().value() << ":" << endl; Info<< "nOvershoots = " << nOvershoots << " with max(alphaNew-1) = " @@ -792,7 +792,7 @@ void Foam::isoAdvection::boundFromAbove fluidToPassOn*mag(phi[fi]*dt)/dVftot; nFacesToPassFluidThrough += - pos(dVfmax[fi] - fluidToPassThroughFace); + pos0(dVfmax[fi] - fluidToPassThroughFace); fluidToPassThroughFace = min(fluidToPassThroughFace, dVfmax[fi]); @@ -1014,9 +1014,9 @@ void Foam::isoAdvection::applyBruteForceBounding() { alpha1_ = alpha1_ - *pos(alpha1_ - snapAlphaTol) - *neg(alpha1_ - (1.0 - snapAlphaTol)) - + pos(alpha1_ - (1.0 - snapAlphaTol)); + *pos0(alpha1_ - snapAlphaTol) + *neg0(alpha1_ - (1.0 - snapAlphaTol)) + + pos0(alpha1_ - (1.0 - snapAlphaTol)); alpha1Changed = true; } diff --git a/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C b/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C index 33d4e7f412c241a3dccf19b8ec37404ac4b9b36f..83292012a0db560d7ebcaefa19a4054cde784c83 100644 --- a/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C +++ b/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C @@ -362,7 +362,7 @@ Foam::scalar Foam::isoCutFace::timeIntegratedArea { // If all face cuttings were in the past and cell is filling up (Un0>0) // then face must be full during whole time interval - tIntArea = magSf*dt*pos(Un0); + tIntArea = magSf*dt*pos0(Un0); return tIntArea; } @@ -373,7 +373,7 @@ Foam::scalar Foam::isoCutFace::timeIntegratedArea // If all cuttings are in the future but non of them within [0,dt] then // if cell is filling up (Un0 > 0) face must be empty during whole time // interval - tIntArea = magSf*dt*(1 - pos(Un0)); + tIntArea = magSf*dt*(1 - pos0(Un0)); return tIntArea; } @@ -398,7 +398,7 @@ Foam::scalar Foam::isoCutFace::timeIntegratedArea // If Un0 > 0 cell is filling up and it must initially be empty. // If Un0 < 0 cell must initially be full(y immersed in fluid A). time = firstTime; - initialArea = magSf*(1.0 - pos(Un0)); + initialArea = magSf*(1.0 - pos0(Un0)); tIntArea = initialArea*time; cutPoints(fPts, pTimes, time, FIIL); } @@ -470,7 +470,7 @@ Foam::scalar Foam::isoCutFace::timeIntegratedArea { // FIIL will leave the face at lastTime and face will be fully in fluid // A or fluid B in the time interval from lastTime to dt. - tIntArea += magSf*(dt - lastTime)*pos(Un0); + tIntArea += magSf*(dt - lastTime)*pos0(Un0); } return tIntArea; diff --git a/src/lagrangian/distributionModels/binned/binned.C b/src/lagrangian/distributionModels/binned/binned.C index 57530fa649c794e4552ac5b06e7f04e2bba4ab7b..a5cf7e1f2b632fc9f86abbafa09a0671f65287aa 100644 --- a/src/lagrangian/distributionModels/binned/binned.C +++ b/src/lagrangian/distributionModels/binned/binned.C @@ -47,10 +47,6 @@ const char* Foam::distributionModels::binned::header = void Foam::distributionModels::binned::initialise() { const label nSample(xy_.size()); - forAll(xy_, bini) - { - xy_[bini][1] /= scalar(nSample); - } // Convert values to integral values for (label bini = 1; bini < nSample; ++bini) @@ -58,6 +54,13 @@ void Foam::distributionModels::binned::initialise() xy_[bini][1] += xy_[bini - 1][1]; } + // Normalise + scalar sumProb = xy_.last()[1]; + forAll(xy_, bini) + { + xy_[bini][1] /= sumProb; + } + // Calculate the mean value label bini = 0; forAll(xy_, i) @@ -188,16 +191,7 @@ Foam::scalar Foam::distributionModels::binned::sample() const { if (xy_[i][1] > y) { - scalar d1 = y - xy_[i][1]; - scalar d2 = xy_[i+1][1] - y; - if (d1 < d2) - { - return xy_[i][0]; - } - else - { - return xy_[i+1][0]; - } + return xy_[i][0]; } }