生成迷宫
使用https://mazegenerator.net/生成各种各样的迷宫,可以直接下载SVG矢量图文件。
由于Comsol只能读取DXF格式的二维线图,所以需要将迷宫的SVG文件转换为DXF文件。
将DXF文件导入Comsol,并用一个更大的正方形或圆形覆盖迷宫,可得下图
之所以需要用一个大正方形覆盖迷宫,是因为导入的迷宫是曲线而非实体,只有这样才可以使迷宫内部变为实体。还需要注意的是,必须设置合适的相对修复容差以防止生成几何时失败
绘制网格与求解
绘制均匀的三角形网格,入下图
使用https://blog.csdn.net/weixin_43325228/article/details/124935560中的方法求解迷宫问题
(参考自Numerical Solving a Boundary Value Problem for the Eikonal Equation)
设置正方形上方为出口,温度为单位1,其余所有壁面为绝热的
仅需求解一个对称线性方程组即可,速度较快
结果
由温度场反演得到的近似最小距离场如下
将近似最小距离场沿高度绘制可得
从迷宫中心出发,沿着最小距离场的负梯度行走即可走出迷宫