CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM

Implementation of traction BC in tractionDisplacementFvPatchVectorField.C

Register Blogs Community New Posts Updated Threads Search

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

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)
)/twoMuLambda;
--------------------------------

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

fvPatchField<vector>::snGrad()

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?

Cheers,

Johan
roenby is offline   Reply With Quote

Old   July 31, 2011, 20:21
Default
  #2
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
Hisham is offline   Reply With Quote

Reply


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 03:37
easy educational compressible navier stokes implementation anywhere? Boogiwoogie Main CFD Forum 0 December 19, 2010 07:32
Implementation issues of fvSchemes / laplacianScheme, in particular gaussLaplacianSch thomek OpenFOAM Programming & Development 0 October 18, 2010 06:10
Please explain the implementation of species transport Eqn in reactingFoam kallipygian OpenFOAM Running, Solving & CFD 0 October 13, 2008 08:29
FEM Implementation of pressure-correction scheme Markus Main CFD Forum 4 January 6, 2007 02:53


All times are GMT -4. The time now is 23:43.