”AuToFF+Packmol+Moltemplate+LAMMPS+MDAnalysis“在MSL2 Linux环境的安装与模拟案例—以求溶液中离子的RDF-OW为例

系统:windows 11

时间:20260524

1. 软件的安装

1.1 傻瓜式安装

推荐的方式,相比于详细版后续又加入了许多新特性,后面也不打算维护详细版了。傻瓜式唯一需要动手的是安装WSL-Debian时候你的username和password,当然还有需要自己复制粘贴安装命令:

1.1.1 Install WSL (Windows)

Run in PowerShell or CMD on Windows:
wsl --install -d Debian

1.1.2 Install Toolchain (Linux)

Run inside WSL Debian terminal (after installation):
cd && \
sudo apt update && \
sudo apt install git -y && \
rm -rf md-toolchain-wsl && \
git clone https://github.com/sqzzfb/md-toolchain-wsl.git && \
cd md-toolchain-wsl/linux && \
chmod +x install_all.sh && \
./install_all.sh && \
cd ~ && \
rm -rf md-toolchain-wsl && \
mkdir calinout && \
source ~/.bashrc

1.1.3 Other common used code

wsl -l -v
wsl --shutdown
wsl --terminate Debian
wsl --unregister Debian

mda # Custom Keywords
jupyter notebook --no-browser


1.2 详细版安装

1.2.1 安装WSL2

有时候要更新WSL内核(CMD输入wsl --update或者去官网下载安装即可);在安装WSL之前,有时或许还要去“启用或关闭windows功能”开启所需要的功能(按win+R,输入optionalfeatures即可),,然后:

CMD或powershell输入:

wsl.exe --list --online # 查看可供直接安装的linux发行版

wsl.exe --install -d Debian # 安装喜欢的linux,默认是Ubuntu,本人比较喜欢Debian,故安装Debian

设置自己的username(以sq为例)password,安装成功,按win键可以查看到新安装的WSL,点击WSL

安装成功后去文件管理器,左侧栏会看到一个Linux小图标,点开会看到虚拟出来的Debian系统的文件夹(如下图)。后续如无必要,所有的文件都存放在这个虚拟分区中以便达到最高的运行效率

WSL_Debian.png

1.2.2 安装Packmol

确保退到用户文件夹

cd

更新,若需要password则输入刚刚设置的password
sudo apt update

安装必要的工具
sudo apt install -y gfortran make wget tar git

创建cal文件夹,用来安装软件程序,如果想换安装目录可以通过cd来实现
mkdir cal

进入创建好的文件夹
cd cal

下载最新源码包(如果由于网络问题下载慢,可以在浏览器下载后放到 WSL 里)
wget https://github.com/m3g/packmol/archive/refs/heads/master.tar.gz

解压文件
tar -xzvf master.tar.gz

进入解压后的目录
cd packmol-master

编译Packmol
make

开始配置环境变量,以便在任何地方运行,打开 .bashrc 文件
nano ~/.bashrc

滚动到文件最底部,添加以下内容(注意:将 /home/sq/cal/packmol-master 替换为你实际的绝对路径):
export PATH="$PATH:$HOME/cal/packmol-master"

保存
Ctrl + O

确认
Enter

退出
Ctrl + X

刷新环境变量,使配置生效
source ~/.bashrc

验证安装
packmol # 如果成功,会显示如下:

Packmol install sucess.png

退出在运行的Packmol
Ctrl + C

1.2.3 安装Moltemplate

更新软件列表,升级系统里已经安装的软件,然后安装 Python 和依赖环境
sudo apt update
sudo apt upgrade -y
sudo apt install -y python3 python3-pip python3-venv python3-numpy python-is-python3

进到存放软件程序的文件夹cal
cd ~/cal

克隆仓库到本地,可能上不去网,要开下代理或者自己去手动下载
git clone https://github.com/jewettaij/moltemplate.git

进入目录
cd moltemplate

打开配置文件
nano ~/.bashrc

在文件末尾添加以下三行,注意修改为你的实际路径,其中第3行非必需,作用是配置通用分子库路径,让 moltemplate 在任何目录下都能自动找到预设的力场和分子模型
export PATH="$PATH:$HOME/sq/cal/moltemplate/moltemplate"
export PATH="$PATH:$HOME/cal/moltemplate/moltemplate/scripts"
export MOLTEMPLATE_PATH="$HOME/cal/moltemplate/moltemplate/common"
保存
Ctrl + O

确认
Enter

退出
Ctrl + X

刷新环境变量,使路径生效
source ~/.bashrc

验证安装
moltemplate.sh # 如果成功,会显示如下:

Moltemplate install sucess.png

1.2.4 安装LAMMPS

进入自己设的安装计算软件的cal文件夹
cd ~/cal

安装编译所需的依赖
sudo apt update
sudo apt install -y cmake g++ openmpi-bin libopenmpi-dev libfftw3-dev libjpeg-dev libpng-dev

克隆LAMMPS 源码(使用浅克隆加速)
git clone --depth=1 -b stable https://github.com/lammps/lammps.git

进入LAMMPS文件夹
cd lammps

新建build文件夹,LAMMPS 采用经典的“脱产编译”(out-of-source build)方式,我们需要建一个专门的 build 文件夹
mkdir build && cd build

使用 CMake 进行配置,这里我们默认开启几个分子动力学最常用的基础包:MOLECULE(分子),KSPACE(长程静电/PPPM),RIGID(刚体),MANYBODY(多体势如EAM),反应力场REAXFF等
cmake ../cmake \
-D PKG_MOLECULE=yes \
-D PKG_KSPACE=yes \
-D PKG_RIGID=yes \
-D PKG_MANYBODY=yes \
-D DOWNLOAD_FFTW3=no \
-D BUILD_MPI=yes \
-D PKG_REAXFF=yes \
-D PKG_EXTRA-FIX=yes \
-D PKG_EXTRA-PAIR=yes \
-D PKG_MISC=yes

开始编译(-j $(nproc) 表示调用你 CPU 的所有核心加速编译)
make -j $(nproc)

安装可执行文件
make install

打开环境变量配置文件
nano ~/.bashrc

配置环境,将make install得到的lmp文件所在的文件夹加入PATH,在最后一行输入
export PATH="$PATH:$HOME/.local/bin"

保存
Ctrl + O

确认
Enter

退出
Ctrl + X

刷新环境变量,使路径生效
source ~/.bashrc

验证安装
lmp -h # 如果成功,会显示如下:

LAMMPS iinstall sucess.png

后续扩展功能的方法

如果以后突然需要用到新功能(比如算石墨烯需要 AIREBO 势,需要开启 MANYBODY 之外的包,或者想算 GCMC 需要 MC 包):

重新回到build目录
cd ~/cal/lammps/build

重新运行 cmake 命令,加上想要的新包(CMake 会自动保留你之前开启的包),以加一个 REPLICA 包为例
cmake ../cmake -D PKG_REPLICA=yes

重新编译并安装,CMake 非常智能,它只会编译新加入的部分,几秒钟就能升级完成
make -j $(nproc)
make install

“较完整包”的安装方法

预编译版默认开启了非常多的包(几乎把能开的都开了)。如果担心自己编译版开的包以后不够用,想一步到位开启绝大多数常用包,可以在 CMake 阶段直接使用“全家桶”快捷命令(在 build 目录)。-D PRESET=most 是 LAMMPS 官方提供的一个预设组合,它会自动把 90% 的常用包(包括各类力场、分析工具)全部打包开启,BUILD_MPI=yesPKG_REAXFF=yes是在此基础上加上“MPI并行计算”和“ReaxFF反应力场”
cmake ../cmake \
-D PRESET=most \
-D BUILD_MPI=yes \
-D PKG_REAXFF=yes

重新编译安装
make -j $(nproc) && make install

2. 开始模拟

2.1 AuToFF的使用

网站:https://cloud.hzwtech.com/web/personal-space/online-tool/auto-ff-home

  • 选择需要的力场,如全原子力场,如图:

AuToFF-1.png

  • 绘制用于建盒子的单个的分子,再点击生成3d结构视图,或者用materials studio等软件绘制后导出,再上传到AuToFF;

  • 选择并拖动要用的力场,下一步,下一步,选择计算软件(moltemplate),点击下载,设置分子名称,OK,得到zip包;

  • 类似的,操作得到所有分子的zip;

2.2 Moltemplate与Packmol的使用

  • 解压得到所有分子的“lt”和“pdb”文件,还有重复的“system.lt”以及“packmol.inp”文件;

编辑“system.lt”和“packmol.inp”文件,以下为范例,注意“system.lt”和“packmol.inp”文件之间,分子顺序以及数量等要一一对应,但system.lt文件里面的盒子的大小要比“packmol.inp”的稍大一些,3Å即可,范例是5Å:

systemltpackmolinp.png
  • 将所有分子的“lt”和“pdb”文件以及设置好的“system.lt”和“packmol.inp”文件放在同一个文件夹下,为计算整理方便,可以在/home/sq(你的用户名)路径下建立calinout文件夹,并在该文件夹下设立此次project名称的文件夹,将上述文件存放在此;

  • 在该文件夹下按住shift,点击右键,open Linux shell here;

  • 输入packmol < packmol.inp,得到原子位置坐标信息盒子(output model_box.pdb文件);

  • 再输入moltemplate.sh -pdb model_box.pdb system.lt为每个原子赋予刚刚在AuToFF设置的力场信息,得到的关键文件是“system.data”和“system.in.settings”,其中“system.data”文件为LAMMPS用到的data文件,包含原子之间的坐标和拓扑信息等,“system.in.settings”文件包含了对应的coeff等信息;

2.3 LAMMPS的使用

  • 书写LAMMPS的in文件,以下为一个例子:

# mpirun -np 8 lmp -in Layer.in

units            real       # timestep 1 fs
boundary         p p p
atom_style       full


bond_style       harmonic
angle_style      harmonic
dihedral_style   opls
improper_style   cvff
pair_style       lj/cut/coul/long 12
kspace_style     pppm 1.0e-4       # ewald   pppm

read_data        system.data  # TODO: your own data file

include          system.in.settings  # TODO: your own coeff file

thermo           100
thermo_style     custom step density temp press ebond eangle lx ly lz

####### Minimization #######
velocity         all create 300 730429
minimize         1e-8 1e-8 5000 5000

write_data       min.data
print "Minimization Completed !"

####### Annealing #######
reset_timestep 0

dump             1 all custom 500 annealing1.lammpstrj id mol type x y z
dump             2 all custom 500 annealing2.lammpstrj id mol type xu yu zu

fix              1 all npt temp 300 300 100 iso 1 1 1000 drag 2   # Tdamp/Pdamp usually equal timestep*100/1000: 100=1fs*100, 1000=1fs*1000
run              20000
unfix            1

fix              1 all npt temp 300 400 100 iso 1 1 1000 drag 2   # Tdamp/Pdamp usually equal timestep*100/1000: 100=1fs*100, 1000=1fs*1000
run              10000
unfix            1

fix              1 all npt temp 400 400 100 iso 1 1 1000 drag 2   # Tdamp/Pdamp usually equal timestep*100/1000: 100=1fs*100, 1000=1fs*1000
run              10000
unfix            1

fix              1 all npt temp 400 300 100 iso 1 1 1000 drag 2   # Tdamp/Pdamp usually equal timestep*100/1000: 100=1fs*100, 1000=1fs*1000
run              10000
unfix            1

fix              1 all npt temp 300 300 100 iso 1 1 1000 drag 2   # Tdamp/Pdamp usually equal timestep*100/1000: 100=1fs*100, 1000=1fs*1000
run              20000
unfix            1

undump           1
undump           2

write_data       annealing.data
print "Annealing Completed !"

####### Production Run #######
reset_timestep 0

dump             1 all custom 500 run1.lammpstrj id mol type x y z
dump             2 all custom 500 run2.lammpstrj id mol type xu yu zu

fix              1 all npt temp 300 300 100 iso 1 1 1000 drag 0       # if nvt: 1 all nvt temp 300 300 100 drag 0
run              50000
unfix            1

undump           1
undump           2

write_data       final.data
print "ALL DONE !"
  • 将文件保存,我这里保存为Layer.in,即名称为Layer的in文件;

  • 输入mpirun -np 8 lmp -in Layer.in运行LAMMPS,模型就跑起来了,其中-np后面的8一般是你的电脑的核心数,更多细节不在这里阐述;

  • 如果有多个任务,不想浪费时间的话,可以设置排队运行,逻辑是使用&&操作符,使得任务之间可以排队运行,避免上一个任务是凌晨结束,要到第二天早上才能续上任务的情况发生,节省时间,示范如下:mpirun -np 8 lmp -in Layer.in && cd /home/sq/calinout/mgliclh2o_6k_2k_401 && mpirun -np 8 lmp -in Layer.in ,代码的含义是:现在当前文件夹下按照Layer.in运行LAMMPS,运行结束后跑去新的目录(mgliclh2o_6k_2k_401)下,按照新目录下的Layer.in文件运行新的LAMMPS工作。

2.4 MDAnalysis后处理数据

略,暂时停更

消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息