beso icon indicating copy to clipboard operation
beso copied to clipboard

Enforcing symmetry

Open sebastianmaklary opened this issue 2 years ago • 3 comments

Hi there

Are there any way of enforcing symmetry if I ensure that my mesh is symmetric? I can't seem to find anything in the script that hints at it being implemented. When the load is also symmetric, I can do this by modelling half the part and using a frictionless constraint on the symmetry plane but when the load is not symmetric across the geometric symmetry plane, then the full geometry need to be analyzed. What I can do in Mecway is to mesh half the part and mirror the mesh but then something would need to be added to the beso script that only performs topology optimizing on one side of the symmetry plane and applying the same state to the matching element across the symmetry plane.

I imagine that the implementation of this could make use of the computed center of gravity coordinates as these should be exact mirrors across the symmetry plane if the mesh is mirrored. In cases where the mesh is not mirrored, the matching element could be found by searching for elements for which the center of gravity of the "slave" element is positioned within some spherical tolerance of the "master" element. This implementation could then also be used for multiple symmetry planes as long as the order of mirroring the element state is chosen such that it doesn't copy the state of an element that will then later have its state altered in the same iteration.

What do you think about this?

sebastianmaklary avatar Mar 08 '23 08:03 sebastianmaklary

Hi, symmetry is not supported now. Maybe it would not be so difficult to modify the filters to enforce symmetry. E.g. when having two symmetric halves, I'm not sure if it will optimize faster (with actual code structure), considering the code evaluating same number of load cases on same number of elements.

fandaL avatar Mar 08 '23 21:03 fandaL

Hi :) I agree that the Calculix part will not run faster with geometrical symmetry and that the savings from only running the full switching function on half the mesh may be negated by having to identify pairs of elements. Running faster is however not the reason for implementing symmetry requirements. At my work, we manufacture and sell race cars and here, many components are designed symmetrically to allow the same spare part to fit the left and right side of the car and also because it need to be somewhat visually pleasing in the eyes of the customer. We want to employ the same design strategy for topology optimized parts. There are also components that in one place will be exposed to the same load magnitude in opposing directions as it need to actuate something both ways and then geometrical symmetry may indeed reduce the computation time as there only need to be half the load cases.

When you say that modifying the filters may not be difficult, is that then something that you consider doing or is further development of the code something that you prefer others to contribute with?

sebastianmaklary avatar Mar 09 '23 08:03 sebastianmaklary

The story is that beso code was experimental, not primarily for the classical compliance-based solid-void topology optimization. I have some sketches of SIMP method better fitting this, but it is not working by now. From the long perspective it would make sense to start coding from a scratch and interact with a code of the solver to enable more options and deal better with large meshes. I will try to save some time for implementing symmetry (I agree it is useful).

fandaL avatar Mar 09 '23 11:03 fandaL