by HPCer @ Beijing,2020-6-21
说在前面的话
光说不练假把式,这次来点干货,我们实战一次。
7年前还在读博士的时候,在科学网写过一篇博客,用Matlab以不超过150行代码实现了一个简单的二维弹性有限元程序,我们不妨拿这个小例子开刀(Matlab代码可以从 http://blog.sciencenet.cn/blog-3760-678647.html 下载)。
我这个小程序没法在Octave下直接运行,因为涉及到了PDE Toolbox的使用。很多人说Matlab不可替代的是Toolbox工具箱,我也想在这篇文章argue一下,不是所有的工具箱都不能替代的,其实作为Matlab的替代品,Octave也仿照Matlab构建了大量的package,大部分是第三方作者开源贡献的,不信您上 https://octave.sourceforge.io/packages.php 瞧瞧,是不是有很多相似的面孔。我想借用毛主席的名言,“没有调查就没有发言权” (:
Matlab PDE工具箱的替代
我们今天为了完成这个小迁移就来找找PDE Toolbox的替代品。
Octave用来替代PDE Toolbox的工具包主要有两个,一个是生成网格用的msh(https://octave.sourceforge.io/msh/index.html),一个是显示网格和计算结果用的fpl(https://octave.sourceforge.io/fpl/index.html)。
先来看看生成网格的msh。
msh生成非结构化网格实际是后台调用的gmsh,刚好我的macbook上已经有了,如果没有该程序可以简单的用homebrew安装一下,执行