CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM (
-   -   limit high velocity values (

riesotto February 16, 2012 04:46

limit high velocity values
Hi all,
I have a problem with unphysical high velocity values in some areas of my simulation (rhoPorousMRFLTSPimpeFoam). The high velocities appear at the end of the rotorblades (compressible flow in a turbocharger).
The rotorblades have sharp edges, so I believe this can be the problem.

Is there a possibility to limit the velocity???

There is a possiblity of the density:
rhoMin rhoMin [ 1 -3 0 0 0 ] 0.05;
rhoMax rhoMax [ 1 -3 0 0 0 ] 2.0;

but this works only for rho.

kind regards

doubtsincfd November 26, 2012 17:47

Hi. Did you find out how that can be done?

samiam1000 November 27, 2012 10:42

Any news about this problem?

How did you solve it? It could be very useful for me, too.

Thanks a lot,


doubtsincfd December 4, 2012 10:43

The method which works for density works for pressure as well but not for velocity. So for velocity I just looped over all cells and the boundary faces

U[cellI].component(0)=some value;

U.boundaryField()[patchI][faceI].component(0)=some value;


Let me know if this works

kwardle December 7, 2012 13:54

You might also take a look at UEqns.H in multiphaseEulerFoam. There is a velocity dampener there which might give you some idea of how better to tackle this than a brute force reassignment. Basically, what is used is a source term dampener that is controlled by a proportional coefficient defined in transportProperties.

immortality February 11, 2013 17:26

hi Omkar
how and where i can use the expressions you mentioned?

hi kent
where in the code below you mentioned the velocity bounding has been applied?and how i can use that in sonicFoam solver?do u have any idea?

int phasei = 0;
forAllIter(PtrDictionary<phaseModel>, fluid.phases(), iter)
    phaseModel& phase = iter();
    const volScalarField& alpha = phase;
    volVectorField& U = phase.U();

    volScalarField nuEff(sgsModel->nut() + iter().nu());

        new fvVectorMatrix
            (scalar(1) + fluid.Cvm(phase)/phase.rho())*
                fvm::ddt(alpha, U)
              + fvm::div(phase.phiAlpha(), U)
              - fvm::Sp(fvc::ddt(alpha) + fvc::div(phase.phiAlpha()), U)
            - fvm::laplacian(alpha*nuEff, U)
            - fvc::div
                  alpha*(nuEff*dev(T(fvc::grad(U))) /*- ((2.0/3.0)*I)*k*/),
            - fvm::Sp(fluid.dragCoeff(phase, dragCoeffs())/phase.rho(), U)
          //- (alpha*phase.rho())*fluid.lift(phase)
            + (alpha/phase.rho())*fluid.Svm(phase)
    mrfZones.addCoriolis(alpha, UEqns[phasei]);


kwardle February 28, 2013 18:14

I am not sure where you pulled that code from, but in multiphaseEulerFoam/UEqns.H the source term is given as:

          - fvm::Sp(fluid.dragCoeff(phase, dragCoeffs())/phase.rho(), U)
        //- (alpha*phase.rho())*fluid.lift(phase)
          + (alpha/phase.rho())*fluid.Svm(phase)
          - fvm::Sp
                    mag(U.dimensionedInternalField()) - maxSlamVelocity,
                    dimensionedScalar("U0", dimVelocity, 0)
              /pow(mesh.V(), 1.0/3.0),

The implicit dampener is given by the last term (the part in -fvm::Sp( <stuff here>)). Basically, it scales the velocity according to some max value (maxSlamVelocity) and a coefficient (slamDampCoeff)

All times are GMT -4. The time now is 05:10.