Catalog
  1. 1. Meep
    1. 1.1. 更新日志
    2. 1.2. 介绍
    3. 1.3. 在windows子系统安装
      1. 1.3.1. 下载Miniconda3
      2. 1.3.2. 安装Meep
      3. 1.3.3. 安装Parallel Meep
      4. 1.3.4. 通过Jupyter-notebook使用子系统Meep
      5. 1.3.5. 通过VSCode使用子系统Meep
      6. 1.3.6. 一个简单的例子补充
    4. 1.4. 在Ubuntu系统安装
Meep教程(1):在Ubuntu或者Windows的Ubuntu子系统的安装

Meep

更新日志

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

介绍

目前的时域有限差分软件很多,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
Author: Knifelee
Link: https://knifelees3.github.io/2020/06/26/C_%E6%95%99%E7%A8%8B_Windows%E4%B8%AD%E7%9A%84ubuntu%E5%AD%90%E7%B3%BB%E7%BB%9F%E5%AE%89%E8%A3%85Meep/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
  • 支付寶

Comment