来自 Jabra 的特邀博主 Junghwan Kook 介绍了一个多物理场拓扑优化框架,以及它的优势,并演示了如何使用它。Junghwan Kook 是参考文献 1 的论文作者,其论文中的一些插图被用在了这篇博客中。
这篇博客介绍了一个使用 COMSOL API 接口和 LiveLink™ for MATLAB® 构建的多物理场拓扑优化框架,此内容已在参考文献 1 上发表。文中通过一个可以使用 COMSOL Desktop® 解决的声-结构相互作用 (ASI) 问题对该框架进行了演示。这个框架的优势是它能够解决(当前)与 COMSOL Desktop ® 不兼容的问题。
动机拓扑优化问题总是使用基于梯度方法来求解,这需要使用伴随灵敏度分析。如果基础方程是稳态的或瞬态的,COMSOL Desktop® 支持求解此类问题。因此,最常见的问题,包括频域问题,都可以解决。对于上述框架,它在某些情况下提供了一些独特的优势。例如,它能够:
将目标或约束与稳态和瞬态求解器相结合测试自定义优化求解器支持灵敏度不一致的情况,可使用包括灵敏度过滤或类似的启发方式在不重新初始化优化求解器的情况下,更改迭代之间的数值参数的值虽然这些优势可能与学术研究用户最相关,但也有一些优势会吸引所有用户。例如,该框架可以在以下情况下避免冗余计算:
对于扫描问题(例如多个载荷工况),可以避免计算所有扫描参数值的约束灵敏度对于扫描参数仅影响某些因变量的情况,可以将解限制为除扫描参数的第一个值之外的所有变量在迭代求解器的背景下,避免一些冗余计算工作可能不太重要,并且上述框架其实增加了计算和工程时间。尽管如此,该框架确实有可能加快上述列出情况的计算速度。
拓扑优化COMSOL Multiphysics® 软件的功能强大,我们可以利用 LiveLink™for MATLAB® 的功能实现拓扑优化框架,同时利用 MATLAB® 编程环境的易用性和快速实现的优势。
拓扑优化是一种有效的方法,在满足产品性能目标的同时,针对给定的载荷和边界条件,可以在给定的设计空间内优化材料分布。在早期概念设计阶段使用拓扑优化方法,可以取代昂贵且繁琐的设计迭代,以达到最佳设计效果,从而节省时间。尽管在过去几十年里,拓扑优化不断发展并被广泛采用,将拓扑优化应用于新的应用领域(即将拓扑优化与现有软件包不支持的物理过程相结合)仍然具有挑战性。下面列出了开发多物理场拓扑优化算法或程序的几个难点。
为多物理场问题开发有限元模型材料插值和设计变量的参数化目标函数和设计灵敏度分析后处理和操作拓扑设计结果上述列出的挑战通常会使普通从业者和研究人员不愿将自己已经发表的一些教学案例和简单框架扩展到多物理场拓扑优化。
这里讨论的拓扑优化算法和程序是使用 COMSOL API 和 LiveLink ™ for MATLAB® 开发的,适合那些希望在多物理场问题中使用拓扑优化设计的用户。
多物理场问题有限元模型的发展我们可以通过 COMSOL API 使用 模型对象 访问和轻松操作 COMSOL® 模型的所有特征和数据结构,它提供了多种方法让用户可以执行任务,例如创建几何和网格,以及设置和运行操作序列来求解模型。模型对象的结构符合 Java® 编程语言环境,并提供了几种方法来执行有限元分析和优化所需的一系列任务。我们可以使用 LiveLink ™ for MATLAB® 来访问模型对象和实用函数。
采用 ASI 问题的拓扑优化来证明所引入的框架在系统设计多物理场问题方面的有效性(参考文献 1)。两个声域之间的分区结构的设计问题如图 1 所示,该问题被用作求解多个 ASI 拓扑优化的基准问题。我们可以使用拓扑优化来设计分区结构,以使从入口辐射的声压在出口处最小化。
图1. 考虑声-结构相互作用的基准拓扑优化问题的示意图。
在示例中,将位移( extbf{u})和压力(p)作为状态变量 (a 公式 extbf{u}/p)的混合有限元公式,用于解决 ASI 问题的拓扑优化问题。我们可以对所有结构、声学和完全耦合的 ASI 问题进行模拟,而无需通过更改混合的公式 extbf{u}/p 中的材料属性,来明确构建声学和结构域之间的边界条件。因此,对于结构-声学相互作用问题,公式 extbf{u}/p 有助于实现基于密度的拓扑优化。
COMSOL® 支持混合有限元公式,但该框架不限于软件的物理场接口,因为它还包括来自 MATLAB®编程环境的基于方程的仿真功能。例如,如图 2 所示,图 1 中位移场的域积分项扩展为直观的弱形式(见公式 (A)),我们可以通过弱形式偏微分方程 接口,使用 COMSOL 可解释的语法轻松实现该公式,即
-((test(ux)-test(vy))*G*(ux-vy)+(test(uy)+test(vx))*G*(uy+vx))
+(test(ux)*p+test(vy)*p)+rho*omega^2*(test(u)*u+test(v)*rho*v.
有关在 COMSOL API 中实现弱形式的