Skip to content

Simple scripts and functions for topology optimisation.

License

Notifications You must be signed in to change notification settings

JuliaTopOpt/SimpleTopOpt.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Simple scripts and functions for topology optimisation.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published