In this paper we present GridapTopOpt, an extendable framework for level set-based topology optimisation that can be readily distributed across a personal computer or high-performance computing cluster. The package is written in Julia and uses the Gridap package ecosystem for parallel finite element assembly from arbitrary weak formulations of partial differential equation (PDEs) along with the scalable solvers from the Portable and Extendable Toolkit for Scientific Computing (PETSc). The resulting user interface is intuitive and easy-to-use, allowing for the implementation of a wide range of topology optimisation problems with a syntax that is near one-to-one with the mathematical notation. Furthermore, we implement automatic differentiation to help mitigate the bottleneck associated with the analytic derivation of sensitivities for complex problems. GridapTopOpt is capable of solving a range of benchmark and research topology optimisation problems with large numbers of degrees of freedom. This educational article demonstrates the usability and versatility of the package by describing the formulation and step-by-step implementation of several distinct topology optimisation problems. The driver scripts for these problems are provided and the package source code is available at https://github$.$com/zjwegert/GridapTopOpt.jl.
翻译:本文提出了GridapTopOpt——一个可扩展的基于水平集的拓扑优化框架,可便捷地部署于个人计算机或高性能计算集群。该程序包采用Julia语言编写,利用Gridap软件包生态系统实现基于任意偏微分方程弱形式的并行有限元组装,并借助可移植可扩展科学计算工具包(PETSc)提供的可扩展求解器。其用户界面直观易用,允许通过近乎与数学符号一一对应的语法实现各类拓扑优化问题。此外,我们采用自动微分技术,以缓解复杂问题中灵敏度解析推导带来的计算瓶颈。GridapTopOpt能够求解具有大规模自由度的一系列基准与研究型拓扑优化问题。本文通过阐述多个不同拓扑优化问题的公式化描述及分步实现过程,演示了该程序包的可用性与通用性。文中提供了这些问题的驱动程序脚本,源程序包可从https://github.com/zjwegert/GridapTopOpt.jl获取。