形状优化可以被用来改善许多不同物理领域的设计。在这篇博客中,我们将重点讨论波动光学中的形状优化。我们将复习 COMSOL Multiphysics® 软件中的形状优化功能,并说明当这些功能被用在波动光学类应用时,可以用它实现什么。
电磁学中的形状优化系列博客内容分为两部分,这是第一篇文章。第二篇文章将重点讨论射频(RF)应用中的形状优化。
参数优化与形状优化
形状优化与基于梯度的优化是兼容的,因为几何形状的变化是通过变形网格实现的。这可能是以较低的单元质量为代价的,从而限制几何形状的变化程度,特别是在三维中。参数优化与基于梯度的优化不兼容,因为几何形状的变化是通过重新划分网格实现的,请看下面的动画演示。
参数优化涉及重新划分网格,而形状优化则是对网格进行变形处理。
原则上,参数优化是一种比形状优化更通用的技术,但在实践中,由于它与基于梯度的优化不兼容,导致这个方法很慢。这限制了优化变量的数量,从而限制了设计的自由度。我们可以用参数优化来解决本系列博客中的例子。COMSOL® 确实支持这一点,但是,即使这些例子相对简单,这一方法的计算成本却高得惊人。因此,在很多问题上,形状优化比参数优化更适合。
COMSOL Multiphysics 包括一组内置功能,可以简化形状优化问题的设置。多项式壳 和自由形状壳 功能是专门为壳设计的,通常是用在结构力学建模中。然而,大多数问题是在域(而不是壳)上定义的,多项式边界 和自由形状边界 功能可以用来优化与这些域相邻的边界。就像它的名称所显示的,我们可以选择以多项式或基于自由偏微分方程(PDE)的方法进行正则化处理。变换 功能将形状变化限制在平移、缩放和/或旋转上。这个功能可以在域和边界上使用。该功能将倾向于改变边界的曲率和点的角度,但通过使用一阶多项式或变换 功能可以保持直线。最后,对称/辊支承 功能可以将边限制在平面上,或者将点限制在二维直线上,请看下面的图片示例。
对于改变一个正方形的上边界,使它接近我们的目标边界(橙色)的问题,图中显示了四种不同类型的形状优化。为了优化第一个图的初始设计,将变换 功能与对称性/辊支承功能相结合使用,可以使上边界在 y 方向上移动。第二个图显示的是同时启用了旋转功能的变换,这需要使用一阶多项式,而不是对称性/辊支承功能。最后两个例子分别展示了多项式和自由形状的方法,两者之间没有什么区别。但是请注意,在这些例子中没有与左边边界相关的特征,因此左上角的点是固定的。
与其他功能相比,变换功能与较少的设计自由度有关,但这在将优化设计转换为 CAD 几何图形方面是一个优势。我们的系列博客将重点讨论 2D 中的形状优化,但所有的功能都可以在 3D 中使用。在下面的章节中,我们将举两个波动光学的例子。
示例 1:过滤
第一个例子考虑设计一个有弯曲的光子晶体。这个晶体由砷化镓制成的支柱组成,并使用了变形功能使柱子的位置可以改变。我们的目标是使波长为 1 µm 的光实现高功率传输,而波长为 1.3 µm 的光实现低功率传输。因此,目标函数的表达式将被最大化处理:
{filter}= \left. P_\mathrm
{out, 1 µm}
\right/ P_\mathrm
{out, 1.3 µm}
优化后的几何形状如下图所示,但由于问题的非直观性,我们很难理解它的工作原理。不过,我们可以再看一下输出边界的功率。可以清楚地看到,优化强调的是较大波长处的功率最小化,所以用最小化目标来表达目标函数可能更好。这将在下一个例子中得到证明。
左图:初始设计的几何图形用灰色绘制,优化后的设计用黑色绘制。右图:输出功率与波长的函数关系,优化中考虑了两个波长(以点表示)。
示例 2:分离器
第二个例子也考虑了光子晶体,但这次是用于多路分解。我们想设计一个装置,将两个不同的波长(\lambda_1 和 \lambda_2)路由到两个不同的输出端口,同时隔直其他波长。你可以把隔直和路由 \phi_B,\phi_R的目标表达写作:
其中,P_\mathrm{min} 和 P_\mathrm{max}
分别是路由和隔直的最小和最大功率。请注意,路由目标的定义取决于它是为 \lambda = \lambda_1 还是为 \lambda = \lambda_2 计算,因此,信号被激励向所期望的输出端口。如果相关的波长达到了所需的功率,则两个目标都等于-1,而如果没有达到所需的功率,则会得到更高的值,所以目标应该是最小化的。这些目标在最小化公式中被结合起来,也就是说,目标被当作几个目标的最大值。一些目标的不同只是因为它们是在不同的波长下计算的,而其他的不同是因为设备的理想行为取决于波长,因此目标的定义也取决于波长。最后的目标表示为:
如果波长在 \Delta \lambda / 2,将使用路由目标;如果不在 \Delta \lambda / 2,将使用隔直目标。
与第一个例子类似,我们将使用变换 功能来优化光子晶体中支柱的位置。下面的动画说明了优化设计以及 P^1_\mathrm{out} 和 P_\mathrm{out}^2 的情况。电场也是在 \lambda_1 和 \lambda_2 的情况下显示的,每次优化迭代共计算了 14 个波长。
电场的 Z 分量被绘制为两个波长,并显示了端口的输出功率。
在这个例子中,我们选择了 P_\mathrm{min}=5P_\mathrm{max},于是产生了下图所示的频谱,但也可以通过改变参数来优先考虑隔直或路由。
在优化(点)中,使用的波长的输出端口功率被绘制出来,并与在变形配置中重新划分网格后的端口功率图相比较。
端口功率在重新划分网格前后存在小的偏差,但只针对少数波长,而且优化结果似乎没有利用数值效应。此外,我们还可以看到,尽管目标只要求在主端口有较高的输出功率,但我们只在副端口得到一个小的输出功率。最后,值得注意的是,在所有的优化迭代中都考虑了每个支柱的位置对每个波长的敏感性。因此,每次迭代都会向优化求解器提供大量高度相关的信息。因此,只需经过 50 次迭代,就有可能找到 234 个控制变量的值。
在选择用于优化的波长时,有一个试验和错误的因素,最后一个例子使用了 31 个波长,这在计算上代价是很高的。计算时间可以通过使用集群来降低,我们将在本系列博客的第二部分中证明这一点,届时我们将研究射频频谱的优化问题。下一篇文章中所有显示的例子都将使用最小化公式与变换 和多项式边界 功能相结合。
下一步
欢迎下载本博客中介绍的模型,更深入地了解它的设置和结果。
评论 (1)
维明 王
2022-12-10good job