Meep教程(1):在Ubuntu或者Windows的Ubuntu子系统的安装
Meep
更新日志
(2021 03 18)
最近才知道自己以前安装的是非并行版本的Meep,为了不给大家造成困扰,我这里将以前的错误描述更正了。
(2023 04 22)
最近发现官网的安装代码又有变化,按照老版本安装会有各种问题,所以我把安装代码也更新一下
(2023 09 23)
近期安装发现,jupyter的安装有变化,依然使用以前的代码会导致安装不成功,这次将jupyter-notebook的安装更新完整了
之前的安装命令是:1
conda install jupyter
但最近安装有变化,根据jupyter最新的安装教程 :
1 | # 推荐使用conda forge源 |
介绍
目前的时域有限差分软件很多,Meep应该是最知名的开源软件
Meep有独立的使用方法,也可以集成在Python中通过Python调用。我的目的是基于Python来使用Meep。Meep是只支持Linux系统的,所以我们安装有两种方案,一种是通过真正的Linux系统来安装,另外就是通过Windows子系统来使用。
当我打开Meep的官方文档开始安装的时候,限于英语水平和编程知识的欠缺,一直无从下手,对于Ubuntu
The latest version of Meep preinstalled on Ubuntu can be accessed on Amazon Web Services (AWS) Elastic Compute Cloud (EC2) as a free Amazon Machine Image (AMI). To access this AMI, follow these instructions.
以前看到这句话以为Ubuntu安装会很简单,结果弄了一下也半途而废了。
最近重新读了一遍官方的安装指南,才知道这么容易。我自己是在我的Windows子系统安装的,比纯粹的Ubuntu系统更加复杂一点,我下面详细介绍。
在windows子系统安装
下载Miniconda3
在这之前我们需要说明我们为什么用miniconda而不是anaconda?主要是:
- 我之前安装Ananconda再安装报错了,可能是不同版本库之前有些冲突?我通过miniconda安装就没有这些问题。
- 我们只需要使用Meep,所以轻量化的miniconda最符合要求,特别是我们本身就是创建虚拟环境使用的。
然后是按照步骤,首先是官方文档的素质三连,安装”Miniconda3",下载
Miniconda3-latest-Linux-x86_64.sh到本地并且存为
miniconda.sh`
1 | wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh |
执行安装
1 | bash miniconda.sh |
安装的时候有选择安装位置,选择默认的即可,此时应该默认加入了环境变量,可以尝试
1 | which python |
如果有如下输出,说明成功了
1 | /home/<username>/miniconda3/bin/python |
如果没有,手动加入环境变量
1 | export PATH=/home/<username>/miniconda3/bin/:$PATH |
安装Meep
然后安装Meep, 为了不影响其他的功能,我们安装在虚拟环境”mp”中,
1 | conda create -n mp -c conda-forge pymeep |
激活虚拟环境
1 | conda activate mp |
测试是否安装成功,可以接着打开python,然后
1 | import meep as mp |
没有报错就说明成功了!
安装Parallel Meep
如果你有服务器需要并行计算提高效率,可以安装并行版本的Meep, 其命令为
1 | conda create -n pmp -c conda-forge pymeep=\*=mpi\_mpich\_\* |
即我们将并行版本的Meep安装在了虚拟环境pmp上,我们激活虚拟环境
1 | conda activate pmp |
测试是否安装成功,可以接着打开python,然后
1 | import meep as mp |
没有报错就说明成功了!另外需要注意的是,如果想并行运行Meep,只能通过命令行方式运行而不能通过jupyter-notebook的方式运行。
通过Jupyter-notebook使用子系统Meep
因为我的是子系统,没有图形界面,为了方便使用,最好是通过jupyter notebook来使用, 通过在子系统启动jupyter,然后再windows系统中访问
1 | conda install jupyter |
首先在子系统启动jupyter notebook,不打开浏览器
1 | jupyter-notebook --no-browser |
这时候在自己的电脑上应该是可以启动打开熟悉的jupyter界面了,如果不行,需要修改配置文件,手动生成配置文件
1 | jupyter notebook --generate-config |
然后用vi编辑该配置文件
1 | vi ~/.jupyter/jupyter_notebook_config.py |
更改下面的内容
1 | # 为了不打开浏览器 |
这样我们就可以通过JupyterNotebook来使用了。
通过VSCode使用子系统Meep
另外VSCode也可以完美支持我们连接子系统进行计算,只需要安装’Remote Explorer’插件即可,在通过打开如下图所示的WLS Targets就可以打开我们的子系统了。具体使用方法很多VScode教程会讲的比较详细,我这里就不在赘述。
一个简单的例子补充
可以从[NanoComp找到例子,我以这个例子为例, 我运行一切完美,就是这一句报错了,
1 | filename = "media/straight_waveguide.mp4" |
这句错误是因为我的文件夹没有“media”这个子文件夹,需要自己创建一个···
在Ubuntu系统安装
这个就更加简单,只需要将前面的关于jupyter的额外配置去掉就可以了。注意通过多个核心运行的命令:
1 | mpirun -np 4 python foo.py > foo.out |
而普通运行的命令为
1 | python foo.py > foo.out |