|
[Sponsors] |
November 6, 2009, 06:21 |
"Coulomb"-type BC
|
#1 |
New Member
Christian Kröner
Join Date: Nov 2009
Location: Bonn
Posts: 7
Rep Power: 16 |
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 u_t=u_fs*(1-deltaT/|u_fs|*tan(delta)*pressure*area) so i would like to calculte the valueFraction by: Code:
if(deltaT/|u_fs|*tan(delta)*pressure*area>=0){ valueFraction=deltaT/|u_fs|*tan(delta)*pressure*area } else{ valueFraction=0;} 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 Code:
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(); b) And to calculate the valueFraction could I use: Code:
if(dt/mag(*this)*valueFraction_*magS*pp*rhop>=0){ valueFractionCalc_ = dt/mag(*this)*tandelta_*magS*pp*rhop; } else{valueFractionCalc_ =0;} Thanks a lot! Christian |
|
November 12, 2009, 12:55 |
|
#2 |
New Member
Christian Kröner
Join Date: Nov 2009
Location: Bonn
Posts: 7
Rep Power: 16 |
The code is now partly working, i have now used:
Code:
const Field<scalar>& pp = this->patch().lookupPatchField ( "p", 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)); But I will try to check if the BC is somehow meaningfull Christian |
|
November 23, 2015, 09:05 |
|
#3 |
New Member
pat
Join Date: Oct 2015
Posts: 1
Rep Power: 0 |
Dear Christian
I am also interested in this coulomb-type slip bc. I guess you started from the partialSlipfvPatchField.C/.H and modified the "evaluate" member function? are there any caveats with this code, i.e. is it "meaningful", as you decribe in your last post? thanks for your answer best, pat |
|
April 14, 2022, 02:26 |
|
#4 |
New Member
tushar kanti mandal
Join Date: May 2015
Posts: 1
Rep Power: 0 |
Dear Christian,
Can you share your final code (*.C and *.H files) for this problem? I am trying to use the Coulomb friction-based boundary condition. Your code will be very helpful for me. with thanks and regards, Tushar Last edited by tushar@iitb; April 15, 2022 at 02:48. |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Pressure instability with rhoSimpleFoam | daniel_mills | OpenFOAM Running, Solving & CFD | 44 | February 17, 2011 17: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 |
[Commercial meshers] Trimmed cell and embedded refinement mesh conversion issues | michele | OpenFOAM Meshing & Mesh Conversion | 2 | July 15, 2005 04:15 |