# limit high velocity values

 Register Blogs Members List Search Today's Posts Mark Forums Read

 February 16, 2012, 04:46 limit high velocity values #1 New Member   Florian Join Date: Jan 2011 Location: Mannheim, Germany Posts: 24 Rep Power: 8 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

 November 26, 2012, 17:47 #2 Senior Member   Join Date: Nov 2009 Location: Michigan Posts: 135 Rep Power: 9 Hi. Did you find out how that can be done? immortality likes this.

 November 27, 2012, 10:42 #3 Senior Member   Samuele Z Join Date: Oct 2009 Location: Mozzate - Co - Italy Posts: 493 Rep Power: 11 Any news about this problem? How did you solve it? It could be very useful for me, too. Thanks a lot, Samuele

 December 4, 2012, 10:43 #4 Senior Member   Join Date: Nov 2009 Location: Michigan Posts: 135 Rep Power: 9 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

 December 7, 2012, 13:54 #5 Senior Member   Kent Wardle Join Date: Mar 2009 Location: Illinois, USA Posts: 208 Rep Power: 14 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.

 February 11, 2013, 17:26 #6 Senior Member     Ehsan Join Date: Oct 2012 Location: Iran Posts: 2,209 Rep Power: 19 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, 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++; }```

 February 28, 2013, 18:14 #7 Senior Member   Kent Wardle Join Date: Mar 2009 Location: Illinois, USA Posts: 208 Rep Power: 14 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( )). Basically, it scales the velocity according to some max value (maxSlamVelocity) and a coefficient (slamDampCoeff)

 July 25, 2016, 14:28 #8 New Member   Vitor Geraldes Join Date: Dec 2009 Location: Lisbon, Portugal Posts: 19 Rep Power: 9 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.

 Thread Tools Display Modes Linear Mode

 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 OffTrackbacks are On Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post aamer Main CFD Forum 16 December 16, 2010 05:44 fkuwo FLUENT 0 August 27, 2009 15:30 taimoor FLUENT 1 February 4, 2009 03:00 Usman Main CFD Forum 12 February 7, 2008 12:43 Shraman CFX 3 May 1, 2007 14:58

All times are GMT -4. The time now is 11:58.