Dear lammps users:
I’m a theoretical physics graduate student who’s new to the Lammps software.
I want to reproduce the results of a paper(DOI:10.1103/PhysRevB.109.054103) which utilized lammps for hysteresis simulation of a spin crossover material.
The method used in the article is to perform all atom molecular dynamics simulation on a 101010 [Fe(pyrazine)] [Ni(CN)4] supercell(the lattice of [Fe(pyrazine)] [Ni(CN)4] looks like this[https://imgur.com/a/molecule-simulation-4fBYjoy], and the supercell looks like this[https://imgur.com/a/vn2ZKic]), which has 16000 atoms in total. This method requires assigning force field constants to the two-body bond/pair potential, three-body angle potential, four-body dihedral angle potential etc, and the force field structure looks like this[https://imgur.com/a/WhxyINV]. I want to produce this 101010 supercell model with the complete bond, angle, dihedral and improper etc information attached for lammps to use. In the process of trying to accomplish this task, I found the most difficult part is to assign the exact angle, dihedral and improper potentials to the right site of the structure, because in lammps one can only create one angle/dihedral/improper bond a time by using create_bonds command.
From what I have learned so far, I can think of 3 strategies to accomplish this:
a) <1> use “lattice custom” command to create a unit cell[https://imgur.com/a/molecule-simulation-4fBYjoy] , <2> “region xxx block 0 10 0 10 0 10” to create the 101010 supercell, <3>“create_atoms 1 region xxx basis 1 1…” to fill the lattice with atoms, <4> create two body bonds , <5> “write_data” to produce the data file, <6> assign angle, dihedral and improper potentials to the model one by one by editing the data file. # this is the most time consuming method which I definitely want to avoid.
b)<1> use “lattice custom” command to create a 221 lattice[https://imgur.com/a/6aHKnlB], <2>“region xxx block 0 1 0 1 0 1” to create a region, <3> “create_atoms 1 region xxx basis 1 1…” to fill the lattice with atoms, <4>create two body bonds, <5> “write_data” to produce the data file, <6> assign angle, dihedral and improper potentials to the model one by one by editing the data file, <7> “read_data” to read data file in a new in.x.lmp file, then use “replicate 5 5 10” command to create a 101010 supercell, <8> “delete_atoms overlap” and some other commands to delete the overlap atoms, add the missing bonds etc to produce the desired final model. # this method can save a lot of work. But the problem is that I don’t know how well and complete the “replicate” command could build the necessary bond, angle, dihedral and improper interactions between atoms. Besides, I heard that software like moltemplate etc can also replicate the structures. Does anyone have any idea which “replicate” could meet my needs better? Another problem is that it seems to me the “molecule” command can also produce a structure to be replicated, then does the “molecule” command suit me better than “lattice—region—…” method in this case?
c) <1> use “lattice custom” command to create a unit cell[https://imgur.com/a/molecule-simulation-4fBYjoy] , <2> “region xxx block 0 10 0 10 0 10” to create the 101010 supercell, <3>“create_atoms 1 region xxx basis 1 1…” to fill the lattice with atoms, <4> “fix bond/create” command to create bonds and “atype”, “dtype” and “itype” keywords to create the corresponding angle, dihedral and improper interactions. # the lammps documentation hasn’t talked about from what kind of rules the a,d and itype keywords create the angle, dihedral and improper interaction based on a pair of atoms, e.g. let’s say a bond is created between atom no. 1(belong to atom type a) and 2(type b) by command “fix bond/create … dtype 2 …”, then how can I be certain which other two atoms atom 1 and 2 create a dihedral bond with and at what kind of order? These rules are important in this case because the angle, dihedral and improper interactions have certain kind of structure[https://imgur.com/a/WhxyINV].
From your experiences, which kind of method is the better one to create the needed model in my case?
Comments and advice are very much appreciated, thank you!