Meep

更新日志

(2021 03 18)
最近才知道自己以前安装的是非并行版本的Meep,为了不给大家造成困扰,我这里将以前的错误描述更正了。

(2023 04 22)
最近发现官网的安装代码又有变化,按照老版本安装会有各种问题,所以我把安装代码也更新一下

(2023 09 23)
近期安装发现,jupyter的安装有变化,依然使用以前的代码会导致安装不成功,这次将jupyter-notebook的安装更新完整了
之前的安装命令是

1
conda install jupyter

但最近安装有变化,根据jupyter最新的安装教程

1
2
3
4
5
6
7
8
9
10
11
# 推荐使用conda forge源
conda config --add channels conda-forge
conda config --set channel_priority strict
# 如果安装jupyter notebook
conda install notebook
# 启动
jupyter notebook
# 如果是安装jupyterlab
conda install jupyterlab
# 启动
jupyter lab

介绍

目前的时域有限差分软件很多,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
2
export PATH=/home/<username>/miniconda3/bin/:$PATH
source ~/.bashrc

安装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
2
3
4
5
# 为了不打开浏览器
c.NotebookApp.use_redirect_file = False
# 为了可以在自己windows端打开连接到子系统的jupyter
c.NotebookApp.allow_origin = '*'
c.NotebookApp.ip = '0.0.0.0'

这样我们就可以通过JupyterNotebook来使用了。

通过VSCode使用子系统Meep

另外VSCode也可以完美支持我们连接子系统进行计算,只需要安装’Remote Explorer’插件即可,在通过打开如下图所示的WLS Targets就可以打开我们的子系统了。具体使用方法很多VScode教程会讲的比较详细,我这里就不在赘述。

一个简单的例子补充

可以从[NanoComp找到例子,我以这个例子为例, 我运行一切完美,就是这一句报错了,

1
2
filename = "media/straight_waveguide.mp4"
Animate.to_mp4(10,filename)

这句错误是因为我的文件夹没有“media”这个子文件夹,需要自己创建一个···

在Ubuntu系统安装

这个就更加简单,只需要将前面的关于jupyter的额外配置去掉就可以了。注意通过多个核心运行的命令:

1
mpirun -np 4 python foo.py > foo.out

而普通运行的命令为

1
python foo.py > foo.out