mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-02 11:39:14 +01:00
feat(track): vertical unevenness comes near its limit more often, with longer buckles too
Fewer short waves: at uneven 18 the humps over 12.6 mm on the 10 m chord go from 28 to 38 per km, with the peak still at 18 mm. Waves of 47-83 m join them. They hardly count on that chord, the body rises and falls on them. The documentation tells how far unevenness goes before a pantograph can't keep up. A wire rising fast enough trips the main breaker on a straight track too: it does at tor0290 on Baltyk, over about 46 km/h.
This commit is contained in:
@@ -91,7 +91,7 @@ TEST_CASE("uneven track: measures as the Id-14 limits for its value")
|
||||
CHECK(wander == doctest::Approx(10.0).epsilon(0.2));
|
||||
CHECK(level == doctest::Approx(20.0).epsilon(0.1));
|
||||
CHECK(j == doctest::Approx(5.3).epsilon(0.2));
|
||||
CHECK(away < 25.0); // appendix 1a: 15 mm off the survey marks
|
||||
CHECK(away < 40.0); // the long waves go past the 15 mm off the survey marks of appendix 1a
|
||||
}
|
||||
|
||||
TEST_CASE("uneven track: a place strays the same every time")
|
||||
@@ -100,7 +100,7 @@ TEST_CASE("uneven track: a place strays the same every time")
|
||||
glm::dvec3 const place{1234.5, 0.0, -678.9};
|
||||
auto const stray{track_uneven::field(place)};
|
||||
CHECK(stray.x == doctest::Approx(0.309777548158).epsilon(1e-9));
|
||||
CHECK(stray.y == doctest::Approx(-0.295557487607).epsilon(1e-9));
|
||||
CHECK(stray.y == doctest::Approx(0.311350299745).epsilon(1e-9));
|
||||
CHECK(stray.z == doctest::Approx(-0.328429734019).epsilon(1e-9));
|
||||
CHECK(track_uneven::level(place, {1.0, 0.0, 0.0}) == doctest::Approx(0.53 * -0.178598957983).epsilon(1e-9));
|
||||
CHECK(track_uneven::level(place, {0.0, 0.0, 1.0}) == doctest::Approx(0.53 * -0.868291889902).epsilon(1e-9));
|
||||
@@ -127,13 +127,17 @@ TEST_CASE("uneven track: tracks laid towards each other meet at one cant")
|
||||
TEST_CASE("uneven track: the field stays within its bound")
|
||||
{
|
||||
auto most{0.0};
|
||||
auto highest{0.0};
|
||||
for (int i = 0; i < 20000; ++i)
|
||||
{
|
||||
auto const stray{track_uneven::field({i * 3.7 - 30000.0, 0.0, i * -2.9 + 41000.0})};
|
||||
most = std::max({most, std::abs(stray.x), std::abs(stray.y), std::abs(stray.z)});
|
||||
most = std::max({most, std::abs(stray.x), std::abs(stray.z)});
|
||||
highest = std::max(highest, std::abs(stray.y));
|
||||
}
|
||||
CHECK(most <= 1.0);
|
||||
CHECK(most > 0.5);
|
||||
CHECK(highest <= 1.69);
|
||||
CHECK(highest > 0.5);
|
||||
}
|
||||
|
||||
TEST_CASE("uneven track: the value along a track meets its neighbours exactly")
|
||||
|
||||
Reference in New Issue
Block a user