CFD Online Logo CFD Online URL
Home > Forums > Software User Forums > OpenFOAM

Implementation of traction BC in tractionDisplacementFvPatchVectorField.C

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

LinkBack Thread Tools Search this Thread Display Modes
Old   July 12, 2011, 12:58
Default Implementation of traction BC in tractionDisplacementFvPatchVectorField.C
Johan Roenby
Join Date: May 2011
Location: Denmark
Posts: 93
Rep Power: 21
roenby will become famous soon enough

I am trying to understand how the implementation of the traction boundary condition in tractionDisplacementFvPatchVectorField.C works.

On line 176-180, it says:
gradient() =
(traction_ + pressure_*n)/rho.value()
+ twoMuLambda*fvPatchField<vector>::snGrad() - (n & sigmaD)

When we apply this to a displacement field, D, the code sets the value of the normal gradient, n.grad(D), on the relevant boundary (right?).

What I don't understand is why n.grad(D) is set to the value appearing on the right hand side in the code.

As I understand it


means n.grad(), and so if we mutliply by twoMuLambda on both sides of the equation above, we get something like

(2*mu + lambda) n.grad(D) = (t + p*n)/rho + (2*mu + lambda) n.grad(D) - n.sigma

Then the left hand side and the second term on the right hand side cancel out, and we are left with

(t + p*n)/rho = n.sigma

Which is physically sound... but I am still puzzled about how this is used to set n.grad(D) on the boundary, since the n.grad(D)-terms apparenly cancel out.

Can anyone give a hint as to how this works?


roenby is offline   Reply With Quote

Old   July 31, 2011, 19:21
Senior Member
Hisham's Avatar
Hisham Elsafti
Join Date: Apr 2011
Location: Braunschweig, Germany
Posts: 257
Blog Entries: 10
Rep Power: 17
Hisham is on a distinguished road
Hi Johan

I'm trying to understand this BC as well. I'm not really sure but I think this calculation is called for each time (or iteration) the governing equation is to be solved, and therefore, the current normal gradient fvPatchField<vector>::snGrad() is cancelled with the current stress sigmaD and the relation is more like:

gradient() = (traction + p * n) / (rho (2mu+lamda))

which is also sound if you can consider the strain=grad(u)

I don't know if that is 100% correct. But thanks for the post (saved me some time while going through the code)

Best regards,
Hisham is offline   Reply With Quote


Thread Tools Search this Thread
Search this Thread:

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

Similar Threads
Thread Thread Starter Forum Replies Last Post
Can anyone give me some hint on how to make traction free boundary condition? poplar OpenFOAM 3 January 14, 2015 02:37
easy educational compressible navier stokes implementation anywhere? Boogiwoogie Main CFD Forum 0 December 19, 2010 06:32
Implementation issues of fvSchemes / laplacianScheme, in particular gaussLaplacianSch thomek OpenFOAM Programming & Development 0 October 18, 2010 05:10
Please explain the implementation of species transport Eqn in reactingFoam kallipygian OpenFOAM Running, Solving & CFD 0 October 13, 2008 07:29
FEM Implementation of pressure-correction scheme Markus Main CFD Forum 4 January 6, 2007 01:53

All times are GMT -4. The time now is 14:46.