
[Sponsors] 
February 16, 2012, 04:46 
limit high velocity values

#1 
New Member
Florian
Join Date: Jan 2011
Location: Mannheim, Germany
Posts: 24
Rep Power: 7 
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: 8 
Hi. Did you find out how that can be done?


November 27, 2012, 10:42 

#3 
Senior Member
Samuele Z
Join Date: Oct 2009
Location: Mozzate  Co  Italy
Posts: 490
Rep Power: 10 
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: 8 
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: 13 
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: 18 
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++; } 

February 28, 2013, 18:14 

#7 
Senior Member
Kent Wardle
Join Date: Mar 2009
Location: Illinois, USA
Posts: 208
Rep Power: 13 
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 ) 

July 25, 2016, 14:28 

#8 
New Member
Vitor Geraldes
Join Date: Dec 2009
Posts: 19
Rep Power: 8 
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  


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 05: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 03:00 
RMS values too high!  Usman  Main CFD Forum  12  February 7, 2008 12:43 
Getting Inlet Velocity Values through CCL or User  Shraman  CFX  3  May 1, 2007 14:58 