Bonded particle model

ckloss's picture
Submitted by ckloss on Sun, 09/18/2011 - 17:59

Hi all,

if anybody of you is interested in a bonded particle model in LIGGGHTS, I have an early version that I can share. It is quite beta and comes without doc. If anybody of you is interested in working on improving that model to make it ready for release, just fetch the attached tarball.

Cheers,
Christoph

AttachmentSize
File bond_2011-22-09-11_59_15.tgz36.05 KB
raguelmoon's picture

raguelmoon | Wed, 09/21/2011 - 15:47

Hi Christoph,
I don't have earlier version, please can you put on the site for download?
Thanks,
Ram

Ram

ckloss's picture

ckloss | Wed, 09/21/2011 - 15:51

Hi ram, what do you mean with earlier version? Use the latest version for development, it does not make sense to use an earlier version for that...

Cheers, Christoph

raguelmoon's picture

raguelmoon | Wed, 09/21/2011 - 16:26

Hi,
The new version gives error and asks about fix_propertyPerAtom.h file:

bond_gran.cpp:31: fatal error: fix_propertyPerAtom.h: No such file or directory
compilation terminated.
make[1]: *** [bond_gran.d] Error 1
make[1]: Leaving directory `/home/ram/myliggghts/liggghts_1p4p3/src/Obj_fedora'
make: *** [fedora] Error 2
ram@ram-Vostro-420-Series:~/myliggghts/liggghts_1p4p3/src$

Are fix_property_atom.h and fix_propertyPerAtom.h same files?
Thanks,
Ram

Ram

ckloss's picture

ckloss | Wed, 09/21/2011 - 16:38

yes, there were some minor changes (file names and interfaces). lamentably my time schedule does not allow to give you detailed instructions how to resolve everything, so getting through this will require you to dig into the code.

Cheers, Chris

raguelmoon's picture

raguelmoon | Thu, 10/13/2011 - 07:47

Dear Christoph,
I have two questions:
1) I have set files interfaces but LIGGGHTS prompts error:

bond_gran.cpp:76: error: invalid types ‘LAMMPS_NS::Fix**[LAMMPS_NS::Fix*]’ for array subscript

I guess array number mismatches. I couldnt figure out the issue; however, I comment lines number 75 and 76 and build LIGGGHTS. It works fine. I think these lines are used for initialization :

void BondGran::init_style()

Does it effect on result?

2) Is the name of bond style gran or granular? Because in example directory, both names for bond style are used. In in.bond file "gran" is used while in in.rigid "granular" name is used for bond style command.
Thanks
Ram

Ram

ckloss's picture

ckloss | Thu, 10/13/2011 - 07:54

>>1) I have set files interfaces but LIGGGHTS prompts error:
"invalid types LAMMPS_NS::Fix**[LAMMPS_NS::Fix*]" should be self-descriptive... if not, I would recommend you to get some C/C++ basics :-)

>>2) Is the name of bond style
the name is defined in the header of the bond model

Cheers, Christoph

zamir | Fri, 06/08/2012 - 01:36

Ram,

You solved the compiling problem in this bonded particle script, correct? What exactly did you do?

I added an additional argument to the function call in line 76:
fix_Temp = static_cast...(modify>find_fix_property("Temp","property/atom","scalar",1,0,0));

and it compiles OK, and the example, in.bonds, runs as well. but I really don't know what the 6th argument is actually supposed to be. Any enlightenment would be very helpful.

As you can see, I'm not very well versed in C++, but I'm working on it!!!

Thanks,
Zamir

marcHH | Thu, 09/22/2011 - 11:51

Hi Christoph!

I am new to LIGGGHTS but this is exaclty what I am looking for. So could you send me the bonded particle model? I would really like to work on it.

Thanks!

Marc

richti83's picture

richti83 | Sun, 05/26/2013 - 20:49

I wonder if there is any work done on this topic.
I've seen there is a port to liggghts2 in the fork of polyun
https://github.com/Polyun/LIGGGHTS-PUBLIC/
And there are some rare information about a new Implemention of a so called v-model
http://tm.spbstu.ru/Implementation_of_V_model_in_LIGGGHTS
I'm interested in simulation of crusher and I know the parallel bond model implemented in PFC3D.
I would be happy to contribute if someone would point me to a reasonable starting point.
The "bondspackage" looks interesting but seems not to work in multicore mode (I'm getting different results for different number of cores).

I'm not an associate of DCS GmbH and not a core developer of LIGGGHTS®
ResearchGate | Contact

dbreton's picture

dbreton | Thu, 09/22/2011 - 20:35

Hello-

First off, I am excited about the inclusion of bonds -- I was contemplating such a thing myself as I hope to model the compaction of sintered material.

I am by no means an expert on this subject, but I thought I would mention a relevant paper I found while trying to get up to speed on all of this:

"A new algorithm to model the dynamics of 3-D bonded rigid bodies with rotations"
by Yucang Wang
Acta Geotechnica, 2009, Vol 4, Num 2, 117-127, DOI: 10.1007/s11440-008-0072-1

Wang's point in the paper is that particle-particle interactions with six degrees of freedom (1 normal, 2 shear + 1 torsion, 2 bending ) have to be treated differently than those with only 3 DOFs (the "normal" case in DEM work). The reason is that the order in which finite rotations are made is important -- the usual Euler angle specification of an arbitrary rotation in space is a good example: 1. rotate about z, 2. rotate about the new x, 3. rotate about the new z. In other words, rotation in 3D space is non-commutative.

The bulk of the paper is a bunch of quaternion algebra, but the point is that you can either:
1. use very small time steps, such that the rotations are essentially infinitesimal OR
2. use his method if you want to use finite rotations, thus allowing larger time steps.

By the way, Wang is one of the contributors to the ESyS-Particle DEM project, and has apparently implemented this in their code.

My very cursory glance of the new code reminded me of this, and thought I would mention it here.

regards,
DAN

ckloss's picture

ckloss | Sun, 09/25/2011 - 16:28

Hi Dan,

thanks for this input and the paper reference. The current bond code uses method (1) and a zero order rotation :-) I know that many other people do this with a rotation matrix or quaternions, and for high dynamics and the ability to simulate longer time scales LIGGGHTS would need to do this too.
Parts of the infrastructure to use a more sophisticated integrator such as the one that you suggest is already there (fix rigid, fix nve/asphere). One interesting point will be parallelization of this method.
If anybody is interested in doing that, I am of course willing to help.

Cheers, Christoph

tkulju | Mon, 11/07/2011 - 09:15

Hi!
What kind of interaction does this model use? I'm modeling granulation, and would be interested to incorporate some own interactions between the particles. Currently I have about 70 000 particles and the simulation times are about 4-5 days, so is this the best way to do it? Or should I pay attention and/or modify the cohesion model?

- Timo

ckloss's picture

ckloss | Mon, 11/07/2011 - 09:40

If you need cohesion or bonds, depends on the kind of interaction. Cohesion acts typically as soon as particles touch, while bonds are initialized once and active unless they break

Christoph

tkulju | Mon, 11/07/2011 - 13:11

Hi!
Ok, thanks! I'll go with cohesion, since it seems that it would more the one I'm looking for.

I would be also interested to know, would it be possible to simulate/take account a "reaction" of type A+B->C, where A,B and C are different particle types? What I had in mind, that if there are enough particles (of type A and B) within some distance from each other, the "additional" (C) particles would form. I read something like this some time ago from the LAMMPS documentation, but can't remember where... Further, would it be possible then to let C break into smaller particles?

- Timo

ckloss's picture

ckloss | Tue, 11/08/2011 - 08:07

yes, that would be possible. you would have to write a fix that requests a neighbor list, (such as fix bond/create/gran in the tarball on this thread does). For insertion of particles, you could derive that class from fix insert.

>> Further, would it be possible then to let C break into smaller particles?
sure - I was also thinking about this recently - would be pretty easy. If you want to start working on that, I can tell how I would do it.

Cheers, Christoph

tkulju | Tue, 11/08/2011 - 08:42

Hi!
Good, I'll try to start working on the "reaction" part first. So how and where should I start? I've never written any C++ code, only some C.

- Timo

ckloss's picture

ckloss | Tue, 11/08/2011 - 10:23

have a look at fix bond/create/gran and try to understand how e.g. fix insert/pack works, and then implement your functionality in a new class derived from FixInsert (as e.g. FixInsertPack is derived from FixInsert)

PS: For further question, it would be good to start a new thread in the developers forum

Cheers Christoph

zamir | Sun, 07/21/2013 - 08:19

Would the peridynamics package have similar functionality as a bonded particle model?
I mean like a pair_style hybrid granular peri

I am walking through the PD users guide and it seems similar. Perhaps I'm missing something.