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,