网站公告: 诚信为本:市场永远在变,诚信永远不变。
咨询热线

400-123-4567

THE LATEST INFORMATION

| 九天资讯 |

什么是拓扑优化中的水平集法

时间:2024-06-04 16:24:58
  

水平集法(level-set)在本人刚接触拓扑优化那会就听闻,但是一直搞不懂具体原理与细节,比如下图文章中对水平集的讲解

上面文章为Fabrication-constrained nanophotonic inverse design,看了半天,最重要的问题, \\phi(x,y) 函数是啥?怎么取?这才是最关键的问题,然而一直似乎没有文章或者资料详细解释这个!!(有相关资料的朋友求提供)
不过没关系,最近总算成功理解了这个所谓的水平集法的各种细节(感谢各方大佬的耐心教导),写下本文作为记录。

首先从无人细谈的 \\phi(x,y) 开始,它其实就是一个自定义函数,有多自定义呢?就是你随便random一个矩阵都可以,没错就是形如 randn(Nx,Ny) 这样生成的矩阵。接下来,再来看方程
\\phi_t+v(x,y)|\
abla\\phi|=0\\\\首先是 \\phi_t ,说明 \\phi 不仅是 x 跟 y 的函数,还是时间 t 的函数,不过这不重要。接着是 \
abla\\phi ,这个要怎么求呢?这里就需要使用到计算物理的知识了,因为
\
abla\\phi=\\frac{\\partial\\phi}{\\partial{x}}\\overrightarrow{e_x}+\\frac{\\partial\\phi}{\\partial{y}}\\overrightarrow{e_y}\\\\计算物理里面,微分和积分都是用数值的方式做的,因此上面的表达式也是用数值进行计算
\
abla\\phi=\\frac{\\partial\\phi}{\\partial{x}}\\overrightarrow{e_x}+\\frac{\\partial\\phi}{\\partial{y}}\\overrightarrow{e_y}=\\frac{\\phi(x+\\Delta{x},y)-\\phi(x,y)}{\\Delta{x}}\\overrightarrow{e_x}+\\frac{\\phi(x,y+\\Delta{y})-\\phi(x,y)}{\\Delta{y}}\\overrightarrow{e_y}\\\\ 所以这里直接对生成进行差分就可以了,而函数 v(x,y) 就是对目标函数求导得到的梯度(这个近期可能也会写一篇文章谈谈),所以最后就是求出了
\\phi_t=-v(x,y)|\
abla\\phi|\\\\ 然后就是用这个求出来的 \\phi_t 更新 \\phi(x,y)
\\phi(t+\\Delta{t})=\\phi(t)+\\Delta{t}\\phi_t=\\phi(t)-\\Delta{t}{\\cdot}v(x,y)|\
abla\\phi|\\\\ 因为水平集法的 \\phi(x,y)用和材料介电常数分布之间的关系为
\\varepsilon(x,y)=\\left\\{ 		\\begin{array}{lcl}			\\varepsilon_1,& \\phi(x,y) \\leq0\\\\                         \\varepsilon_2,& \\phi(x,y) >0\\\\ 		\\end{array}\\right.\\\\所以使用水平集一个好处是结构始终是二值化的,无需再对介电常数进行处理。

地址:广东省广州市天河区99号   电话:400-123-4567
版权所有:首页-九天娱乐-注册登录站    
ICP备案编号:琼ICP备xxxxxxxx号

平台注册入口