Rolling Friction cdt

Submitted by JohLoh on Mon, 02/18/2019 - 17:20

Hello everyone,

I have a question concerning the rolling friction model cdt. As far as I can see it, the magnitude of the angular velocity is not accurately calculated when torsion_torque is not included. Right now, the magnitude "wrmag " is not updated after subtracting the normal component. Therefore, the normal component of the angular component influences the rolling torque in both tangential directions.
I provide a test case in the attachment. Two particles rolling on a wall. One particle without a normal angular velocity. The second particle with a normal angular velocity (z-direction). If !torsion_torque, both particles should have the same rolling friction torque and therefore the same angular velocity in x-direction because the normal angular velocity should not influence the tangential component. But in the current version, both particles have different tangential angular velocities (x-direction). Am I right?

Cheers,
Johannes

***** At the moment *****

const double wrmag = sqrt(wr1*wr1+wr2*wr2+wr3*wr3);
if(!torsion_torque)
{
double rtorque_dot_delta = r_torque[0]*enx+ r_torque[1]*eny + r_torque[2]*enz;
double r_torque_n[3];
r_torque_n[0] = enx * rtorque_dot_delta;
r_torque_n[1] = eny * rtorque_dot_delta;
r_torque_n[2] = enz * rtorque_dot_delta;
vectorSubtract3D(r_torque,r_torque_n,r_torque);
}

***** Updated version *****

if (!torsion_torque)
{
double wr_n[3];
const double wr_dot_delta = wr1*enx+ wr2*eny + wr3*enz;
wr_n[0] = enx * wr_dot_delta;
wr_n[1] = eny * wr_dot_delta;
wr_n[2] = enz * wr_dot_delta;
wr1 = wr1 - wr_n[0];
wr2 = wr2 - wr_n[1];
wr3 = wr3 - wr_n[2];
}
double wrmag = sqrt(wr1*wr1+wr2*wr2+wr3*wr3);

AttachmentSize
Binary Data rollingfriction.tar_.gz2.95 KB
Plain text icon rolling_model_cdt.h.txt6.02 KB
arnom's picture

arnom | Thu, 02/21/2019 - 11:12

Hi Johannes,

I just uploaded a replacement for the rolling model to your original post and that should fix the issue. Just remove the .txt file ending and put it into your liggghts src folder. Please let me know whether it works as expected.

Kind regards,
Arno

DCS team member & LIGGGHTS(R) core developer

JohLoh | Fri, 02/22/2019 - 15:30

Thanks for your response. At least in my version (the newest liggghts), it doesn't compile. But the physics is right now.
I get the following error message:
../contact_models.h:348:102: Fehler: ungültiger new-Ausdruck für abstrakte Klasse »LIGGGHTS::ContactModels::RollingModel<1>«
rollingModel = static_cast(new RollingModel(lmp, hsetup, this));

arnom's picture

arnom | Mon, 02/25/2019 - 09:57

Sorry, that was my bad. The version in your original post should work now.

DCS team member & LIGGGHTS(R) core developer