CFD Online Logo CFD Online URL
Home > Forums > OpenFOAM Running, Solving & CFD

Drag model implementation

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

Like Tree1Likes
  • 1 Post By hester

LinkBack Thread Tools Display Modes
Old   April 2, 2013, 22:22
Default Drag model implementation
Chris L
Join Date: Sep 2012
Posts: 44
Rep Power: 6
vbchris is on a distinguished road
I just wanted to check some code with the community to see if its doing what I think it should.

I want to Implement the following Drag model (based on Roghair, 2011).

Cd/[Cinf*(1-alpha)] = ( 1 + 18/Eo*alpha )


Eo is the Eotvos # (1.4 for the system in question)
Cinf is the drag coefficient for a single bubble in pure liquid
Cd is the swarm corrected coefficient
alpha is the gas phase fraction (gas-liquid system)

This is for twoPhaseEulerFoam (OF version 2.2.0)

    volScalarField Re(max(Ur*phase1_.d()/, scalar(1.0e-3)));

    volScalarField Cds
        neg(Re - 1000)*(24.0*(1.0 + 0.15*pow(Re, 0.687))/Re)
      + pos(Re - 1000)*0.44

    volScalarField Cde
      	(Cds + Cds*(18/1.4)*alpha1_)*(scalar(1)-alpha1_)

    return 0.75*Cde*phase2_.rho()*Ur/phase1_.d();
vbchris is offline   Reply With Quote

Old   March 31, 2015, 08:28
New Member
Join Date: May 2014
Location: Germany
Posts: 27
Rep Power: 5
hester is on a distinguished road
Hello Chris,

I know the answer is a bit late.

I think your implementation is not correct. I implemented the model after Roghair myself in OF 2.3.0.
Roghair calculates the Cd for a single bubble after Eq. 12- 14 in his paper. You used the Schiller-Naumann model instead. I don't think this will work. Also, its' a bad idea to put a number for the Eötvös number in the equation, it's much better to look it up. This way you can use the drag model for different systems.

This is how I implemented the model. I use values for residualRe and residualEo, which I define in my constant/ directory, to make sure Re and Eo never become zero.

    residualRe_("residualRe", dimless, dict.lookup("residualRe")),
    residualEo_("residualEo", dimless, dict.lookup("residualEo"))
Then I calculate CdRe() using the following code.
Foam::tmp<Foam::volScalarField> Foam::dragModels::Roghair::CdRe() const
    volScalarField Eo(max(pair_.Eo(), residualEo_));
    volScalarField Re(max(pair_.Re(), residualRe_));
    volScalarField alpha(pair_.dispersed());

    volScalarField CdRe = 16./Re * (1. + 2./(1. + 16./Re + 3.315/sqrt(Re)));
    volScalarField CdEo = 4.* Eo/(Eo + 9.5);
    volScalarField Cdsingle = sqrt(pow(CdRe, 2.) + pow(CdEo, 2.));
    volScalarField Cd = Cdsingle * (1. - alpha) * (1. + 18./Eo *alpha);

    return Cd * Re;
I'm not sure if this would look the same in OF 2.2.0.

BlnPhoenix likes this.
hester is offline   Reply With Quote


Thread Tools
Display Modes

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

Similar Threads
Thread Thread Starter Forum Replies Last Post
Cavitation: implementation of Schnerr-Sauer model luftraudi Main CFD Forum 1 November 21, 2013 23:52
Free CFD code with implementation of Menter's k-omega SST model nikola_m Main CFD Forum 1 November 9, 2012 10:39
Implementation of wall model to LES saeedi Main CFD Forum 3 August 24, 2012 14:51
Problems with own LES Model Implementation fs82 OpenFOAM 1 October 9, 2009 10:31
A reference on implementation of Spalart-Alam. Turbulence Model? Mohammad Kermani Main CFD Forum 2 December 26, 1999 03:56

All times are GMT -4. The time now is 17:31.