kn, kt, gn, and gt in contact model

86 views
Skip to first unread message

Qihan Xuan

unread,
Jun 14, 2022, 1:55:14 PM6/14/22
to ProjectChrono
Hi all,
I have a question about the contact model. In 'ChContactSMC.h', there are two ways to get kn, kt, gn, and gt. 
One is using stiffness, CoR, Poisson ratio, etc. 
One is directly inputting values.
But I find the two methods follow different models.
1.png
The first method uses the same method mentioned in the paper. But the second one is not. For example, we can see in the first method, gn and gt are proportional to the square root of effective mass, but in the second method, gn and gt are proportional to the effective mass. Why do we use different models when implementing Hertzian contact? 
2.png
By the way, when I use the function GetGt() in 'ChMaterialSurfaceSMC.h', the values are different from the values calculated from the above first method. Why is it? 

3.png


Thanks,
Qihan

Luning Fang

unread,
Jun 14, 2022, 3:05:36 PM6/14/22
to ProjectChrono
In Chrono, there are different contact force models, and the computation is different when you use material-based property (Young's modulus, CoR and Poisson ratio) or user-input values.

Hertz contact force model refers to the elastic component of the normal force, because Hertz assumes that contact area is circular, bodies in contact are elastic, using elasticity theory, he derives that contact force is proportional to the 1.5 power of penetration (delta in the code). When the model is applied to SMC, researchers need a way to dissipate energy during the contact. Quite a few models are developed over the years to model the dissipation part (see Table 3.1 in this book).

In your screenshot, the first method is originally proposed by Tsuji, the second one is from Silbert. Both are highly cited paper that Chrono used as reference. The first one use sqrt of mass times stiffness, to mimic a critical damping scenario (recall for a one DOF mass-spring-damper system, critical damping ensures mass returns to equilibrium in the shortest amount of time) This is desired in SMC simulation. For the second model, my understanding is that, since the model does not call for CoR, they use mass*velocity to model the change in momentum during the impact. If you are interested in the constitutive law of contact force models, these two papers have a thorough review on normal and tangential force models.

Now on the implementation side of things.... In Chrono, when you initialize ChSystemSMC, the default is that material-based parameters are used. If you don't assign any material properties, this is what's being set as default:

ChMaterialSurfaceSMC::ChMaterialSurfaceSMC()
: ChMaterialSurface(),
young_modulus(2e5),
poisson_ratio(0.3f),
constant_adhesion(0),
adhesionMultDMT(0),
adhesionSPerko(0),
kn(2e5),
kt(2e5),
gn(40),
gt(20) {}

Since contact is between a pair of bodies, if you have different materials, some strategies are used to "combine" the properties.

    virtual float CombineStiffnessCoefficient(float a1, float a2) const { return (a1 + a2) / 2; }
    virtual float CombineDampingCoefficient(float a1, float a2) const { return (a1 + a2) / 2; }

In ChContactSMC.h, mat.gn and mat.gt is the value after coefficients are being "combined", which enters force calculation. When you use GetGt(), as an API, what's being returned is the gt of one type of material you set up as a user. If you've never assigned gt to the material, the default is 20. Of course, you have the freedom to modify the "combine strategy" however you want.

Thank you,
Luning

Qihan Xuan

unread,
Jun 14, 2022, 9:59:12 PM6/14/22
to ProjectChrono
Thanks a lot!
Reply all
Reply to author
Forward
0 new messages