Hello, I am currently working on creating a customized contact model using the API.
I have some general questions about the contact model and, more specifically, about applying asymmetric forces.
Questions
1.
Hello, I am currently working on creating a customized contact model using the API.
I have some general questions about the contact model and, more specifically, about applying asymmetric forces.
For example, let’s say we have two particles, A and B, and we intend to establish a contact between them. Within a single time step, when calculateForce
is executed, is it possible that in some cases particle A becomes element1
and particle B becomes element2
, while in other cases particle A becomes element2
and particle B becomes element1
? ( in a single time step )
Intuitively, I would assume that such duplication would not occur, because if contacts were duplicated like this, the contact forces would also be duplicated. But I would like to confirm whether this is indeed the case.
2.
In calculateForce
, when adding the computed forces to contactResults
, why are normalForce
and tangentialForce
separated?
For example, if we have a force F1
, we can decompose it into a normal component Fn
and a tangential component Ft
, and then add them separately to contactResults.normalForce
and contactResults.tangentialForce
. But what is the difference between doing this versus simply adding the full vector F1
into contactResults.normalForce
? Is there any difference between them?
3.
This is my most important question. In the Contact API model, how can I apply completely different forces to each of the two particles in contact?
For example, I want to apply force -F1
and torque -T1
to element 1, and force -F2
and torque -T2
to particle element2.
Specifically, the situation I want to implement is:
- element1 → apply
-F1, -T1
- element2 → apply
-F2, -T2
Based on my own understanding, here’s what I tried:
First, I noticed that contactResults.normalForce
applies a force to element1
and an equal but opposite force to element2
. So I assigned F2
to contactResults.normalForce
, assuming this would apply -F2
to element2
.
Then, since element1 should not receive F2
but only -F1
, I tried adding -F2 - F1
to contactResults.usNormalForce
. This way, I thought the effect of F2
on element1 would be canceled, leaving only -F1
.
For torques, I used contactResults.usAdditionalTorque1
and contactResults.usAdditionalTorque2
, as the documentation indicated that these fields allow applying asymmetric torques to each element.
Always Thank you very much for help!
Regards,