Some common meshes for topology optimization problems
Some examples
# Simply supported problem with 2D trusses: 6 x 6 grid
Simply_supported2D(6,6)
# Simply supported problem with 3D trusses: 6 x 6 x 6 grid
Simply_supported3D(6,6,6)
# Simply supported problem with 2D solid: 6 x 6 grid
Simply_supported2D(6,6,:solid2D)
# Simply supported problem with 3D solid: 6 x 6 x 6 grid
Simply_supported3D(6,6,6,:solid3D)
# Simply supported problem with 2D trusses: 6 x 6 grid in a 2 x 2 m domain
Simply_supported2D(6,6; Lx=2.0, Ly=2.0)
# Inverter with 2D truss
Inverter2D(10,10)
Simply supported 2D
# ----------------
# | |
# | Ω |
# | |
# > ----------------<
# 𝝙 ↓ ↓ ↓ 𝝙
# F/4 F/2 F/4
Simply_supported2D(nx::Int64,ny::Int64,etype=:truss2D;
Lx=1.0, Ly=1.0, force=1.0, A=1E-4 ,
Ex=1E9, νxy=0,
density=7850.0,thickness=0.1,
options = Dict{Symbol,Matrix{Float64}})
nx must be even
Cantilever beam with bottom load 2D
#
# \----------------
# \ |
# \ Ω |
# \ |
# \----------------
# ↓
# F
#
function Cantilever_beam_bottom2D(nx::Int64,ny::Int64,etype=:truss2D;
Lx=8.0, Ly=5.0, force=1.0, A=1E-4,
Ex=1E9,νxy=0,
density=7850.0,thickness=0.1,
limit_stress=1E6,
options = Dict{Symbol,Matrix{Float64}})
Cantilever beam with central load 2D
#
# \----------------
# \ |
# \ Ω | ↓ F
# \ |
# \----------------
#
#
#
function Cantilever_beam_middle2D(nx::Int64,ny::Int64,etype=:truss2D;
Lx=8.0, Ly=5.0, force=1.0, A=1E-4,
Ex=1E9, νxy=0,
density=7850.0,thickness=0.1,
limit_stress=1E6,
options = Dict{Symbol,Matrix{Float64}})
ny must be even
# z
# |
# ---------------- X-------------X ---->y
# | | | |
# | Ω | | F |
# | | | |
# > ----------------< ----->y X-------------X
# 𝝙 ↓ 𝝙 |
# F x
# Front View Top view
#
function Simply_supported3D(nx::Int64,ny::Int64,nz::Int64,etype=:truss3D;
Lx=1.0, Ly=1.0, Lz=1.0, force=1.0, A=1E-4,
Ex=1E9, νxy=0,
density=7850.0,thickness=0.1,
limit_stress=1E6,
options = Dict{Symbol,Matrix{Float64}})
nx and ny must be even
#
# X----------------
# | |
# | Ω |
# F | |
# --> |----------------
# ooooooooooooooo
# -----------------
#
function Inverter2D(nx::Int64,ny::Int64,etype=:truss2D;
Lx=1.0, Ly=0.5, force=1.0, A=1E-4 ,Ex=1E9,
νxy=0.0, density=7850.0,thickness=0.1,
limit_stress=1E6,
options = Dict{Symbol,Matrix{Float64}})