Questions about bond breakage

Submitted by vvvincent on Wed, 02/20/2019 - 17:04

I installed both LIGGGHTS-WITH-BONDS and LIGGGHTS_Flexible_Fibers-master on my computer and I performed uniaxial compression test using both version respectively. I have a problem for both version and I am wondering if I wrote something wrong.

When I using LIGGGHTS_Flexible_Fibers-master, for example, the screen output shows that some of the bonds were broken during compression at time step 21000-22000 (see attached figure), but the number of bonds in the dump file is still constant at that time step. I am wondering if anyone have ideas regarding to this problem? I have attached the input file as shown in the following.

vvvincent | Wed, 02/20/2019 - 17:14

Version:
LIGGGHTS_Flexible_Fibers-master: LIGGGHTS 3.7.0
LIGGGHTS-WITH-BONDS: LIGGGHTS 3.3.0

mschramm | Wed, 02/20/2019 - 19:20

Hello,
This should be the same for both versions as the 3.7.0 version is a port of the 3.3 version with damping and initial distance between bonds added.
As for the bond code, once the message that a bond has broken, the bond will not ever be calculated again, even though that bond may still be there.
That is why you still see it in your output file.
It isn't until neighbors are recalculated that bonds are deleted.

This can be seen in the thermo output if you also include the keyword "numbond". This shows the number of bonds are currently allocated for in the code.
You should also NOT include
fix removeBond all bond/propagate/gran
in your input script. This actually breaks your simulation.

I will be pushing a hot fix that allows you to see if a bond is active or not via
compute b1 all property/local batom1x batom1y batom1z batom2x batom2y batom2z batom1 batom2 btype bbondbroken

The bond plugin for paraview will need to be updated but I currently do not have time this week to do so.
I have a fork of the paraview plugin where I have added the ability to see the torque and the equilibrium distance of the bonds.
It should be straight forward to simply add the bond broken part.
Ideally the code should only show a line if the bond is not broken...

Let me know if you have any other questions.

vvvincent | Thu, 02/21/2019 - 17:30

I appreciate! You answer is quite useful! I decreased the steps to update neighbors and now the screen output is consistent with the dump file.

lumblab227 | Mon, 10/28/2019 - 17:20

Hey, would you please tell us why this command would actually break the simulation? And what is the meaning of this command? It is there, but no script has used it?

Many thanks in advance.

mschramm | Tue, 10/29/2019 - 16:27

By specifing the fix in your input script, you duplicate the calls. I do not know fully what can happen from having multiples of these fixes.
The fix is internally called when you state the atom_style. You can see the call in the init function in atom_vec_bond_gran.cpp.
char **fixarg = new char*[3];
fixarg[0] = (char *) "BOND_PROPAGATE";
fixarg[1] = (char *) "all";
fixarg[2] = (char *) "bond/propagate/gran";
modify->add_fix(3,fixarg);

lumblab227 | Wed, 10/30/2019 - 09:43

Thanks very much for your explanation. Appreciated.

If you don't mind, may I ask another question?

In bondhistlist[n][q], what kind of informations are recorded on the list columns? Like breakage index?

Thanks again!

mschramm | Wed, 10/30/2019 - 17:22

bondhistlist holds the total forces from all time.
bondhistlist[n][ 0] = is the total normal force in the x-direction
bondhistlist[n][ 1] = is the total normal force in the y-direction
bondhistlist[n][ 2] = is the total normal force in the z-direction
bondhistlist[n][ 3] = is the total tangential force in the x-direction
bondhistlist[n][ 4] = is the total tangential force in the y-direction
bondhistlist[n][ 5] = is the total tangential force in the z-direction
bondhistlist[n][ 6] = is the total normal moment in the x-direction
bondhistlist[n][ 7] = is the total normal moment in the y-direction
bondhistlist[n][ 8] = is the total normal moment in the z-direction
bondhistlist[n][ 9] = is the total tangential moment in the x-direction
bondhistlist[n][10] = is the total tangential moment in the y-direction
bondhistlist[n][11] = is the total tangential moment in the z-direction
bondhistlist[n][12] = is the starting equilibrium distance between the two spheres when the bonds were formed. This is used to find the bond length used to scale the stiffness values Kn,Kt, Kben, and Ktor.

bondlist holds things like what spheres are used in the bond, and if it is currently broken.
bondlist[n][0] = sphere i.
bondlist[n][1] = sphere j.
bondlist[n][2] = type of bond.
bondlist[n][3] = is the bond broken.
Note that when using the thermo keyword numbonds, this may give the wrong number as this counts the number of bonds in neighbors.
The neighbors list is not updated until neighbor lists are updated.

lumblab227 | Sun, 11/17/2019 - 11:09

Hey there,

would you mind telling how to execute the program in debug mode?

I have compiled as: make auto debug=ON
and I have had the lmp_auto

How do I call the script in order to find the debugging information?

Thanks!

mschramm | Tue, 01/07/2020 - 16:31

Hello,
from the error message, it seems that you may be using a much older version of the bond code. I believe you are using either the original 3.3 code,
of a very early version of the code written for version 3.7.
If this is the case, you should call bond coefficients like
bond_coef ${bond_radius} ${Kn} ${Kt} ${BreakType} ${BreakTypeValue} if version 3.3
bond_coef ${bond_radius} ${Kn} ${Kt} ${DampingValue} ${BreakType} ${BreakTypeValue} if VERY EARLY version 3.7
I think...
I do not fully remember the 3.7 calls.
The new version of the code should print out the order of the coefficients to be used.

mschramm | Tue, 01/07/2020 - 16:34

Hello,
from the error message, it seems that you may be using a much older version of the bond code. I believe you are using either the original 3.3 code,
of a very early version of the code written for version 3.7.
If this is the case, you should call bond coefficients like
bond_coef ${bond_radius} ${Kn} ${Kt} ${BreakType} ${BreakTypeValue} if version 3.3
bond_coef ${bond_radius} ${Kn} ${Kt} ${DampingValue} ${BreakType} ${BreakTypeValue} if VERY EARLY version 3.7
I think...
I do not fully remember the 3.7 calls.
The new version of the code should print out the order of the coefficients to be used.