LAMMPS (2 Apr 2025 - Development - patch_2Apr2025-270-g2351418c94-modified) # 3d Lennard-Jones melt with equal- and atom-style variables which # use a Python function wrapper in their formulas variable x index 3 variable y index 3 variable z index 3 units lj atom_style atomic lattice fcc 0.8442 Lattice spacing in x,y,z = 1.6795962 1.6795962 1.6795962 region box block 0 $x 0 $y 0 $z region box block 0 3 0 $y 0 $z region box block 0 3 0 3 0 $z region box block 0 3 0 3 0 3 create_box 1 box Created orthogonal box = (0 0 0) to (5.0387886 5.0387886 5.0387886) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 108 atoms using lattice units in orthogonal box = (0 0 0) to (5.0387886 5.0387886 5.0387886) create_atoms CPU = 0.000 seconds 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 20 check no fix 1 all nve # define Python truncate() function variable foo python truncate python truncate return v_foo input 1 iv_arg format fi here """ def truncate(x): return int(x) """ # use in equal-style variable variable scalar equal py_foo(4.5) print "TRUNCATE ${scalar}" TRUNCATE 4 # use in atom-style variable # examine dump file to see truncated xyz coords of each atom variable xtrunc atom py_foo(x) variable ytrunc atom py_foo(y) variable ztrunc atom py_foo(z) dump 1 all custom 100 tmp.dump id x y z v_xtrunc v_ytrunc v_ztrunc # use in vector-style variable compute ke all temp variable ke vector c_ke variable ketrunc vector py_foo(v_ke) thermo_style custom step temp epair v_ketrunc[*6] run 100 Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... update: every = 20 steps, delay = 0 steps, check = no max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 2.8 ghost atom cutoff = 2.8 binsize = 1.4, bins = 4 4 4 1 neighbor lists, perpetual/occasional/extra = 1 0 0 (1) pair lj/cut, perpetual attributes: half, newton on pair build: half/bin/atomonly/newton stencil: half/bin/3d bin: standard Per MPI rank memory allocation (min/avg/max) = 2.598 | 2.598 | 2.598 Mbytes Step Temp E_pair v_ketrunc[1] v_ketrunc[2] v_ketrunc[3] v_ketrunc[4] v_ketrunc[5] v_ketrunc[6] 0 1.44 -6.7733681 155 152 154 -10 -4 -6 100 0.82217015 -5.8614684 113 65 84 7 -1 -12 Loop time of 0.00278186 on 1 procs for 100 steps with 108 atoms Performance: 15529161.573 tau/day, 35947.133 timesteps/s, 3.882 Matom-step/s 100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- Pair | 0.0018161 | 0.0018161 | 0.0018161 | 0.0 | 65.29 Neigh | 0.00057543 | 0.00057543 | 0.00057543 | 0.0 | 20.68 Comm | 0.00019634 | 0.00019634 | 0.00019634 | 0.0 | 7.06 Output | 0.00012056 | 0.00012056 | 0.00012056 | 0.0 | 4.33 Modify | 4.8221e-05 | 4.8221e-05 | 4.8221e-05 | 0.0 | 1.73 Other | | 2.516e-05 | | | 0.90 Nlocal: 108 ave 108 max 108 min Histogram: 1 0 0 0 0 0 0 0 0 0 Nghost: 980 ave 980 max 980 min Histogram: 1 0 0 0 0 0 0 0 0 0 Neighs: 4071 ave 4071 max 4071 min Histogram: 1 0 0 0 0 0 0 0 0 0 Total # of neighbors = 4071 Ave neighs/atom = 37.694444 Neighbor list builds = 5 Dangerous builds not checked print "KE TENSOR ${ketrunc}" KE TENSOR [113,65,84,7,-1,-12] Total wall time: 0:00:00