【LAMMPS学习】八、基础知识(6.6)在 Windows 10 上使用 LAMMPS 和 WSL

8. 基础知识

此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各种模拟。

8.1.通用基础知识

8.2. 设置入门

8.3. 分析入门

8.4. 力场入门

8.5. 软件包入门

8.6.操作教程

8.6.1.将 CMake 与 LAMMPS 结合使用

8.6.2. LAMMPS GitHub 教程

8.6.3.使用 LAMMPS GUI

8.6.4.Moltemplate教程

8.6.5. PyLammps 教程

8.6.6. 在 Windows 10 上使用 LAMMPS 和 WSL

让 LAMMPS 用户和开发人员在 Windows 上工作对我们来说一直很棘手。我们主要开发在 Linux 集群上运行的 LAMMPS。为了在研讨会环境中教授 LAMMPS,我们必须将 Windows 用户重定向到 Linux 虚拟机,例如 VirtualBox 或使用 Cygwin 进行类 Unix 编译。

通过 Windows 10(版本 2004、Build 19041 或更高版本)的最新更新,Microsoft 添加了一种处理基于 Linux 的代码的新方法。适用于 Linux 的 Windows 子系统 (WSL)。借助 WSL 版本 2,您现在可以获得一个透明地集成到 Windows 中的 Linux 虚拟机。您所需要做的就是确保安装了最新的 Windows 更新并启用此新功能。然后可以使用 Microsoft Store 轻松安装 Linux VM。

在本教程中,我将向您展示如何设置和编译 LAMMPS 以在 WSL2 中使用串行和 MPI。


安装
升级到最新的 Windows 10

在 Windows 开始中键入“更新”,然后选择“检查更新”。

_images/updates.png


安装所有挂起的更新并根据需要多次重新启动系统。继续,直到 Windows 安装更新。

_images/windows_update.png

验证您的系统至少具有版本 2004 和内部版本 19041 或更高版本。您可以通过单击“操作系统构建信息”找到此信息。

_images/osinfo.png

启用 WSL

接下来,我们必须安装两个附加的 Windows 功能才能启用 WSL 支持。以管理员身份打开 PowerShell 窗口。在 Windows 开始中键入“PowerShell”,然后选择“以管理员身份运行”。

_images/powershell.png

Windows 将要求您提供管理员访问权限。接受后,将出现一个新的命令行窗口。输入以下命令来安装 WSL:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

_images/wsl_install1.png

接下来,使用以下命令启用 VirtualMachinePlatform 功能:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

最后,重新启动系统。

更新 WSL 内核组件

下载并安装 WSL Kernel Component Update 。然后,重新启动系统。

将 WSL2 设置为默认值

再次以管理员身份打开 PowerShell 并运行以下命令:

wsl --set-default-version 2

此命令可确保未来所有 Linux 安装都将使用 WSL 版本 2。

_images/wsl_install3.png

安装 Linux 发行版
接下来,我们需要通过 Microsoft Store 安装 Linux 发行版。安装 Ubuntu 20.04 LTS。安装后,您可以像任何其他应用程序一样从“开始”菜单启动它。

_images/ubuntu_in_store.png

初始设置

第一次启动 Ubuntu Linux 控制台时,它会提示您输入 UNIX 用户名和密码。您稍后将需要此密码来执行 sudo 命令。完成后,您的 Linux shell 就可以使用了。您的所有操作和命令都将以您指定的 Linux 用户身份运行。

_images/first_login.png

Windows 资源管理器/WSL 集成
您的 Linux 安装将有自己的 Linux 文件系统,其中包含 Ubuntu 文件。您的 Linux 用户将在 /home/<USERNAME> 中有一个常规的 Linux 主目录。该目录与您的 Windows 用户目录不同。 Windows 和 Linux 文件系统通过 WSL 连接。

Windows 中的所有硬盘都可以在 Linux 中的 /mnt 目录中访问。例如,WSL 将 C 硬盘驱动器映射到 /mnt/c 目录。这意味着您可以访问 /mnt/c/Users/<WINDOWS_USERNAME> 中的 Windows 用户目录。

Windows 资源管理器还可以访问 Linux 文件系统。为了说明这种集成,请打开 Ubuntu 控制台并导航到您选择的目录。要在 Windows 资源管理器中查看此位置,请使用 explorer.exe . 命令(不要忘记最后一个点!)。

_images/wsl_integration.png

编译 LAMMPS


您现在已经安装了功能齐全的 Ubuntu,并且可以按照大多数指南在 Linux 系统上安装 LAMMPS。以下是需要遵循的一些基本步骤:

安装必备包

在开始之前,我们需要下载必要的编译工具链和库来编译 LAMMPS。在我们基于 Ubuntu 的 Linux 安装中,我们将使用 apt 包管理器来安装其他包。

首先,使用 apt update 和 apt upgrade 升级所有现有包。

sudo apt update
sudo apt upgrade -y

接下来,使用 apt install 安装以下软件包:

sudo apt install -y cmake build-essential ccache gfortran openmpi-bin libopenmpi-dev \
                    libfftw3-dev libjpeg-dev libpng-dev python3-dev python3-pip \
                    python3-virtualenv libblas-dev liblapack-dev libhdf5-serial-dev \
                    hdf5-tools
下载 LAMMPS

获取 LAMMPS 源代码的副本并使用 cd 命令进入它。

选项 1:使用 wget 下载 LAMMPS tarball
wget https://github.com/lammps/lammps/archive/stable_3Mar2020.tar.gz
tar xvzf stable_3Mar2020.tar.gz
cd lammps
选项 2:从 GitHub 下载 LAMMPS 开发版本
git clone --depth=1 https://github.com/lammps/lammps.git
cd lammps
使用 CMake 配置和编译 LAMMPS

一种适合初学者的编译 LAMMPS 的方法是使用 CMake。创建一个 build 目录来编译 LAMMPS 并移入其中。该目录将存储构建配置和编译期间生成的任何二进制文件。

mkdir build
cd build

编译 LAMMPS 的方法有无数种。它超出了本教程的范围。如果您想了解有关可以启用哪些功能的更多信息,请查阅广泛的文档。

为了编译最小版本的 LAMMPS,我们将使用预设。预设是一种使用文件指定 CMake 选项集合的方法。

cmake ../cmake/presets/basic.cmake ../cmake

此命令配置构建并生成必要的 Makefile。要编译二进制文件,请运行 make 命令。

make -j 4

-j 选项指定将执行编译的并行进程数。该选项可以显着加快编译时间。使用与系统中处理器数量相对应的数字。

编译成功完成后,您将在 build 目录中看到一个名为 lmp 的可执行文件。

_images/compilation_result.png

请记下 build 目录的绝对路径。稍后您需要知道执行 LAMMPS 二进制文件的位置。

获取当前目录的绝对路径的一种方法是通过 $PWD 变量:

# prints out the current value of the PWD variable
echo $PWD

让我们将此值保存在临时变量 LAMMPS_BUILD_DIR 中以供将来使用:

 
LAMMPS_BUILD_DIR=$PWD

LAMMPS 二进制文件的完整路径是 $LAMMPS_BUILD_DIR/lmp 。

运行示例脚本

Now that we have a LAMMPS binary, we will run a script from the examples folder.
现在我们有了 LAMMPS 二进制文件,我们将从示例文件夹中运行脚本。

Switch into the examples/melt folder:
切换到 examples/melt 文件夹:

cd ../examples/melt

要串行运行此示例,请使用以下命令行:

$LAMMPS_BUILD_DIR/lmp -in in.melt

要使用具有 4 个进程的 MPI 并行运行同一脚本,请执行以下操作:

mpirun -np 4 $LAMMPS_BUILD_DIR/lmp -in in.melt

如果您第一次运行 LAMMPS,Windows 防火墙可能会提示您确认访问。 LAMMPS 正在访问网络堆栈以启用并行计算。允许访问。

_images/windows_firewall.png


在串行或 MPI 情况下,LAMMPS 执行并将输出类似于以下内容的内容:

LAMMPS (30 Jun 2020)
...
...
...
Total # of neighbors = 151513
Ave neighs/atom = 37.878250
Neighbor list builds = 12
Dangerous builds not checked
Total wall time: 0:00:00

恭喜!您已经在 WSL 上成功编译并执行了 LAMMPS!

最后步骤

总是指定 LAMMPS 二进制文件的路径很麻烦。您可以通过将 build 目录的绝对路径添加到 PATH 环境变量来避免这种情况。

export PATH=$LAMMPS_BUILD_DIR:$PATH

然后您可以像这样运行 LAMMPS 输入脚本:

lmp -in in.melt

或者

mpirun -np 4 lmp -in in.melt

注:

一旦您关闭控制台窗口,此 PATH 变量的值就会消失。要保留此设置,请使用您喜欢的文本编辑器编辑 $HOME/.bashrc 文件并添加以下行:

export PATH=/full/path/to/your/lammps/build:$PATH

示例:如果 LAMMPS 可执行文件 lmp 具有以下绝对路径:

/home/<USERNAME>/lammps/build/lmp

PATH 变量应该是:

export PATH=/home/<USERNAME>/lammps/build:$PATH

设置完成后,您的所有 Ubuntu 控制台将始终可以访问您的 lmp 二进制文件,而无需指定其位置。

结论

希望这能让您很好地了解如何在 Windows 上开始编译和运行 LAMMPS。 WSL 使在 Windows 上准备和运行脚本成为更好的体验。

如果您对 Linux 完全陌生,强烈建议您花一些时间学习 Linux 在线教程。例如,有关 Bash Shell 和基本 Unix 命令的教程(例如  Linux Journey)。获得这些技能将使您在这种环境中更加高效。


也可以查阅参考适用于 Linux 的 Windows 子系统文档

最近更新

  1. TCP协议是安全的吗?

    2024-05-15 22:40:09       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-15 22:40:09       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-15 22:40:09       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-15 22:40:09       20 阅读

热门阅读

  1. 总结_看门狗项目应用解析

    2024-05-15 22:40:09       11 阅读
  2. Docker 容器连接:构建安全高效的容器化网络生态

    2024-05-15 22:40:09       12 阅读
  3. mysql(二)

    2024-05-15 22:40:09       9 阅读
  4. mysql中exists和in的区别

    2024-05-15 22:40:09       11 阅读
  5. MySQL变量的定义与使用

    2024-05-15 22:40:09       11 阅读
  6. Leecode热题100---128:最长连续数列

    2024-05-15 22:40:09       12 阅读
  7. CSAP_MAT_BOM_MAINTAIN 返回消息处理

    2024-05-15 22:40:09       9 阅读
  8. Spring STOMP-权限

    2024-05-15 22:40:09       11 阅读
  9. Python3 笔记:continue语句和break语句的区别

    2024-05-15 22:40:09       8 阅读
  10. [ffmpeg处理指令]

    2024-05-15 22:40:09       10 阅读
  11. Excel表格导入/导出数据工具类

    2024-05-15 22:40:09       10 阅读