Updating nn example and mliap .rst
This commit is contained in:
@ -16,7 +16,7 @@ Syntax
|
||||
.. parsed-literal::
|
||||
|
||||
*model* values = style filename
|
||||
style = *linear* or *quadratic* or *mliappy*
|
||||
style = *linear* or *quadratic* or *nn* or *mliappy*
|
||||
filename = name of file containing model definitions
|
||||
*descriptor* values = style filename
|
||||
style = *sna*
|
||||
@ -45,7 +45,7 @@ pair style currently supports just one descriptor style, but it is
|
||||
is straightforward to add new descriptor styles.
|
||||
The SNAP descriptor style *sna* is the same as that used by :doc:`pair_style snap <pair_snap>`,
|
||||
including the linear, quadratic, and chem variants.
|
||||
The available models are *linear*, *quadratic*, and *mliappy*.
|
||||
The available models are *linear*, *quadratic*, *nn*, and *mliappy*.
|
||||
The *mliappy* style can be used to couple python models,
|
||||
e.g. PyTorch neural network energy models, and requires building
|
||||
LAMMPS with the PYTHON package (see below).
|
||||
@ -77,13 +77,32 @@ line must contain two integers:
|
||||
* nelems = Number of elements
|
||||
* nparams = Number of parameters
|
||||
|
||||
This is followed by one block for each of the *nelem* elements.
|
||||
When the *model* keyword is *linear* or *quadratic*,
|
||||
this is followed by one block for each of the *nelem* elements.
|
||||
Each block consists of *nparams* parameters, one per line.
|
||||
Note that this format is similar, but not identical to that used
|
||||
for the :doc:`pair_style snap <pair_snap>` coefficient file.
|
||||
Specifically, the line containing the element weight and radius is omitted,
|
||||
since these are handled by the *descriptor*.
|
||||
|
||||
When the *model* keyword is *nn* (neural networks), the model file can contain
|
||||
blank and comment lines (start with #) anywhere. The second non-blank non-comment
|
||||
line must contain the string NET, followed by two integers:
|
||||
|
||||
* ndescriptors = Number of descriptors
|
||||
* nlayers = Number of layers (including the hidden layers and the output layer)
|
||||
|
||||
and followed by a sequence of a string and an integer for each layer:
|
||||
|
||||
* Activation function (linear, sigmoid, tanh or relu)
|
||||
* nnodes = Number of nodes
|
||||
|
||||
This is followed by one block for each of the *nelem* elements. Each block consists
|
||||
of *scale0* minimum values, *scale1* (maximum - minimum) values,
|
||||
in order to normalize the descriptors, followed by *nparams* parameters,
|
||||
including *bias* and *weights* of the model, starting with the first node of the first layer
|
||||
and so on, max. 30 parameters per line.
|
||||
|
||||
Notes on mliappy models:
|
||||
When the *model* keyword is *mliappy*, the filename should end in '.pt',
|
||||
'.pth' for pytorch models, or be a pickle file. To load a model from
|
||||
|
||||
41
examples/mliap/Cu_nn.mliap.model
Normal file
41
examples/mliap/Cu_nn.mliap.model
Normal file
@ -0,0 +1,41 @@
|
||||
# DATE: 2021-03-03 UNITS: metal CONTRIBUTOR: Pedro Antonio Santos Florez pedroantoniosantosf@gmail.com CITATION: none
|
||||
# Neural networks weights generated in PyXtal_FF
|
||||
|
||||
# total_species nparams
|
||||
1 71
|
||||
|
||||
# NET ndescriptors nlayers activation_func for layer 1, number of nodes for layer 1, ..., ..., ....,
|
||||
NET 30 3 tanh 2 tanh 2 linear 1
|
||||
|
||||
# Scale0
|
||||
98.5564567301067 0.1817576370006 -5.0513436999162 0.0453581866073 -4.4382278670569
|
||||
-2.6985391112026 -4.9445068940273 7.8840372041149 -12.8729456412560 -2.9748781222888
|
||||
-1.7702149043285 -4.6911979511282 -1.8167140506334 67.7067032503211 -12.5675074252146
|
||||
-10.3889411514447 -2.6194029974308 1.8750503488944 -5.0934919399232 4.2037760919263
|
||||
20.6488797181668 -8.2381178902428 -3.1311436510232 -1.1570117080256 2.1652328079269
|
||||
0.0854872341687 73.5970916724043 -5.3230176040510 -5.3409170596296 -6.4491186818574
|
||||
|
||||
# Scale1
|
||||
783.0204659783215 33.6453931227955 7.9068346594951 32.2509031640463 5.6624925894670
|
||||
5.6511565657016 8.2175114613285 108.9434600935519 16.3162547782998 6.4485086884047
|
||||
9.5767453287024 24.1576638495153 25.1723098340896 202.6741688060115 26.3843102888906
|
||||
19.7937707236334 13.9016635198379 14.1399097533048 72.7078614093291 39.8358080634714
|
||||
370.1745750951991 21.6864533954642 14.6554778261065 18.6456437491491 43.2946309680355
|
||||
68.9168418942695 481.9819429675007 14.5585849595560 61.9026061535013 112.5968384702330
|
||||
|
||||
# Coefficients
|
||||
-0.2503221860648 0.4607794046378 0.4080552184108 0.0043328332206 0.2778722163950
|
||||
-0.0050555739235 0.0406748042003 -0.1188215011883 0.4669700426246 0.4050949681583
|
||||
0.3004118858813 -0.3937378155782 0.5165632847373 0.1381866719908 -0.3996533578004
|
||||
0.1330571447244 0.1124773980921 0.1548275555377 -0.6221152970188 -0.7813275942231
|
||||
-0.4320969824072 0.2045533448767 -0.1687644566507 -0.0424066840175 -0.1981208883936
|
||||
-0.3406471991751 0.1272788573915 -0.1236220514264 0.6482374783971 -0.0590428211363
|
||||
0.1326060235944 0.1890472518561 -0.5428894028577 0.0229420637813 0.0750842032804
|
||||
-0.2443049940974 0.5265826743321 -0.1802773940492 0.0309737044359 -0.4987806786020
|
||||
-0.6233577810656 -0.9910225261357 0.3430680860751 0.2918559145139 0.0666915892882
|
||||
-0.2558026088950 0.0417769401952 -0.2582828540822 -0.3685977011673 0.4793473883461
|
||||
1.0290706767456 0.0400544448686 -0.1474888333296 0.2403156153173 0.1050109023846
|
||||
0.1413378531949 0.0907250056918 -0.1185878739508 0.1471942864979 -0.2829701766758
|
||||
0.1137318187684 0.0476123438306 0.8040349098084 -0.5432518550512 0.2312003570779
|
||||
0.6886872913686 -0.1247049894693 0.6848986783339 -2.6353147047309 -0.7173579584864
|
||||
-1.0543148168289
|
||||
21
examples/mliap/Cu_snap.mliap.descriptor
Normal file
21
examples/mliap/Cu_snap.mliap.descriptor
Normal file
@ -0,0 +1,21 @@
|
||||
# DATE: 2021-03-03 UNITS: metal CONTRIBUTOR: Pedro Antonio Santos Florez pedroantoniosantosf@gmail.com CITATION: none
|
||||
|
||||
# LAMMPS SNAP parameters for Cu
|
||||
|
||||
# required
|
||||
rcutfac 5.0
|
||||
twojmax 6
|
||||
|
||||
# elements
|
||||
|
||||
nelems 1
|
||||
elems Cu
|
||||
radelems 0.5
|
||||
welems 1.0
|
||||
|
||||
# optional
|
||||
|
||||
rfac0 0.99363
|
||||
rmin0 0
|
||||
bzeroflag 0
|
||||
switchflag 1
|
||||
55
examples/mliap/in.mliap.snap.nn.Cu
Normal file
55
examples/mliap/in.mliap.snap.nn.Cu
Normal file
@ -0,0 +1,55 @@
|
||||
|
||||
# Demonstrate MLIAP interface to SNAP nn Cu potential
|
||||
|
||||
# Initialize simulation
|
||||
|
||||
variable nsteps index 100
|
||||
variable nrep equal 4
|
||||
variable a equal 3.621262
|
||||
units metal
|
||||
|
||||
|
||||
# generate the box and atom positions using a BCC lattice
|
||||
|
||||
variable nx equal ${nrep}
|
||||
variable ny equal ${nrep}
|
||||
variable nz equal ${nrep}
|
||||
|
||||
boundary p p p
|
||||
|
||||
lattice fcc $a
|
||||
region box block 0 ${nx} 0 ${ny} 0 ${nz}
|
||||
create_box 1 box
|
||||
create_atoms 1 box
|
||||
|
||||
mass 1 63.546
|
||||
|
||||
# choose potential
|
||||
|
||||
pair_style mliap model nn Cu_nn.mliap.model descriptor sna Cu_snap.mliap.descriptor
|
||||
pair_coeff * * Cu Cu
|
||||
|
||||
# Setup output
|
||||
|
||||
compute eatom all pe/atom
|
||||
compute energy all reduce sum c_eatom
|
||||
|
||||
compute satom all stress/atom NULL
|
||||
compute str all reduce sum c_satom[1] c_satom[2] c_satom[3]
|
||||
variable press equal (c_str[1]+c_str[2]+c_str[3])/(3*vol)
|
||||
|
||||
thermo_style custom step temp epair c_energy etotal press v_press
|
||||
thermo 10
|
||||
thermo_modify norm yes
|
||||
|
||||
# Set up NVE run
|
||||
|
||||
timestep 0.5e-3
|
||||
neighbor 1.0 bin
|
||||
neigh_modify once no every 1 delay 0 check yes
|
||||
|
||||
# Run MD
|
||||
|
||||
velocity all create 300.0 4928459 loop geom
|
||||
fix 1 all nve
|
||||
run ${nsteps}
|
||||
Reference in New Issue
Block a user