Two questions on Important note of fix/bond create

Hello lammps users:

Clarifications are needed for the important note of fix/bond create command:

First question:

This is about the important note that starts with the line “To creat a new bond the internal ……”

This important note states that the list of bonds is scanned and the maximum number of bonds per atom is tallied. I have a bonded system. When I run my simulation in the nve ensemble (simply integrating the equations of motion using verlet algorithm) I get the the following output on the screen

5 = max bonds/atom

scanning angles …

6 = max angles/atom

scanning dihedrals …

24 = max dihedrals/atom

reading bonds …

93 bonds

reading angles …

166 angles

reading dihedrals …

271 dihedrals

Finding 1-2 1-3 1-4 neighbors …

4 = max # of 1-2 neighbors

10 = max # of 1-3 neighbors

19 = max # of 1-4 neighbors

22 = max # of special neighbors

My interpretation of the important note:

Based on the important note, this means that I can create a maximum of 5 bonds per atom using fix bond/create command without allocating space that is without using the “extra bond per atom” in the header file of lammps. If I want to create 7 bonds per atom, only then I should use the extra bond per atom keyword. In this case for example, if I want to create 7 bonds per atom, I need to use the keyword

“2 extra bond per atom” since I am creating 2 additional bonds more the max bonds which is 5.

What I observed:

However, this is not what I observed. I created a single bond lets say between atom A and B using the fix bond/create for the system. But, I was not able to do so without allocating space, that is without entering this line “1 extra bond per atom” in the header file,

Why is this so ? the manual explicitly
states that "If some atom will acquire more bonds than this limit as this fix operates, then the "extra bond per atom… "

Second question:

The second question is about the important note that starts with the line “LAMMPS stores and maintains a data structure with a list of the 1st, 2nd, and 3rd neighbors of each atom…”

My interpretation:

This important note states that Lammps needs to update the neighbour list per atom when a bond is formed, which means that I need to allocate space using the extra keyword in the special bonds command (or in the header by using the “extra special per atom”).

In my case I should set this to

special bonds …… extra (4+10+19)

What I observed:

However for the same system for which I created a single bond as I explained above, I did not use the extra keyword for the special bonds command, but still I was able to create a bond

Final result:

So If I re-read the data file (using read data) that I obtained at the end of creating the bond (emphasis: with using the extra bond per atom keyword and without using the extra keyword in the special bonds command) I get the following result

5 = max bonds/atom

scanning angles …

6 = max angles/atom

scanning dihedrals …

24 = max dihedrals/atom

reading bonds …

94 bonds

reading angles …

166 angles

reading dihedrals …

271 dihedrals

Finding 1-2 1-3 1-4 neighbors …

5 = max # of 1-2 neighbors

10 = max # of 1-3 neighbors

19 = max # of 1-4 neighbors

22 = max # of special neighbors

2 atoms in group crosslink

2 atoms in group del

The 1-2 neighbour has increased from 4 to 5, which is expected since I am creating a bond which will introduce atleast one topological neighbour but where did it get this space from since I did not allocate space using extra keyword in the special bonds command.

Overall conclusion and issues:

My interpretation of the online manual is contradicting with what I observe from my system.

Issue 1:

According to my interpretation,

“There are two lists that needs to grow when a bond is formed. One list is for the number of bonds/atom and other list is for the topological neighbours for the weighting factors to be taken into account, thus, we “need” to allocate space using the extra bond per atom and by using the extra keyword in the special bonds respectively. If one fails to allocate space for both the lists or atleast one list (for growing) lammps will not (should not) allow to create a bond”

However, this is not the case. So why is it contradicting from what it says in the manual?

Issue 2:

Also about this line of the important note,

“LAMMPS stores and maintains a data structure with a list of the 1st, 2nd, and 3rd neighbors of each atom (within the bond topology of the system) for use in weighting pairwise interactions for bonded atoms”

Is this topological structure accessible or is it calculated internally and does not show up in the output of a simulation ?

Can you please clarify these two issues and once again sorry for the long e-mail.

Thank you

Arun

HI Arun, on your first question, “max bonds/atom” refers to the max number of bonds that can exist for any atom, and not the number that can be created using fix bond create. fix bond create should not be allowed to make the total bonds on an atom greater than the max bond/atom (else there might not be enough memory). using “extra bond per atom” adds the extra space that is needed.

Tim