forked from lijiext/lammps
86 lines
2.0 KiB
Plaintext
86 lines
2.0 KiB
Plaintext
# sample LAMMPS input script for viscosity of 2d LJ liquid
|
|
# Einstein form of Green-Kubo
|
|
|
|
# settings
|
|
|
|
variable x equal 20
|
|
variable y equal 20
|
|
|
|
variable rho equal 0.6
|
|
variable t equal 1.0
|
|
variable rc equal 2.5
|
|
|
|
variable p equal 400 # correlation length
|
|
variable s equal 5 # sample interval
|
|
variable d equal $p*$s # dump interval
|
|
|
|
# problem setup
|
|
|
|
units lj
|
|
dimension 2
|
|
atom_style atomic
|
|
neigh_modify delay 0 every 1
|
|
|
|
lattice sq2 ${rho}
|
|
region simbox block 0 $x 0 $y -0.1 0.1
|
|
create_box 1 simbox
|
|
create_atoms 1 box
|
|
|
|
pair_style lj/cut ${rc}
|
|
pair_coeff * * 1 1
|
|
|
|
mass * 1.0
|
|
velocity all create $t 97287
|
|
|
|
# equilibration run
|
|
|
|
fix 1 all nve
|
|
fix 2 all langevin $t $t 0.1 498094
|
|
fix 3 all enforce2d
|
|
|
|
thermo $d
|
|
run 10000
|
|
|
|
velocity all scale $t
|
|
|
|
unfix 2
|
|
|
|
# Einstein viscosity calculation
|
|
|
|
reset_timestep 0
|
|
|
|
# Define distinct components of symmetric traceless stress tensor
|
|
|
|
variable pxy equal pxy
|
|
variable pxx equal pxx-press
|
|
|
|
fix avstress all ave/time $s $p $d v_pxy v_pxx ave one &
|
|
file profile.einstein.2d
|
|
|
|
# Diagonal components of SS are larger by factor 2-2/d,
|
|
# which is 4/3 for d=3, but 1 for d=2.
|
|
# See Daivis and Evans, J.Chem.Phys, 100, 541-547 (1994)
|
|
|
|
variable scale equal vol/(2.0*$t*dt*$d)
|
|
variable diagfac equal 2-2/2
|
|
variable deltasqxy equal (f_avstress[1]*$d*dt)^2
|
|
variable deltasqxx equal (f_avstress[2]*$d*dt)^2/${diagfac}
|
|
|
|
# compute mean square displacements as running averages
|
|
|
|
fix avdeltasq all ave/time $d 1 $d v_deltasqxy v_deltasqxx ave running
|
|
|
|
# convert to viscosities
|
|
|
|
variable vxy equal f_avdeltasq[1]*${scale}
|
|
variable vxx equal f_avdeltasq[2]*${scale}
|
|
|
|
thermo_style custom step temp pe press pxy v_vxy v_vxx
|
|
|
|
run 500000
|
|
|
|
variable etaxy equal v_vxy
|
|
variable etaxx equal v_vxx
|
|
variable eta equal 0.5*(${etaxy}+${etaxx})
|
|
print "running average viscosity: ${eta}"
|