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

topopt tutorial on 1d multilayer film optimization #2820

Open
stevengj opened this issue Apr 18, 2024 · 1 comment
Open

topopt tutorial on 1d multilayer film optimization #2820

stevengj opened this issue Apr 18, 2024 · 1 comment

Comments

@stevengj
Copy link
Collaborator

stevengj commented Apr 18, 2024

As discussed with @oskooi, it might be nice to have a tutorial with "1d" topology optimization, i.e. designing a multilayer film. This can be done even in 2d and 3d just by making the material grid a 1x1xN grid (which can then be "extruded" over a higher-dimensional block object).

  1. For example, designing a multilayer film to minimize transmission should result in essentially a quarter-wave stack (possibly with some modification for the first and last layers). Just minimize transmission with the abovementioned 1d material grid, ramping up β slowly as usual to let it decide on the number of layers.
  2. We should also be able to fix the number of layers. If you just set β=infinity (with the new subpixel-smoothing algorithm) then the optimization will tend not to change the topology (because the derivative is not correct for changes in topology) unless it happens to take a very large step. You can probably prevent it from doing this by simply counting the number of layers (from the projected material grid) on each step and adding a large penalty to the objective function if the number of layers changes, which will cause the optimization algorithm to backtrack.

(You could also use a level-set representation if you have a differentiable mapping function that maps a set of layer thickness to a density ρ, ala #2235.)

On a separate (but related) note, we should probably update the fill_factor calculation in the subpixel smoothing code here to always compute the fill factor for a 3d spherical smoothing kernel — i.e. take the perspective that even "2d" and "1d" structures are actually 3d structures that are invariant in 1 or 2 directions, respectively.

@erikshipton
Copy link

Isn't this kind of like the Needle Optimization for thin films? I apologize if thats obvious and been pointed out elsewhere but Needle optimization for thin films kind of feels like topological optimization in 1D.

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

No branches or pull requests

2 participants