def setUp(self): L = PyLammps() L.units('lj') L.atom_style('atomic') L.boundary('p p p') L.atom_modify("map array") L.region('r1 block', -5.0, 5.0, -5.0, 5.0, -5.0, 5.0) L.create_box(1, 'r1') L.mass(1, 1.0) L.create_atoms(1, 'single', -1.0, 0.0, 0.0) L.create_atoms(1, 'single', 1.0, 0.0, 0.0) L.pair_style('lj/cut', 5.0) L.pair_coeff(1, 1, 1.0, 1.0) L.run(0) self.L = L
# time spans for scattering simulation in ps: initequalt = 1 # initial equilibration time between velocity reset and new scattering event dcheckafterscatteringt = 0.4 # time between scattering event and displacement check equilibrationt = 0.5 # time for equilibration # continue from existing geometry? continueprevsim = False #reset geometry after every run? resetgeom = False selectfromNIST = True # MD PARAMETERS: L.units("metal") L.atom_style("atomic") L.atom_modify("map array") latticeconst = 4.08 dispthresh = (4.08 + 3.52) / 2 / math.sqrt(2) * 0.90 NNthresh = (4.08 + 3.52) / 2 / math.sqrt(2) * 1.2 L.timestep(0.0005) # time-step in ps (metal units) dsub = 10 density = 2000 Amass = 12.011 * 1.660538E-27 nPartsub = int(round(Lsub * Lsub * dsub * 1e-30 * density / Amass)) print(nPartsub) #Au-C: (Lewis.2000) sigAuC = 2.74 # in A
class PythonPyLammps(unittest.TestCase): def setUp(self): machine = None if 'LAMMPS_MACHINE_NAME' in os.environ: machine = os.environ['LAMMPS_MACHINE_NAME'] self.pylmp = PyLammps( name=machine, cmdargs=['-nocite', '-log', 'none', '-echo', 'screen']) self.pylmp.units("lj") self.pylmp.atom_style("atomic") self.pylmp.atom_modify("map array") if 'LAMMPS_CMAKE_CACHE' in os.environ: self.cmake_cache = {} with open(os.environ['LAMMPS_CMAKE_CACHE'], 'r') as f: for line in f: line = line.strip() if not line or line.startswith('#') or line.startswith( '//'): continue parts = line.split('=') key, value_type = parts[0].split(':') if len(parts) > 1: value = parts[1] if value_type == "BOOL": value = (value.upper() == "ON") else: value = None self.cmake_cache[key] = value def tearDown(self): self.pylmp.close() del self.pylmp def test_version(self): self.assertGreaterEqual(self.pylmp.version(), 20200824) def test_create_atoms(self): self.pylmp.region("box block", 0, 2, 0, 2, 0, 2) self.pylmp.create_box(1, "box") x = [1.0, 1.0, 1.0, 1.0, 1.0, 1.5] types = [1, 1] self.assertEqual( self.pylmp.lmp.create_atoms(2, id=None, type=types, x=x), 2) self.assertEqual(self.pylmp.system.natoms, 2) self.assertEqual(len(self.pylmp.atoms), 2) numpy.testing.assert_array_equal(self.pylmp.atoms[0].position, tuple(x[0:3])) numpy.testing.assert_array_equal(self.pylmp.atoms[1].position, tuple(x[3:6])) self.assertEqual(self.pylmp.last_run, None) def test_write_script(self): outfile = 'in.test_write_script' self.pylmp.write_script(outfile) self.assertTrue(os.path.exists(outfile)) os.remove(outfile) def test_runs(self): self.pylmp.lattice("fcc", 0.8442), self.pylmp.region("box block", 0, 4, 0, 4, 0, 4) self.pylmp.create_box(1, "box") self.pylmp.create_atoms(1, "box") self.pylmp.mass(1, 1.0) self.pylmp.velocity("all create", 1.44, 87287, "loop geom") self.pylmp.pair_style("lj/cut", 2.5) self.pylmp.pair_coeff(1, 1, 1.0, 1.0, 2.5) self.pylmp.neighbor(0.3, "bin") self.pylmp.neigh_modify("delay 0 every 20 check no") self.pylmp.fix("1 all nve") self.pylmp.variable("fx atom fx") self.pylmp.run(10) self.assertEqual(len(self.pylmp.runs), 1) self.assertEqual(self.pylmp.last_run, self.pylmp.runs[0]) self.assertEqual(len(self.pylmp.last_run.thermo.Step), 2) self.assertEqual(len(self.pylmp.last_run.thermo.Temp), 2) self.assertEqual(len(self.pylmp.last_run.thermo.E_pair), 2) self.assertEqual(len(self.pylmp.last_run.thermo.E_mol), 2) self.assertEqual(len(self.pylmp.last_run.thermo.TotEng), 2) self.assertEqual(len(self.pylmp.last_run.thermo.Press), 2) def test_info_queries(self): self.pylmp.lattice("fcc", 0.8442), self.pylmp.region("box block", 0, 4, 0, 4, 0, 4) self.pylmp.create_box(1, "box") self.pylmp.variable("a equal 10.0") self.pylmp.variable("b string value") self.assertEqual(self.pylmp.variables['a'].value, 10.0) self.assertEqual(self.pylmp.variables['b'].value, 'value') self.assertEqual(len(self.pylmp.variables), 2) self.assertEqual(self.pylmp.system.units, 'lj') self.assertEqual(self.pylmp.system.atom_style, 'atomic') self.assertEqual(self.pylmp.system.ntypes, 1) self.assertEqual(self.pylmp.system.natoms, 0) self.assertEqual(self.pylmp.communication.comm_style, 'brick') self.assertEqual(self.pylmp.communication.comm_layout, 'uniform') self.assertEqual(self.pylmp.communication.nprocs, 1) self.assertEqual(len(self.pylmp.computes), 3) self.assertEqual(self.pylmp.computes[0]['name'], 'thermo_temp') self.assertEqual(self.pylmp.computes[0]['style'], 'temp') self.assertEqual(self.pylmp.computes[0]['group'], 'all') self.assertEqual(self.pylmp.computes[1]['name'], 'thermo_press') self.assertEqual(self.pylmp.computes[1]['style'], 'pressure') self.assertEqual(self.pylmp.computes[1]['group'], 'all') self.assertEqual(self.pylmp.computes[2]['name'], 'thermo_pe') self.assertEqual(self.pylmp.computes[2]['style'], 'pe') self.assertEqual(self.pylmp.computes[2]['group'], 'all') self.assertEqual(len(self.pylmp.dumps), 0) self.pylmp.fix('one', 'all', 'nve') self.assertEqual(len(self.pylmp.fixes), 1) self.assertEqual(self.pylmp.fixes[0]['name'], 'one') self.assertEqual(self.pylmp.fixes[0]['style'], 'nve') self.assertEqual(self.pylmp.fixes[0]['group'], 'all') self.pylmp.group('none', 'empty') self.assertEqual(len(self.pylmp.groups), 2)