Skip to content

Latest commit

 

History

History
115 lines (79 loc) · 4.27 KB

README.md

File metadata and controls

115 lines (79 loc) · 4.27 KB

SimpleTopOpt

Stable Dev Build Status Coverage Code Style: Blue

A small package implementing basic techniques for classic elastic compliance, thermal compliance, and fluidic topology optimization problems, following Efficient topology Optimization in MATLAB using 88 lines of code, the toph code listing from Topology Optimization, and A detailed introduction to density-based topology optimization of fluid flow problems with implementation in MATLAB.

Features and Usage

SimpleTopOpt.jl implements three topology optimization algorithms following popular educational papers for solutions to problems in structural compliance, thermal compliance, and fluid flows. The package is primarily accessed through the optimize function and problem containers Top88Problem, TophProblem, DoublePipeProblem, and PipeBendProblem, the latter two of which are both fluid flow problems.

Top88

This solves the classical MBB beam problem, where specifically we seek to minimize the compliance of a structure within a rectangular domain, on which a load is placed on the top left corner; the left side and bottom right corner are fixed.

We expect a structure composed of triangles eventually connecting the two fixed components.

domain_1 = Top88Domain(60, 40)

SIMP = ModifiedSIMPParameters(penal=3.0)
optimizer = OptimalityCritera()
filter = SensitivityFilter()

problem = Top88Problem(domain, SIMP, optimizer, filter)

sol = SimpleTopOpt.Top88.optimize(problem)

heatmap(sol.design)

TopH

This solves a classical thermal compliance problem, where specifically we seek to minimize the thermal compliance achievable in a unit square domain wherein the top middle third is removed, allowing heat to escape, while the domain is constantly and evenly heated.

We expect a symmetric structure branching out like tree roots as to maximize the surface area.

using SimpleTopOpt
using Plots

domain = TophDomain(40, 40)

SIMP = ModifiedSIMPParameters(penal=3.0)
optimizer = OptimalityCriteria()
sensitivity_filter = SensitivityFilter()

problem = TophProblem(domain, SIMP, optimizer, sensitivity_filter)

sol = SimpleTopOpt.TopH.optimize(problem)

heatmap(sol.design)

Topflow

Warning: Topflow currently requires MATLAB.jl, which itself requires a working MATLAB installation before 2022a. See the MATLAB.jl page for more detail.

This implements two fluidic topology optimization problems.

In the first problem, the double pipe problem, we seek to minimize the dissipated energy (with the Brinkman penalty term) over a rectangular domain with two pairs of cut-outs immediately facing each other. So, we expect to see two pipes, each connecting a pair.

In the second problem, the pipe bend problem, we seek to minimize the dissipated energy in a rectangular domain with a cutout on the left and bottom sides. So, we expect to see a sort of pipe form connecting immediately these cutouts.

using SimpleTopOpt
using Plots    

Lx = 1.0; Ly = 1.0; nely = 30
volfrac = 1/3 ; Uin = 1e0; rho = 1e0
mu = 1e0; conit = 50

domain = TopflowDomain(Lx, Ly, nely)
fea = SimpleTopOpt.TopflowFEA(domain)
optimizer = OptimalityCriteria()
pbbc = SimpleTopOpt.PipeBendBC(domain, fea, Uin)
pbp = PipeBendProblem(domain, volfrac, optimizer)

sol = SimpleTopOpt.TopFlow.optimize(pbp)

heatmap(sol.design)

Acknowledgements

Thanks to Mohamed Tarek and Yuqing Zhou for their advice over summer 2023 as the initial development was underway.