Skip to content

A beautifully Julian topology optimization package.

License

Notifications You must be signed in to change notification settings

christianhvejsel/TopOpt.jl

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TopOpt

Project Status: WIP – Initial development is in progress, but there has not yet been a stable, usable release suitable for the public.

Actions Status codecov Documentation

TopOpt is a topology optimization package written in Julia. To learn more and see some examples, visit the documentation.

Installation

To install TopOpt.jl, run:

using Pkg
pkg"add TopOpt"

To additionally load the visualization submodule of TopOpt, you will need to install Makie.jl using:

pkg"add Makie"

To load the package, use:

using TopOpt

and to optionally load the visualization sub-module as part of TopOpt, use:

using TopOpt, Makie

Features available

All the following features are available in TopOpt.jl but the documentation is currently lacking! Feel free to open an issue to ask about how to use specific features.

  • 2D and 3D truss topology optimization
  • 2D and 3D continuum topology optimization
  • Unstructured ground mesh
  • Linear and quadratic triangle, quadrilateral, tetrahedron and hexahedron elements in ground mesh
  • Fixed and non-design domain support
  • Concentrated and distributed loads
  • SIMP, RAMP, continuation SIMP/RAMP and BESO
  • Compliance, volume and stress functions
  • End-to-end topology optimization from INP file to VTK file
  • Interactive visualization of designs and deformation
  • Automatic differentiation of arbitrary Julia functions
  • Method of moving asymptotes, NLopt, Ipopt and augmented Lagrangian algorithm for optimization
  • Density and sensitivity filters
  • Heaviside projection
  • Handling load uncertainty in compliance-based topology optimization

Contribute

We always welcome new contributors! Feel free to open an issue or reach out to us via email if you want to collaborate. There are plenty of things to do including beginner friendly tasks and research-oriented tasks. You can help us create the best topology optimization ecosystem in the world! Some beginner-friendly ideas you could be working on include:

  1. Multi-material design parameterisation
  2. Level set design parameterization
  3. Lattice design parameterization
  4. Neural network based design parameterization
  5. Local volume constraints
  6. Supporting rectilinear grids
  7. Wrapping OpenLSTO_jll which is the precompiled binary for M2DOLab/OpenLSTO
  8. Wrapping TopOpt_in_PETSc_jll which is the precompiled binary for topopt/TopOpt_in_PETSc
  9. Reliability-based design optimization
  10. Robust optimization
  11. Stochastic optimization

Questions?

If you have any questions, join us on on the #topopt channel in the Julia slack, open an issue or shoot us an email.

About

A beautifully Julian topology optimization package.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Julia 100.0%