From 3dea3188aa7b71e71e2070f58d10c133bf43121c Mon Sep 17 00:00:00 2001 From: Aidan Thompson Date: Tue, 15 Dec 2020 12:14:03 -0700 Subject: [PATCH] Added a simple neural network potential --- examples/mliap/README | 8 +++ examples/mliap/in.mliap.pytorch.relu1hidden | 53 ++++++++++++++++++ examples/mliap/relu1hidden.mliap.pytorch | 18 ++++++ .../mliap/relu1hidden.mliap.pytorch.model.pkl | Bin 0 -> 4059 bytes 4 files changed, 79 insertions(+) create mode 100644 examples/mliap/in.mliap.pytorch.relu1hidden create mode 100644 examples/mliap/relu1hidden.mliap.pytorch create mode 100644 examples/mliap/relu1hidden.mliap.pytorch.model.pkl diff --git a/examples/mliap/README b/examples/mliap/README index 68b6f2e200..2641bdc975 100644 --- a/examples/mliap/README +++ b/examples/mliap/README @@ -72,3 +72,11 @@ or The resultant log.lammps output should be identical to that generated by in.mliap.snap.Ta06A and in.mliap.pytorch.Ta06A. + +in.mliap.pytorch.relu1hidden +---------------------------- +This example demonstrates a simple neural network potential +using PyTorch and SNAP descriptors. It uses a ReLU activation +function with just 1 hidden layer. + +`lmp -in in.mliap.pytorch.relu1hidden -echo both` diff --git a/examples/mliap/in.mliap.pytorch.relu1hidden b/examples/mliap/in.mliap.pytorch.relu1hidden new file mode 100644 index 0000000000..f19ffb608d --- /dev/null +++ b/examples/mliap/in.mliap.pytorch.relu1hidden @@ -0,0 +1,53 @@ +# Demonstrate MLIAP interface to linear SNAP potential + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.316 +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 bcc $a +region box block 0 ${nx} 0 ${ny} 0 ${nz} +create_box 1 box +create_atoms 1 box + +mass 1 180.88 + +# choose potential + +include relu1hidden.mliap.pytorch + +# 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} + diff --git a/examples/mliap/relu1hidden.mliap.pytorch b/examples/mliap/relu1hidden.mliap.pytorch new file mode 100644 index 0000000000..a2271cee39 --- /dev/null +++ b/examples/mliap/relu1hidden.mliap.pytorch @@ -0,0 +1,18 @@ +# DATE: 2014-09-05 UNITS: metal CONTRIBUTOR: Aidan Thompson athomps@sandia.gov CITATION: Thompson, Swiler, Trott, Foiles and Tucker, arxiv.org, 1409.3880 (2014) + +# Definition of SNAP potential Ta_Cand06A +# Assumes 1 LAMMPS atom type + +variable zblcutinner equal 4 +variable zblcutouter equal 4.8 +variable zblz equal 73 + +# Specify hybrid with SNAP, ZBL + +pair_style hybrid/overlay & +zbl ${zblcutinner} ${zblcutouter} & +mliap model mliappy relu1hidden.mliap.pytorch.model.pkl & +descriptor sna Ta06A.mliap.descriptor +pair_coeff 1 1 zbl ${zblz} ${zblz} +pair_coeff * * mliap Ta + diff --git a/examples/mliap/relu1hidden.mliap.pytorch.model.pkl b/examples/mliap/relu1hidden.mliap.pytorch.model.pkl new file mode 100644 index 0000000000000000000000000000000000000000..49e70ca1a4f00345b5ce4ab4afb4d1e7549bba38 GIT binary patch literal 4059 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 E-*|c0EdT%j literal 0 HcmV?d00001