# 3d Lennard-Jones melt with Python functions added

units		lj
atom_style	atomic

lattice		fcc 0.8442
region		box block 0 10 0 10 0 10
create_box	1 box
create_atoms	1 box
mass		1 1.0

velocity	all create 1.44 87287 loop geom

pair_style	lj/cut 2.5
pair_coeff	1 1 1.0 1.0 2.5

neighbor	0.3 bin
neigh_modify	delay 0 every 1 check yes

fix		1 all nve

run		10

# 1st Python function
# example of catching a syntax error

python          simple here """
def simple():
  import exceptions
  print "Inside simple function"
  try:
    foo += 1
  except Exception, e:
    print "FOO error:",e
"""

python          simple invoke

# 2nd Python function
# example of returning the function value to a python-style variable
# invoke it twice

variable        fact python factorial
python          factorial input 1 v_n return v_fact format ii here """
def factorial(n):
  if n == 1: return 1
  return n*factorial(n-1)
"""

variable        n string 10
python          factorial invoke
print           "Factorial of $n = ${fact}"

variable        n string 20
python          factorial invoke
print           "Factorial of $n = ${fact}"

# 3rd Python function
# example of calling back to LAMMPS and writing a run loop in Python

variable        cut string 0.0

python          loop input 4 10 1.0 -4.0 SELF format iffp file funcs.py
python          loop invoke
