Confusion about reax/c/species and reax/c/bonds results

Dear Lammps Users,

I am doing a ReaxFF simulation of thermal decomposition of RDX with graphene sheet. I built up my model which includes 140 RDX molecules and a graphene sheet. And I use the Reax-lg potential file which is designed for energetic materials and suits my simulation case very well.

When I relax the system at 300K, the species information is not reasonable because it contains very big molecules such as C800O600H700N600 and so many (40-50) minor species like H, COH, CO and etc. However, the RDX molecules are not supposed to decompose during the relaxation period. Theoretically, the species information should only include one graphene sheet molecule and 140 RDX molecules. I change the cutoff values for each atom type pair several times and still cannot obtain the reasonable results. I also use the C programme in the reax tool to analyse the reax/c/bonds outputs and the results are also unreasonable. It may because the density of the system is big (about 1.8-1.9 cm3/g) then atoms are very close to each other so the species cannot easily be judged correctly. And also the RDX molecule is relatively big with 21 atoms.

I am wondering that anyone has any good idea that how I can get the reasonable species information of my simulation case?

Thanks in advance!

Kind Regards,

Lance

This may just be a question of adjusting the parameters in reax/c/species. It could also be that the graphene sheet is causing problems. I suggest you try to solve an easier problem: run pure RDX crystal at the correct density and see if you can get reax/c/species to correctly partition the system in to molecules.

Also, for slabs and surfaces, since all the atoms are “connected” it inevitably becomes one big molecule. You need to make sure your system was really not reacting by visualizing the system. If you have RDX to close to graphene they can break up instantly.

I would suggest you to follow Aidan’s advice to come up with a good set of cutoffs.

Ray

Dear Aidan and Ray,

Thanks a lot for your reply.

I think the only relevant parameter in reax/c/species that I can adjust is cutoff values and I have already tried many times but doesn’t work. Following your suggestion, I just built up a model with pure RDX molecules and test it. There is still very large molecule but the number of species is decreasing (around 20). By the way, I build up the model of amorphous RDX molecules not crystal RDX and I have to study that certain density (1.82 is the normal RDX density) and even biger.

Even if I can make sure the system is not really reacting, I still need the reasonable species information because I need study the time evolution of all main species especially RDX. Do you have any other suggestions? Thank you very much.

Kind Regards,

Lance

“I have already tried many times but doesn’t work.” This makes no sense to me. If you make the cutoffs large enough, you are guaranteed to detect a single supermolecule. If you make the cutoffs small enough, you are guaranteed to detect a monatomic gas. Clearly, there is a sweet spot somewhere in between.

Aidan

Dear Aidan,

I understand. Maybe I just need to test much more for cutoff value of each atom type pair to see if I can get the desired results. Thanks.

Kind Regards,

Lance

Several notes:

  1. Examine your fragment and see which broken bonds that should be connected and change the corresponding cutoff. The effect of cutoff is actually reverse of what Aidan said (sorry, Aidan!). From the doc page, “Bond-order cutoffs should be carefully chosen, as bond-order cutoffs that are too small may include too many bonds (which will result in an error), while cutoffs that are too large will result in fragmented molecules.”.
  2. Let your amorphous RDX equilibrate a bit (while making sure no reactions occur), then apply fix reax/c/species. With starting un-minimized structure you don’t get accurate species analysis
  3. A {nfreq} less than or equal to 1000 is recommended, while no more than 100 frames used in averaging is recommended.
  4. In sum, amorphous RDX is the culprit and you need to properly equilibrate it and find optimum BO cutoffs.
    Ray

Dear Ray,

Thank you so much for your suggestions!

I did try minimize first than relax using NVT. The minimized structure result is a little better than un-minimized one. I will try crystal RDX and in the meantime, I will try to find optimum BO cutoffs. Thanks again.

Kind Regards,

Lance

Hi ,

I have tried to use command compute cluster/atom , I have used these commands :

group cluster type 11 14 7 #this is atom types of which I want to determine their cluster size

compute Find cluster cluster/atom 6.0 # I want clusters within 6 A cutoff distance

dump See cluster custom 500 dump1.txt c_Find # This is what I used for dumping

But after I did short run and checked my dump1.txt file , I didnt understand the output I got in it (I have attached this dump file).

Can someone explain me how to dump information from this compute and what information I can get out of it ? Can I get number of different clusters and what exactly atoms I have in each cluster ? And how can I access that information ?

Normally I was calculating cluster size by using compute pair/local distance , and then writing my own program to get cluster size out of it :

compute 1 cluster pair/local dist #compute distance between all atoms in group

compute 2 cluster property/local patom1 patom2 #compute atom IDs
dump dist1 cluster local 500 distances.txt c_1 c_2[1] c_2[2] # dump distances and atom IDs into text file

But when I use compute pair/local dist it gives me all possible distances , is there any trick to get distances only between different atom types . say I have atom types N and M , and i want LAMMPs to dump me only distances N-----M and not N----N or M-----M , is there some way to do this ?

Thanx in advance for help .

  Hi ,

  I have tried to use command compute cluster/atom , I have used these
commands :

          group cluster type 11 14 7 #this is atom types of which I
want to determine their cluster size

          compute Find cluster cluster/atom 6.0 # I want clusters within
6 A cutoff distance

          dump See cluster custom 500 dump1.txt c_Find # This is what
I used for dumping

    But after I did short run and checked my dump1.txt file , I didnt
understand the output I got in it (I have attached this dump file).

    Can someone explain me how to dump information from this compute and
what information I can get out of it ? Can I get number of different
clusters and what exactly atoms I have in each cluster ? And how can I
access that information ?

​what is output is the cluster id (or 0). ​this is all explained in the
manual. you want to at least output the atom id in your custom dump, so you
can match the cluster ids with atom ids.

    Normally I was calculating cluster size by using compute pair/local
distance , and then writing my own program to get cluster size out of it :

     compute 1 cluster pair/local dist #compute
distance between all atoms in group
     compute 2 cluster property/local patom1 patom2
#compute atom IDs
     dump dist1 cluster local 500 distances.txt c_1 c_2[1] c_2[2] #
dump distances and atom IDs into text file

       But when I use compute pair/local dist it gives me all possible
distances , is there any trick to get distances only between different atom
types . say I have atom types N and M , and i want LAMMPs to dump me only
distances N-----M and not N----N or M-----M , is there some way to do this
?

​no.​ you would have to do some programming to write a custom compute or
add an option to compute pair/local that restricts output by optionally
introducing a second group (defaulting to all) so that only properties for
atoms in both groups are output.

axel.

Hi , thank you for your answer .

But I dont know how to match clusters IDs with atom IDs , I tried this but I got mistake by LAMMPS :

compute 2 cluster property/local patom1 patom2
compute Find cluster cluster/atom 6.0

dump See cluster atom 500 dump1.txt c_Find c_2[1] c_2[2]

Can I get more hint how to do it . Clusters can have any number of atoms inside and I dont see how to dump cluster ID + atom Ids inside of cluster .

Thanx .

Hi , thank you for your answer .

   But I dont know how to match clusters IDs with atom IDs , I tried this
but I got mistake by LAMMPS :

   compute 2 cluster property/local patom1 patom2
   compute Find cluster cluster/atom 6.0
​​
    dump See cluster atom 500 dump1.txt c_Find c_2[1] c_2[2]

   Can I get more hint how to do it . Clusters can have any number of
atoms inside and I dont see how to dump cluster ID + atom Ids inside of
cluster .

​you cannot mix local dump output and per atom dump output.​
​your dump command is ​wrong in multiple ways: you output an atom style
dump, which has no customizations. you need to output a custom dump and you
cannot access a local compute, only per-atom computes (which does apply to
compute cluster). the atom id is directly accessible as a custom dump
property.

let me repeat: all of this is documented in detail in the documentation.
the time delay between your posts is so short, that you cannot have studied
the relevant parts with the necessary care. please do that now and only ask
further questions, if you have specific questions about what is written
there.

if you post another "i just did <random thing> and LAMMPS complained about
it", i will not respond, anymore.

axel

​​​

Hi ,

It is not documented in details in documentation page , it is written vbery shortly and unclear , thats why I posted here in order to ask for help . Maybe it could have been written more nicely instead being rude to people who ask for help .

  Hi ,

   It is not documented in details in documentation page , it is written
vbery shortly and unclear , thats why I posted here in order to ask for
help . Maybe it could have been written more nicely instead being rude to
people who ask for help .

​you cannot expect to get a detailed step-by-step "do this not that"
protocol for each command. that would add a massive amount of redundancy
for no good reason.
the compute cluster documentation is indeed brief, but it is specific and
to the point. it explains what it computes and how and what it outputs.
with respect to output, i quote:

Output info:

This compute calculates a per-atom vector, which can be accessed by any
command that uses per-atom values from a compute as input. See Section 6.15
for an overview of LAMMPS output options.

if you then follow the link to Section 6.15, i.e. go to

​http://lammps.sandia.gov/doc/Section_howto.html#howto-15

​where a general overview is given on how to output different ​
​kinds of properties and so on.

i believe that is effective and sufficiently detailed for people to figure
out what they need to do.
and i also believe, that it can be expected from people that they make an
effort to study the documentation carefully and make some tests and
experiments to *understand* the principles. just randomly assembling
commands without consideration for the logic that is explained in Section
6.15, like your e-mails are indicating, is not productive and if you
consider it rude being pointed to that documentation, then you are just as
disrespectful to the effort that people have put into documenting things.
you cannot expect that you'll be spoonfed every little detail.

in addition, if you consider the documentation to be inadequate, that
common courtesy dictates, that you should describe exactly what is missing
and why and similarly what you don't understand. again, just posting
e-mails with "this doesn't work, how to fix it" is not very constructive.

the fact, that *you* are frustrated because you haven't understood how
output in LAMMPS works should motivate you to study the documentation more
carefully instead of complaining about being pointed to it. while there is
no problem in asking for help, your should respect the effort that people
put into responding to e-mails and *their* frustration, if you ask about
details, that are very well and precisely explained in the documentation,
only that you may not have looked carefully enough at it and in the right
way.

axel.

Thanx , I understood now . Each atom from group has its own cluster ID (equal to smallest ID in that cluster), so I can dump it + sort it , separately dump atom IDs +sort id and then use program to analyze those 2 dump files.

I have a question about cutoff distance from this command , is cluster defined like sphere with central atom , and other cluster members are within cutoff radius arround central atom ?

Or lets say I have cutoff 3A , but my cluster can be like “snake” 7A long where every atom from group has neighbour within 3A , but atoms at beginning and end of that cluster might have distance say 5-6A ?

Thank you .

Dude, the guy is providing free support on this list a dozen or more times a day. I would kindly suggest you save your complaints for the people you're paying to help you. Speaking only for myself, I'll take brusk help over polite silence any day of the week.

I'm pretty sure you didn't pay for the software, either, so if you don't approve of the documentation there's nothing stopping you from writing up some better documentation yourself and sharing it with the project. Expecting other people to do free work for you is, well, rude.

Thanx , I understood now . Each atom from group has its own cluster ID
(equal to smallest ID in that cluster), so I can dump it + sort it ,
separately dump atom IDs +sort id and then use program to analyze those 2
dump files.

   I have a question about cutoff distance from this command , is cluster
defined like sphere with central atom , and other cluster members are
within cutoff radius arround central atom ?

​are you deliberately trying to irritate me? after all the discussion
before, do you think it is a smart thing to continue just ignoring my
recommendations and continue with the same habit of asking questions that
can be easily answered by carefully reviewing the documentation? well, this
will be my last response.

     Or lets say I have cutoff 3A , but my cluster can be like "snake" 7A
long where every atom from group has neighbour within 3A , but atoms at
beginning and end of that cluster might have distance say 5-6A ?

A cluster is defined as a set of atoms, each of which is within the cutoff
distance from one or more other atoms in the cluster. If an atom has no
neighbors within the cutoff distance, then it is a 1-atom cluster.

​i don't think this leaves any room for interpretation. ​...and if you by
chance are still struggling to understand this or don't trust your own
judgement, there is always the opportunity to set up a small test system
and see for yourself. in this case it is extremely simple to do.

​axel.

You are really unacceptably rude and arrogant. People who are truly inteligent are humble and modest , and not so agressuve like you .

I dont understand why are you in help list if you are not willing to help when someone asks you for answer .

I told you that documentation of command is written really poorely, if it qas written on more quality way with more clear examples I would not even need to ask this .

Bye I am never going to ask you anything ever, enjoy in your greatness.

Hello Srdjan, I know one person who struggled with a similar problem to yours with the LAMMPS documentation:

Mihaela Drenscko
quo.physics@…24…

Maybe she can help you out.

Please be sure to let her know that your work is extremely important and that you are going to be very grateful and generous to the person who can help you.

Giacomo

Thanx a lot!

Greetings.