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

how to apply an sudden displacement or Force of a cylinder with solid solver?

Register Blogs Community New Posts Updated Threads Search

Like Tree2Likes
  • 1 Post By allenfieldin
  • 1 Post By jherb

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   January 14, 2015, 22:54
Default how to apply an sudden displacement or Force of a cylinder with solid solver?
  #1
Member
 
ALLEN
Join Date: Aug 2014
Posts: 32
Rep Power: 12
allenfieldin is on a distinguished road
Hi, all

I recently read about Jasak and Tukovic's paper in 2007 (see: UPDATED LAGRANGIAN FINITE VOLUME SOLVER FOR LARGE DEFORMATION DYNAMIC RESPONSE OF ELASTIC BODY, sub-section 4.1 in this paper), which introduced the solid solver for large deformation solid mechanics. I want to reproduce the method to apply a sudden Force on the tip mentioned in this paper, and then let the cylinder vibrate freely.

Then in foam-extend-3.0 I found the solver developed by Phillip Cardiff and his co-workers (elasticNonLinULSolidFoam).

using the above solver and choose the solidTractionFree BC for the cylinder patch, I tried to set the 0/DU file like this:
____________________________________

dimensions [0 1 0 0 0 0 0];

internalField uniform (0 0 0);


boundaryField
{

defaultFaces
{
type solidTractionFree;
nonLinear updatedLagrangian;
}

cylinderFixed
{
type fixedValue;
value uniform (0 0 0);
}

cylinderTop
{
type solidTractionFree;
nonLinear updatedLagrangian;
/* type solidTraction;
nonLinear updatedLagrangian;
traction (0 0 0);
pressure uniform 0;
value uniform (0 0 0);
*/
}
_________________________________________________

as I don't kown how to apply an sudden force at the cylinder tip, I use funkySetFields tool to set a sudden DU instead on the patch: "cylinderTop" , so that the DU along the cylinder height is increasing to 0.01 at the top.
______________________
expressions
(
internalField
{
keepPatches true;
field DU;
expression "vector(0.001*pow((pos().z/2.4),2),0,0)";
condition "(pos().z<2.5)";
}

);
________________________________

afeter that, I run the case, but the displacement at the tip of the cylinder seems to by very large and have residual displacement in X direction, as you can see in the attached figure for the time history record and the final Usolid.
tip displacement.jpg

0.21s.jpg


So the problem is that how can I apply a sudden traction force on the tip of the cylinder to let it freely vibrate? or a sudden DU is not applicable?

I hope some one can help me and give some advice for this, I want to use the free vibration signal to obtain the natural frequency of the cylinder.

it will be really appreciated.

I have uploaded the case file in the attachment, there is no need to funckySet (I have already done that). you can check that if you are interested.

/Allen
Attached Files
File Type: gz 3D_cylinder.tar.gz (6.0 KB, 13 views)
allenfieldin is offline   Reply With Quote

Old   January 16, 2015, 01:01
Default
  #2
Member
 
ALLEN
Join Date: Aug 2014
Posts: 32
Rep Power: 12
allenfieldin is on a distinguished road
problems solved, I have to use a solidTraction BC, and prescribe a traction Force on the top patch of the cylinder, like:
_____________________________________
cylinderTop
{
/* type solidTractionFree;
nonLinear updatedLagrangian;*/
type solidTraction;
nonLinear updatedLagrangian;
traction (1803 1803 0);
pressure uniform 0;
value uniform (0 0 0);

}
_____________________________

obviously, this forum has few people concerning solid mechanics..........
jherb likes this.
allenfieldin is offline   Reply With Quote

Old   January 16, 2015, 06:32
Default
  #3
Senior Member
 
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 22
jherb is on a distinguished road
Thank you for sharing your solution. Just for curiosity: How do you release the force/the top of the cylinder again so it can vibrate?
jherb is offline   Reply With Quote

Old   January 23, 2015, 00:46
Default
  #4
Member
 
ALLEN
Join Date: Aug 2014
Posts: 32
Rep Power: 12
allenfieldin is on a distinguished road
Hi,Joachim, Thank you for your concern.

yes you are right, the setup in #2 does not solve the pro
blem, the prescribed traction force will still act in the preceeding time step, not just the first time step. Now I doubt the setup of the case, because a prescribed traction force on the cylinder top might not give an initial displacement at the 0 time step immediately. but as Jasak has realized the analysis, it is possible to do that, the problem however is simply I don't know how.

I wrote to Phillip Cardiff, who developed the solid solver, he hasn't write back yet. hope it will be soon.

I will update the post if there is any solution. A lot confused, poor stupidity of me

Quote:
Originally Posted by jherb View Post
Thank you for sharing your solution. Just for curiosity: How do you release the force/the top of the cylinder again so it can vibrate?
allenfieldin is offline   Reply With Quote

Old   January 26, 2015, 17:06
Default
  #5
Senior Member
 
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 22
jherb is on a distinguished road
Just an idea: Have you tried groovyBC? You might be able to define a time dependent force?
allenfieldin likes this.
jherb is offline   Reply With Quote

Old   January 27, 2015, 23:17
Default
  #6
Member
 
ALLEN
Join Date: Aug 2014
Posts: 32
Rep Power: 12
allenfieldin is on a distinguished road
Actually I have used another boundary condition called timeVaryingSolidTraction and make a time series file for that, so taht the 0/DU file becomes:
Quote:
dimensions [0 1 0 0 0 0 0];

internalField uniform (0 0 0);

boundaryField
{

cylinderFixed
{
type fixedValue;
value uniform (0 0 0);
}

cylinderTop
{
type timeVaryingSolidTraction;
nonLinear updatedLagrangian;
outOfBounds clamp;
fileName "$FOAM_CASE/constant/time-series";
}
cylinder
{
type solidTractionFree;
nonLinear updatedLagrangian;
}
}
and the time-series is :
Quote:
(
( 0 ( 0 0 0 ) )
( 0.002 ( 1796 1796 0 ) )
( 0.004 ( 0 0 0 ) )
... ... ... ...

)
but the result does not look very well, as you can see in the attachment figure:
damping_0 and 1000.jpg

the red one is using Euler scheme for d2dt(DU), an the black one is what I got after I added a damping*fvm::ddt(DU) as a damping term.

It is not like the result of Jasak and Tukovic's presentation(which is attcahed in the next floor ), the problem is the tip displacement is not smooth as what they got. another thing I am confused is the instability at about 7-8 s in the simulation, just got blowed up.

I have uploaded the case file, if you are interested.
upload_JasakCase.tar.gz

Quote:
Originally Posted by jherb View Post
Just an idea: Have you tried groovyBC? You might be able to define a time dependent force?
allenfieldin is offline   Reply With Quote

Old   January 27, 2015, 23:27
Default
  #7
Member
 
ALLEN
Join Date: Aug 2014
Posts: 32
Rep Power: 12
allenfieldin is on a distinguished road
Quote:
Originally Posted by jherb View Post
Just an idea: Have you tried groovyBC? You might be able to define a time dependent force?
jasak and tukovic's result:

Jasak and Tukovic.jpg
allenfieldin is offline   Reply With Quote

Old   February 11, 2015, 12:35
Default
  #8
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Hi Allen,

You can use the timeVaryingSolidTraction boundary condition, see the test case $FOAM_CASE/solidMechanics/elasticSolidFoam/timeVaryingPlateHole.

The traction can be specified as a time series.

Best regards,
Philip
bigphil is offline   Reply With Quote

Old   February 13, 2015, 10:42
Default
  #9
Member
 
ALLEN
Join Date: Aug 2014
Posts: 32
Rep Power: 12
allenfieldin is on a distinguished road
Quote:
Originally Posted by bigphil View Post
Hi Allen,

You can use the timeVaryingSolidTraction boundary condition, see the test case $FOAM_CASE/solidMechanics/elasticSolidFoam/timeVaryingPlateHole.

The traction can be specified as a time series.

Best regards,
Philip
Hi,Phillip

A lot of thanks for your concern, I finally got some hope.

I want to show you with the following result for a solid model whose natural frequency is 25 Hz.

The rectangular cylinder is in dimension: 0.02*0.02*0.1 (all in meter).

and I used the elasticNonLin large strain solver , the timeVaryingTraction at a side plane of the rectangular cylinder, with the bottom fixed to be DU=0, and the other side surfaces and top be tractionFree.

The time series of the Traction force is listed in the Constant file. I have tried with coarse mesh 6*6*60, it diverged, and with dt=0.001, it also diverged. so in the following, I have chosen dt=0.0005s, and fine mesh=10*10*100.

in the following figure, the case introduction is:

case1, 'origin-dt-0.0005'; : basic case, with a sudden Traction at dt=0.0005;

case2, 'refined-dt-0.0005'; : meshrefined based on above case

case3, 'Adjust-dt-0.0005'; : modifying the basic case with same Traction at dt=0.0005 and dt=0.001;

case4, 'Adjust-dt-0.005_noDiss'; same as the above but wipe the dissipation term in the DU equation

overall-dt0.0005.jpg

so as you can see, the cylinder tip displacement is generally decaying, and fine mesh got a smaller solution. The first phenomena may be explainable due to dissipation term in the formula(or numerical??), however the second in quite confusing, is the mesh not fine enough? I have noticed that in Jasak's paper in 2007 ( p, li { white-space: pre-wrap; } Updated Lagrangian finite volume solver for large deformation dynamic response of elastic body), a 10*10*100 mesh is fine enough, so i doubt the reason, i will do a finer mesh job letter.


on the other hand, the most depressing thing, however, is the signal seem to have a longer period as time goes on, especially for a coarse mesh . firstly i thought it was because of the damping term in the DU formula, so i cut that out in case3 and I got almost the same result of case3 and case4.

a close look in to the figure is shown here;
closeup-dt0.0005.jpg

I have attached the case files below, if you are interested in that, I wish you can take a minute into that.

Atchment of case4 :Adjust-dt-0.005_noDiss.tar.gz

Last edited by allenfieldin; February 13, 2015 at 11:00. Reason: clear figure
allenfieldin is offline   Reply With Quote

Old   February 13, 2015, 11:20
Default
  #10
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Hi ALLEN,

It looks like numerical diffusion due to the first order backward (implicit) Euler method time differencing scheme: a higher order time scheme should resolve this issue, such as the second order backward time scheme (as described in Ferziger and Peric).

This has been implemented in foam-extend-3.1 for d2dt2(phi) and is called backward; however it is implemented for d2dt2(phi) NOT d2dt2(rho, phi) as needed by elasticNonLinULSolidFoam; so to use it you could make a copy of the solver and change the transient term in the momentum equation to rho*d2dt2(phi) instead of d2dt2(rho, phi); this assumption should be OK. Then in the fvSchemes of your case you can specify backward instead of Euler for this term.

I know there is a thread here on the forum describing exactly this but I didn't find it when I did a quick search; maybe you will have better luck.

Best,
Philip
bigphil is offline   Reply With Quote

Old   February 13, 2015, 22:39
Default
  #11
Member
 
ALLEN
Join Date: Aug 2014
Posts: 32
Rep Power: 12
allenfieldin is on a distinguished road
Quote:
Originally Posted by bigphil View Post
Hi ALLEN,

It looks like numerical diffusion due to the first order backward (implicit) Euler method time differencing scheme: a higher order time scheme should resolve this issue, such as the second order backward time scheme (as described in Ferziger and Peric).

This has been implemented in foam-extend-3.1 for d2dt2(phi) and is called backward; however it is implemented for d2dt2(phi) NOT d2dt2(rho, phi) as needed by elasticNonLinULSolidFoam; so to use it you could make a copy of the solver and change the transient term in the momentum equation to rho*d2dt2(phi) instead of d2dt2(rho, phi); this assumption should be OK. Then in the fvSchemes of your case you can specify backward instead of Euler for this term.

I know there is a thread here on the forum describing exactly this but I didn't find it when I did a quick search; maybe you will have better luck.

Best,
Philip
Hi, big Phillip,

Thanks for your quick response.

I all my cases above, the default time scheme was taken to be backward (which is second order) both for d2dt and ddt. and the cond order is currently most high order for time scheme.

I have done the modification for the solver, changing fvm::d2dt2(rho,DU)
to rho*fvm::d2dt2(DU), hope it can work. I wil post the result later.

Another thing is why the vibration period keeps increasing as time goes on? on the other hand, using the same backward scheme for d2dt and ddt , in Jasak's paper I mentioned above (Page 10, last paragraph), the vibration period is actually decreasing. Not only the discrepancy of these results really confuses me, but also that I think for a elastic solid, the natural frequency should not change as long, as there is no damage inside(like cracks, etc.) . Can you recommend me some reference on that?

Thanks,

//Allen
allenfieldin is offline   Reply With Quote

Old   February 15, 2015, 21:37
Default
  #12
Member
 
ALLEN
Join Date: Aug 2014
Posts: 32
Rep Power: 12
allenfieldin is on a distinguished road
Quote:
Originally Posted by bigphil View Post
Hi ALLEN,

It looks like numerical diffusion due to the first order backward (implicit) Euler method time differencing scheme: a higher order time scheme should resolve this issue, such as the second order backward time scheme (as described in Ferziger and Peric).

This has been implemented in foam-extend-3.1 for d2dt2(phi) and is called backward; however it is implemented for d2dt2(phi) NOT d2dt2(rho, phi) as needed by elasticNonLinULSolidFoam; so to use it you could make a copy of the solver and change the transient term in the momentum equation to rho*d2dt2(phi) instead of d2dt2(rho, phi); this assumption should be OK. Then in the fvSchemes of your case you can specify backward instead of Euler for this term.

I know there is a thread here on the forum describing exactly this but I didn't find it when I did a quick search; maybe you will have better luck.

Best,
Philip
Hi, Philip,
I have followed your advice, changing the fvm::d2dt2(rho,DU) to a rho*fvm::d2dt2(DU), and it is a second order backward time scheme, and do another two simulations with dt=0.0005 and dt=0.00025, and they are compared with the former results I got with the original solver.
overall view:
dtdtPhi solver and original solver overall view.jpg

and closeup view:
dtdtPhi solver and original solver closeup view.jpg

These two cases with the new solver illustrated a increasing amplitude (for dt=0.0005, it even diverged) and a enlonging of the vibration period. and the smaller time step dt=0.00025 also has a trend to divergence.
For dt=0.00025, the displacement got a instability with the signal (unsmooth), while the original solver has a smoother solution.
allenfieldin 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
UDF in Fluent Andrew Fluent UDF and Scheme Programming 5 March 7, 2016 04:38
Immersed solid, vs solid-fluid interaction to determine forces on a submerged solid amrbekhit CFX 0 January 8, 2015 17:39
calculation of Hydrodynamic force on cylinder kamrul029 FLUENT 0 March 27, 2012 13:38
Force can not converge colopolo CFX 13 October 4, 2011 23:03
How to apply force??? Shanti FLUENT 2 July 31, 2006 17:31


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