Mesh Motion is not consistent
Hello guys I need to simulate an airfoil undergoing pitch + plunge as is done in the paper kinsey and dumas.
The pitch and plunge equations are as follows. Code:
H = h *sin(wt) Code:
dynamicFvMesh dynamicMotionSolverFvMesh; Thanks, Pruthvi. |
How did you do this?
Does the mesh topology change? Did you use topology change dynamic mesh? |
Hello Tar,
Yes the mesh topology changes. Look at this video . I used sixDofRigidBodyMotion. Thanks, Pruthvi. |
Hi pruthvi,
Is w really the same for H an for theta? For me it seems that H has an higher frequency, and therefore the airfoil reaches highest/lowest point before being horizontal again. regards Alex |
Hello Alex,
I think omega is the same for both. Check out the dynamicMeshdict file I posted. The mass, MOI and stiffness are highlighted in red. Thanks, Pruthvi. |
I cannot understand what you are trying to model here.
Is it forced oscillation motion like T. Kinsey and G. Dumas paper 2008? OR you are trying to model a response problem? Because the equations of motion ,which are mentioned here, are for prescribed boundary motion, on the other hand you are using sixDoFRigidBodyMotion which calculate the displacement based on forces and moments every time step. Sorry, I think, I am missing something here. Bw, Hassan Quote:
|
Hello Hassan,
I'm trying to do exactly what kinsey and dumas did. Forced oscillations. I'm not interested in the response of the system. I want to see the flow caused by the prescribed motion. Which other solver is apt for this kind of problem? I'm not very familiar with moving mesh techniques. Any help is appreciated in accurately describing the motion. Thanks, Pruthvi. |
Hi Pruthvi,
There are two BC in OF for pointDisplacement which you can combine. I already used this approach before to test the dynamicMesh solvers in OF. I will describe it as a tutorial instead just uploading the files.They are oscillatingDisplacement and angularOscillatingDisplacement. The source code is located in Code:
$FOAM_SRC/fvMotionSolver/pointPatchFields/derived/ Code:
Field<vector>::operator=(amplitude_*sin(omega_*t.value())); Code:
scalar angle = angle0_ + amplitude_*sin(omega_*t.value()); (I will try to make it as simple as possible to be suitable for new OF users. Please excuse me if you found it boring but I am trying to make it as useful as possible.) 1 - copy the "angularOscillatingDisplacement" to your run folder and rename it, lets call it for instance "twoDOscillatingDisplacement". Also replace "angularOscillatingDisplacement" with "twoDOscillatingDisplacement" inside the new twoDOscillatingDisplacementPointPatchVectorField.H and .C files. 2 - Now you have to add two new private data to .H file Code:
// added for H Code:
//first Code:
wing Code:
vectorField::operator= Code:
os.writeKeyword("amplitudeH") files Code:
twoDOscillatingDisplacementPointPatchVectorField.C options Code:
EXE_INC = \ 8. finally try to complie it using wmake libso, then include the library in yourcase controlDict 9. modify dynamicMeshDict Code:
This is one approach to solve this problem but it isn't the only one. You can use Non-Conforming AMI Patches with solidBodyMotion like in the paper and in turbo-machinery applications (relative reference frames). I am not familiar with this approach therefore I cannot give you any tips about it. Best wishes, Hassan |
Hi Pruthvi,
Which type of mesh motion solver do you use? I mean, how did you use topoChanging mesh and sixDofRigidBodyDisplacement together? Regards, Thaw Tar |
@Hassan Many thanks for your solution. I will try to compile it and tell you about the results.
@Thaw I just followed the wing motion tutorial in pimpleDyMFoam. I changed the values of stiffness and mass to get the desired motion. |
Hi Pruthvi,
Thanks for your answer. Actually, I am doing 2D cylinder under vortex induced vibrations (viv) using sixDoFRigidBodyDisplacement. But if the motion amplitude is too high, the mesh distorts too much and the computation blows up. Thus, I wanted to use some kinds of topoChangerMesh together with sixDoFRigidBody motion solver. Regards thaw tar |
Hello Thaw,
Whats the max amplitude that you may face? I could go upto 1 chord length without any computational issues. |
@ThawTar, it is expected that the dynamic mesh solver cannot handle too high amplitude. But before trying topoChangMesh, try to use prescribed BC (oscillating displacement) with high amplitude. Solve the mesh only using moveDynamicMesh solver and try different diffusion methods. Also make sure that in your case, you are starting from convergent solution for fixed cylinder.
Bw Hassan |
Hello Hassan,
I followed your instructions. They were pretty clear considering that I have little C++ knowledge. I couldn't compile it due to an error. Code:
wmakeLnInclude: linking include files to ./lnInclude Quote:
Code:
#ifndef oscillatingDisplacementPointPatchVectorField_H Thanks :), Pruthvi. |
You have to change each instance in .C and .H from oscillatingDisplacement to twoDoscillatingDisplacement. Check the Github, hpfully the changes will appear for you because I am not familiar with it :)
Computational methods for fluid dynamics has a small section about dynamic meshes. Also review Jasak's papers about dynamicmesh handling in OpenFOAM. About the diffusion coefficient effect there is a report from Charmers about it http://www.tfd.chalmers.se/~hani/kur...AM-rapport.pdf Please note since OF2.3.0 there are major changes in the solid body motion library check http://www.openfoam.org/version2.3.0/mesh-motion.php |
I noticed extra few points needs to be modified in your code. I will search for my old code and upload it for you.
|
Here is the link
https://github.com/HIKassem/twoDOscillatingDisplacement it is my first time to use github, so it could be not working or I messed up something. Bw, Hassan |
Hi Hassan,
Your code worked fine. I was able to run a couple of simulations. Nice implementation. I ran into some SigFpe error. Now debugging. I will let you know if I can debug. Nice picking up github :). Thanks, Pruthvi. |
Courant number suddenly blows up
Hello Mr.Hassan,
I modified the twoDOscillaitngMotion.C file so that I can introduce a phase difference of pi/2 between the pitching and plunging motions. The simulation keeps blowing up. I used checkMesh and found that the quality was degrading at the cells generated by layer addition. To rectify I switched off layer addition and tried again. This has eleminated most of the mesh check errors but the courant number is still blowing up. All the files are here ----> https://github.com/pruthvi1991/solve...r/Kinsey_Dumas Here is a checkMesh log when the Courant number blows up but the mesh quality is OK Code:
Time = 9 Code:
Create time Can this problem be solved by trying a different diffusivity? I tried quadratic already. |
I have few questions,
Could you please tell me which case on github you are using? Are you using physical solver of moveDynamicMesh? is the solver blow-up even when you use small amplitude values? Bw, Hassan |
All times are GMT -4. The time now is 09:58. |