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

Bird Wing simulation suggestions

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   August 27, 2013, 08:56
Default Bird Wing simulation suggestions
  #1
New Member
 
Join Date: Aug 2013
Location: Italy/UK
Posts: 24
Rep Power: 12
c0sk is on a distinguished road
Hi!!!
As stated in the title, for my third year undergraduate project I would like to simulate the flight of an hummingbird. The complexity involved is greater than the one required for an undergrad thesis, therefore, my supervisor recommended me to concentrate on the wing alone. He suggested to reduce it to a small, thin ellipse and assign to it the special rotation (infinity sign alike?!). He said OpenFoam is a powerlful tool so I am getting used to it over summer in order to be ready for october. I went through the user guide provided and installed the 1.6ext where there is a rotating motion solver which may fit my case. How would you proceed? Is there a specific solver/tool which may help me in simulating the wing and extract useful data such as the variation of Lift and Drag with the movement etc? What solver or utility do you reckon is required for my case? How will I be able to produce the mesh and give to it the rotation? The part is currently a Solidworks CAD file. Any suggestion is more than welcome!! Thanks!

Last edited by c0sk; August 27, 2013 at 12:10.
c0sk is offline   Reply With Quote

Old   August 27, 2013, 09:27
Default
  #2
Senior Member
 
Join Date: Mar 2010
Location: Germany
Posts: 154
Rep Power: 16
cutter is on a distinguished road
Hi, welcome to the forum,

I'm not into the topic myself, but there was someone asking similar questions just a few weeks ago concerning the flight of mosquitos. Search the forum for 'mosquito', this should be a good starting point.

cutter

Last edited by cutter; August 27, 2013 at 12:53. Reason: spelling
cutter is offline   Reply With Quote

Old   August 27, 2013, 12:10
Default
  #3
New Member
 
Join Date: Aug 2013
Location: Italy/UK
Posts: 24
Rep Power: 12
c0sk is on a distinguished road
Thanks, for the reply, I had already seen that and I am currently going through Frank Bos thesis. However my case is slightly different because I do not have any coordinate for the different positions assumed by the wing and I have no idea how to proceed in this sense
c0sk is offline   Reply With Quote

Old   September 7, 2013, 09:36
Default
  #4
Retired Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,975
Blog Entries: 45
Rep Power: 128
wyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to all
Greetings to all!

@Andrea: I'll quote your question from the other thread:
Quote:
Originally Posted by c0sk View Post
My project consists in simulating the wing of an hummingbird, therefore applying that movement via the RBF motion function. What would you recommend as a starting point? Any guide/tutorial which can help me in doing this? I am currently going through Frank Bos Thesis which is a good start. How do you create the geometry (a simple ellipse) in a CAD software ( I mean just the ellipse, or the ellipse in a "box")?
Check this page and the links provided there: http://openfoamwiki.net/index.php/Blender

Beyond this, in case you don't want to use a CAD software, basically what you're looking for is a deformed circle. Check the tutorials that use the feature "arc" that blockMesh has got. For example, the 2nd tutorial on the User Guide is one of those cases: http://www.openfoam.org/docs/user/plateHole.php

Best regards,
Bruno
__________________
wyldckat is offline   Reply With Quote

Old   October 2, 2013, 10:49
Default
  #5
New Member
 
Join Date: Aug 2013
Location: Italy/UK
Posts: 24
Rep Power: 12
c0sk is on a distinguished road
Quote:
Originally Posted by wyldckat View Post
Greetings to all!

@Andrea: I'll quote your question from the other thread:

Check this page and the links provided there: http://openfoamwiki.net/index.php/Blender

Beyond this, in case you don't want to use a CAD software, basically what you're looking for is a deformed circle. Check the tutorials that use the feature "arc" that blockMesh has got. For example, the 2nd tutorial on the User Guide is one of those cases: http://www.openfoam.org/docs/user/plateHole.php

Best regards,
Bruno
Thanks!
I have been going through the Blender tutorial, however a cannot get any good blockMeshdict or snappyHex one.
In the image my simple geometry is shown (.001m thick). I am probably doing something wrong while setting the patches because in the BMdict I only get a vast number of vertices and no actual patches coordinates.
I have tried both autodetect features and selecting manually the edges.

Note: the geometry has been imported as an stl file from Solidworks
Attached Images
File Type: jpg Capture.jpg (26.3 KB, 42 views)
c0sk is offline   Reply With Quote

Old   October 6, 2013, 12:01
Default
  #6
Retired Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,975
Blog Entries: 45
Rep Power: 128
wyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to all
Hi Andrea,

There isn't much I can do to help, without at least an example case of what you're doing.

By the way, did you read this tutorial: http://openfoamwiki.net/index.php/Tut_andrew_blender

Best regards,
Bruno
__________________
wyldckat is offline   Reply With Quote

Old   October 9, 2013, 11:55
Default
  #7
New Member
 
Join Date: Aug 2013
Location: Italy/UK
Posts: 24
Rep Power: 12
c0sk is on a distinguished road
I had a look at that but for the moment I decided to focus on a 2D case by applying the RBF function to the basic airfoil in the tutorial folder (pimpleDyMFoam).
BTW can RBF motion solver be applied to 3d models?
Assuming that I would like to create a full 3D model, and make 2 patches out of the wings, can I apply that movement? Thank you so much!!!

Basically, how do I do something similar to this http://www.youtube.com/watch?v=i6ECzy0jYxE ?
c0sk is offline   Reply With Quote

Old   October 13, 2013, 04:52
Default
  #8
Retired Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,975
Blog Entries: 45
Rep Power: 128
wyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to all
Hi Andrea,

According to what I briefly saw in Frank Bos' thesis - http://repository.tudelft.nl/assets/...daa1b2/bos.pdf - it does seem to work in 3D as well.

Best regards,
Bruno
__________________
wyldckat is offline   Reply With Quote

Old   October 13, 2013, 18:39
Default
  #9
New Member
 
Join Date: Aug 2013
Location: Italy/UK
Posts: 24
Rep Power: 12
c0sk is on a distinguished road
Quote:
Originally Posted by wyldckat View Post
Hi Andrea,

According to what I briefly saw in Frank Bos' thesis - http://repository.tudelft.nl/assets/...daa1b2/bos.pdf - it does seem to work in 3D as well.

Best regards,
Bruno
Thanks Bruno!
I read his work as well, I did get decent result in the 2D case. Im now into the 3D case but cant get the simple mesh. I keep getting the error

Code:
--> FOAM FATAL ERROR: 
Point (0 0 0) is not inside the mesh or on a face or edge.
Bounding box of the mesh:(-4.04979 0.245944 -0.0556248) (4.04975 6.75322 5.42435)

    From function refinementParameters::findCells(const polyMesh&) const
    in file autoHexMesh/autoHexMeshDriver/refinementParameters/refinementParameters.C at line 110.
This is what my snappyHexMeshDict looks like
Code:
castellatedMesh true;
snap            true;
addLayers       false;

geometry
{
    wingL.stl
    {
        type triSurfaceMesh;
        name wingL;
    }
    wingR.stl
    {
        type triSurfaceMesh;
        name wingR;
    }
    defaultName.stl
    {
        type triSurfaceMesh;
        name defaultName;
    }
    body.stl
    {
        type triSurfaceMesh;
        name body;
    }
};

castellatedMeshControls
{
    features
    (
    );
    refinementSurfaces
    {
        wingL
        {
            level (0 0);
            patchInfo
            {
                type patch;
            }
        }
        wingR
        {
            level (2 2);
            patchInfo
            {
                type wall;
            }
        }
        defaultName
        {
            level (0 0);
            patchInfo
            {
                type wall;
            }
        }
        body
        {
            level (1 1);
            patchInfo
            {
                type patch;
            }
        }
    }
    refinementRegions
    {
    }
   locationInMesh (0 0 0) ;

    maxLocalCells 100000;
    maxGlobalCells 2000000;
    minRefinementCells 0;
    nCellsBetweenLevels 1;
    resolveFeatureAngle 30.0;
    allowFreeStandingZoneFaces true;
}

addLayersControls
{
    layers
    {
        "wingL.*"
        {
            nSurfaceLayers 0;
        }
        "wingR.*"
        {
            nSurfaceLayers 0;
        }
        "defaultName.*"
        {
            nSurfaceLayers 0;
        }
        "body.*"
        {
            nSurfaceLayers 0;
        }
    }

    relativeSizes true;
    expansionRatio 1.25;
    finalLayerThickness 0.3;
    minThickness 0.25;
    nGrow 0;
    featureAngle 30;
    slipFeatureAngle 30;
    nRelaxIter 5;
    nSmoothSurfaceNormals 1;
    nSmoothNormals 3;
    nSmoothThickness 10;
    maxFaceThicknessRatio 0.5;
    maxThicknessToMedialRatio 0.3;
    minMedianAxisAngle 90;
    nBufferCellsNoExtrude 0;
    nLayerIter 50;
    nRelaxedIter 20;
    nLayerIter 50;
}

snapControls
{
    nSmoothPatch 3;
    tolerance 1.0;
    nSolveIter 300;
    nRelaxIter 5;
    nFeatureSnapIter 10;
    implicitFeatureSnap false;
    explicitFeatureSnap true;
    multiRegionFeatureSnap false;
}

meshQualityControls
{
    maxNonOrtho 65;
    maxBoundarySkewness 20;
    maxInternalSkewness 4;
    maxConcave 80;
    minVol 1e-13;
    minTetQuality 1e-30;
    minArea -1;
    minTwist 0.05;
    minDeterminant 0.001;
    minFaceWeight 0.05;
    minVolRatio 0.01;
    minTriangleTwist -1;
    nSmoothScale 4;
    errorReduction 0.75;
    relaxed
    {
        maxNonOrtho 75;
    }
}

debug 0;
mergeTolerance 1E-6;
Sorry to bother you but I keep hitting obstacles



Edit: I changed the blockMeshDict to a different one and now I dont get that message anymore but snappyHexMesh run. It finisher very very soon and effectively doesnt do anything as the only thing I can see in paraview is the box. I can open the geometry itself and it is fine and fits conpletely in the box. I attached snappy's Log.

Andrea
Attached Files
File Type: txt LOG.TXT (34.4 KB, 4 views)

Last edited by c0sk; October 13, 2013 at 19:57.
c0sk is offline   Reply With Quote

Old   October 14, 2013, 16:39
Default
  #10
Retired Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,975
Blog Entries: 45
Rep Power: 128
wyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to all
Hi Andrea,

Have a look into the tutorials listed here: http://openfoamwiki.net/index.php/Sn...als_and_Guides

Best regards,
Bruno
__________________
wyldckat is offline   Reply With Quote

Old   October 19, 2013, 17:25
Default
  #11
New Member
 
Join Date: Aug 2013
Location: Italy/UK
Posts: 24
Rep Power: 12
c0sk is on a distinguished road
I went trough those but we no success. Same result, no visible mesh.
I also tried using HelyxOS:
1)created new case
2) Left base mesh settings unchanged
3) in the volume option i did import .stl and imported my stl
Tried both outside and inside but it says it is not supported (cause the geometry might not be closed??)
4) Proceeded to write the mesh.
5) I can see only the box, there is clearly something wrong with my execution of snappy but, due to my limited knowledge, I have no idea.
6) I also tried with a sphere and got nothing as well, so it is me.

Did I miss any step? I left the levels of refinement unchanged cause it did not let me do neither inside or outside (with the sphere I can see that the box gets refined but cant see any sphere inside).
I attached some picture which also show the hummingbird.stl inside the searchable box.
Apologies
Andrea
Attached Images
File Type: jpg Selection_001.jpg (37.5 KB, 44 views)
File Type: jpg Selection_003.jpg (34.6 KB, 38 views)
File Type: jpg Selection_002.jpg (38.3 KB, 32 views)
Attached Files
File Type: txt snappyHexMeshlog.txt (34.5 KB, 3 views)
c0sk is offline   Reply With Quote

Old   October 20, 2013, 03:26
Default
  #12
Retired Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,975
Blog Entries: 45
Rep Power: 128
wyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to all
Hi Andrea,

The quickest way to check if the problem is with the STL file is to run this command:
Code:
surfaceCheck hummingbird.stl
Beyond this, I suggest:
  1. Create a much simpler version of your hummingbird, perhaps a pyramid or 3 pyramids, and start working with that. This way it's a lot easier to diagnose a lot of things.
  2. If you want, you can upload your model "hummingbird.stl" to a DropBox account or similar and share the link to it via "Private Message" with me. I can have a quick look into it, to ascertain what could be wrong with it. But still, this does not discard the need to do the first suggestion!
Best regards,
Bruno
__________________
wyldckat is offline   Reply With Quote

Old   October 25, 2013, 18:26
Default
  #13
New Member
 
Join Date: Aug 2013
Location: Italy/UK
Posts: 24
Rep Power: 12
c0sk is on a distinguished road
Sorted thanks, I realised I was just being an idiot and messed up with the inside/outside refinement boxes etc. I got the geometry in now and I will start soon.
By the way, why if I interrupt a solver while is running from HelyxOs then is compromised and wont run a second time?

Regards

Andrea
c0sk is offline   Reply With Quote

Old   October 26, 2013, 05:54
Default
  #14
Retired Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,975
Blog Entries: 45
Rep Power: 128
wyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to all
Hi Andrea,

Quote:
Originally Posted by c0sk View Post
By the way, why if I interrupt a solver while is running from HelyxOs then is compromised and wont run a second time?
Please report this on HelyxOS' bug tracker: http://sourceforge.net/p/helyx-os/tickets/
And please detail for them the specific steps you take, so that they can reproduce the error!

Best regards,
Bruno
__________________
wyldckat is offline   Reply With Quote

Old   December 11, 2013, 18:55
Default
  #15
New Member
 
Join Date: Aug 2013
Location: Italy/UK
Posts: 24
Rep Power: 12
c0sk is on a distinguished road
Dear Bruno,
I am getting along fairly well!!
However, now the meshes are getting coarser and my machine cannot handle them any more. Consequently, I got access to the University HPC. The cluster has OpenFoam installed but sadly no extension! My supervisor said that we can get the solver and the function installed somehow. Now, is there any way in which I can simply compile the function before every simulation or do I have to install it before? Is it the same for the solver? I need icoDyMFoam and RBFMotion Funtion. What would you recommend? Thanks!!!
Regards
Andrea
c0sk is offline   Reply With Quote

Old   December 15, 2013, 12:10
Default
  #16
Retired Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,975
Blog Entries: 45
Rep Power: 128
wyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to all
Hi Andrea,

Quote:
Originally Posted by c0sk View Post
I am getting along fairly well!!
Good to know!

Quote:
Originally Posted by c0sk View Post
However, now the meshes are getting coarser and my machine cannot handle them any more.
Mmm... you do mean that the meshes are getting more refined? Because the finer the mesh, the more cells there are and therefore more memory and CPU power is necessary.
"Coarser" means that there are a lesser number of cells and therefore less precision in the discretization Hence "coarser".

Quote:
Originally Posted by c0sk View Post
Consequently, I got access to the University HPC. The cluster has OpenFoam installed but sadly no extension!
Do you mean that it does not have 1.6-ext?

Quote:
Originally Posted by c0sk View Post
My supervisor said that we can get the solver and the function installed somehow. Now, is there any way in which I can simply compile the function before every simulation or do I have to install it before? Is it the same for the solver? I need icoDyMFoam and RBFMotion Funtion. What would you recommend?
If you are using 1.6-ext on your computer and the HPC cluster does not have it installed, that's a big problem. I haven't checked but at least "RBFMotion" function might be complicated to port to OpenFOAM 2.x.
In theory, it's just a matter of similarly following the steps from chapter 2 on this tutorial: http://openfoamwiki.net/index.php/Ho...ure_to_icoFoam

Which specific version(s) of OpenFOAM do they have on their cluster? I can try to have a look into this next weekend.

Best regards,
Bruno
__________________
wyldckat is offline   Reply With Quote

Old   February 2, 2014, 12:18
Default
  #17
New Member
 
Join Date: Aug 2013
Location: Italy/UK
Posts: 24
Rep Power: 12
c0sk is on a distinguished road
Quote:
Originally Posted by wyldckat View Post
Hi Andrea,


Good to know!


Mmm... you do mean that the meshes are getting more refined? Because the finer the mesh, the more cells there are and therefore more memory and CPU power is necessary.
"Coarser" means that there are a lesser number of cells and therefore less precision in the discretization Hence "coarser".


Do you mean that it does not have 1.6-ext?


If you are using 1.6-ext on your computer and the HPC cluster does not have it installed, that's a big problem. I haven't checked but at least "RBFMotion" function might be complicated to port to OpenFOAM 2.x.
In theory, it's just a matter of similarly following the steps from chapter 2 on this tutorial: http://openfoamwiki.net/index.php/Ho...ure_to_icoFoam

Which specific version(s) of OpenFOAM do they have on their cluster? I can try to have a look into this next weekend.

Best regards,
Bruno
Ahahah yeah I did mean refined. Sorry! That issue has been solved and the extension version of openFoam is now installed on the cluster.

However, I did encounter a major issue. As showed in the picture, the plate is moving as it should and it did work fine on the modified geometry of the movingblockRBF case. However, I had to enlarge the domain and reduce the dimension of the block. I am using the same kinematic model I tested on the tutorial but after approx .2 seconds (62000 cells, approx 3 minutes after starting) of simulation, it crashes since the velocity goes to an outrageous order of magnitude (10^34 etc). My hypothesis is that since the mesh gets to squashed I get numerical errors. I noticed that by modifying some parameters in the dynamic mesh dict I can delay the problem but i can stop it. Do you know where I can find some tips on how to avoid this? Thanks!!
Attached Images
File Type: jpg Selection_012.jpg (84.9 KB, 28 views)
c0sk is offline   Reply With Quote

Old   February 2, 2014, 12:27
Default
  #18
Retired Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,975
Blog Entries: 45
Rep Power: 128
wyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to all
Hi Andrea,

I think the problem is because the cells are getting extremely compressed on the right side of the mesh. You need to increase the region through which the mesh can expand, so that it can distribute the cell compression along the cells to its right.

Problem is that I'm not familiar with this specific mesh motion, so I don't know which parameters need tuning

Can you share the contents of the file "constant/dynamicMeshDict"? And indicate which parameters you've been changing?

Best regards,
Bruno
__________________
wyldckat is offline   Reply With Quote

Old   February 2, 2014, 12:31
Default
  #19
New Member
 
Join Date: Aug 2013
Location: Italy/UK
Posts: 24
Rep Power: 12
c0sk is on a distinguished road
Dear Bruno, Thanks for the quick reply!!
Here is my dict
Code:
dynamicFvMesh dynamicMotionSolverFvMesh;

solver RBFMotionSolver;

movingPatches ( block );

staticPatches ( left right top bottom );

coarseningRatio 5;

includeStaticPatches   no;
frozenInterpolation    yes;

interpolation
{
    RBF  IMQB;
    focalPoint (0 0 0);
    innerRadius 1;//5.0
    outerRadius 1.5; //12;
    polynomials true;

    W2Coeffs
    {
        radius     4;
    }
    TPSCoeffs
    {
        radius    5;//5;
    }
    GaussCoeffs
    {
        radius     5; //0.1;
    }
    IMQBCoeffs
    {
        radius     0.01;//0.001;
    }
}
I have been changing the values where there is a comment. The comments show the original value.
c0sk is offline   Reply With Quote

Old   February 2, 2014, 13:29
Default
  #20
Retired Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,975
Blog Entries: 45
Rep Power: 128
wyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to all
Hi Andrea,

The two most suspicious parameters are:
Code:
outerRadius 1.5;
I believe you should increase that value.

Code:
    IMQBCoeffs
    {
        radius     0.01;//0.001;
    }
This is the entry associated to "RBF IMQB;", therefore the other ones above ("W2Coeffs" and so on) are likely not used. And I think you should also increase this value considerably more, perhaps up to 0.1 or 0.5.

But as I said, I'm not familiar with this dynamic mesh motion, so this is just an educated guess .

Best regards,
Bruno
__________________
wyldckat 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
Simulation and Optimisation of centrifugal fan 3D to 2D eRzBeNgEl STAR-CCM+ 0 January 31, 2013 13:21
[snappyHexMesh] Meshing 3D wing (hydrofoil) fails klausb OpenFOAM Meshing & Mesh Conversion 0 December 28, 2011 14:26
Pitching Wing simulation rieuk OpenFOAM 5 March 21, 2010 03:12
LES of wing... ned help mariachi FLUENT 9 January 19, 2010 11:55
Setting up Flow around a Wing Simulation help Atella CFX 3 January 3, 2010 11:51


All times are GMT -4. The time now is 15:21.