How to calculate particle-particle long-range force in EDEM custom model?
Best Answer
-
Hi Fang,
EDEM is really designed for short range forces only, in a particle-particle contact model we can only apply forces to particles in contact.
There is a 'workaround' for this in that you can set the particle radius and also set the particle contact radius, with the contact radius larger than the physical radius. In this case the contact model is called when the contact radii overlap and most base models only apply a force when the Physical radii overlap.
However the larger the contact radius the more contacts are detected per particle per time-step (at a rate of r^3) and consequently this can significantly slow the solver.
The particle body force model gives you access to every particle (including it's position) at every time-step so theoretically you can create your own list of particles and determine distance between them without requiring a contact radius and apply a force based on this, however it can also be difficult to code and computationally expensive.
The contact radii method is usually the best, with the radius set to be the 'cut off' limit at which the forces are no longer applied.
Regards
Stephen
0
Answers
-
Hi Fang,
EDEM is really designed for short range forces only, in a particle-particle contact model we can only apply forces to particles in contact.
There is a 'workaround' for this in that you can set the particle radius and also set the particle contact radius, with the contact radius larger than the physical radius. In this case the contact model is called when the contact radii overlap and most base models only apply a force when the Physical radii overlap.
However the larger the contact radius the more contacts are detected per particle per time-step (at a rate of r^3) and consequently this can significantly slow the solver.
The particle body force model gives you access to every particle (including it's position) at every time-step so theoretically you can create your own list of particles and determine distance between them without requiring a contact radius and apply a force based on this, however it can also be difficult to code and computationally expensive.
The contact radii method is usually the best, with the radius set to be the 'cut off' limit at which the forces are no longer applied.
Regards
Stephen
0 -
Stephen Cole_21117 said:
Hi Fang,
EDEM is really designed for short range forces only, in a particle-particle contact model we can only apply forces to particles in contact.
There is a 'workaround' for this in that you can set the particle radius and also set the particle contact radius, with the contact radius larger than the physical radius. In this case the contact model is called when the contact radii overlap and most base models only apply a force when the Physical radii overlap.
However the larger the contact radius the more contacts are detected per particle per time-step (at a rate of r^3) and consequently this can significantly slow the solver.
The particle body force model gives you access to every particle (including it's position) at every time-step so theoretically you can create your own list of particles and determine distance between them without requiring a contact radius and apply a force based on this, however it can also be difficult to code and computationally expensive.
The contact radii method is usually the best, with the radius set to be the 'cut off' limit at which the forces are no longer applied.
Regards
Stephen
Hi Stephen,
I tried to access other particle in particle body force model. But I didn't find the correct way to do it. Should I use this function?
virtual void processParticleOfInterest (int threadID, int particleOfInterestId)
But this function didn't give const NExternalForceTypesV3_4_0::SParticle &particle of another particle.
Regards
Fang yanwei
0 -
fang yanwei said:
Hi Stephen,
I tried to access other particle in particle body force model. But I didn't find the correct way to do it. Should I use this function?
virtual void processParticleOfInterest (int threadID, int particleOfInterestId)
But this function didn't give const NExternalForceTypesV3_4_0::SParticle &particle of another particle.
Regards
Fang yanwei
Hi Fang,
The body force cycles through each particle in the simulation, so it only gives you the details of one particle at a time, however this is run once for every particle every timestep.
You would have to have a model which takes each particles position at time t s and write this to user defined memory. Then at t+1 you would have access to the memory including all the positions (at the last time-step), however I think this would be a computationally very expensive approach and quite hard to write an efficient code for.
Regards
Stephen
0