Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enforcing symmetry #29

Open
sebastianmaklary opened this issue Mar 8, 2023 · 3 comments
Open

Enforcing symmetry #29

sebastianmaklary opened this issue Mar 8, 2023 · 3 comments

Comments

@sebastianmaklary
Copy link

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?

@fandaL
Copy link
Collaborator

fandaL commented Mar 8, 2023

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.

@sebastianmaklary
Copy link
Author

sebastianmaklary commented Mar 9, 2023

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?

@fandaL
Copy link
Collaborator

fandaL commented Mar 9, 2023

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).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants