【LAMMPS学习】八、基础知识(6.2)LAMMPS GitHub 教程

news2025/1/18 6:48:54

 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 教程

作者:Stefan Paquay


本文档描述了如何使用 GitHub 将您对 LAMMPS 所做的更改或添加集成到官方 LAMMPS 发行版中的过程。它使用更新本教程的过程作为示例来描述各个步骤和选项。您需要熟悉 git,并且您可能需要查看 git 书籍来熟悉下面使用的一些更高级的 git 功能。
截至 2016 年秋季,通过 GitHub 上的拉取请求向 LAMMPS 提交贡献是将贡献的功能或改进集成到 LAMMPS 的首选选项,因为它显着减少了 LAMMPS 开发人员所需的工作量。因此,创建拉取请求将增加您的贡献被包含在内的机会,并减少集成完成之前的时间。有关将代码包含到 LAMMPS 中的要求的更多信息,请参阅此页面。


Making an account 开设账户

First of all, you need a GitHub account. This is fairly simple, just go to GitHub and create an account by clicking the “Sign up for GitHub” button. Once your account is created, you can sign in by clicking the button in the top left and filling in your username or e-mail address and password.
首先,你需要一个 GitHub 帐户。这非常简单,只需转到 GitHub 并单击“注册 GitHub”按钮创建一个帐户即可。创建帐户后,您可以通过单击左上角的按钮并填写您的用户名或电子邮件地址和密码来登录。


Forking 存储库
要对 LAMMPS 进行更改,您需要首先在 GitHub 上fork lammps/lammps 存储库。在撰写本文时,develop 是首选目标分支。因此,转到 GitHub 上的 LAMMPS 并确保分支设置为“develop”,如下图所示。

如果不是,请使用 按钮将其更改为开发。一旦完成,请使用fork按钮创建分支。

这将在您自己的 GitHub 帐户下创建 LAMMPS 存储库的一个分支(本质上是一个副本,但使用较少的资源)。您可以在此分叉和稍后的文件拉取请求中进行更改,以允许上游存储库将您自己的分叉中的更改合并到我们刚刚分叉的分叉(或从同一存储库分叉的其他分叉)中。同时,您可以进行设置,以便将上游的更改包含到您的存储库中,从而使其与正在进行的 LAMMPS 开发保持同步。


将更改添加到您自己的分支中


LAMMPS 上游版本的添加是使用功能分支来处理的。对于每一个新功能,都会创建一个所谓的功能分支,其中仅包含与一个特定功能相关的修改。例如,添加单个修复将包括创建一个仅包含修复头和源文件而没有其他内容的分支。这里有更详细的解释: feature branch workflow

特色分支

首先,通过 HTTPS 在本地计算机上创建 GitHub 上版本的克隆:

git clone https://github.com/<your user name>/lammps.git <some name>

或者,如果您已设置 GitHub 帐户以使用 SSH 密钥,则通过 SSH:

git clone git@github.com:<your user name>/lammps.git

您可以通过单击“克隆或下载”按钮找到正确的 URL:

上面的命令将 git 存储库复制(“克隆”)到本地计算机上具有您选择的名称的目录。如果没有给出,它将默认为“lammps”。典型的名称是“mylammps”或类似的名称。

您可以使用此本地克隆进行更改并测试它们,而不会干扰 GitHub 上的存储库。

要将更改从上游拉取到此副本中,您可以转到该目录并使用 git pull:

cd mylammps
git checkout develop
git pull https://github.com/lammps/lammps develop

您还可以将此 URL 添加为远程:

git remote add upstream https://www.github.com/lammps/lammps

从那时起,您可以使用以下命令更新上游分支:

git fetch upstream

然后使用upstream/develop或upstream/release等引用上游存储库分支。

此时,您通常会从更新的分支中为您想要使用的功能创建一个功能分支。本教程包含更新本教程的工作流程,因此我们将分支称为“github-tutorial-update”:

git fetch upstream
git checkout -b github-tutorial-update upstream/develop

现在我们已经更改了分支,我们可以对本地存储库进行更改。请记住,如果您想开始研究另一个不相关的功能,您应该切换分支!

注:强烈建议不要对开发、发布或稳定分支进行更改。虽然一开始可能很方便,但从长远来看,它会带来更多的工作。有关使用 git 的各种文本和教程有效地讨论了使用功能分支的动机。

进行更改后

一切完成后,将文件添加到分支并提交:

git add doc/src/Howto_github.txt
git add doc/src/JPG/tutorial*.png

警告:不要使用 git commit -a (或 git add -A)。 -a 标志(或 -A 标志)将自动包含所有修改过的文件和新文件,但这很少是您想要的行为。它很容易导致意外地将不相关和不需要的更改添加到存储库中。相反,最好分别显式使用 git add、git rm、git mv 来添加、删除、重命名单个文件,然后使用 git commit 来完成提交。在提交之前,请使用 git status 仔细检查所有待处理的更改。如果您发现在命令行上执行此操作太乏味,请考虑使用 GUI,例如用 Tk 编写的 git 发行版中包含的 GUI,即使用 git gui(在某些 Linux 发行版上可能需要安装额外的软件包才能使用它)。

添加所有文件后,可以提交更改集并附带一些解释更改的有用消息。

git commit -m 'Finally updated the GitHub tutorial'

提交后,可以将更改推送到 GitHub 上的同一分支:

git push

如果您尚未配置任何内容,Git 会询问您在 GitHub 上的用户名和密码。如果您的本地分支尚未出现在 GitHub 上,它会要求您通过运行来添加它

git push --set-upstream origin github-tutorial-update

如果您正确输入用户名和密码,则功能分支应添加到 GitHub 上的分支中。

如果您想真正确保推送到正确的存储库(这是很好的做法),您可以明确提供它:

git push origin

或使用明确的 URL:

git push git@github.com:Pakketeretet2/lammps.git

提交拉取请求

到目前为止,本教程中的所有更改均针对您的 LAMMPS 克隆。然而,最终您希望将此功能包含到官方 LAMMPS 版本中。为此,您需要通过单击“新拉取请求”按钮来提交拉取请求:

确保当前分支设置为正确的分支,在本例中为“github-tutorial-update”。如果操作正确,您将看到的唯一更改是在此分支上所做的更改。

这将打开一个新窗口,其中列出对存储库所做的更改。如果您只是添加新文件,则无需执行太多操作,但我认为如果现有文件发生更改,则应在此处解决合并冲突。如果所有更改都可以自动合并,顶部的绿色文本会说明这一点,您可以单击“创建拉取请求”按钮,请参阅图片。

在创建拉取请求之前,请确保短标题准确,并添加包含有关拉取请求的详细信息的评论。您可以在此处写下您的修改的作用以及为什么应将它们合并到上游。

请注意“允许维护者编辑”复选框。默认情况下,此复选框处于选中状态(尽管在我的 Firefox 版本中,只有复选标记可见):

如果选中,维护人员可以立即将自己的编辑添加到拉取请求中。这有助于显着地包含您的分支,因为 LAMMPS 维护者可以将简单/琐碎的更改直接添加到您的拉取请求分支中。另一种选择是他们对自己的分支版本进行更改并向您提交反向拉取请求。除非您有充分的理由不这样做,否则只需选中此框即可。

现在只需写一些好的评论,然后单击“创建拉取请求”。


提交拉取请求后

注:当您第一次提交拉取请求(或请求拉取请求)时,您将收到成为 LAMMPS 项目合作者的邀请。请接受此邀请,因为成为协作者将简化某些管理任务,并且可能还会加快您的功能的合并速度。

您会注意到,提交拉取请求后,会自动执行一些检查:

如果一切顺利,您将看到以下内容:

如果任何检查失败,您的拉取请求将不会被处理,因为您的更改可能会破坏某些配置的编译或者可能无法干净地合并。您有责任消除测试失败的原因。如果您需要这方面的帮助,请通过添加注释来联系 LAMMPS 开发人员,解释您在解决失败测试时遇到的问题。

在拉取请求被包含之前,可能会发生一些更有趣的事情。

额外的变化

首先,您推送到存储库分支中的任何其他更改都将自动成为拉取请求的一部分:

这意味着您可以在提交拉取请求后添加应该成为该功能一部分的更改,这在您忘记它们的情况下很有用,或者如果开发人员要求在该功能被官方接受之前需要更改某些内容LAMMPS 版本。每次推送后,都会再次运行自动检查。

标签
LAMMPS 开发人员可能会向您的拉取请求添加标签,以将其分配到类别(主要用于簿记目的),但其中一些很重要:needs_work、work_in_progress、run_tests、test_for_regression 和ready_for_merge。前两个表明您的拉取请求不被认为是完整的。对于“needs_work”,负担完全由您承担;而“work_in_progress”也可能意味着 LAMMPS 开发人员可能想要添加更改。请注意拉取请求的评论。两个“测试”标签用于在合并代码之前触发扩展测试。如果 LAMMPS 开发人员怀疑您的更改可能会产生一些微妙的副作用,有时会这样做。默认情况下不会这样做,因为这些测试非常耗时。当分配给拉取请求的 LAMMPS 开发人员认为该请求已完成并触发最终的完整测试评估时,通常会附加 ready_for_merge 标签。

审查

截至 2021 年秋季,拉取请求需要通过所有自动测试以及至少 1 次来自具有存储库写入权限的 LAMMPS 开发人员的批准审查,然后才有资格进行合并。如果您的更改涉及与某些开发人员相关的代码,GitHub 软件会自动请求这些更改。这些关联是在文件 .github/CODEOWNERS 中设置的,因此,如果您希望在任何人更改文件或包时自动通知您进行审查,您已为 LAMMPS 做出了贡献,您可以向该文件添加合适的模式,或者 LAMMPS 开发人员可以添加你。

Otherwise, you can also manually request reviews from specific developers, or LAMMPS developers - in their assessment of your pull request - may determine who else should be reviewing your contribution and add that person. Through reviews, LAMMPS developers also may request specific changes from you. If those are not addressed, your pull requests cannot be merged.
否则,您还可以手动请求特定开发人员或 LAMMPS 开发人员的审核 - 在评估您的拉取请求时 - 可能会确定还有谁应该审核您的贡献并添加该人员。通过审核,LAMMPS 开发人员还可能要求您进行特定更改。如果这些问题没有得到解决,您的拉取请求将无法合并。

受让人

拉取请求有一个受让人属性。如果请求尚未经过任何开发人员审核,则不会将其分配给任何人。修订后,开发人员可以选择将其分配给 a) 您、b) LAMMPS 开发人员(包括他/她自己)或 c) Axel Kohlmeyer (akohlmey)。

  • 如果您需要进行更改,则会出现情况 a)

  • 情况 b) 意味着目前 LAMMPS 开发人员正在对其进行测试和审查,预计需要进行一些更改。审核后,开发人员可以选择直接实施更改或建议您实施更改。

  • 情况 c) 意味着拉取请求已分配给开发人员,负责监督拉取请求合并到开发分支中。

在本例中,Axel 将教程分配给了 Steve:

LAMMPS 维护者的编辑

如果您允许维护者进行编辑(默认),则任何 LAMMPS 维护者都可以向您的拉取请求添加更改。在这种情况下,Axel 和 Richard 都对教程进行了更改:

反向拉取请求

然而,有时,您可能会觉得让其他人将更改推送到您自己的分支中感到不舒服,或者维护者可能不确定他们的想法是否正确。在这种情况下,他们可以进行更改,将您重新分配为受让人,并提交“反向拉取请求”,即在您分叉的 GitHub 存储库中提交拉取请求,以包含您作为拉取请求提交的分支中的更改你自己。在这种情况下,您可以选择将他们的更改合并回您的分支,可能会进行其他更改或更正,然后从那里继续。它看起来像这样:

由于某种原因,突出显示的按钮在我的情况下不起作用,但我可以转到我自己的存储库并从那里合并拉取请求:

请务必通过单击选项卡按钮检查更改以查看您是否同意它们:

在本例中,大部分是标记的更改以及 Axel 对“git gui”和“git add”命令的解释的简短重写。

因为我们可以接受这些更改,所以我们将通过单击“合并拉取请求”来合并。合并后看起来像这样:

现在,由于同时我们的教程本地文本也发生了变化,我们需要将 Axel 的更改拉回到我们的分支中,并将它们合并:

git add Howto_github.txt
git add JPG/tutorial_reverse_pull_request*.png
git commit -m "Updated text and images on reverse pull requests"
git pull

在这种情况下,合并很轻松,因为 git 可以自动合并:

随着 Axel 的更改合并以及一些最终文本更新,我们的功能分支现在就我们而言是完美的,因此我们将再次提交并推送:

git add Howto_github.txt
git add JPG/tutorial_reverse_pull_request6.png
git commit -m "Merged Axel's suggestions and updated text"
git push git@github.com:Pakketeretet2/lammps

此合并也显示在 lampmps GitHub 页面上:


合并后

当一切正常后,feature分支被合并到develop分支:

现在还有一个问题:如何处理合并到上游的功能分支?

原则上,从您自己的分叉中删除它们是安全的。这有助于保持它更加整洁。请注意,您首先必须切换到另一个分支!

git checkout develop
git pull https://github.com/lammps/lammps develop
git branch -d github-tutorial-update

如果你不先拉取,这并不是真正的问题,但 git 会在下一条语句中警告你,你正在删除一个尚未完全合并到 HEAD 的本地分支。这是因为 git 还不知道你的分支刚刚合并到 LAMMPS 上游。如果您先删除然后拉取,一切都应该没问题。您可以通过以下方式显示完全合并的所有分支:

最后,如果您在本地删除分支,您可能还想将其推送到远程:

git push origin :github-tutorial-update

工作流程的最新变化

本教程未包含最近对工作流程的一些更改。例如,除了所有新功能都要提交到的develop分支之外,还有release、stable和maintenance分支;发布分支作为“功能发布”的一部分从开发分支更新,而稳定(与发布)分支在“稳定版本”发布时从开发更新。在稳定版本之间,选定的错误修复和基础设施更新会从开发分支向后移植到维护分支,并且偶尔会作为更新版本合并到稳定版本。

此外,版本标签的命名现在遵循“patch_<日><月><年>”模式,以简化版本之间的比较。对于稳定版本,应用附加的“stable_<Day><Month><Year>”标签,更新版本标有“stable_<Day><Month><Year>_update<Number>”,最后,所有版本和提交均受约束自动测试和代码检查,以确保它们可以使用各种编译器和流行的操作系统进行编译。还应用了一些单元和回归测试。

LAMMPS 开发人员 GitHub 工作流程的详细讨论可以在文件 doc/github-development-workflow.md 中找到

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

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

相关文章

springcloud服务间调用 feign 的使用

引入依赖包 <!-- 服务调用feign --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>创建调用外部服务的接口 需要使用的地方注入 使用 启动类增…

CTF-密码学基础

概述 密码学(Cryptolopy)&#xff1a;是研究信息系统安全保密的科学 密码学研究的两个方向&#xff1a; 密码编码学(Cryptography)&#xff1a;主要研究对信息进行编码&#xff0c;实现对信息的隐蔽密码分析学(Cryptanalytics)&#xff1a;主要研究加密信息的破译或消息的伪造…

05.网络维护与管理命令

网络维护与管理命令 ifconfig 命令 功能说明 ifconfig 命令用来配置网络或显示当前网络接口状态。类似于 Windows下的ipconfig 命令&#xff0c;同时ifconfig命令必须以root用户来执行。其格式如下&#xff1a; ifconfig [选项] [interface] [inet|up|down|netmask|addr|broad…

论文笔记:DeepMove: Predicting Human Mobility with Attentional Recurrent Networks

WWW 2018 1 Intro 根据对百万级用户群的研究&#xff0c;93%的人类移动是可预测的。 早期的mobility预测方法大多基于模式的。 首先从轨迹中发现预定义的移动模式(顺序模式、周期模式)然后基于这些提取的模式预测未来位置。最近的发展转向基于模型的方法进行流动性预测。 利用…

Spark云计算平台Databricks使用,SQL

创建workspace&#xff1a;Spark云计算平台Databricks使用&#xff0c;创建workspace和Compute计算集群&#xff08;Spark集群&#xff09;-CSDN博客 1 创建schema 选择Calalog&#xff0c;点击Create schema 输入名字&#xff0c;Storage location选择workspace&#xff0c;数…

如何使用IdeaJ2023创建一个JavaWeb项目

开篇 简单整理一下创建JavaWeb项目的步骤&#xff0c;希望能对您有所帮助。 步骤图解 步骤一: 创建项目 此时得到的项目是如图所示的普通Java项目&#xff1a; 步骤二: 在项目中增加web文件夹 点击File -> Project Structure 点击Project Setting -> Modules -> …

2024北京市人工智能大模型行业应用分析报告

来源&#xff1a;北京市科学技术委员会 方向一为基于AIGC技术的智能审计合规研究&#xff0c;由北京银行提出&#xff0c;以 提高审计工作效率和准确性为核心目标&#xff0c;需要参赛企业针对检查内容&#xff0c; 利用大模型技术寻找并给出相关现象涉及的制度名称及相关原文…

2024年去除视频水印的5种方法

如果你从事电影剪辑或者视频编辑工作&#xff0c;你经常需要从优酷、抖音、TikTok下载各种视频片段……。 通常这些视频带有水印和字幕。一些免费软件如CapCut、canva、Filmora也会给你制作的视频打上水印&#xff0c;这些水印嵌入在视频内部。 2024年去除视频水印的5种方法 …

【算法】滑动窗口——水果成篮

本篇博客是我对“水果成篮”这道题由暴力解法到滑动窗口思路的具体思路&#xff0c;有需要借鉴即可。 目录 1.题目2.暴力求解3.暴力优化3.1每次right不用回退3.2有些left长度一定不如前一个&#xff0c;不用走&#xff0c;left不回退 4.滑动窗口算法5.总结 1.题目 题目链接&am…

贝塞尔曲线 java

参考文章&#xff1a; 理解贝塞尔曲线https://blog.csdn.net/weixin_42301220/article/details/125167672 代码实现参考 https://blog.csdn.net/yinhun2012/article/details/118653732 贝塞尔 一二三阶java代码实现,N阶段可以通过降阶递归实现 public class Test extends JPan…

FPGA+DDR+SERDES+USB3.0单向传输机方案,数据只能单向传输,避免反向攻击,确保系统安全

FPGADDRSERDESUSB3.0方案&#xff0c;设备包含发送端接收端&#xff0c;物料上采用光纤通讯&#xff0c;数据只能单向传输&#xff0c;避免反向攻击&#xff0c;确保系统安全 客户应用:高安全、高可靠性要求的场景 主要性能: 1.支持USB3.0传输&#xff0c;实测可达到350MB/s 2.…

Unreal Engine(虚幻引擎)的版本特点

Unreal Engine&#xff08;虚幻引擎&#xff09;是Epic Games开发的游戏引擎&#xff0c;广泛应用于游戏开发、影视制作、建筑设计、虚拟现实等领域。Unreal Engine版本指的是该引擎的发布版本&#xff0c;不同版本之间在功能、性能和稳定性等方面存在差异。北京木奇移动技术有…

转发_重定向

1.Servlet/JSP单独使用的弊端 当我们用Servlet或者JSP单独处理请求的时候 Servlet&#xff1a;拼接大量的html字符串 造成可读性差、难以维护JSP&#xff1a;使得html和Java代码互相交织 也造成了可读性差、难以维护的后果 最合适的做法就是两者结合使用 2.ServletJSP处理请…

Node.js安装与配置环境 v20.13.1(LTS)

1 下载 Node.js — Run JavaScript Everywhere LTS -- long-term support&#xff0c;长期维护版本 如果要下载其他版本在download里选择下载 2 安装 一路点击next&#xff0c;默认安装路径C:\Program Files\nodejs 3 环境变量配置 1&#xff09;Path环境变量增加nodejs安装…

GUI-图形化的用户界面

一、概述 所谓GUI&#xff0c;即图形化的用户界面/接口&#xff08;Graphical User Interface&#xff09;&#xff0c;实现了采用图形方式显示的计算机操作用户界面。比如下面的QQ登录界面&#xff1a; 为了不被落下&#xff0c;Java依旧稳定发挥&#xff0c;它也提供了一套…

【全开源】Java U U跑腿同城跑腿小程序源码快递代取帮买帮送源码小程序+H 5+公众号跑腿系统

特色功能&#xff1a; 智能定位与路线规划&#xff1a;UU跑腿小程序能够利用定位技术&#xff0c;为用户提供附近的跑腿服务&#xff0c;并自动规划最佳路线&#xff0c;提高配送效率。订单管理&#xff1a;包括订单查询、订单状态更新、订单评价等功能&#xff0c;全行业覆盖…

Excel Module: Iteration #1 EasyExcel生成下拉列表模版时传入动态参数查询下拉数据

系列文章 EasyExcel生成带下拉列表或多级级联列表的Excel模版自定义校验导入数据(修订) 目录 系列文章前言仓库一、实现1.1 下拉元数据对象1.2 构建下拉元数据的映射关系1.3 框架方式1.3.1 框架实现1.3.2 框架用例模版类加载下拉业务导出接口 1.4 EasyExcel方式1.4.1 EasyExce…

ESP8266基础资源了解

封装的硬件资源 参考1&#xff0c;参考2 常说的esp8266指的是有一个屏蔽罩盖着的模块&#xff0c;里面包含了esp8266芯片和一个能够存储数据和程序的flash&#xff0c;因为esp8266没有存储功能。 使用arduino常用的nodemcu是包含这个模块并含有电源LDO和串口下载的设计电路如…

【知识碎片】2024_05_09

本篇记录了关于C语言的一些题目&#xff08;puts&#xff0c;printf函数的返回值&#xff0c;getchar&#xff0c;跳出多重循环&#xff09;&#xff0c;和一道关于位运算的代码&#xff3b;整数转换&#xff3d;。 C语言碎片知识 如下程序的功能是&#xff08; &#xff09; #…

原来pip是有默认路径的。

今天一直报错&#xff1a; bash: /root/data1/anaconda3/envs/li_3_10/bin/pip: /root/lsc/anaconda3/envs/li_3_10/bin/python: bad interpreter: No such file or directory 原来是root/data1/anaconda3/envs/li_3_10/bin/pip: 这个位置的pip 自身带默认路径&#xff0c;然…