Added script for RMSE on numerical forces
This commit is contained in:
24
examples/snap/fnum.py
Normal file
24
examples/snap/fnum.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import lammps
|
||||||
|
|
||||||
|
def sqerr(a,b):
|
||||||
|
return (a[0]-b[0])**2+(a[1]-b[1])**2+(a[2]-b[2])**2
|
||||||
|
|
||||||
|
infile = "in.fnum"
|
||||||
|
|
||||||
|
fdeltalist = [1.0e-2,1.0e-3,1.0e-4,1.0e-5,1.0e-6,1.0e-7,1.0e-8,1.0e-9,1.0e-10]
|
||||||
|
|
||||||
|
print("Fdelta RMSE")
|
||||||
|
for fdelta in fdeltalist:
|
||||||
|
cmdlist = ["-screen","none","-var","fdelta",f'{fdelta}']
|
||||||
|
lmp = lammps.lammps(cmdargs = cmdlist)
|
||||||
|
lmp.file(infile)
|
||||||
|
natoms = lmp.get_natoms()
|
||||||
|
|
||||||
|
f = lmp.extract_atom("f")
|
||||||
|
fnum = lmp.extract_fix("fnum", lammps.LMP_STYLE_ATOM, lammps.LMP_TYPE_ARRAY)
|
||||||
|
|
||||||
|
sumsq = 0
|
||||||
|
for i in range(natoms):
|
||||||
|
sumsq += sqerr(fnum[i],f[i])
|
||||||
|
rmse = (sumsq/natoms)**0.5
|
||||||
|
print(f"{fdelta} {rmse}")
|
||||||
Reference in New Issue
Block a user