cndaqiang Web Linux DFT

lammps编译&快速上手

2021-02-20
cndaqiang
RSS

本文为自学笔记, 仅供参考, 如有理解不正确的地方欢迎指正.

安装

git clone git@github.com:lammps/lammps.git
cd lammps/
cd src/
make mpi
make serial -j20
#针对特定的版本 g++_openmpi等
vi MAKE/OPTIONS/Makefile.g++_openmpi
make g++_openmpi -j20

编译的相关指令

  • 需要什么包就编译什么包,编译了all,有的编译不成功最后生成serial/mpi时反而容易编译失败

make package

使用make package可以查看支持的package命令和安装卸载命令

(python37) cndaqiang@mommint:~/code/lammps/src$ make package
Standard packages: asphere body class2 colloid compress coreshell dipole gpu granular kim kokkos kspace latte manybody mc message misc mliap molecule mpiio mscg opt peri poems python qeq replica rigid shock snap spin srd voronoi

User-contributed packages: user-adios user-atc user-awpmd user-bocs user-cgdna user-cgsdk user-colvars user-diffraction user-dpd user-drude user-eff user-fep user-h5md user-intel user-lb user-manifold user-meamc user-mesodpd user-mesont user-mgpt user-misc user-mofff user-molfile user-netcdf user-omp user-phonon user-plumed user-ptm user-qmmm user-qtb user-quip user-reaction user-reaxc user-scafacos user-smd user-smtbq user-sdpd user-sph user-tally user-uef user-vtk user-yaff

Packages that need system libraries: compress mpiio python user-lb

Packages that need provided libraries: gpu kokkos message poems user-atc user-awpmd user-colvars user-mesont

Packages that need external libraries: kim latte mscg voronoi user-adios user-h5md user-molfile user-netcdf user-plumed user-qmmm user-quip user-smd user-vtk

make package                 list available packages
make package                 list available packages
make package-status (ps)     status of all packages
make package-installed (pi)  list of installed packages
make yes-package             install a single pgk in src dir
make no-package              remove a single pkg from src dir

卸载user-quip通过

make no-user-quip 

安装body

make yes-body

清空编译环境

用于重新编译

make clean-all
make clean-machine
make no-all

重新编译即可

输入文件与执行

  • 注释#
  • 参数即命令, lammps运行后逐条输入命令,如下图, 开始设置计算参数或者运行run n,执行结束后,继续输入run n则会继续计算
  • 当然也可以通过下面的方式执行
    • 重定向 lmp_serial < in.water
    • 管道 cat in.water | lmp_serial
    • 参数 lmp_serial -i in.water
  • 命令对大小写敏感
  • 续行用 &结尾
  • 使用variable定义变量,加$调用, 可以print, if等语法执行
  • 命令之间有前后顺序, 命令二次执行可能会覆盖/补全前面的设置,如 atom_style就是最后一次设置的值为最终结果
  • lammps的计算元素主要有原子、元素、mol、组、区域(atom or type or mol or group or region)这几类, 可以通过region,group等命令进行定义,
    很多命令也会调用相应的region ID, group ID进行进一步的设置
    其他的命令如fix,dump每一次执行也要创建一个ID,后面可以根据这个ID进行修改已经输入的命令(fix_modify,dump_modify)
  • 命令的风格一般是命令 本命令的ID 修改的计算元素/命令的ID 修改的性质/style 一堆参数

示例in.water

units		electron
atom_style	full

pair_style      lj/cut/tip4p/long 1 2 1 1 0.278072379 17.007
bond_style      class2 
angle_style     harmonic
kspace_style	pppm/tip4p 0.0001

read_data	data.water
pair_coeff  * * 0 0
pair_coeff  1  1  0.000295147 5.96946

neighbor	2.0 bin

run 2

初始化命令

units单位

可以参考lammps:unit的说明

This command sets the style of units used for a simulation. It determines the units of all quantities specified in the input script and data file, as well as quantities output to the screen, log file, and dump files. Typically, this command is used at the very beginning of an input script.

例如第一性常用的原子单位制类似的units electron, 常见的units real, 更多的看说明文档

dimension纬度

2或3维, 默认3维

dimension 2
dimension 3

boundary周期性条件

更多参考boundary
Syntax

boundary x y z

x,y,z = p or s or f or m, one or two letters

  • p is periodic
  • f is non-periodic and fixed
  • s is non-periodic and shrink-wrapped
  • m is non-periodic and shrink-wrapped with a minimum value

Examples

boundary p p f
boundary p fs p
boundary s f fm
#默认
boundary p p p

下面是各种xxx_style

atom_style决定了计算过程中会存储原子的哪些性质,用于计算力使用的物理量,以及read_data的命令
read_data中有角度的性质, 就不能只设置键长atom_style bond,会报错

ERROR: Angle_style command when no angles allowed (../input.cpp:1324)
Last command: angle_style     harmonic

需要在read_data, create_atoms, set等命令前执行.

atom_style

atom_style
目前设置atom_style full即可, 默认atom_style atomic

bond_style

angle_style

kspace_style

neighbor

参考(八)neighbor command@Roy Kid
临近表

neighbor skin style
#示例
neighbor 0.3 bin
  • skin = extra distance beyond force cutoff (distance units),对距离小于force cutoff + skin 的原子建立表
  • style = bin or nsq or multi, 计算表的算法

为了减少计算量, lammps只计算距离在一定范围内的原子间受力,这些成对的原子在一定时间步长内还是成对的关系, 将原子间距小于(cutoff + skin distance)的原子保存为一个neighbor list的表, 不用每一步都进行成对原子搜索. 当表中的原子间距超过cutoff + skin distance就需要更新表信息, 显然skin distance越大, 更新的频率就越低, 表中的原子数多计算量也会增加, 一个需要权衡的参数.

style 的选取决定了建立表的算法

  • bin 计算量随着 原子总数/处理器核数 线性变化;
  • nsq 计算量随着 (原子总数/处理器核数)^2 线性变化,但是在特定情况下会比bin要快。
  • multi 则是一个为了适应具有变化很大的cutoff的体系,会对每种原子建立不同的list。这样子的话就不会出现无谓的计算。

neigh_modify

建立临近表的参数,更新的频率.

neigh_modify keyword values ...
#示例: 距离上一步更新的后5步更新?
neigh_modify	delay 5

原子构型

只有设置了上面的各种 xxx_style后才可以设置原子构型

read_data从构型文件中读入原子构型

read_data	data.water

构型文件格式, 并不需要全部设置

  • 首行: 标题 (即使是空白,也要保留一行)
  • 建议首行和下面的统计信息之间保留一行空白,没意义,只是排版好看
  • 统计信息,下面的统计信息没有顺序,但是不能把后面的``Masses`等结构信息放在任何统计信息的前面
    • X atoms 体系的总原子数
    • X bonds 体系的总键数
    • X angles 体系的总角数
    • X dihedrals 体系的总二面角数
    • X impropers 体系的总impropers dihedral数

    • X atom types 原子类型数
    • X bond types 化学键类型数
    • X angle types 键角类型数
    • X dihedral types 二面角类型数
    • X improper types impropers dihedral类型数

    • X_min X_max xlo xhi 模拟盒子在x方向的范围
    • X_min X_max ylo yhi 模拟盒子在y方向的范围
    • X_min X_max zlo zhi 模拟盒子在z方向的范围
  • 下面的具体原子、键、角等信息都是采用下面的格式,
    Masses和下面的内容要隔一行,空白或者#都可以
    这些键角信息可以交换顺序
    标签
    #空行,这一空行不能省略
    编号 数值
    ...
    编号 数值
    
  • Masses 原子质量
    示例
    Masses
    
    1 15.9994
    2  1.0080
    
  • Bonds
  • Angles
  • Bond Coeffs
  • Angle Coeffs
  • Atoms 原子坐标
Atoms
 
 1 1 1 -1.1128       3.84600000       5.67200001       1.32300000
 2 1 2 0.5564        2.97900000       7.05400000       0.85700000
 3 1 2 0.5564        5.52500001       5.69700001       0.45100000
#原子编号  
  • 等等

data.water示例

LAMMPS Description
 
           3  atoms
           2  bonds
           1  angles
 
           2  atom types
           1  bond types
           1  angle types
 
         0 35.233 xlo xhi
         0 35.233 ylo yhi
         0 35.233 zlo zhi
 
Masses
 
  1 15.9994
  2  1.0080
 
Bond Coeffs
 
  1    1.78    0.2708585 -0.327738785 0.231328959
 
Angle Coeffs
 
  1    0.0700  107.400000

Atoms
 
 1 1 1 -1.1128       3.84600000       5.67200001       1.32300000
 2 1 2 0.5564        2.97900000       7.05400000       0.85700000
 3 1 2 0.5564        5.52500001       5.69700001       0.45100000

Bonds

 1 1 1 2
 2 1 1 3

Angles

 1 1 2 1 3

关于lammps学习的一点汇总 MS建好模型后使用Discover模块,j康Forcefield设置为cvff,计算后将构型文件到处保存为.car, .cor类型 ./msi2lmp.exe ** -class I -frc cvff > data.** 将导出的两个文件转为lammpsdata文件

read_restart

创建原子构型

通过命令创建

lattice 晶格

lattice

lattice style scale keyword values ...
#示例: 六方晶系, 缩放系数0.7?
lattice		hex 0.7

region建立模拟区域

region

region ID style args keyword arg ...
#style = delete or block or cone or cylinder or plane or prism or sphere or union or intersect
#示例: 创建ID为box的region
region		box block 0 40 0 10 -0.25 0.25

create_box相应region的原子类型数

create_box

create_box N region-ID keyword value ...
#示例:三种原子
create_box	3 box

create_atoms

create_atoms

create_atoms type style args keyword values ...
#示例:在box style中填充原子
create_atoms	1 box

delete_atoms

删除指定的原子delete_atoms

delete_atoms style args keyword value ...
#style = group or region or overlap or porosity
#以x,y,z=10,4,0为球心,半径为3的区域void1, 删除void中的原子
region		void1 sphere 10 4 0 3
delete_atoms	region void1

mass

mass I value
# I = atom type (see asterisk form below)
# value = mass
#示例
mass		1 1.0
mass		2 1.0
mass		3 1.0

复制

力场、计算、输出参数

力场系数可以通过这些命令定义 : pair_coeff, bond_coeff, angle_coeff, dihedral_coeff, improper_coeff, kspace_style, dielectric, special_bonds. 注意, 其实力场系数也可以在 data 文件中制定

各 种 模 拟 参 数 由 这 些 命 令 设 置 : neighbor, neigh_modify, group, timestep, reset_timestep, run_style, min_style, min_modify.

pair_style

原子间的相互作用势,pair_style
tip4p的水模型也在这里设置

pair_style style args
  • style = one of the styles from pairs
  • args = arguments used by a particular style

Categories of pair styles

  • Solids
    • eam, eim, meam, adp
  • Bio and polymers
    • charmm, class2, gromacs, dreiding
  • Reactive
    • tersoff, bop, airebo, comb, reax, reax/c
  • Coarse-grained
    • dpd, granular, sph, peri, colloid, lubricate, brownian, FLD
  • Aspherical
    • gayberne, resquared, line, tri
  • Pair table for tabulation of any pair-wise interaction
  • Pair hybrid style allows for hybrid models
    • polymers on metal
    • CNTs in water
    • solid-solid interface between 2 materials
  • 也可以使用自己优化出来的势场, 需要重新编译

示例

pair_style	lj/cut 1.12246
# lj/cut : cutoff Lennard-Jones potential without Coulomb, 
# 1.12246 :  cutoff = global cutoff for Lennard Jones interactions (distance units)

pair_coeff

描述每种类型的原子之间的相互作用, pair_coeff 也可以在read_data中设置,这里的具体参数要参考pair_style中特定的类型
可以输入多次,会覆盖之前的设置

pair_coeff I J args
  • I,J = atom types (see asterisk form below), I=1,N, I<=J, 可以使用通配符*代替
  • args = coefficients for one or more pairs of atom types

示例

pair_style	lj/cut 1.12246
pair_coeff	* * 1.0 1.0 1.12246

对于lj/cut,I,J后面的参数分别为LJ势中的$\epsilon, \sigma$和截断距离$r_c$,详见pair_lj

group

lammps教程:group命令详解

group就是对原子进行分组,被group后的原子会被分配一个group-ID,这个group-ID被用到fix、compute、dump等命令中 即使不对原子进行分组,lammps也会设置一个默认的原子组:all,也就是把所有的原子全部划分到all组内。

示例

#用region设置left和right的区域, 用于设置group
region	        1 block INF INF INF 1.25 INF INF
#创建lower组
group		lower region 1

region		2 block INF INF 8.75 INF INF INF
#创建upper组
group		upper region 2
#合并lower,upper组为boundary组
group		boundary union lower upper
#减去boundary创建flow组
group		flow subtract all boundary

set

可以设置原子/种类/mol/组/区域的性质set

set style ID keyword values ...
  • style = atom or type or mol or group or region
  • ID = atom ID range or type range or mol ID range or group ID or region ID
    #设置lower组的原子类型为2 ?
    set		group lower type 2
    

    compute

    设置对特定组的性质的计算,如键长、键角、受力、PE势、压力、温度等compute

    compute ID group-ID style args
    
  • ID = user-assigned name for the computation, ID金威字母数字下划线
  • group-ID = ID of the group of atoms to perform the computation on
  • style = one of a list of possible style names (see compute)
  • args = arguments used by a particular style
#计算flow组的的温度, 这个计算任务称为mobile
compute	        mobile flow temp

fix

给group中的原子施加约束,如控制温度(系综)、施加约束力等fix
LAMMPS翻译系列】fix命令@Michael Duan

fix ID group-ID style args
  • ID = user-assigned name for the fix
  • group-ID = ID of the group of atoms to apply the fix to
  • style = one of a long list of possible style names (see below)
  • args = arguments used by a particular style
  • 创建相同的fix ID时, 之前创建的规则会被覆盖unfix ID可用于删除
  • fix_modify可用于修改之前fix定义的内容fix_modify fix-ID keyword value ... fix_modify
    keyword = temp or press or energy or virial or respa or dynamic/dof or bodyforces
    • temp value = compute ID that calculates a temperature
    • press value = compute ID that calculates a pressure
    • energy value = yes or no
    • virial value = yes or no
    • respa value = 1 to max respa level or 0 (for outermost level)
    • dynamic/dof value = yes or no yes/no = do or do not re-compute the number of degrees of freedom (DOF) contributing to the temperature
    • bodyforces value = early or late early/late = compute rigid-body forces/torques early or late in the timestep
#设置all组的原子系综为nve
fix		1 all nve
#设置flow组温度受到velocity rescaling调控
#fix ID group-ID temp/rescale N Tstart Tstop window fraction
#N = perform rescaling every N steps
#Tstart,Tstop = desired temperature at start/end of run (temperature units)
#window = only rescale if temperature is outside this window (temperature units)
#fraction = rescale to target temperature by this fraction
fix		2 flow temp/rescale 200 1.0 1.0 0.02 1.0
#对fixid为2的体系计算mobile定义的温度
fix_modify	2 temp mobile

velocity

设置或更改一组原子的速度 velocity

velocity group-ID style args keyword value ...

示例

#设置boundary组上的速度值为vx=0,vy=0,vz=0
velocity	boundary set 0.0 0.0 0.0

运行和输出

timestep

后续md的时间步长, 单位由units决定. 不同单位的默认值不同

thermo N

每N步输出热动力学信息,N=10时,如

Step Temp E_pair E_mol TotEng Press Volume
       0    1.0027471            0            0   0.68849216   0.46317653    1143.0857
      10     1.091169            0            0   0.74920316   0.50401927    1143.0857
      20    1.3047062 -0.057652912            0   0.83816619   0.67076018    1143.0631
      30    1.2108687 -0.014991048            0   0.81639861    1.9009106    1143.0112
      40    1.1789723 -0.087469689            0   0.72201977    2.6110714    1143.1194
...

thermo_style

设置用于将热力学数据打印到屏幕和日志文件的样式和内容。

thermo_modify

修改/设置thermo_style的结果, thermo_modify

thermo_modify keyword value ...
#按照计算mobile输出温度信息
thermo_modify	temp mobile

dump

每N个时间步将原子信息(坐标、受力、原子速度等)的快照转储文件(文本、压缩、图片等)中,dump 图片视频需要在编译的时候添加参数和库依赖

dump ID group-ID style N file args
  • ID:dump命令编号
  • group-ID:输出的原子组ID
  • style:输出类型.
    style = atom or atom/gz or atom/zstd or *atom/mpiio or cfg or cfg/gz or cfg/zstd or cfg/mpiio or custom or custom/gz or custom/zstd or custom/mpiio or dcd or h5md or image or local or local/gz or local/zstd or molfile or movie or netcdf or netcdf/mpiio or vtk or xtc or xyz or xyz/gz or xyz/zstd or xyz/mpiio

  • N:每隔N步输出一次文件
  • file:保存的文件名
  • args:参数

dump atom

atom型输出,没有参数

#每10步保存all组的原子结构
dump		1 all atom 10 dump.obstacle

输出文件

ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
769
ITEM: BOX BOUNDS pp ss pp
0.0000000000000000e+00 5.1374269009840255e+01
-2.2245711031688635e-03 2.2247935602791809e+01
-3.2108918131150160e-01 3.2108918131150160e-01
ITEM: ATOMS id type xs ys zs
1 2 0 9.998e-05 0.5
3 2 0.025 9.998e-05 0.5
5 2 0.05 9.998e-05 0.5
7 2 0.075 9.998e-05 0.5
9 2 0.1 9.998e-05 0.5
......
ITEM: TIMESTEP
10
ITEM: NUMBER OF ATOMS
769
ITEM: BOX BOUNDS pp ss pp
0.0000000000000000e+00 5.1374269009840255e+01
-2.2245711031688635e-03 2.2247935602791809e+01
-3.2108918131150160e-01 3.2108918131150160e-01
ITEM: ATOMS id type xs ys zs
1 2 0 9.998e-05 0.5
3 2 0.025 9.998e-05 0.5
5 2 0.05 9.998e-05 0.5
...

atom/gz保存压缩型原子构型,文件的拓展名必须是`.gz,不然会报错

dump		1 all atom/gz 10 dump.obstacle.gz

解压后和atom型一致

gzip -d dump.obstacle.gz

dump image

image型输出,需要编译时添加jpeg库

dump ID group-ID style N file color diameter keyword value ...

LAMMPS中dump image command和dump movie command@peachRL

  • style:image or movie
  • file:导出的文件名
  • color:由什么来区分粒子的颜色,
    比如说type:
    • type 1 = red
    • type 2 = green
    • type 3 = blue
    • type 4 = yellow
    • type 5 = aqua
    • type 6 = cyan
    • 更多颜色就要由dump_modify acolor command来实现了
  • diameter:由什么来区分粒子的大小,比如type。默认所有type的粒子直径1.0,更多设置由dump_modify adiam command来实现
  • keyword:其他设置,有atom、adiam、bond、line、tri、body、fix、size、view、center、up、zoom、persp、box、axes、subbox、shiny、ssao
    • zoom缩放模拟框的大小
    • adiam重置直径数据
#每10步保存构型
dump		2 all image 10 image.*.jpg type type &
		zoom 1.6 adiam 1.5

输出image.0.jpg,image.10.jpg,...

#设置dump id=2中的*号为五位整数
dump_modify	2 pad 5

此时输出为image.00000.jpg,image.00010.jpg,...

run N

进行md计算,跑N步

log文件

log.lammps中包含计算参数和屏幕输出的内容

耗时比例

Section |  min time  |  avg time  |  max time  |%varavg| %total
---------------------------------------------------------------
Pair    | 0.0047696  | 0.0047696  | 0.0047696  |   0.0 | 27.22
Neigh   | 0.0028307  | 0.0028307  | 0.0028307  |   0.0 | 16.15
Comm    | 0.00031137 | 0.00031137 | 0.00031137 |   0.0 |  1.78
Output  | 0.00034046 | 0.00034046 | 0.00034046 |   0.0 |  1.94
Modify  | 0.0084453  | 0.0084453  | 0.0084453  |   0.0 | 48.19
Other   |            | 0.0008266  |            |       |  4.72

报错

Unrecognized atom style ‘full’ is part of the MOLECULE package

(python37) cndaqiang@mommint:~/work/rpmd/LearnPIMD/pimd-tutorial/master/exercises/day-1/ex-1$ lmp_serial < in.water
LAMMPS (10 Feb 2021)
ERROR: Unrecognized atom style 'full' is part of the MOLECULE package which is not enabled in this LAMMPS binary. (../atom.cpp:710)
Last command: atom_style	full

通过lmp_serial --help查看支持的 Atom styles

* Atom styles:

atomic          body            charge          ellipsoid       hybrid
line            sphere          tri

发现没有full
解决方案:重新编译,添加MOLECULE模块支持

make yes-MOLECULE
make serial -j10

lmp_serial --help查看

* Atom styles:

angle           atomic          body            bond            charge
ellipsoid       full            hybrid          line            molecular
sphere          template        tri

可以了

同样的问题

  • is part of the KSPACE package
    (python37) cndaqiang@mommint:~/work/rpmd/LearnPIMD/pimd-tutorial/master/exercises/day-1/ex-1$ lmp_serial < in.water
    LAMMPS (10 Feb 2021)
    ERROR: Unrecognized pair style 'lj/cut/tip4p/long' is part of the KSPACE package which is not enabled in this LAMMPS binary. (../force.cpp:288)
    Last command: pair_style      lj/cut/tip4p/long 1 2 1 1 0.278072379 17.007
    

    同上

    make yes-KSPACE
    make serial -j10
    
  • is part of the CLASS2 package
    LAMMPS (10 Feb 2021)
    ERROR: Unrecognized bond style 'class2' is part of the CLASS2 package which is not enabled in this LAMMPS binary. (../force.cpp:399)
    Last command: bond_style      class2
    

    同上

    make yes-CLASS2
    make serial -j10
    
  • is part of the USER-MISC package
    ERROR: Unrecognized fix style 'ipi' is part of the USER-MISC package which is not enabled in this LAMMPS binary. (../modify.cpp:916)
    Last command: fix 1 all ipi 300K-G.0 32345 unix
    

    同上

    make yes-USER-MISC
    make serial -j10
    
  • is part of the COMPRESS package
    ERROR: Unrecognized dump style 'atom/gz' is part of the COMPRESS package which is not enabled in this LAMMPS binary. (../output.cpp:572)
    

    同上

    make yes-COMPRESS
    make serial -j10
    

not included

ERROR: Support for writing images in JPEG format not included
#修改Makedile文件
vi MAKE/OPTIONS/Makefile.g++_serial
#添加JPEG参数
LMP_INC =       -DLAMMPS_GZIP -DLAMMPS_JPEG
#设置库位置,根据实际系统决定
JPG_INC = -I/usr/include/
JPG_PATH = -L/usr/lib/x86_64-linux-gnu/
JPG_LIB = -ljpeg

make g++_serial后继续报错

../image.cpp:31:10: fatal error: jpeglib.h: No such file or directory
 #include <jpeglib.h>
          ^~~~~~~~~~~
compilation terminated.

因为系统缺少相应库jpeglib.h: No such file or directory

sudo apt-get install libjpeg62-dev

make g++_serial就可以了,获得可执行程序lmp_g++_serial

参数报错

ERROR: Dump atom/gz only writes compressed files (../dump_atom_gz.cpp:33)
Last command: dump		1gz all atom/gz 10 dump.obstacle

保存atom/gz型数据要求参数中的文件名的拓展名必须为压缩格式

#错误
dump		1gz all atom/gz 10 dump.obstacle
#正确
dump		1gz all atom/gz 10 dump.obstacle.gz

Environment or make variable QUIP_ROOT must be set.. Stop.

编译lammps时报错

make[1]: Leaving directory '/home/NFS/code/lammps/src'
Compiling LAMMPS for machine serial
make[1]: Entering directory '/home/NFS/code/lammps/src/Obj_serial'
../../lib/quip/Makefile.lammps:17: *** Environment or make variable QUIP_ROOT must be set..  Stop.
make[1]: Leaving directory '/home/NFS/code/lammps/src/Obj_serial'
make[1]: Entering directory '/home/NFS/code/lammps/src/Obj_serial'
../../lib/quip/Makefile.lammps:17: *** Environment or make variable QUIP_ROOT must be set..  Stop.
make[1]: Leaving directory '/home/NFS/code/lammps/src/Obj_serial'
Makefile:195: recipe for target 'serial' failed
make: *** [serial] Error 2

之前make yes-all时, 编译了很多package, QUIP 的package没有编译好/需要额外的设置,暂时不需要,卸载即可
通过make package查看到名字为user-quip,执行卸载

make no-user-quip

再编译

案例学习

参考

workshop
tutorials,这个教程中ppt提到的各种计算案例在lammps的源码目录的example目录下面都
推荐 我爱搜集网@Michael Duan

demo

Live demo #1: running a test example

lammps/examples/obstacle

本文首发于我的博客@cndaqiang.
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!


下一篇 C++ 学习笔记

目录

访客数据