Giter Club home page Giter Club logo

lammpscn's Introduction

home title heroImage actionText actionLink features
true
LAMMPS 中文站
/logo.gif
快速开始 →
/zh/hello/
title details
为什么选择LAMMPS?
开源;高效;通用; 力场全面;易于扩展
title details
LAMMPS 可以做什么?
粗粒化模型;全原子;有限尺寸的球或椭球粒子; 偶极子; 刚体

lammpscn

旨在减低初学者入门LAMMPS时难度,让各位将学习软件的时间节省下来,用在实际的科研工作中. 一个良性发展的社区离不开每个人的贡献, 如果人人都可以把自己学习到的或者解决的困难整理下来供别人参考, 将会极大地促进软件用户群的发展和解决所有人的时间.

网站重构计划

硕士三年我恶补了基本理论知识,对lammps的理解更加深入,现在回过头来再看感觉这个教程有点过于玩笑。我决定停止对这个版本的更新,重新打磨相关的内容。新仓库的连接是lammpscn2. 新网站决定采用material for mkdocs。具体的计划请见proposal. 这将囊括我在phd期间学到的所有东西的整理。诚恳希望各位加入,一起完善相关内容

插播一条广告♪(´ε` )

我们的新书Extending and Modifying LAMMPS Writing Your Own Source Code: A pragmatic guide to extending LAMMPS as per custom simulation requirements 正式出版了. 这本书由Valdosta State University的Shafat Mubin和本人共同完成, 由PACKT出版社出版, 核心开发者Dr. Steven Phlimption 倾情力荐, 并在LAMMPS官网展示:

官网 推荐

本书提供了对LAMMPS源码主要部分的逐行讲解, 手把手的修改源码的范例. 阅读这本书, 你可以从MD的最重要的方法论和数值计算方法出发, 逐步过渡到对源码结构和执行阶段的理解. 随着认识的深入, 你将可以了解LAMMPS代码的组织框架和哲学理念, 并且能够理解源码. 放心, 只要你有一丢丢的C++技巧, 就可以完全看得懂我们的讲解. 我们这种掰开了揉烂了的手把手的范例讲解足以使没有编程经验实验人员照葫芦画瓢地编写自己的源代码扩展. 其中本书提供的范例都经过了充分的测试并且上传到了GitHub上. 当你读完这本书, 你就能学会如何添加自己的LAMMPS拓展, 根据自己的需求增加特性.

封面

本书现已在美区亚马逊发售, 希望各位多多支持~ 一共394页呢, 35刀, 买不了吃亏, 买不了上当! 有了它, 你就可以省下大量抓耳挠腮去研究莫名其妙的源码的时间, 把精力放在发表CNS上! 冲, 买它!

下面是如何贡献自己的教程:

贡献教程的原则是:

  • 尽可能地不要照抄手册, 但是要给出参考资料和手册相关内容的链接;
  • 尽可能地将与科研方向有关的知识抽离, 专注于软件本身的使用;
  • 尽可能地详细一些, 手把手地教学, 因为很多人并不熟悉系统和软件;
  • 尽可能地生动活泼, 增加图示, 苦中作乐;

初级贡献

将你写好的文稿发送给[email protected], 无所谓是写在word, txt, A4纸, 只要能辨认即可 ( ̄^ ̄)ゞ

中级贡献

首先, 先学会使用markdown语言书写文稿. markdown是一种标记语言, 非常直观与简介. 教程可以参考.

当你完成文档的书写后, 下一步是将文档集成到网页中. 登陆GitHub, 找到lammpscn, fork一份源码到, 之后可以在自己的repositories中找到lammpscn的repo

使用git clone命令将代码克隆到本地, 使用git checkout draft切换到草稿分支

进入docs/zh中, 选择合适的主题, 将写好的markdown文稿复制进去

进入docs/.vuepress/sidebar, 找到主题_zh.js, 按照格式添加项目

例如, 我想向贡献名为 “震惊! 新手这么用LAMMPS就错了” 到网站中专栏/, 你需要将自己写的shock.md放到docs/zh/column/中. 然后打开column_zh.js, 在入门篇children中加一行['/zh/column/shock', '震惊']. 注意, 每个条目之间需要用逗号隔开. 如果你的机器上装有nodejs, 在使用npm install去安装依赖, 你可以在lammpscn的根目录下输入yarn docs:devnpm run docs:dev查看实际的效果(如果没有的话也不影响, 直接pull request就行, 我会给你收尾的).

接下来, 使用git push将代码推到你的GitHub账户上. 这时候你再去看你的lammpscn的repo的draft分支, 就可以看到更改后的内容了.

下一步是提交一个pull request, 通知我将你的修改合并到我的repo中. 点击你的repo的上方的pull request按钮, 就在issue旁边, 点击绿色的new pull request, 在转到的界面中选择你需要提交的分支和要提交到的分支, 点击create pull request, 填写一些说明, 就完成了提交. 同时, 我这边会收到通知. 在我检查通过之后, 会接受你的pull request, 再将网站更新并部署. 恭喜你, 成为了一位contributor!

高级贡献

网站使用了vuepress框架, 主题采用的是teadoc, 并托管在GitHub page上. 如果你对前端感兴趣, 可以研究下怎样二次开发. 我太菜了我学不会, 靠你了!

LAMMPS 概览

LAMMPS是什么?

Large-scale Atomic/Molecular Massively Parallel Simulator(aka. LAMMPS)是由美国能源部下属的Sandia国家实验室联合Temple大学开发的经典分子动力学软件包。程序基于C++开发,支持主流的并行框架,并在GPL协议下开源。官方网站

LAMMPS能做什么?

  • 单核或多核高性能计算
  • GPU加速
  • 插入新力场和命令非常简单
  • 和其他计算软件耦合
  • 涵盖几乎所有的粒子模型和力场

LAMMPS不能做什么?

  • 没有可视化界面
  • 不能构建模型
  • 自动分配力场参数

本站任务

减低初学者入门LAMMPS时难度,让各位将学习软件的时间节省下来,用在干正事上。接下来本站会尽最大可能更新和翻译相关资料,如果您有更好的意见和改进建议,抑或是想参与进来,为国内社区贡献自己的力量,请转到GitHub上提交issue,我会在第一时间和您联系。谢谢您的参与和使用本网站。

lammpscn's People

Contributors

davidfir3 avatar dependabot[bot] avatar liusongling95 avatar roy-kid avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

lammpscn's Issues

安装完KOKKOS-cuda版本不能用

系统配置

硬件:ROG幻16-2022,显卡3070Ti
系统:windows11下的ubuntu20.04子系统,cuda版本11.6
安装版本:lammps-stable_23Jun2022_update4

安装方式

cmake -D GPU_API=cuda -D GPU_ARCH=sm_86 \
-D Kokkos_ARCH_HOSTARCH=yes \
-D Kokkos_ARCH_GPUARCH=yes \
-D Kokkos_ENABLE_CUDA=yes \
-D Kokkos_ENABLE_OPENMP=yes \
-D CMAKE_CXX_COMPILER=/home/ubuntu/lammps/lammps-stable_23Jun2022_update4/lib/kokkos/bin/nvcc_wrapper \
-D DOWNLOAD_MSCG=yes \
-D PYTHON_EXECUTABLE=/usr/bin/python3 \
-D VORO_LIBRARY=/usr/lib/x86_64-linux-gnu/libvoro++.a \
-D VORO_INCLUDE_DIR=/usr/include/voro++/ \
-D DOWNLOAD_MDI=yes \
-D BUILD_LIB=yes -D BUILD_SHARED_LIBS=yes \
-D LAMMPS_OMP_COMPAT=4 \
-C ../cmake/presets/all_custom.cmake ../cmake

make -j 8

all_custom.cmake包含如下包:

ASPHERE
 ATC
 AWPMD
 BOCS
 BODY
 BPM
 BROWNIAN
 CG-DNA
 CG-SDK
 CLASS2
 COLLOID
 COLVARS
 COMPRESS
 CORESHELL
 DIELECTRIC
 DIFFRACTION
 DIPOLE
 DPD-BASIC
 DPD-MESO
 DPD-REACT
 DPD-SMOOTH
 DRUDE
 ELECTRODE
 EFF
 EXTRA-COMPUTE
 EXTRA-DUMP
 EXTRA-FIX
 EXTRA-MOLECULE
 EXTRA-PAIR
 FEP
 GPU
 GRANULAR
 H5MD
 INTERLAYER
 KIM
 KSPACE
 LATBOLTZ
 MANIFOLD
 MANYBODY
 MC
 MDI
 MEAM
 MESONT
 MGPT
 MISC
 ML-IAP
 ML-PACE
 ML-RANN
 ML-SNAP
 MOFFF
 MOLECULE
 MOLFILE
 MPIIO
 MSCG
 NETCDF
 OPENMP
 OPT
 ORIENT
 PERI
 PHONON
 PLUGIN
 POEMS
 PTM
 PYTHON
 QEQ
 QMMM
 QTB
 REACTION
 REAXFF
 REPLICA
 RIGID
 SHOCK
 SMTBQ
 SPH
 SPIN
 SRD
 TALLY
 UEF
 VORONOI
 YAFF

情况描述

安装完测试时,运行命令mpirun -np 1 lmp -sf gpu -pk gpu 1 -in in.lj可以得到结果,但是运行命令mpirun -np 2 lmp -k on -sf kk -in in.lj却得到如下报错:

LAMMPS (23 Jun 2022 - Update 4)
KOKKOS mode is enabled (src/KOKKOS/kokkos.cpp:106)
  will use up to 0 GPU(s) per node
ERROR: Kokkos has been compiled with GPU-enabled backend but no GPUs are requested (src/KOKKOS/kokkos.cpp:208)
Last command: (unknown)

初步分析是Kokkos未能检测到显卡,但是不知道如何解决,原来以为是cuda版本的问题,但从cuda12换成cuda11.6依然没有解决。
请问有没有大神知道怎么处理这种情况?

VMD直接加载.lammpstrj文件

dump文件以.lammpstrj结尾直接拖入1.9.3版本的VMD就可以自动显示键了
console输入如下:

vmd > Info) Using plugin lammpstrj for structure file C:\Users\49119\Desktop\examples\dump.lammpstrj
lammpsplugin) New style dump with 5 data fields. Coordinate data flags: 0x02
lammpsplugin) Reconstructing atomic coordinates from fractional coordinates and box vectors.
Info) Using plugin lammpstrj for coordinates from file C:\Users\49119\Desktop\examples\dump.lammpstrj
Info) Determining bond structure from distance search ...
Info) Analyzing structure ...
Info) Atoms: 1644
Info) Bonds: 2310
Info) Angles: 0 Dihedrals: 0 Impropers: 0 Cross-terms: 0
Info) Bondtypes: 0 Angletypes: 0 Dihedraltypes: 0 Impropertypes: 0
Info) Residues: 40
Info) Waters: 0
Info) Segments: 1
Info) Fragments: 40 Protein: 0 Nucleic: 0
Info) Finished with coordinate file C:\Users\49119\Desktop\examples\dump.lammpstrj.

个人关于ReaxFF力场的最基本的理解

1、什么是ReaxFF力场?
ReaxFF力场相当于连接量子化学与经验力场计算之间联系的桥梁。1986年Tersoff提出了一种键阶-键能(bond order-bond energy)**以帮助经验力场描述化学反应问题。在描述发生键和作用的原子时设定键阶(bond order)参数,键阶随着键长(bond length)的不同而不断变化,当化学键断裂时,键阶趋向于0,意味着势能和作用力均消失。2003年由van Duin等人开发出了反应力场(ReaxFF),具体内容可以参考文献(ReaxFFSiO reactive force field for silicon and silicon oxide systems).

ReaxFF 力场试图提供一种具有普适性的表达式,以满足所有化学环境的需要,因而在其发展过程中主要遵循以下准则:势能和作用力表达式均是连续的;每种元素只分配一种力场种类,即金属氧化物中的氧原子力场等同于有机物中的氧原子力场;不预先定义可能发生的反应,完全遵循化学反应的内在发生机理。这个力场已经成功地运用于有机和无机体系中。我现在所研究的水化硅酸钙(C-S-H)就是用的这个力场。ReaxFF中主要是分为以下几个部分。
E=E_bond+E_VdWaals+E_Coulomb+E_under+E_over+E_lp+E_val+E_tors+E_conj+E_pen
分别为键能、范德华作用能、库伦作用能、欠配位的能量矫正项、过配位的能量矫正项、孤对电子项、键角能、二面角能、共轭能、共价键修正能。

2、为什么要用ReaxFF力场
因为有的时候想要模拟分子键的生成和断裂,量子化学的计算成本很高,无法模拟大尺度的model。一般的经验力场虽然计算成本较低,但是无法描述电子转移、原子重组等特性的化学反应过程。ReaxFF力场能够计算原子之间的电子转移和原子之间的重组,也就是说原子所带的电荷数是发生变化的,各原子电荷根据电荷平衡(QEq)方法来分配。

3、ReaxFF的缺点
虽然ReaxFF从一定意义上来说属于经验力场,但是计算成本还是相当高,比如我一个4500个原子的model,使用武汉大学超算16核,计算速度大概时0.137ns/day。然后还不支持lammps_GPU加速,只支持KOKKOS和OMP加速。这个KOKKOS我尝试了一下,1066的显卡的计算速度大概等于8核的CPU,但是还是比不过16核的CPU,如果显卡的计算能力更强的话可能计算速度还可以更快。

查找ReaxFF力场的网站主要是[https://www.scm.com/doc/ReaxFF/Included_Forcefields.html]

Ubuntu下安装GPU加速的lammps

Ubuntu下安装GPU加速的lammps

Author:黄诚斌

  1. 安装NVIDIA驱动
    查询电脑显卡型号,根据维基百科(https://en.wikipedia.org/wiki/CUDA#GPUs_supported) 上的信息查找自己显卡对应的算力,以及该算力对应的CUDA版本。
    然后查询该CUDA版本对应的NVIDIA驱动版本,安装对应的驱动版本后执行:
    nvidia-smi
    如果成功输出则表示驱动安装成功。

  2. 安装CUDA
    确定需要安装的CUDA版本后,(https://developer.nvidia.com/cuda-toolkit-archive) 在这个网站上选择对应的版本进行安装,具体步骤为:Linux---x86_64---Ubuntu---18.04---deb(local),然后根据网站给出的安装的步骤一步步进行安装。
    安装完毕后在根目录下执行: gedit .bashrc,在末尾添加一行新内容:
    export PATH=$PATH:/usr/local/cuda-10.2/bin (因为我安装的为10.2,此处根据自己安装的版本进行调整),保存文件后执行: nvcc -V,如果输出正常,即代表安装成功。

  3. 修改文件并进行编译
    $ cd lammps/lib/gpu
    $ vim Makefile.linux

    文件中主要更改内容为:
    CUDA_HOME:我这里CUDA_HOME 的地址其实是 /usr/local/cuda-10.2
    CUDA_ARCH:这里不同的数字对应不同的GPU架构,根据步骤1查找的算力,消除对应的架构之前的 # 即可。
    CUDA_PRECISION:这里代表GPU计算过程中的精度,我填的是 -D_SINGLE_SINGLE。
    更改完之后执行: $make -f Makefile.linux
    如果之后更改Makefile.linux 中的内容之后需要重新编译需要先执行:
    $make -f Makefile.linux clean

  4. 编译lammps
    在lammps/src文件下安装gpu这个package,其余package根据自己需要进行安装。

   $ cd lammps/src
   $ make yes-gpu
   Installing package gpu
   $ make mpi

如果之前编译过lammps,先执行: make clean-all,再进行编译

  1. 测试
    可以随便找一个example进行测试,这里我选取的是shear这个例子进行测试
    $ mpirun -np 8 lmp_mpi -in in.shear 无GPU
    $ mpirun -np 8 lmp_mpi -sf gpu -pk gpu 1 -in in.shear 有GPU

本教程参考了卫振宇的帖子 https://madwayne.com/lammps-gpu-acc.html

安装KOKKOS加速的Lammps

1、 类似安装gpu加速的lammps,先安装好正确版本的CUDA;

2、 然后在lammps根目录下mkdir build-kokkos-cuda,用于存储cmake的文档;

3、 cd build-kokkos-cuda,进入build-kokkos-cuda文件夹;

4、 自己在../cmake/presets下面创建一个user.cmake文件(可以参考minimal文件,主要是选择自己需要的package,不需要包含kokkos),
然后再修改kokkos-cuda.cmake文件,把‘set(Kokkos_ARCH_MAXWELL50 on CACHE BOOL "" FORCE)’中的MAXWELL50根据manual (https://lammps.sandia.gov/doc/Build_extras.html#kokkos) 的说明改为自己显卡对应的Arch-ID,
(温馨提示:算力低于5.0不建议安装,可能会出错),修改完两个文件后就可以进行下一步工作。
最后cmake -C ../cmake/presets/user.cmake -C ../cmake/presets/kokkos-cuda.cmake ../cmake

5、 cmake --build . -- -j8 (8为线程数,根据自己的电脑进行调整,越大肯定越快)

6、 build-kokkos-cuda下面的lmp文件就是所需要的文件

7、计算提交命令(仅供参考) mpirun -np 1 lmp -in in.crack -k on g 1 t 8 -sf kk -pk kokkos neigh half
详细内容可以参考manual

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.