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

news2024/12/23 19:45:55

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 子系统文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1676771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp 微信小程序使用ec-canvas图表

微信小程序中使用到了ec-canvas图表&#xff0c;从DCloud插件市场中下载echarts-for-wx&#xff1b; 在uniapp项目中找到js-sdk文件夹&#xff0c;把其中的uni-ec-canvas放到要用的包的components中。 在文件中导入&#xff1a; 饼图&#xff1a; <template><view…

嵌入式学习——Shell(流指针、文件读写函数)——day20

1. 标准IO和文件IO的区别 1. 标准IO是一种有缓存的IO形式&#xff08;接收了一部分内容后给到linux内核中&#xff09; 2. 文件IO是一种没有缓存的IO形式&#xff08;即刻交给linux内核&#xff0c;及时性&#xff09; 3. 标准IO是库函数,库函数可以在Windows和Linux系统中都能…

使用docker创建hadoop集群:Couldn‘t upload the file

运行的环境; Windows10 Docker Desktopdocker-hadoop 出现的问题如下: 解决方法 https://github.com/big-data-europe/docker-hadoop/issues/98

喜大普奔!VMware Workstation Pro 17.5 官宣免费!

Broadcom 已经正式收购 VMware&#xff0c;【VMware中国】官方公众号已于3月11日更名为【VMware by Broadcom中国】。 13日傍晚&#xff0c;该公众号发表推文 V风拂面&#xff0c;好久不见 - 来自VMware 中国的问候 &#xff0c;意味着 VMware 带着惊喜和美好的愿景再次归来。 …

JavaScript进阶——05-迭代器和生成器【万字长文,感谢支持】

迭代器 概念 迭代器&#xff08;Iterator&#xff09;是 JavaScript 中一种特殊的对象&#xff0c;它提供了一种统一的、通用的方式遍历个各种不同类型的数据结构。可以遍历的数据结构包括&#xff1a;数组、字符串、Set、Map 等可迭代对象。我们也可以自定义实现迭代器&…

Git 基础使用(2) 分支管理

文章目录 分支概念分支使用查看分支分支创建分支切换分支合并合并冲突分支删除 分支管理快进模式分支策略内容保存错误处理 分支概念 &#xff08;1&#xff09;分支概念 Git分支是指在版本控制系统Git中&#xff0c;用来表示项目的不同工作流程或开发路径的一个重要概念。通过…

学习Nginx(一):基础

介绍 Nginx是一个高性能的HTTP和反向代理的web服务器&#xff0c;它的设计重点是高并发、高性能和低内存消耗。它常被用于提供静态内容、负载均衡和作为Web服务器。 Nginx具有以下功能和特点&#xff1a; 静态文件服务&#xff1a;作为一个Web服务器&#xff0c;Nginx可以处…

SpringBoot解决CORS跨域——@CrossOrigin

前端请求后端报错了。 状态码&#xff1a;403 返回错误&#xff1a;Invalid coRs request 一个注解就搞定了。 在类上加 CrossOrigin

队列的讲解

队列的概念 队列:只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头 一端进另一端出 也就是可以做到&#xff0c;先…

数据结构与算法-排序算法3-插入排序

目录 1.插入排序&#xff1a; 1.介绍&#xff1a; 2.动态图解 3.举例 4.小结插入排序规则 5.插入排序代码 6.运行时间 代码&#xff1a; 运行结果&#xff1a; 1.插入排序&#xff1a; 1.介绍&#xff1a; 数组中n个元素&#xff0c;把这n个待排序元素看成一个有序序…

01 Triton backend

1 整体架构 三部分组成&#xff1a; Triton backend tensorRT_backend、onnx_backend、tfs_backend、torch_backend **Triton model ** 不同的模型 **Triton model instance ** 模型实例 ![P2}5X%2ULV(2OAC$_OKOP.png 2 设计思路 需要实现七个接口&#xff1a; TRITON…

Elasticsearch - HTTP

文章目录 安装基本语法索引创建索引查看索引删除索引 文档创建文档更新文档匹配查询多条件查询聚合查询映射 安装 https://www.elastic.co/downloads/past-releases/elasticsearch-7-17-0 下载完成启动bin/elasticsearch服务&#xff0c;可以在Postman调试各种请求。 基本语法…

风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码)

风电功率预测 风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码)完整代码风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码) 基于遗传算法优化BP神经网络是一种常见的方法,用于改进BP神经网络在风电功率预测中的性…

IBM Granite模型开源:推动软件开发领域的革新浪潮

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

基于MSWA相继加权平均的交通流量分配算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于MSWA相继加权平均的交通流量分配算法matlab仿真.如图所示交通网络中&#xff0c;包含6个节点、11各路段、9个OD对。经枚举可得每个OD对间存在3条无折返有效路…

RS编码和卷积码总结

RS编码 简要介绍RS编码及其原理 1. RS编码简介 Reed-Solomon编码&#xff08;RS编码&#xff09;是一种强大的纠错码&#xff0c;广泛应用于数据存储和传输中。RS编码由Irving S. Reed和Gustave Solomon于1960年提出&#xff0c;属于BCH码的一种&#xff0c;是基于有限域&am…

免费思维13招之十二:耗材型思维

免费思维13招之十二:耗材型思维 今天给你分享免费思维的两个子思维——相关性耗材思维和非相关性耗材思维。 相关性耗材思维,是指有一些产品的使用,需要大量的相关耗材,从而对该产品进行免费,而耗材进行资费。 举例:全世界最大的一家直销公司叫安利,它的明星产品是净水…

【Python探索之旅】列表

目录 特点 入门 访问元素 新增元素 修改元素 插入元素 删除元素 完结撒花 前言 在Python中&#xff0c;列表(List)是最常用的数据结构之一&#xff0c;类似于其他语言&#xff0c;如Java&#xff0c;与其不同啊Python中不需要声明数据类型。它提供了一种灵活且高效的方式…

数学建模入门手册

数模的主要比赛 美赛&#xff08;报名费100美元&#xff0c;每年2月比赛&#xff09;&#xff1b;国赛&#xff08;每年9月&#xff09; 电工杯&#xff08;每年5月&#xff09;&#xff1b;APMCM&#xff08;每年11月&#xff09;&#xff1b;MathorCup&#xff08;每年4月&a…

3.TCP的三次握手和四次挥手

一、前置知识 TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。在传输数据前通信双方必须建立连接&#xff08;所谓连接&#xff0c;是指客户端和服务端各自保存一份关于对方的信息&#xff0c;比如ip地址&#xff0c;端口号等&#xff09;。TCP通过三次握手建立一个…