calculix / beso

Python code for topology optimization using CalculiX FEM solver.
GNU Lesser General Public License v3.0
314 stars 47 forks source link

How to set the value of radius in filter_list? #8

Closed 461353349 closed 5 years ago

461353349 commented 5 years ago

When radius = 1.0, the result is mass. When radius = 4.0, the result is OK. When radius = 10.0, the result is Good. The radius of filter_list has too much influence on the result. So I have two questions about it. 1、The radius cannot be too small for this model, Why is avarage values of nearby elements so important? 2、How to set the value of radius for the users? part2 rad1 rad4 rad10

part2.zip

fandaL commented 5 years ago

Filtering is needed to suppress so called chackerboard effect (a pattern which looks like chess board in the middle figure). without_and_with_filter It is cased by the nature of FEM. Finite elements are connected via nodes (not via edges), so the optimization can lead to "void" element here and there in the area where you want "solid" material. Filter radius means a distance to which averaging is calculated from each element center. I usually set radius to be 2 times mesh element size, so that there are several elements in the range to apply filtering. Filter radius also influences size of structural members, otherwise optimization results can be mesh dependent.

461353349 commented 5 years ago

Thank for your guidance very much! Avarage edge length could be calculated, So the radius of filter could be set automatically. This would be nice for users.

fandaL commented 5 years ago

It would be possible to add automatic as an option, but I will not make it soon.

461353349 commented 5 years ago

Yes. It is easy to implement. Setting manually would give more control for testing. Beso is good.