pyroll-project / pyroll-core

PyRoll rolling simulation framework - core library.
https://pyroll.readthedocs.io
BSD 3-Clause "New" or "Revised" License
12 stars 7 forks source link

238 contact area of three roll passes #241

Closed RichardPfr closed 2 months ago

RichardPfr commented 2 months ago

Changed the Contact area calculation so that its more representative for three-roll rolling.

Also enhanced the contact_lines property to handle ThreeRollPasses correctly, as this is also required for coming changes in the Zouhar-Package.

Currently there is also a factor 0.999 necessary to correctly calculate the in_profile local_width - probably due to small numerical deviations.

axtimhaus commented 2 months ago

I see the problem that arises with precedence of hooks in RollPasses and ThreeRollPasses maybe we should unify these classes, also in regard to future asymmetry

RichardPfr commented 2 months ago

Reason for these empty intersection lines (not really empty but just 1 instead of two points) is as @axtimhaus said that the bottom polygon lines aren't perfectly horizontal. The adjusted test shows, that these Differences are only in the 10e-18 range though and of the profiles tested also only occur on the flat and oval - in_profile and not on the round one:

============================== 8 passed in 3.03s ==============================
PASSED [ 12%]Two lowest y-coords: [-0.013160254037844385313626993650, -0.013160254037844381844180041696]     diff: 0.000000000000000003469446951954
PASSED [ 25%]Two lowest y-coords: [-0.010033594466608928424955493597, -0.010033594466608926690232017620]     diff: 0.000000000000000001734723475977
PASSED [ 37%]Two lowest y-coords: [-0.009322056340506710073179341691, -0.009322056340506710073179341691]     diff: 0.000000000000000000000000000000
PASSED [ 50%]Two lowest y-coords: [-0.009322056340506710073179341691, -0.009322056340506710073179341691]     diff: 0.000000000000000000000000000000
PASSED [ 62%]Two lowest y-coords: [-0.009322056340506710073179341691, -0.009322056340506710073179341691]     diff: 0.000000000000000000000000000000
PASSED [ 75%]Two lowest y-coords: [-0.010033594466608928424955493597, -0.010033594466608926690232017620]     diff: 0.000000000000000001734723475977
PASSED [ 87%]Two lowest y-coords: [-0.009322056340506710073179341691, -0.009322056340506710073179341691]     diff: 0.000000000000000000000000000000
PASSED [100%]Two lowest y-coords: [-0.010033594466608928424955493597, -0.010033594466608926690232017620]     diff: 0.000000000000000001734723475977

The change to the local width/ heigth makes it work, but is still somewhat hacky - but i cant find where this numerical error actually stems from.