# 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_pressure equal 1.0 variable _u_mass equal 1.0 variable _u_force equal 1.0 # Isolated atom energy for this species in eV (computed in a separate LAMMPS calculation) variable isolated_atom_energy equal 0 # Define looping variables variable loopcount loop 42 variable latticeconst index 17.923500 16.722559 15.978264 15.437494 15.012514 14.662379 14.364632 14.105617 13.876408 13.670847 13.484509 13.314102 13.157117 13.011592 12.875967 12.748982 12.629600 12.516963 12.410348 12.309145 12.212831 12.120954 12.033124 11.949000 11.891730 11.831456 11.767845 11.700505 11.628973 11.552692 11.470985 11.383021 11.287762 11.183888 11.069684 10.942867 10.800299 10.637507 10.447789 10.220438 9.936734 9.559200 # 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 # Periodic boundary conditions along all three dimensions boundary p p p neigh_modify one 4000 # Create a diamond lattice using a single conventional (orthogonal) unit # cell with a lattice constant from the 'latticeconst' variable defined on line 15 above variable latticeconst_converted equal ${latticeconst}*${_u_distance} lattice diamond ${latticeconst_converted} region box block 0 1 0 1 0 1 units lattice create_box 1 box create_atoms 1 box mass 1 1.0 # Mass inconsequential since we're not performing time integration # Specify which KIM Model to use pair_style kim EAM_Dynamo_NicholAckland_2016v2_Cs__MO_144828415103_000 pair_coeff * * Cs # Variables used to rescale the box parameters, positions and forces so that the # quantities in the thermo output and dumpfile are in the original metal units # (Angstroms 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 xlo_metal equal xlo/${_u_distance} variable xhi_metal equal xhi/${_u_distance} variable ylo_metal equal ylo/${_u_distance} variable yhi_metal equal yhi/${_u_distance} variable zlo_metal equal zlo/${_u_distance} variable zhi_metal equal zhi/${_u_distance} variable xy_metal equal xy/${_u_distance} variable xz_metal equal xz/${_u_distance} variable yz_metal equal yz/${_u_distance} variable press_metal equal "c_thermo_press/v__u_pressure" variable pxx_metal equal pxx/${_u_pressure} variable pyy_metal equal pyy/${_u_pressure} variable pzz_metal equal pzz/${_u_pressure} variable pxy_metal equal pxy/${_u_pressure} variable pxz_metal equal pxz/${_u_pressure} variable pyz_metal equal pyz/${_u_pressure} 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} # Set what thermodynamic information to print to log thermo_style custom step atoms v_xlo_metal v_xhi_metal v_ylo_metal v_yhi_metal v_zlo_metal v_zhi_metal & v_pe_metal press v_press_metal v_pxx_metal v_pyy_metal v_pzz_metal & v_pxy_metal v_pxz_metal v_pyz_metal thermo 10 # Print every 10 steps # Set what information to write to dump file dump dumpid all custom 10 output/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 format line "%d %d %16.7f %16.7f %16.7f %16.7f %16.7f %16.7f" # Compute the energy and forces for this lattice spacing run 0 # Calculate cohesive energy variable natoms equal "count(all)" variable ecohesive equal "v_pe_metal/v_natoms - v_isolated_atom_energy" # Output cohesive energy and equilibrium lattice constant print "Cohesive energy: ${ecohesive} eV/atom" # Queue next loop clear # Clear existing atoms, variables, and allocated memory next latticeconst # Increment latticeconst to next value next loopcount # Increment loopcount to next value jump SELF # Reload this input script with the new variable values