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

2024-05-15 04:44

本文主要是介绍【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 子系统文档

这篇关于【LAMMPS学习】八、基础知识(6.6)在 Windows 10 上使用 LAMMPS 和 WSL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/990840

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他