CFD Online Logo CFD Online URL
Home > Forums > OpenFOAM Programming & Development

"Coulomb"-type BC

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

LinkBack Thread Tools Display Modes
Old   November 6, 2009, 07:21
Default "Coulomb"-type BC
New Member
Christian Kröner
Join Date: Nov 2009
Location: Bonn
Posts: 7
Rep Power: 7
ckroener is on a distinguished road
Hello Foamers,

i would like to use a Coulomb-Type BC for the simulation of a collapse of a granular column with interFoam.

Therefore, i want to mimic a kind of stick-slip BC by utilizing the partSlip BC and introducing a calculated valueFraction.

The flow at the boundary should feel an additional friction term F_c=-u_t/|u_t|*tan(delta)*N, where delta is the bottom friction angle, N the normal force acting on the Boundary and u_t is the velocity at the patch.

The change in velocity due to this force could be callculated, by assuming free slip, and correcting the velocity by:

u_t=u_fs - deltaT*u_fs/|u_fs| *tan(delta)*pressure*area

so i would like to calculte the valueFraction by:

else{ valueFraction=0;}
Now I have some questions:
1) Is it legal to handle the bottom friction in this way? Or is there a better way to introduce an bottom frition law?

2) I'm new to OpenFoam and, therefore, have some problems with the fundamental basics of implementing the BC.

a) Can I use

    const Field<scalar>& magS=patch().magSf();
    const fvPatchField<scalar>& pp=patch().lookupPatchField<volScalarField, scalar> ("p");
    const fvPatchField<scalar>& rhop=patch().lookupPatchField<volScalarField, scalar>("rho");
    scalar dt=runTime.deltaT();
to get the the values of p,rho and the area of the patch?

b) And to calculate the valueFraction could I use:

    valueFractionCalc_ = dt/mag(*this)*tandelta_*magS*pp*rhop;
    else{valueFractionCalc_ =0;}
Any advice?

Thanks a lot!

ckroener is offline   Reply With Quote

Old   November 12, 2009, 13:55
New Member
Christian Kröner
Join Date: Nov 2009
Location: Bonn
Posts: 7
Rep Power: 7
ckroener is on a distinguished road
The code is now partly working, i have now used:
    const Field<scalar>& pp = this->patch().lookupPatchField
        reinterpret_cast<const volScalarField*>(NULL),
        reinterpret_cast<const scalar*>(NULL)
    scalar deltaTime = this->db().time().deltaT().value();
    scalarField area = this->patch().magSf();
     Field<scalar> magVel=max(1e-30,mag((*this)));
    Field<scalar> newValueFraction_;
    newValueFraction_ = min(1.,max(0.,tanDe_*deltaTime/magVel*pp*area));
so now i have created a newValueFracation_ which uses a tanDe_ read from dictionary. The Simulation seems to run fine, but now I have some problems with paraFoam...
But I will try to check if the BC is somehow meaningfull

ckroener 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
Pressure instability with rhoSimpleFoam daniel_mills OpenFOAM Running, Solving & CFD 44 February 17, 2011 18:08
Flow Around a Cylinder ronaldo OpenFOAM 5 September 18, 2009 08:13
LiftDrag tool nuovodna OpenFOAM Running, Solving & CFD 45 September 2, 2009 17:56
Problem with compile the setParabolicInlet ivanyao OpenFOAM Running, Solving & CFD 6 September 5, 2008 20:50
Trimmed cell and embedded refinement mesh conversion issues michele OpenFOAM Other Meshers: ICEM, Star, Ansys, Pointwise, GridPro, Ansa, ... 2 July 15, 2005 04:15

All times are GMT -4. The time now is 06:24.