CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM

limit high velocity values

Register Blogs Community New Posts Updated Threads Search

Like Tree1Likes
  • 1 Post By doubtsincfd

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   February 16, 2012, 03:46
Default limit high velocity values
  #1
New Member
 
Florian
Join Date: Jan 2011
Location: Mannheim, Germany
Posts: 24
Rep Power: 15
riesotto is on a distinguished road
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
Florian
riesotto is offline   Reply With Quote

Old   November 26, 2012, 16:47
Default
  #2
Senior Member
 
Join Date: Nov 2009
Location: Michigan
Posts: 135
Rep Power: 16
doubtsincfd is on a distinguished road
Hi. Did you find out how that can be done?
immortality likes this.
doubtsincfd is offline   Reply With Quote

Old   November 27, 2012, 09:42
Default
  #3
Senior Member
 
Samuele Z
Join Date: Oct 2009
Location: Mozzate - Co - Italy
Posts: 520
Rep Power: 18
samiam1000 is on a distinguished road
Any news about this problem?

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

Thanks a lot,

Samuele
samiam1000 is offline   Reply With Quote

Old   December 4, 2012, 09:43
Default
  #4
Senior Member
 
Join Date: Nov 2009
Location: Michigan
Posts: 135
Rep Power: 16
doubtsincfd is on a distinguished road
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

forAll(U,cellI)
{
U[cellI].component(0)=some value;
}

forAll(U.boundaryField(),patchI)
{
forAll(U.boundaryField()[patchI],faceI)
{
U.boundaryField()[patchI][faceI].component(0)=some value;
}

}

Let me know if this works
doubtsincfd is offline   Reply With Quote

Old   December 7, 2012, 12:54
Default
  #5
Senior Member
 
Kent Wardle
Join Date: Mar 2009
Location: Illinois, USA
Posts: 219
Rep Power: 21
kwardle is on a distinguished road
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.
kwardle is offline   Reply With Quote

Old   February 11, 2013, 16:26
Default
  #6
Senior Member
 
immortality's Avatar
 
Ehsan
Join Date: Oct 2012
Location: Iran
Posts: 2,208
Rep Power: 26
immortality is on a distinguished road
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?
Code:
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());

    UEqns.set
    (
        phasei,
        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*/),
                  "div(Rc)"
              )
          ==
            - 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]);
    UEqns[phasei].relax();

    phasei++;
}
immortality is offline   Reply With Quote

Old   February 28, 2013, 17:14
Default
  #7
Senior Member
 
Kent Wardle
Join Date: Mar 2009
Location: Illinois, USA
Posts: 219
Rep Power: 21
kwardle is on a distinguished road
I am not sure where you pulled that code from, but in multiphaseEulerFoam/UEqns.H the source term is given as:
Code:
        ==
          - fvm::Sp(fluid.dragCoeff(phase, dragCoeffs())/phase.rho(), U)
        //- (alpha*phase.rho())*fluid.lift(phase)
          + (alpha/phase.rho())*fluid.Svm(phase)
          - fvm::Sp
            (
                slamDampCoeff
               *max
                (
                    mag(U.dimensionedInternalField()) - maxSlamVelocity,
                    dimensionedScalar("U0", dimVelocity, 0)
                )
               /pow(mesh.V(), 1.0/3.0),
                U
            )
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)
kwardle is offline   Reply With Quote

Old   July 25, 2016, 14:28
Default
  #8
New Member
 
Vitor Geraldes
Join Date: Dec 2009
Location: Lisbon, Portugal
Posts: 26
Rep Power: 16
vitor.geraldes@ist.utl.pt is on a distinguished road
I want first to thank the members of this blog for the useful numerical tricks disclosed. They were indeed helpful to me.

I started with these ideas and I managed to ensure that the velocity can not increase beyond a given threshold value by introducing an artificial hydrodynamic resistance that increases polynomially as the velocity magnitude approaches that limit.
The code is this one

forAll(Rdamp,cellI)
{

Rdamp[cellI] = Rref.value()*Foam:ow((mag(U[cellI])/maxVelocity.value()),10);
}
Rdamp.correctBoundaryConditions();
Rdamp.relax();

fvVectorMatrix UEqn
(
fvm::ddt(rho, U)
+ fvm::div(rhoPhi, U)
- fvm::laplacian(mu, U)
- fvc::div(mu*fvc::grad(U)().T())
+ fvm::Sp(Rdamp, U)
);

In my case, the units of Rdamp are [1 -3 -1 0 0 0 0].

With this technique, the pressure correction equation remains conservative. I imposed an high power of 10 to ensure that the dampening resistance is negligible when the velocity is slightly lower than the threshold value. Underelaxation of Rdamp on the order of 0.5 - 0.8 appears to have good effects on the numerical stability of the algorithm.

I would be glad to know if this numerical trick works for other cases too.
vitor.geraldes@ist.utl.pt is offline   Reply With Quote

Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Correct values of drag but high values of lift. aamer Main CFD Forum 16 December 16, 2010 04:44
high velocity in chemical reaction fkuwo FLUENT 0 August 27, 2009 15:30
High Values of Cl,Cd,Cm taimoor FLUENT 1 February 4, 2009 02:00
RMS values too high! Usman Main CFD Forum 12 February 7, 2008 11:43
Getting Inlet Velocity Values through CCL or User Shraman CFX 3 May 1, 2007 14:58


All times are GMT -4. The time now is 19:52.