CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > OpenFOAM Programming & Development

tractionDisplacement BC for solidDisplacementFoam with Body Forces

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

Reply
 
LinkBack Thread Tools Display Modes
Old   April 13, 2012, 21:39
Default tractionDisplacement BC for solidDisplacementFoam with Body Forces
  #1
Senior Member
 
Hisham's Avatar
 
Hisham El Safti
Join Date: Apr 2011
Location: Braunschweig, Germany
Posts: 247
Blog Entries: 10
Rep Power: 8
Hisham is on a distinguished road
Hi Foamers,

I need to add body forces to the solidDisplacementFoam solver. So it goes something similar to:
Code:
fvVectorMatrix DEqn
                (
                    fvm::d2dt2(D)
                 ==
                    fvm::laplacian(2*mu + lambda, D, "laplacian(DD,D)")
                  + bodyForces  
                  + divSigmaExp
                );
Where the bodyForces vectorField represents accelerations (e.g. gravity). Nevertheless, I have not found a reference on how to add a term to gradient() in tractionDisplacement boundary condition. I mean that for example a term for strain resulting from thermal stresses is added to the gradient() in tractionDisplacementFvPatchVectorField.C like:
Code:
gradient() =
    (
        (traction_ + pressure_*n)/rho
      + twoMuLambda*fvPatchField<vector>::snGrad() - (n & sigmaD)
    )/twoMuLambda;

 if (thermalStress)
    {
        ...

        gradient() += n*threeKalpha*T/twoMuLambda;
    }
I really appreciate any ideas or directions to references (or even how to do it )

Best regards,
Hisham El Safti
Hisham is offline   Reply With Quote

Old   April 14, 2012, 02:40
Default
  #2
Senior Member
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin,Ireland
Posts: 565
Rep Power: 19
bigphil will become famous soon enoughbigphil will become famous soon enough
Quote:
Originally Posted by Hisham View Post
Hi Foamers,

I need to add body forces to the solidDisplacementFoam solver. So it goes something similar to:
Code:
fvVectorMatrix DEqn
                (
                    fvm::d2dt2(D)
                 ==
                    fvm::laplacian(2*mu + lambda, D, "laplacian(DD,D)")
                  + bodyForces  
                  + divSigmaExp
                );
Where the bodyForces vectorField represents accelerations (e.g. gravity). Nevertheless, I have not found a reference on how to add a term to gradient() in tractionDisplacement boundary condition. I mean that for example a term for strain resulting from thermal stresses is added to the gradient() in tractionDisplacementFvPatchVectorField.C like:
Code:
gradient() =
    (
        (traction_ + pressure_*n)/rho
      + twoMuLambda*fvPatchField<vector>::snGrad() - (n & sigmaD)
    )/twoMuLambda;

 if (thermalStress)
    {
        ...

        gradient() += n*threeKalpha*T/twoMuLambda;
    }
I really appreciate any ideas or directions to references (or even how to do it )

Best regards,
Hisham El Safti
Hi Hisham,

Body forces act on the volume of each cell and are source terms so they do not have boundary conditions.

So to add a body force term, just add 'rho*g' to the momentum equation, where g is a dimensionedVector -9.81 in the y direction.

Philip
bigphil is online now   Reply With Quote

Old   April 14, 2012, 06:24
Default
  #3
Senior Member
 
Hisham's Avatar
 
Hisham El Safti
Join Date: Apr 2011
Location: Braunschweig, Germany
Posts: 247
Blog Entries: 10
Rep Power: 8
Hisham is on a distinguished road
Hi Philip

Quote:
Originally Posted by bigphil View Post

Body forces act on the volume of each cell and are source terms so they do not have boundary conditions.

So to add a body force term, just add 'rho*g' to the momentum equation, where g is a dimensionedVector -9.81 in the y direction.

Philip
I agree with you that body forces do not need a BC for themselves but don't they contribute to displacement gradient at the boundary? I know that the boundary values can be retrieved from cells next to it.

I also have some other explicit terms that come from another variable (pore fluid velocity). They are all explicit terms (as the case of the "T" term in the DEqn in solidDisplacementFoam.C)
Code:
 if (thermalStress)
                {
                    const volScalarField& T = Tptr();
                    DEqn += fvc::grad(threeKalpha*T);
                }
So is the existence of a "T"-term added to the gradient() [at D's tractionDisplacement BC] due to the existence of a "T" BC or because "T" contributes to the displacement gradient?

Best regards,
Hisham
Hisham is offline   Reply With Quote

Old   April 14, 2012, 06:49
Default
  #4
Senior Member
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin,Ireland
Posts: 565
Rep Power: 19
bigphil will become famous soon enoughbigphil will become famous soon enough
Hi Hisham,

The reason there is a T-term in the boundary condition is because T appears in the constitutive equation i.e. Hooke's law for a thermal elastic solid is:
sigma =2*mu*e +lambda*I*tr(e) - (2*mu + 3*lambda)*alpha*(T - Tref)*I

Therefore the traction on a boundary face is Trac = n . sigma, and then you sub in Hooke's law and rearrange this equation to get the equivalent (implicit) gradient on the boundary, which is what you set in the traction BC. So the traction BC will contain a T-term. But it will not contain any body force contributions.

If you add rho*g to the momentum equation then it will work, I ran a quick test case and everything is fine on the traction boundaries.

Philip
bigphil is online now   Reply With Quote

Old   April 14, 2012, 07:03
Default
  #5
Senior Member
 
Hisham's Avatar
 
Hisham El Safti
Join Date: Apr 2011
Location: Braunschweig, Germany
Posts: 247
Blog Entries: 10
Rep Power: 8
Hisham is on a distinguished road
Hi Philip

Thanks a lot for your help! Now it is clear to me

Best regards
Hisham
Hisham is offline   Reply With Quote

Old   April 29, 2013, 13:26
Default
  #6
Member
 
Samer
Join Date: Jan 2013
Posts: 31
Rep Power: 4
SamerAli is on a distinguished road
Hi Philip

using the same methodology, if simulation fluid-structure interaction problem, and i want to transfer the temperature computed at the wall of a solid, as boundary condition for the fluid part (where there is a common patch between fluid and solid) ??

Best regards
SamerAli is offline   Reply With Quote

Old   April 30, 2013, 16:27
Default
  #7
Senior Member
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin,Ireland
Posts: 565
Rep Power: 19
bigphil will become famous soon enoughbigphil will become famous soon enough
Quote:
Originally Posted by SamerAli View Post
Hi Philip

using the same methodology, if simulation fluid-structure interaction problem, and i want to transfer the temperature computed at the wall of a solid, as boundary condition for the fluid part (where there is a common patch between fluid and solid) ??

Best regards
Hi Samer,

yes you can follow the same Dirichlet-Neumann coupling procedure to couple the temperature between the regions.

Philip
bigphil is online now   Reply With Quote

Reply

Tags
bodyforces, soliddisplacementfoam, tractiondisplacement

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
DPM body force to express electric forces adam14qin FLUENT 24 August 1, 2013 13:34
Body forces on hovering airfoil sanmysterio Main CFD Forum 1 July 13, 2010 03:14
Fan modelling using body forces Fred CD-adapco 2 June 13, 2007 08:56
strong body forces Ankan Main CFD Forum 0 August 2, 2005 02:13
Body Forces Thomas P. Abraham Main CFD Forum 1 April 21, 1999 21:24


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