What follows is a program spliced with comments.
using TopOpt
E = 1.0 # Young’s modulus
v = 0.3 # Poisson’s ratio
f = 1.0; # downward force
nels = (160, 40)
problem = HalfMBB(Val{:Linear}, nels, (1.0, 1.0), E, v, f)
solver = FEASolver(Direct, problem; xmin=0.01, penalty=TopOpt.PowerPenalty(3.0))
comp = Compliance(solver)
volfrac = Volume(solver)
sensfilter = SensFilter(solver; rmin=4.0)
beso = BESO(comp, volfrac, 0.5, sensfilter)
x0 = ones(length(solver.vars))
result = beso(x0)
TopOpt.Algorithms.BESOResult{Float64, Vector{Float64}, Float64, Float64, Bool, Int64}([1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 … 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 347.57452308620924, 9.602487566045443e-5, true, 117)
Need to run using Pkg; Pkg.add(["Makie", "GLMakie"])
first
using Makie, GLMakie
using TopOpt.TopOptProblems.Visualization: visualize
fig = visualize(problem; topology = result.topology)
Makie.display(fig)
This notebook was generated using Literate.jl.