# The units we assume we'll use. The kim-lammps-preprocessor may swap this line out if
# running against a Simulator Model whose units are not 'metal'
units metal

# Variables that can be adjusted by kim-lammps-preprocessor to switch unit sets for
# Simulator Models
variable _u_distance equal 1.0
variable _u_energy equal 1.0
variable _u_mass equal 1.0
variable _u_force equal 1.0

# This line may be swapped out by kim-lammps-preprocessor if running against a Simulator
# Model whose atom_style is not 'atomic'
atom_style atomic

boundary p p p

box tilt large

neigh_modify one 4000

variable box_xlo equal 0.0
variable box_xhi equal 3.11088
variable box_ylo equal 0.0
variable box_yhi equal 3.08598
variable box_zlo equal 0.0
variable box_zhi equal 3.0937
variable  box_xy equal  -0.00971026
variable  box_xz equal  -0.0366668
variable  box_yz equal  -0.0729464

region box prism ${box_xlo} ${box_xhi} &
                 ${box_ylo} ${box_yhi} &
                 ${box_zlo} ${box_zhi} &
                 ${box_xy} ${box_xz} ${box_yz}

create_box 1 box

read_dump output/lammps_inputs/triclinicpbc_lammps.xyz 0 x y z box no add yes format xyz

group all region box

variable mass1_converted equal 28.0855*${_u_mass}
mass 1 ${mass1_converted}


variable xyfinal equal xy*${_u_distance}
variable xzfinal equal xz*${_u_distance}
variable yzfinal equal yz*${_u_distance}

change_box all x scale ${_u_distance} &
               y scale ${_u_distance} &
               z scale ${_u_distance} &
               xy final ${xyfinal} &
               xz final ${xzfinal} &
               yz final ${yzfinal} &
               remap

atom_modify sort 0 0

pair_style kim ThreeBodyCluster_SRS_StephensonRadnySmith_1996_Si__MO_604248666067_000
pair_coeff * * Si

# Use nsq neighlist method instead of binning since this is a small system
variable neigh_skin equal 2.0*${_u_distance}
neighbor ${neigh_skin} nsq

# Variables used to rescale the positions and forces so that the quantities in the
# thermo output and dumpfile are in the original metal units (angstrom and eV/angstrom)
# even if we're running with a Simulator Model that uses different units
variable  pe_metal  equal  "c_thermo_pe/v__u_energy"
variable   x_metal   atom         x/${_u_distance}
variable   y_metal   atom         y/${_u_distance}
variable   z_metal   atom         z/${_u_distance}
variable  fx_metal   atom           fx/${_u_force}
variable  fy_metal   atom           fy/${_u_force}
variable  fz_metal   atom           fz/${_u_force}

dump dumpid all custom 1 output/lammps_dump/lammps.dump id type v_x_metal v_y_metal v_z_metal &
                                            v_fx_metal v_fy_metal v_fz_metal
dump_modify dumpid sort id format line "%d %d %16.7f %16.7f %16.7f %16.7f %16.7f %16.7f"

thermo_style custom v_pe_metal

run 0