Hi all,
Is that possible to allow a certain level of overlap between particles without generating interaction force? Suppose I have two particles with radius R1 and R2 positioned in a distance of d
A project by DCS Computing and CFDEMresearch
This website uses cookies to ensure you get the best experience on our website. By continuing to browse the site you are agreeing to our use of cookies. This website uses cookies. By continuing to browse the site you are agreeing to our use of cookies. More info
ckloss | Mon, 02/23/2015 - 12:39
Sure,
Sure,
you just have to create a new contact model. See normal_model_hertz.h - you just have to copy, rename and modify this file
Best wishes
Christoph
NTT1508 | Tue, 02/24/2015 - 01:34
Please check my modification
Hi Christoph,
Thank for your suggestion. It is really interesting to hear about that. To simplify that, I would introduce a factor (for example named fr) which reduces the effective radius reff. So I can define to which level of overlap, the contac force will be generated. What do you think about this? What else I need to regardless modifying normal_model_hertz.h file? Make a new file name, add to style_normal_model.h then re-compile LIGGGHTS. Sorry I am not good at coding.
Second, how about tangential_model_history? Do I need to care about it? Shear force should not be generated if 2 particles slides to each other at a certain overlap. Is that the cdata.touch determine whether contact occurs or not?
Third, where can I find and access to cdata which manages collision properties mentioned in normal_model_Hertz?
Finally, can you have a look and advice on my modification for Hertz model below ?
---------------------------------------------------------------
#ifdef NORMAL_MODEL
NORMAL_MODEL(NEWHERTZ,newhertz,3) // change name HERTZ to NEWHERTZ
#else
#ifndef NORMAL_MODEL_NEWHERTZ_H_
#define NORMAL_MODEL_NEWHERTZ_H_
#include "global_properties.h"
#include "math.h"
…..
template<>
class NormalModel : protected Pointers
{
public:
….
void connectToProperties(PropertyRegistry & registry) {
registry.registerProperty("Yeff", &MODEL_PARAMS::createYeff,"model newhertz");
registry.registerProperty("Geff", &MODEL_PARAMS::createGeff,"model newhertz");
registry.registerProperty("betaeff", &MODEL_PARAMS::createBetaEff,"model newhertz");
registry.connect("Yeff", Yeff,"model newhertz");
registry.connect("Geff", Geff,"model newhertz");
registry.connect("betaeff", betaeff,"model newhertz");
….
inline void collision(CollisionData & cdata, ForceData & i_forces, ForceData & j_forces)
{
const double fr=0.8 // Introduce factor fr, 0 < fr < 1
const int itype = cdata.itype;
const int jtype = cdata.jtype;
double ri = fr*cdata.radi; // modify radius
double rj = fr*cdata.radj;
double reff=cdata.is_wall ? cdata.radi : (ri*rj/(ri+rj));
double meff=cdata.meff; // Do I need to modify mass to equivalent new radius?
…
const double Fn_damping = -gamman*cdata.vn;
const double Fn_contact = kn*(fr*cdata.radsum-cdata.r); //add fr to reduce contact force
double Fn = Fn_damping + Fn_contact;
…
-------------------------------------
Thank you,
Best regards,
Nathan,
JoshuaP | Tue, 02/24/2015 - 10:20
Hey;
Hey;
I would just change the normal force:
double overlap = ...;
const double Fn_contact = kn*(cdata.radsum-cdata.r-overlap);
I cannot promise the validity of this, you have to test it.
regards
JoshuaP | Tue, 02/24/2015 - 10:25
maybe it is necessary to add:
maybe it is necessary to add:
if(Fn_contact<0.0)
{
Fn_contact = 0.0;
}
NTT1508 | Tue, 02/24/2015 - 23:16
Based on Original Hertz
Thank Joshua,
I actually edited the original Hertz in which Fn_contact = kn*(cdata.radsum-cdata.r)
with (cdata.radsum-cdata.r)=overlap. No doubt about this. What I did is just adding factor fr to reduce effective radius. I will test it soon.
Christoph, If you cross here, dont forget to give me your advices on my questions above.
Thanks,
Regards,
NTT1508 | Sat, 02/28/2015 - 03:00
It works
Hi Christoph,
I have tested the newhertz model, it works well. I will define a factor as an input parameter in script to make it more flexible to use.
Thanks,
Regards,