Here is the
script
Layout4.lua
(this may not be as
up to date as the zip file linked to below):
--[[ --------------------------------------------------------------------------- Remote Train Control Program for Windows
© Copyright 2021 by Mark DiVecchio
This file is part of Remote Train Control.
Remote Train Control is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Remote Train Control is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Remote Train Control. If not, see <http://www.gnu.org/licenses/>.
Home Page : http://www.silogic.com/trains/RTC_Running.html ---------------------------------------------------------------------------]] -- Semicolons are not required in Lua code --[=[--------------------------------------------------------------------------------------- This file contains all of the details about Instrumented Layout #4. The stopping and starting distances created by "Deceleration Test.lua" and "Acceleration Test.lua".
usage:
local Layout4 = require([[Layout4]]);
if (Layout4.StoppingisEmpty(iEng,1) == nil) then return Stop("No StoppingDistance Table for Engine " .. iEng); end StopDelay = (Struthers_Passenger_StoppingDistance - Layout4.stopping(EngineNo,CurrentSpeed)) * (48 / (12 * 5280 * CurrentSpeed)) * 3600; SetSpeed(0, StopDelay, EngineNo, MyTIUNo); -----------------------------------------------------------------------------------------]=]
----------------------------------------------------------------------------- -- Declare module and import dependencies ----------------------------------------------------------------------------- local base = _G local Layout = {} Layout.__index = Layout if (MASTER_TIU == nil) then MASTER_TIU = 1; end;
----------------------------------------------------------------------------- -- Layout constants ----------------------------------------------------------------------------- -- These constants describe your layout
-- All tables in Lua are 1 based, that is, StoppingDistance[EngineNo][1] is the first item in the list -- Measured stopping distance in inches (from "Deceleration Test.lua") for scale speeds from 1 Smph to 40 Smph -- Table contains a table for each Engine Number -- Deceleration set to 1 Smph/sec. -- These table constructors were created using "Deceleration Test.lua" local StoppingDistance = { --[ 1] = {[1] = 0.18269896193772, [2] = 0.71418685121107, [3] = 1.2179930795848, [4] = 1.3287197231834, [5] = 2.3695501730104, [6] = 2.5356401384083, [7] = 3.4214532871972, [8] = 4.2740484429066, [9] = 6.4, [10] = 7.3245674740485, [11] = 8.8193771626297, [12] = 9.998615916955, [13] = 10.059515570934, [14] = 13.015916955017, [15] = 14.455363321799, [16] = 16.531487889273, [17] = 18.026297577855, [18] = 19.908650519031, [19] = 22.43875432526, [20] = 24.01660899654, [21] = 26.341868512111, [22] = 28.78339100346, [23] = 28.401384083045, [24] = 30.997923875432, [25] = 36.274048442907, [26] = 39.263667820069, [27] = 41.721799307959, [28] = 44.406920415225, [29] = 47.745328719723, [30] = 47.103114186851, [31] = 50.618685121107, [32] = 57.024221453287, [33] = 60.456747404844, [34] = 63.247058823529, [35] = 66.862283737024, [36] = 70.510726643599, [37] = 74.917647058823, [38] = 78.38892733564, [39] = 82.435986159169, [40] = 81.61660899654} [ 1] = {[1] = 0.19377162629764, [2] = 0.57024221453259, [3] = 1.0740484429061, [4] = 1.6830449826987, [5] = 2.3640138408305, [6] = 3.1612456747406, [7] = 4.1854671280276, [8] = 4.346020761246, [9] = 6.1397923875427, [10] = 7.4961937716262, [11] = 8.7584775086504, [12] = 10.125951557094, [13] = 11.620761245675, [14] = 13.248442906575, [15] = 14.770934256055, [16] = 16.525951557093, [17] = 18.674048442907, [18] = 18.192387543252, [19] = 22.123183391004, [20] = 24.387543252595, [21] = 26.41384083045, [22] = 29.010380622837, [23] = 31.020069204152, [24] = 34.120415224913, [25] = 36.268512110726, [26] = 39.003460207613, [27] = 41.649826989619, [28] = 44.478892733565, [29] = 47.031141868512, [30] = 50.297577854671, [31] = 53.923875432526, [32] = 57.240138408304, [33] = 60.01384083045, [34] = 60.119031141869, [35] = 67.056055363323, [36] = 66.685121107266, [37] = 74.253287197233, [38] = 78.040138408305, [39] = 82.613148788927, [40] = 86.200692041522} , [ 3] = {[1] = 0.21591695501736, [2] = 0.56470588235294, [3] = 0.83044982698961, [4] = 1.5335640138409, [5] = 2.319723183391, [6] = 2.5190311418686, [7] = 3.8034602076124, [8] = 4.7114186851211, [9] = 5.9017301038062, [10] = 6.9148788927336, [11] = 7.9889273356402, [12] = 9.4560553633217, [13] = 10.912110726644, [14] = 12.429065743945, [15] = 14.023529411765, [16] = 15.645674740484, [17] = 16.232525951557, [18] = 19.255363321799, [19] = 21.497577854671, [20] = 23.307958477509, [21] = 25.793771626298, [22] = 27.731487889273, [23] = 30.167474048443, [24] = 32.564705882353, [25] = 34.873356401384, [26] = 37.58062283737, [27] = 40.088581314879, [28] = 43.011764705883, [29] = 46.267128027681, [30] = 49.544636678201, [31] = 52.357093425605, [32] = 55.496193771627, [33] = 58.884429065743, [34] = 62.305882352941, [35] = 65.467128027682, [36] = 66.762629757786, [37] = 72.664359861592, [38] = 76.423529411764, [39] = 80.642214532872, [40] = 84.417993079585} , [ 4] = {[1] = 0.28788927335638, [2] = 0.60899653979245, [3] = 1.123875432526, [4] = 1.2456747404844, [5] = 2.3750865051903, [6] = 3.1501730103806, [7] = 3.2885813148789, [8] = 5.1377162629759, [9] = 5.0159169550175, [10] = 6.1397923875433, [11] = 8.4207612456749, [12] = 8.4373702422145, [13] = 11.111418685121, [14] = 11.305190311419, [15] = 14.42214532872, [16] = 16.00553633218, [17] = 17.898961937716, [18] = 19.593079584775, [19] = 21.802076124567, [20] = 23.97785467128, [21] = 26.319723183391, [22] = 28.395847750865, [23] = 30.842906574395, [24] = 33.179238754325, [25] = 33.162629757785, [26] = 38.793079584775, [27] = 41.251211072664, [28] = 44.384775086505, [29] = 46.920415224913, [30] = 49.821453287197, [31] = 49.699653979238, [32] = 56.525951557093, [33] = 59.582006920415, [34] = 62.953633217993, [35] = 66.491349480969, [36] = 69.635986159169, [37] = 69.480968858131, [38] = 77.840830449826, [39] = 81.588927335639, [40] = 85.287197231834} , [ 7] = {[1] = 0.32110726643599, [2] = 0.70865051903115, [3] = 1.3453287197232, [4] = 1.522491349481, [5] = 2.7903114186851, [6] = 3.604152249135, [7] = 4.6892733564014, [8] = 5.6193771626298, [9] = 6.9314878892734, [10] = 8.0664359861592, [11] = 9.5723183391003, [12] = 10.790311418685, [13] = 9.9820069204153, [14] = 13.110034602076, [15] = 12.921799307958, [16] = 17.699653979239, [17] = 19.548788927336, [18] = 20.982698961938, [19] = 23.363321799308, [20] = 25.771626297578, [21] = 27.681660899654, [22] = 29.840830449827, [23] = 33.107266435986, [24] = 35.510034602076, [25] = 37.757785467128, [26] = 40.669896193771, [27] = 43.825605536332, [28] = 46.815224913495, [29] = 49.478200692042, [30] = 52.927335640138, [31] = 55.800692041523, [32] = 59.21660899654, [33] = 62.898269896193, [34] = 66.491349480969, [35] = 68.860899653979, [36] = 73.201384083045, [37] = 77.038062283737, [38] = 80.946712802768, [39] = 81.062975778547, [40] = 86.244982698962} , [ 8] = {[1] = 0.25511854693349, [2] = 0.63779636733372, [3] = 1.114757128992, [4] = 1.6693626658039, [5] = 2.3016129777695, [6] = 3.1057910061469, [7] = 4.0652585848316, [8] = 4.9304432222582, [9] = 6.084022738827, [10] = 7.193233812451, [11] = 9.1898137449738, [12] = 9.4172020150668, [13] = 12.223506031335, [14] = 14.059250358183, [15] = 13.837408143458, [16] = 15.506770809262, [17] = 18.906502749919, [18] = 21.324582890419, [19] = 23.4154457642, [20] = 25.74478901881, [21] = 27.669270231548, [22] = 29.915422655636, [23] = 32.344594906873, [24] = 35.062162037251, [25] = 36.958912973148, [26] = 40.303184360124, [27] = 43.458889864584, [28] = 46.437121597264, [29] = 49.498544160466, [30] = 56.048435550215, [31] = 53.34750658594, [32] = 56.076165827056, [33] = 62.337662337662, [34] = 66.247631372187, [35] = 66.669131580164, [36] = 73.008272865924, [37] = 77.794518648611, [38] = 81.038961038961, [39] = 84.305587650783, [40] = 87.239450940518} , [ 9] = {[1] = 0.15501730103806, [2] = 0.83044982698962, [3] = 1.4062283737024, [4] = 1.2346020761246, [5] = 3.2166089965398, [6] = 4.3072664359862, [7] = 3.3439446366782, [8] = 4.2131487889273, [9] = 5.6525951557094, [10] = 6.2062283737024, [11] = 8.2269896193772, [12] = 9.444982698962, [13] = 10.856747404844, [14] = 12.534256055363, [15] = 13.896193771626, [16] = 14.527335640138, [17] = 17.444982698962, [18] = 18.978546712803, [19] = 21.397923875433, [20] = 23.18615916955, [21] = 25.59446366782, [22] = 27.404844290658, [23] = 29.813148788927, [24] = 30.710034602076, [25] = 35.321799307959, [26] = 37.647058823529, [27] = 42.945328719723, [28] = 46.206228373702, [29] = 47.346712802768, [30] = 52.866435986159, [31] = 55.773010380623, [32] = 58.729411764706, [33] = 62.42214532872, [34] = 65.788235294118, [35] = 69.730103806228, [36] = 73.002076124567, [37] = 77.170934256055, [38] = 81.500346020761, [39] = 85.248442906574, [40] = 89.112802768166} , [10] = {[1] = 0.14292913097242, [2] = 0.6486783636446, [3] = 1.0994548536349, [4] = 1.2258921618031, [5] = 1.8470841541071, [6] = 3.265380915296, [7] = 4.0349993128406, [8] = 4.1229557011311, [9] = 5.1509459892805, [10] = 6.1294608090154, [11] = 7.2728938567959, [12] = 9.7961427458886, [13] = 9.8840991341794, [14] = 11.225434055614, [15] = 12.753676302167, [16] = 14.479820422374, [17] = 16.079527234413, [18] = 17.838655000229, [19] = 23.572312061936, [20] = 21.664757890879, [21] = 27.750240505749, [22] = 28.327454303907, [23] = 32.620825507353, [24] = 34.929680699986, [25] = 37.678317834074, [26] = 40.135599431949, [27] = 42.779788354941, [28] = 40.94369874937, [29] = 46.825782216318, [30] = 49.98121764625, [31] = 52.790324797289, [32] = 53.032204865088, [33] = 60.035732282743, [34] = 63.004260387558, [35] = 66.291630399927, [36] = 69.661459526318, [37] = 69.370103990104, [38] = 77.901873654313, [39] = 81.711484722159, [40] = 85.839937697558} , [11] = {[1] = 0.12139605462821, [2] = 0.57663125948406, [3] = 0.95978755690441, [4] = 1.4681335356601, [5] = 2.0789074355084, [6] = 2.9135053110774, [7] = 3.6342943854325, [8] = 4.6168437025796, [9] = 5.5576631259484, [10] = 6.5857359635812, [11] = 7.6289833080425, [12] = 9.0364188163885, [13] = 11.733687405159, [14] = 11.820940819423, [15] = 13.482549317147, [16] = 15.056904400607, [17] = 16.919575113809, [18] = 18.63808801214, [19] = 20.641122913505, [20] = 22.670713201821, [21] = 25.064491654021, [22] = 27.086494688923, [23] = 29.385432473445, [24] = 31.62746585736, [25] = 32.272382397572, [26] = 36.672989377845, [27] = 39.650986342944, [28] = 42.264795144158, [29] = 44.878603945372, [30] = 46.077389984825, [31] = 51.054628224583, [32] = 54.389226100152, [33] = 57.799696509863, [34] = 60.864946889227, [35] = 61.562974203339, [36] = 67.697268588771, [37] = 71.198786039454, [38] = 74.795144157815, [39] = 78.793626707132, [40] = 79.981031866464} , [12] = {[1] = 0.21075010398854, [2] = 0.52132920460323, [3] = 1.0759347414152, [4] = 1.9910338771549, [5] = 2.2627905901927, [6] = 3.0836067846744, [7] = 4.4534824605999, [8] = 5.479502703702, [9] = 5.7734436382123, [10] = 7.0767666497204, [11] = 8.2913527753385, [12] = 9.428294125803, [13] = 11.042196237926, [14] = 14.031520081342, [15] = 14.103618801128, [16] = 14.824605998983, [17] = 17.725192956511, [18] = 19.749503165873, [19] = 23.054952165272, [20] = 25.179091371262, [21] = 27.785737394278, [22] = 27.8689282248, [23] = 30.508850580025, [24] = 32.97129916347, [25] = 35.372741137866, [26] = 39.987059204141, [27] = 42.676896057679, [28] = 45.904700281924, [29] = 46.847529694505, [30] = 47.696076165827, [31] = 52.737440495448, [32] = 55.876507833804, [33] = 61.916162129686, [34] = 65.387992790128, [35] = 69.21477099413, [36] = 72.559042381106, [37] = 76.258261311642, [38] = 76.801774737718, [39] = 78.099551693858, [40] = 84.571798308454} , [13] = {[1] = 0.1771626297578, [2] = 0.55916955017299, [3] = 0.96885813148789, [4] = 1.5446366782007, [5] = 1.8602076124567, [6] = 2.9896193771626, [7] = 3.8754325259515, [8] = 4.7612456747405, [9] = 5.8131487889273, [10] = 6.8871972318339, [11] = 7.4685121107266, [12] = 9.6387543252595, [13] = 9.9266435986159, [14] = 11.388235294118, [15] = 13.990311418685, [16] = 14.560553633218, [17] = 16.254671280277, [18] = 19.393771626298, [19] = 21.425605536332, [20] = 23.667820069204, [21] = 24.060899653979, [22] = 26.41937716263, [23] = 29.946020761246, [24] = 32.359861591696, [25] = 35.122491349481, [26] = 37.65813148789, [27] = 40.459515570934, [28] = 43.426989619377, [29] = 46.322491349481, [30] = 47.26366782007, [31] = 52.163321799308, [32] = 55.734256055363, [33] = 58.934256055363, [34] = 62.33356401384, [35] = 65.59446366782, [36] = 69.364705882353, [37] = 70.510726643599, [38] = 77.132179930796, [39] = 80.564705882352, [40] = 84.728027681661} , [14] = {[1] = 0.23293432546102, [2] = 0.43259231871338, [3] = 0.99828996626149, [4] = 1.6249942228589, [5] = 2.2905208670333, [6] = 3.017054120257, [7] = 3.8378703147387, [8] = 4.1817257475621, [9] = 5.9010029116791, [10] = 7.0601284836161, [11] = 8.1360632250312, [12] = 8.6740305957389, [13] = 10.79262374636, [14] = 12.578453574895, [15] = 14.197901742386, [16] = 15.861718352821, [17] = 17.403521745159, [18] = 19.372371400841, [19] = 21.612977769561, [20] = 23.481998428618, [21] = 25.933354901327, [22] = 26.415861718353, [23] = 30.314738642141, [24] = 32.993483384943, [25] = 35.638951795535, [26] = 38.007117437722, [27] = 40.69695429126, [28] = 43.658547857836, [29] = 44.429449554005, [30] = 49.376530942367, [31] = 52.693072052503, [32] = 55.715672228128, [33] = 59.109858113417, [34] = 62.498497943338, [35] = 65.615381060221, [36] = 69.580810648426, [37] = 70.540278227111, [38] = 77.234367056431, [39] = 80.817118824235, [40] = 84.63835097287} , [15] = {[1] = 0.12755927346674, [2] = 0.35494754355963, [3] = 0.85409252669034, [4] = 1.6471784443315, [5] = 2.2350603133521, [6] = 2.9449554004714, [7] = 3.8766927023155, [8] = 4.8694366132089, [9] = 5.7845357489486, [10] = 6.9824837084623, [11] = 9.6334981744236, [12] = 10.76489346952, [13] = 12.256782363544, [14] = 13.759763368304, [15] = 14.968803438554, [16] = 17.736285067246, [17] = 17.525534963257, [18] = 21.801543652077, [19] = 25.988815455008, [20] = 26.221749780469, [21] = 30.64195590886, [22] = 27.796829505015, [23] = 30.148356981097, [24] = 32.632989786015, [25] = 35.406017470075, [26] = 37.779729167629, [27] = 40.502842353376, [28] = 43.458889864584, [29] = 46.409391320424, [30] = 49.143596616906, [31] = 52.665341775662, [32] = 55.920876276748, [33] = 56.464389702824, [34] = 69.270231547812, [35] = 70.229699126496, [36] = 73.546240236632, [37] = 77.766788371771, [38] = 80.916947820863, [39] = 84.643897028239, [40] = 89.474511253871} , [16] = {[1] = 0.21075010398854, [2] = 0.47141470629015, [3] = 1.1313952950964, [4] = 1.6305402782271, [5] = 2.1463234274622, [6] = 3.0004159541526, [7] = 3.8267782040024, [8] = 4.8361602810001, [9] = 6.4833387253316, [10] = 7.0545824282479, [11] = 8.1527013911355, [12] = 9.6334981744234, [13] = 10.88136063225, [14] = 13.582289596524, [15] = 14.264454406803, [16] = 15.967093404816, [17] = 17.63645607062, [18] = 20.6146878033, [19] = 23.099320608217, [20] = 23.287886490733, [21] = 25.600591579239, [22] = 28.013125664371, [23] = 30.309192586773, [24] = 32.921384665157, [25] = 33.426075703656, [26] = 42.089014188658, [27] = 42.954198826085, [28] = 45.300180246799, [29] = 46.376114988215, [30] = 49.526274437307, [31] = 59.697739982437, [32] = 58.117114202523, [33] = 61.78305680085, [34] = 65.4101770116, [35] = 68.682349678791, [36] = 69.536442205482, [37] = 72.570134491843, [38] = 77.156722281278, [39] = 80.839303045709, [40] = 84.255673152471} , [18] = {[1] = 0.26785714285711, [2] = 0.38183890577508, [3] = 0.75797872340424, [4] = 1.265197568389, [5] = 2.3993161094225, [6] = 3.1629939209726, [7] = 4.0064589665653, [8] = 4.9582066869301, [9] = 5.1405775075987, [10] = 9.7169452887537, [11] = 9.4034954407296, [12] = 8.4973404255319, [13] = 10.651595744681, [14] = 12.338525835866, [15] = 15.746580547112, [16] = 17.450607902736, [17] = 17.410714285714, [18] = 17.781155015198, [19] = 21.867401215805, [20] = 25.759878419453, [21] = 28.039513677812, [22] = 30.353343465046, [23] = 32.547492401216, [24] = 33.242781155015, [25] = 35.858662613982, [26] = 38.189589665653, [27] = 41.198708206687, [28] = 44.025455927052, [29] = 47.245440729484, [30] = 50.174772036474, [31] = 52.910334346504, [32] = 56.18161094225, [33] = 59.293313069909, [34] = 63.066109422492, [35] = 66.987082066869, [36] = 70.115881458967, [37] = 73.723404255319, [38] = 77.422112462006, [39] = 81.48556231003, [40] = 81.474164133738} , -- following are place holders until actual measurements are taken -- A&S 0-8-0 #211 [ 2] = {[1] = 0.1, [2] = 0.6, [3] = 1.0, [4] = 1.5, [5] = 2.1, [6] = 2.9, [7] = 3.6, [8] = 4.6, [9] = 5.6, [10] = 6.6, [11] = 7.6, [12] = 9.0, [13] = 11.7, [14] = 11.8, [15] = 13.5, [16] = 15.1, [17] = 16.9, [18] = 18.6, [19] = 20.6, [20] = 22.7, [21] = 25.1, [22] = 27.1, [23] = 29.4, [24] = 31.6, [25] = 32.3, [26] = 36.7, [27] = 39.7, [28] = 42.3, [29] = 44.9, [30] = 46.1, [31] = 51.1, [32] = 54.4, [33] = 57.8, [34] = 60.9, [35] = 61.6, [36] = 67.7, [37] = 71.2, [38] = 74.8, [39] = 78.8, [40] = 80.0} , -- P&LE 2-8-0 #9378 [ 5] = {[1] = 0.1, [2] = 0.6, [3] = 1.0, [4] = 1.5, [5] = 2.1, [6] = 2.9, [7] = 3.6, [8] = 4.6, [9] = 5.6, [10] = 6.6, [11] = 7.6, [12] = 9.0, [13] = 11.7, [14] = 11.8, [15] = 13.5, [16] = 15.1, [17] = 16.9, [18] = 18.6, [19] = 20.6, [20] = 22.7, [21] = 25.1, [22] = 27.1, [23] = 29.4, [24] = 31.6, [25] = 32.3, [26] = 36.7, [27] = 39.7, [28] = 42.3, [29] = 44.9, [30] = 46.1, [31] = 51.1, [32] = 54.4, [33] = 57.8, [34] = 60.9, [35] = 61.6, [36] = 67.7, [37] = 71.2, [38] = 74.8, [39] = 78.8, [40] = 80.0} , -- NYC Berk #9401 [ 6] = {[1] = 0.1, [2] = 0.6, [3] = 1.0, [4] = 1.5, [5] = 2.1, [6] = 2.9, [7] = 3.6, [8] = 4.6, [9] = 5.6, [10] = 6.6, [11] = 7.6, [12] = 9.0, [13] = 11.7, [14] = 11.8, [15] = 13.5, [16] = 15.1, [17] = 16.9, [18] = 18.6, [19] = 20.6, [20] = 22.7, [21] = 25.1, [22] = 27.1, [23] = 29.4, [24] = 31.6, [25] = 32.3, [26] = 36.7, [27] = 39.7, [28] = 42.3, [29] = 44.9, [30] = 46.1, [31] = 51.1, [32] = 54.4, [33] = 57.8, [34] = 60.9, [35] = 61.6, [36] = 67.7, [37] = 71.2, [38] = 74.8, [39] = 78.8, [40] = 80.0} , -- P&LE RS-3 #8356 [17] = {[1] = 0.1, [2] = 0.6, [3] = 1.0, [4] = 1.5, [5] = 2.1, [6] = 2.9, [7] = 3.6, [8] = 4.6, [9] = 5.6, [10] = 6.6, [11] = 7.6, [12] = 9.0, [13] = 11.7, [14] = 11.8, [15] = 13.5, [16] = 15.1, [17] = 16.9, [18] = 18.6, [19] = 20.6, [20] = 22.7, [21] = 25.1, [22] = 27.1, [23] = 29.4, [24] = 31.6, [25] = 32.3, [26] = 36.7, [27] = 39.7, [28] = 42.3, [29] = 44.9, [30] = 46.1, [31] = 51.1, [32] = 54.4, [33] = 57.8, [34] = 60.9, [35] = 61.6, [36] = 67.7, [37] = 71.2, [38] = 74.8, [39] = 78.8, [40] = 80.0} , }
-- Measured starting distance in inches (from "Acceleration Test.lua") for scale speeds from 1 Smph to 40 Smph -- Table contains a table for each Engine Number. -- Acceleration set to 1 Smph/sec. -- These table constructors were created using "Acceleration Test.lua" local StartingDistance = { [12] = {[1] = 0.0, [2] = 0.0055460553685016, [3] = 0.0055460553679154, [4] = 0.56015159217997, [5] = 1.0260202431025, [6] = 1.3865138420299, [7] = 2.1130470952537, [8] = 3.1723436705643, [9] = 3.8656005915789, [10] = 4.7307852290054, [11] = 6.1783056800852, [12] = 7.2764246429729, [13] = 8.0085039515641, [14] = 9.3062809077044, [15] = 10.964551462772, [16] = 12.728197069834, [17] = 13.815223921986, [18] = 16.150113231964, [19] = 18.008041780284, [20] = 19.982437491334, [21] = 22.311780745944, [22] = 23.787031473864, [23] = 25.123630817581, [24] = 27.386421407773, [25] = 30.564311133706, [26] = 34.163701067615, [27] = 35.827517678051, [28] = 38.068124046772, [29] = 41.595415260896, [30] = 45.139344641124, [31] = 51.977630910015, [32] = 50.829597448814, [33] = 53.38078291815, [34] = 55.00023108564, [35] = 60.551832509127, [36] = 64.273235661136, [37] = 65.842769330314, [38] = 70.262975458706, [39] = 73.302213800435, [40] = 76.713037851828} , [12] = {[1] = 0.0055460553681194, [2] = 0.0, [3] = 0.24402643619725, [4] = 0.53242131533946, [5] = 1.1757637380413, [6] = 1.6360863335952, [7] = 2.2461524240884, [8] = 2.9227711789989, [9] = 4.2593705227157, [10] = 4.7529694504783, [11] = 6.4056939501779, [12] = 7.3097009751814, [13] = 8.3024448860748, [14] = 10.271294541757, [15] = 11.108748902343, [16] = 13.332717104959, [17] = 13.732033091464, [18] = 15.650968248833, [19] = 17.869390396081, [20] = 20.720062855294, [21] = 22.417155797939, [22] = 24.563479225401, [23] = 25.317742755465, [24] = 28.467902204557, [25] = 31.690160373434, [26] = 33.315154596293, [27] = 36.149188889402, [28] = 38.72255858021, [29] = 41.706336368258, [30] = 45.3001802468, [31] = 45.993437167814, [32] = 50.335998521052, [33] = 52.177288903268, [34] = 56.525396311873, [35] = 59.536904376762, [36] = 63.247215418034, [37] = 67.173822618662, [38] = 69.209224938762, [39] = 72.841891204881, [40] = 77.38411055137} -- -- This table is incomplete -- I stopped work on it because it probably is not really necessary -- }
--[[-------------------------------Stations-----------------------------------------------]] ALIQUIPPA = 101; COLLEGE = 102; STRUTHERS = 103; J_L = 104; MCKEESROCKS = 105; WESTALIQUIPPA = 106; MCKEESROCKSYARD1 = 107 MCKEESROCKSYARD2 = 108 YOUNGSTOWN = 109 J_LTHRU = 110 MILL = 111 YOUNGSTOWNYARD1 = 112 YOUNGSTOWNYARD2 = 113 NEWCASTLE = 114
--[[-------------------------------Station Names-------------------------------------------]]
StationNames = { [ALIQUIPPA] = "Aliquippa", [COLLEGE] = "College", [STRUTHERS] = "Struthers", [J_L] = "J&L", [MCKEESROCKS] = "McKees Rocks", [WESTALIQUIPPA] = "West Aliquippa", [MCKEESROCKSYARD1] = "McKees Rocks Yard 1", [MCKEESROCKSYARD2] = "McKees Rocks Yard 2", [YOUNGSTOWN] = "Youngstown", [J_LTHRU] = "J&L Thru", [MILL] = "Mill", [YOUNGSTOWNYARD1] = "Youngstown Yard 1", [YOUNGSTOWNYARD2] = "Youngstown Yard 2", [NEWCASTLE] = "New Castle", }; --[[-------------------------------Layout Tag Readers--------------------------------------]] ALIQUIPPA_WEST_DETECTOR = 1; ALIQUIPPA_WEST_READER = 0; ALIQUIPPA_EAST_DETECTOR = 5; ALIQUIPPA_EAST_READER = 1; COLLEGE_WEST_DETECTOR = 2; COLLEGE_WEST_READER = 1; COLLEGE_EAST_DETECTOR = 4; COLLEGE_EAST_READER = 1; STRUTHERS_WEST_DETECTOR = 4; STRUTHERS_WEST_READER = 0; STRUTHERS_EAST_DETECTOR = 2; STRUTHERS_EAST_READER = 0; YOUNGSTOWN_YARD_DETECTOR = 5; YOUNGSTOWN_YARD_READER = 0; MCKEESROCKS_YARD_DETECTOR = 3; MCKEESROCKS_YARD_READER = 0; TUNNEL_EAST_DETECTOR = 6; TUNNEL_EAST_READER = 0; TUNNEL_WEST_DETECTOR = 6; TUNNEL_WEST_READER = 1; --[[-------------------------------Switches AIU and Channel-----------------------------]]
COLLEGE_WEST = 1; COLLEGE_WEST_AIU = 1; COLLEGE_WEST_CHAN = 1; COLLEGE_EAST = 2; COLLEGE_EAST_AIU = 1; COLLEGE_EAST_CHAN = 2;
YOUNGSTOWN_YARD = 3; YOUNGSTOWN_YARD_AIU = 1; YOUNGSTOWN_YARD_CHAN = 3;
MCKEES_ROCKS_YARD = 4; MCKEES_ROCKS_YARD_AIU = 1; MCKEES_ROCKS_YARD_CHAN = 4;
ALIQUIPPA_EAST = 5; ALIQUIPPA_EAST_AIU = 1; ALIQUIPPA_EAST_CHAN = 5;
J_L_SLAG_TRACK = 6; J_L_SLAG_TRACK_AIU = 1; J_L_SLAG_TRACK_CHAN = 6;
HOLE_TRACK = 7; HOLE_TRACK_AIU = 1; HOLE_TRACK_CHAN = 7
J_L_MILL_TRACK = 8; J_L_MILL_TRACK_AIU = 1; J_L_MILL_TRACK_CHAN = 8;
ALIQUIPPA_WEST = 9; ALIQUIPPA_WEST_AIU = 1; ALIQUIPPA_WEST_CHAN = 9;
ALIQUIPPA_TEAM_TRACK = 10; ALIQUIPPA_TEAM_TRACK_AIU = 1; ALIQUIPPA_TEAM_TRACK_CHAN = 10;
BYPASS_WEST = 11; BYPASS_WEST_AIU = 2; BYPASS_WEST_CHAN = 1; BYPASS_EAST = 12; BYPASS_EAST_AIU = 2; BYPASS_EAST_CHAN = 2;
--AIU2 CHAN3 NC --AIU2 CHAN4 NC
STRUTHERS_WEST = 15; STRUTHERS_WEST_AIU = 2; STRUTHERS_WEST_CHAN = 5; STRUTHERS_EAST = 16; STRUTHERS_EAST_AIU = 2; STRUTHERS_EAST_CHAN = 6;
CAMPBELL_YARD = 17; CAMPBELL_YARD_AIU = 2; CAMPBELL_YARD_CHAN = 7;
MONACA_CUTOFF = 18; MONACA_CUTOFF_AIU = 2; MONACA_CUTOFF_CHAN = 8;
-- AIU2 CHAN9 - two switches connected to this channel BALLOON = 19; BALLOON_AIU = 2; BALLOON_CHAN = 9; PM_MOORE_TRESTLE = 20; PM_MOORE_TRESTLE_AIU = 2; PM_MOORE_TRESTLE_CHAN = 10;
--[[-------------------------------Switch Names-------------------------------------------]]
SwitchName = { [COLLEGE_WEST] = "College West", [COLLEGE_EAST] = "College East", [YOUNGSTOWN_YARD] = "Youngstown Yard", [MCKEES_ROCKS_YARD] = "McKees Rocks Yard", [ALIQUIPPA_EAST] = "Aliquippa East", [J_L_SLAG_TRACK] = "J&L Slag Track", [HOLE_TRACK] = "Hole", [J_L_MILL_TRACK] = "J&L Mill", [ALIQUIPPA_WEST] = "Aliquippa West", [ALIQUIPPA_TEAM_TRACK] = "Aliquippa Team", [BYPASS_WEST] = "Bypass West", [BYPASS_EAST] = "Bypass East", [STRUTHERS_WEST] = "Struthers West", [STRUTHERS_EAST] = "Struthers East", [CAMPBELL_YARD] = "Campbell Yard", [MONACA_CUTOFF] = "Monaca Cutoff", [PM_MOORE_TRESTLE] = "PM Moore Trestle", [BALLOON] = "Lionel-Ives Switch", };
--[[---------------------------------Event Types------------------------------------------]] NOEVENT = 0; RUNTOEVENT = 1; STARTUPENGINE = 2; SHUTDOWNENGINE = 3; ONSHEET = 4; BLOCK_OCCUPANCY_EVENT = 5; TAG_EVENT = 6; --[[----------------------------------Superior Direction-----------------------------------]] SuperiorDirection = WB; --[[----------------------------------Blocks-------------------------------------------]] -- Real physical blocks can be numbered from 1 to 100 FIRST_BLOCK = 1; -- FIRST_BLOCK is the lowest physical block number YOUNGSTOWN_YARD2_BLOCK = 1; YOUNGSTOWN_YARD1_BLOCK = 2; YOUNGSTOWN_BLOCK = 3; STRUTHERS_THRU_TRACK = 4 STRUTHERS_BLOCK = 4; STRUTHERS_STATION_TRACK = 5; NEW_CASTLE_BLOCK = 6; COLLEGE_THRU_TRACK = 7; COLLEGE_BLOCK = 7; COLLEGE_STATION_TRACK = 8; ALIQUIPPA_BLOCK = 9; J_L_PASSING_TRACK = 10; J_L_THRU_TRACK = 11; J_L_BLOCK = 11; MCKEES_ROCKS_BLOCK = 12; MCKEES_ROCKS_YARD2_BLOCK = 13; MCKEES_ROCKS_YARD1_BLOCK = 14; LIONEL_IVES_BLOCK = 15; -- AKA BALLOON_TRACK BALLOON_TRACK = 15; -- AKA LIONEL_IVES_BLOCK MONACA_BLOCK = 16; BEAVER_FALLS_BLOCK = 17 LAST_BLOCK = 17; -- LAST_BLOCK is the highest physical block number
-- Simulated blocks can be numbered from 101 to 200 CLEVELAND_EL = 101; ASHTABULA_NYC = 103; CUMBERLAND_B_O = 102; POINTS_SOUTH_N_W = 104; --[[----------------------------------Block Names---------------------------------------]]
BlockName = { [YOUNGSTOWN_YARD2_BLOCK] = "Youngstown Yard 2 Block", [YOUNGSTOWN_YARD1_BLOCK] = "Youngstown Yard 1 Block", [YOUNGSTOWN_BLOCK] = "Youngstown Block", [STRUTHERS_THRU_TRACK] = "Struthers Thru Track", [STRUTHERS_STATION_TRACK] = "Struthers Station Track", [NEW_CASTLE_BLOCK] = "New Castle Block", [COLLEGE_THRU_TRACK] = "College Thru Track", [COLLEGE_STATION_TRACK] = "College Station Track", [ALIQUIPPA_BLOCK] = "Aliquippa Block", [J_L_PASSING_TRACK] = "J&L Passing Track", [J_L_THRU_TRACK] = "J&L Thru Track", [MCKEES_ROCKS_BLOCK] = "McKees Rocks Block", [MCKEES_ROCKS_YARD2_BLOCK] = "McKees Rocks Yard 2 Block", [MCKEES_ROCKS_YARD1_BLOCK] = "McKees Rocks Yard 1 Block", [LIONEL_IVES_BLOCK] = "Lionel-Ives Block", -- AKA Balloon Track [CLEVELAND_EL] = "Cleveland via Erie-Lackawanna (simulated)", [ASHTABULA_NYC] = "Ashtabula via New York Central (simulated)", [CUMBERLAND_B_O] = "Cumberland via Baltimore & Ohio (simulated)", [POINTS_SOUTH_N_W] = "South via Norfolk & Western (simulated)", [MONACA_BLOCK] = "Monaca Block", [BEAVER_FALLS_BLOCK] = "Beaver Falls Block", }; --[[---------------------------------Next Signals---------------------------------------]] SignalNames = { [1] = "LI", [2] = "YG", [5] = "YG", [6] = "ST", [9] = "ST", [10] = "NC", [13] = "NC", [14] = "CO", [17] = "CO", [18] = "BF", [21] = "BF", [22] = "MO", [25] = "MO", [26] = "AL", [29] = "AL", [30] = "JL", [33] = "JL", [34] = "MK", [37] = "MK", [38] = "L1", } NextSignal = { [EB] = { [YOUNGSTOWN_BLOCK] = { [HOMESIGNAL] = 6, [DISTANTSIGNAL] = 10, }, [STRUTHERS_BLOCK] = { [HOMESIGNAL] = 10, [DISTANTSIGNAL] = 14, }, [STRUTHERS_STATION_TRACK] = { [HOMESIGNAL] = 10, [DISTANTSIGNAL] = 14, }, [NEW_CASTLE_BLOCK] = { [HOMESIGNAL] = 14, [DISTANTSIGNAL] = 18, }, [COLLEGE_BLOCK] = { [HOMESIGNAL] = 18, [DISTANTSIGNAL] = 22, }, [COLLEGE_STATION_TRACK] = { [HOMESIGNAL] = 18, [DISTANTSIGNAL] = 22, }, [BEAVER_FALLS_BLOCK] = { [HOMESIGNAL] = 22, [DISTANTSIGNAL] = 26, }, [MONACA_BLOCK] = { [HOMESIGNAL] = 26, [DISTANTSIGNAL] = 30, }, [ALIQUIPPA_BLOCK] = { [HOMESIGNAL] = 30, [DISTANTSIGNAL] = 34, }, [J_L_BLOCK] = { [HOMESIGNAL] = 34, [DISTANTSIGNAL] = 38, }, [J_L_PASSING_TRACK] = { [HOMESIGNAL] = 34, [DISTANTSIGNAL] = 38, }, [MCKEES_ROCKS_BLOCK] = { [HOMESIGNAL] = 38, [DISTANTSIGNAL] = 2, }, [LIONEL_IVES_BLOCK] = { [HOMESIGNAL] = 2, [DISTANTSIGNAL] = 6, }, [YOUNGSTOWN_YARD2_BLOCK] = { [HOMESIGNAL] = 2, [DISTANTSIGNAL] = 6, }, [YOUNGSTOWN_YARD1_BLOCK] = { [HOMESIGNAL] = 2, [DISTANTSIGNAL] = 6, }, [MCKEES_ROCKS_YARD2_BLOCK] = { [HOMESIGNAL] = 0, [DISTANTSIGNAL] = 0, }, [MCKEES_ROCKS_YARD1_BLOCK] = { [HOMESIGNAL] = 0, [DISTANTSIGNAL] = 0, }, }, [WB] = { [LIONEL_IVES_BLOCK] = { [HOMESIGNAL] = 37, [DISTANTSIGNAL] = 33, }, [MCKEES_ROCKS_BLOCK] = { [HOMESIGNAL] = 33, [DISTANTSIGNAL] = 29, }, [J_L_BLOCK] = { [HOMESIGNAL] = 29, [DISTANTSIGNAL] = 25, }, [J_L_PASSING_TRACK] = { [HOMESIGNAL] = 29, [DISTANTSIGNAL] = 25, }, [ALIQUIPPA_BLOCK] = { [HOMESIGNAL] = 25, [DISTANTSIGNAL] = 21, }, [MONACA_BLOCK] = { [HOMESIGNAL] = 21, [DISTANTSIGNAL] = 17, }, [BEAVER_FALLS_BLOCK] = { [HOMESIGNAL] = 17, [DISTANTSIGNAL] = 13, }, [COLLEGE_BLOCK] = { [HOMESIGNAL] = 13, [DISTANTSIGNAL] = 9, }, [COLLEGE_STATION_TRACK] = { [HOMESIGNAL] = 13, [DISTANTSIGNAL] = 9, }, [NEW_CASTLE_BLOCK] = { [HOMESIGNAL] = 9, [DISTANTSIGNAL] = 5, }, [STRUTHERS_BLOCK] = { [HOMESIGNAL] = 5, [DISTANTSIGNAL] = 1, }, [STRUTHERS_STATION_TRACK] = { [HOMESIGNAL] = 5, [DISTANTSIGNAL] = 1, }, [YOUNGSTOWN_BLOCK] = { [HOMESIGNAL] = 1, [DISTANTSIGNAL] = 37, }, [MCKEES_ROCKS_YARD2_BLOCK] = { [HOMESIGNAL] = 37, [DISTANTSIGNAL] = 33, }, [MCKEES_ROCKS_YARD1_BLOCK] = { [HOMESIGNAL] = 37, [DISTANTSIGNAL] = 33, }, [YOUNGSTOWN_YARD2_BLOCK] = { [HOMESIGNAL] = 0, [DISTANTSIGNAL] = 0, }, [YOUNGSTOWN_YARD1_BLOCK] = { [HOMESIGNAL] = 0, [DISTANTSIGNAL] = 0, }, } }
--[[---------------------------------Block Speeds---------------------------------------]]
BlockSpeed = { [EB] = { -- "Slow" Freight [YOUNGSTOWN_YARD2_BLOCK] = 10, [YOUNGSTOWN_YARD1_BLOCK] = 10, [YOUNGSTOWN_BLOCK] = 20, [STRUTHERS_THRU_TRACK] = 15, [STRUTHERS_STATION_TRACK] = 10, [NEW_CASTLE_BLOCK] = 22, [COLLEGE_THRU_TRACK] = 15, [COLLEGE_STATION_TRACK] = 10, [ALIQUIPPA_BLOCK] = 25, [J_L_PASSING_TRACK] = 10, [J_L_THRU_TRACK] = 15, [MCKEES_ROCKS_BLOCK] = 20, [MCKEES_ROCKS_YARD2_BLOCK] = 10, [MCKEES_ROCKS_YARD1_BLOCK] = 10, [CLEVELAND_EL] = 0, [ASHTABULA_NYC] = 0, [CUMBERLAND_B_O] = 0, [POINTS_SOUTH_N_W] = 0, [LIONEL_IVES_BLOCK] = 15, -- very slow through here in case of stop [MONACA_BLOCK] = 25, [BEAVER_FALLS_BLOCK] = 25, }, [WB] = { -- "Fast" Freight [YOUNGSTOWN_YARD2_BLOCK] = 10, [YOUNGSTOWN_YARD1_BLOCK] = 10, [YOUNGSTOWN_BLOCK] = 22, [STRUTHERS_THRU_TRACK] = 15, [STRUTHERS_STATION_TRACK] = 10, [NEW_CASTLE_BLOCK] = 28, [COLLEGE_THRU_TRACK] = 15, [COLLEGE_STATION_TRACK] = 10, [ALIQUIPPA_BLOCK] = 35, [J_L_PASSING_TRACK] = 10, [J_L_THRU_TRACK] = 15, [MCKEES_ROCKS_BLOCK] = 22, [MCKEES_ROCKS_YARD2_BLOCK] = 10, [MCKEES_ROCKS_YARD1_BLOCK] = 10, [CLEVELAND_EL] = 0, [ASHTABULA_NYC] = 0, [CUMBERLAND_B_O] = 0, [POINTS_SOUTH_N_W] = 0, [LIONEL_IVES_BLOCK] = 18, -- very slow through here in case of stop [MONACA_BLOCK] = 35, [BEAVER_FALLS_BLOCK] = 35, }, };
--[[--------------------------------Switch Structure----------------------------------]] -- fields in the Switches table AIU_NUMBER = 1; CHAN_NUMBER = 2; TIU_NUMBER = 3; NORMAL_SEGMENT = 4; REVERSE_SEGMENT = 5; COMMON_SEGMENT = 6; -- NORMAL and REVERSE defined in defines.lua Switches = { [COLLEGE_WEST] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = COLLEGE_WEST_AIU, [CHAN_NUMBER] = COLLEGE_WEST_CHAN, [NORMAL_SEGMENT] = COLLEGE_THRU_TRACK, [REVERSE_SEGMENT] = COLLEGE_STATION_TRACK, [COMMON_SEGMENT] = NEW_CASTLE_BLOCK },
[COLLEGE_EAST] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = COLLEGE_EAST_AIU, [CHAN_NUMBER] = COLLEGE_EAST_CHAN, [NORMAL_SEGMENT] = COLLEGE_THRU_TRACK, [REVERSE_SEGMENT] = COLLEGE_STATION_TRACK, [COMMON_SEGMENT] = ALIQUIPPA_BLOCK },
[YOUNGSTOWN_YARD] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = YOUNGSTOWN_YARD_AIU, [CHAN_NUMBER] = YOUNGSTOWN_YARD_CHAN, [NORMAL_SEGMENT] = YOUNGSTOWN_YARD2_BLOCK, [REVERSE_SEGMENT] = YOUNGSTOWN_YARD1_BLOCK, [COMMON_SEGMENT] = YOUNGSTOWN_BLOCK },
[MCKEES_ROCKS_YARD] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = MCKEES_ROCKS_YARD_AIU, [CHAN_NUMBER] = MCKEES_ROCKS_YARD_CHAN, [NORMAL_SEGMENT] = MCKEES_ROCKS_YARD1_BLOCK, [REVERSE_SEGMENT] = MCKEES_ROCKS_YARD2_BLOCK, [COMMON_SEGMENT] = MCKEES_ROCKS_BLOCK },
[ALIQUIPPA_EAST] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = ALIQUIPPA_EAST_AIU, [CHAN_NUMBER] = ALIQUIPPA_EAST_CHAN, [NORMAL_SEGMENT] = J_L_THRU_TRACK, [REVERSE_SEGMENT] = J_L_PASSING_TRACK, [COMMON_SEGMENT] = MCKEES_ROCKS_BLOCK },
[J_L_SLAG_TRACK] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = J_L_SLAG_TRACK_AIU, [CHAN_NUMBER] = J_L_SLAG_TRACK_CHAN, [NORMAL_SEGMENT] = 0, [REVERSE_SEGMENT] = 0, [COMMON_SEGMENT] = 0 },
[HOLE_TRACK] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = HOLE_TRACK_AIU, [CHAN_NUMBER] = HOLE_TRACK_CHAN, [NORMAL_SEGMENT] = 0, [REVERSE_SEGMENT] = 0, [COMMON_SEGMENT] = 0 },
[J_L_MILL_TRACK] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = J_L_MILL_TRACK_AIU, [CHAN_NUMBER] = J_L_MILL_TRACK_CHAN, [NORMAL_SEGMENT] = 0, [REVERSE_SEGMENT] = 0, [COMMON_SEGMENT] = 0 },
[ALIQUIPPA_WEST] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = ALIQUIPPA_WEST_AIU, [CHAN_NUMBER] = ALIQUIPPA_WEST_CHAN, [NORMAL_SEGMENT] = J_L_THRU_TRACK, [REVERSE_SEGMENT] = J_L_PASSING_TRACK, [COMMON_SEGMENT] = ALIQUIPPA_BLOCK },
[ALIQUIPPA_TEAM_TRACK] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = ALIQUIPPA_TEAM_TRACK_AIU, [CHAN_NUMBER] = ALIQUIPPA_TEAM_TRACK_CHAN, [NORMAL_SEGMENT] = 0, [REVERSE_SEGMENT] = 0, [COMMON_SEGMENT] = 0 },
[BYPASS_WEST] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = BYPASS_WEST_AIU, [CHAN_NUMBER] = BYPASS_WEST_CHAN, [NORMAL_SEGMENT] = 0, [REVERSE_SEGMENT] = 0, [COMMON_SEGMENT] = 0 },
[BYPASS_EAST] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = BYPASS_EAST_AIU, [CHAN_NUMBER] = BYPASS_EAST_CHAN, [NORMAL_SEGMENT] = 0, [REVERSE_SEGMENT] = 0, [COMMON_SEGMENT] = 0 },
[STRUTHERS_WEST] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = STRUTHERS_WEST_AIU, [CHAN_NUMBER] = STRUTHERS_WEST_CHAN, [NORMAL_SEGMENT] = STRUTHERS_THRU_TRACK, [REVERSE_SEGMENT] = STRUTHERS_STATION_TRACK, [COMMON_SEGMENT] = YOUNGSTOWN_BLOCK },
[STRUTHERS_EAST] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = STRUTHERS_EAST_AIU, [CHAN_NUMBER] = STRUTHERS_EAST_CHAN, [NORMAL_SEGMENT] = STRUTHERS_THRU_TRACK, [REVERSE_SEGMENT] = STRUTHERS_STATION_TRACK, [COMMON_SEGMENT] = NEW_CASTLE_BLOCK },
[CAMPBELL_YARD] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = CAMPBELL_YARD_AIU, [CHAN_NUMBER] = CAMPBELL_YARD_CHAN, [NORMAL_SEGMENT] = 0, [REVERSE_SEGMENT] = 0, [COMMON_SEGMENT] = 0 },
[MONACA_CUTOFF] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = MONACA_CUTOFF_AIU, [CHAN_NUMBER] = MONACA_CUTOFF_CHAN, [NORMAL_SEGMENT] = 0, [REVERSE_SEGMENT] = 0, [COMMON_SEGMENT] = 0 },
[PM_MOORE_TRESTLE] = { [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = PM_MOORE_TRESTLE_AIU, [CHAN_NUMBER] = PM_MOORE_TRESTLE_CHAN, [NORMAL_SEGMENT] = 0, [REVERSE_SEGMENT] = 0, [COMMON_SEGMENT] = 0 }, [BALLOON] = { -- Lionel and Ives switches [TIU_NUMBER] = MASTER_TIU, [AIU_NUMBER] = BALLOON_AIU, [CHAN_NUMBER] = BALLOON_CHAN, [NORMAL_SEGMENT] = 0, [REVERSE_SEGMENT] = 0, [COMMON_SEGMENT] = 0 }, };
--[[-----------------------------Next Block Structure---------------------------]]
NEXT_BLOCK = 1; SWITCH = 2; SWITCH_POSITION = 3;
NextBlock = { [MCKEES_ROCKS_YARD2_BLOCK] = { [WB] = { [REVERSE] = { [NEXT_BLOCK] = MCKEES_ROCKS_BLOCK, [SWITCH] = MCKEES_ROCKS_YARD, [SWITCH_POSITION] = REVERSE, }, }, [EB] = { [NORMAL] = { [NEXT_BLOCK] = CUMBERLAND_B_O; } }, -- no Eastbound connection }, [MCKEES_ROCKS_YARD1_BLOCK] = { [WB] = { [NORMAL] = { [NEXT_BLOCK] = MCKEES_ROCKS_BLOCK, [SWITCH] = MCKEES_ROCKS_YARD, [SWITCH_POSITION] = NORMAL, }, }, [EB] = { [REVERSE] = { [NEXT_BLOCK] = POINTS_SOUTH_N_W, } }, -- no Eastbound connection }, [MCKEES_ROCKS_BLOCK] = { [WB] = { [NORMAL] = { [NEXT_BLOCK] = J_L_THRU_TRACK, [SWITCH] = ALIQUIPPA_EAST, [SWITCH_POSITION] = NORMAL, }, [REVERSE] = { [NEXT_BLOCK] = J_L_PASSING_TRACK, [SWITCH] = ALIQUIPPA_EAST, [SWITCH_POSITION] = REVERSE, }, }, [EB] = { [NORMAL] = { [NEXT_BLOCK] = MCKEES_ROCKS_YARD1_BLOCK, [SWITCH] = MCKEES_ROCKS_YARD, [SWITCH_POSITION] = NORMAL, }, [REVERSE] = { [NEXT_BLOCK] = MCKEES_ROCKS_YARD2_BLOCK, [SWITCH] = MCKEES_ROCKS_YARD, [SWITCH_POSITION] = REVERSE, }, }, }, [J_L_THRU_TRACK] = { [WB] = { [NORMAL] = { [NEXT_BLOCK] = ALIQUIPPA_BLOCK, [SWITCH] = ALIQUIPPA_WEST, [SWITCH_POSITION] = NORMAL, }, }, [EB] = { [NORMAL] = { [NEXT_BLOCK] = MCKEES_ROCKS_BLOCK, [SWITCH] = ALIQUIPPA_EAST, [SWITCH_POSITION] = NORMAL, }, }, }, [J_L_PASSING_TRACK] = { [WB] = { [REVERSE] = { [NEXT_BLOCK] = ALIQUIPPA_BLOCK, [SWITCH] = ALIQUIPPA_WEST, [SWITCH_POSITION] = REVERSE, }, }, [EB] = { [REVERSE] = { [NEXT_BLOCK] = MCKEES_ROCKS_BLOCK, [SWITCH] = ALIQUIPPA_EAST, [SWITCH_POSITION] = REVERSE, }, }, },
[ALIQUIPPA_BLOCK] = { [WB] = { [NORMAL] = { [NEXT_BLOCK] = J_L_THRU_TRACK, [SWITCH] = COLLEGE_EAST, [SWITCH_POSITION] = NORMAL, }, [REVERSE] = { [NEXT_BLOCK] = J_L_PASSING_TRACK, [SWITCH] = COLLEGE_EAST, [SWITCH_POSITION] = REVERSE, }, }, [EB] = { [NORMAL] = { [NEXT_BLOCK] = J_L_THRU_TRACK, [SWITCH] = ALIQUIPPA_WEST, [SWITCH_POSITION] = NORMAL, }, [REVERSE] = { [NEXT_BLOCK] = J_L_PASSING_TRACK, [SWITCH] = ALIQUIPPA_WEST, [SWITCH_POSITION] = REVERSE, }, }, }, [COLLEGE_THRU_TRACK] = { [WB] = { [NORMAL] = { [NEXT_BLOCK] = NEW_CASTLE_BLOCK, [SWITCH] = COLLEGE_WEST, [SWITCH_POSITION] = NORMAL, }, }, [EB] = { [NORMAL] = { [NEXT_BLOCK] = ALIQUIPPA_BLOCK, [SWITCH] = COLLEGE_EAST, [SWITCH_POSITION] = NORMAL, }, }, }, [COLLEGE_STATION_TRACK] = { [WB] = { [REVERSE] = { [NEXT_BLOCK] = NEW_CASTLE_BLOCK, [SWITCH] = COLLEGE_WEST, [SWITCH_POSITION] = REVERSE, }, }, [EB] = { [REVERSE] = { [NEXT_BLOCK] = ALIQUIPPA_BLOCK, [SWITCH] = COLLEGE_EAST, [SWITCH_POSITION] = REVERSE, }, }, },
[NEW_CASTLE_BLOCK] = { [WB] = { [NORMAL] = { [NEXT_BLOCK] = STRUTHERS_THRU_TRACK, [SWITCH] = STRUTHERS_EAST, [SWITCH_POSITION] = NORMAL, }, [REVERSE] = { [NEXT_BLOCK] = STRUTHERS_STATION_TRACK, [SWITCH] = STRUTHERS_EAST, [SWITCH_POSITION] = REVERSE, }, }, [EB] = { [NORMAL] = { [NEXT_BLOCK] = STRUTHERS_THRU_TRACK, [SWITCH] = COLLEGE_WEST, [SWITCH_POSITION] = NORMAL, }, [REVERSE] = { [NEXT_BLOCK] = STRUTHERS_STATION_TRACK, [SWITCH] = COLLEGE_WEST, [SWITCH_POSITION] = REVERSE, }, }, }, [STRUTHERS_THRU_TRACK] = { [WB] = { [NORMAL] = { [NEXT_BLOCK] = YOUNGSTOWN_BLOCK, [SWITCH] = STRUTHERS_WEST, [SWITCH_POSITION] = NORMAL, }, }, [EB] = { [NORMAL] = { [NEXT_BLOCK] = NEW_CASTLE_BLOCK, [SWITCH] = STRUTHERS_EAST, [SWITCH_POSITION] = NORMAL, }, }, }, [STRUTHERS_STATION_TRACK] = { [WB] = { [REVERSE] = { [NEXT_BLOCK] = YOUNGSTOWN_BLOCK, [SWITCH] = STRUTHERS_WEST, [SWITCH_POSITION] = REVERSE, }, }, [EB] = { [REVERSE] = { [NEXT_BLOCK] = NEW_CASTLE_BLOCK, [SWITCH] = STRUTHERS_EAST, [SWITCH_POSITION] = REVERSE, }, }, },
[YOUNGSTOWN_BLOCK] = { [WB] = { [NORMAL] = { [NEXT_BLOCK] = YOUNGSTOWN_YARD1_BLOCK, [SWITCH] = YOUNGSTOWN_YARD, [SWITCH_POSITION] = NORMAL, }, [REVERSE] = { [NEXT_BLOCK] = YOUNGSTOWN_YARD2_BLOCK, [SWITCH] = YOUNGSTOWN_YARD, [SWITCH_POSITION] = REVERSE, }, }, [EB] = { [NORMAL] = { [NEXT_BLOCK] = STRUTHERS_THRU_TRACK, [SWITCH] = STRUTHERS_WEST, [SWITCH_POSITION] = NORMAL, }, [REVERSE] = { [NEXT_BLOCK] = STRUTHERS_STATION_TRACK, [SWITCH] = STRUTHERS_WEST, [SWITCH_POSITION] = REVERSE, }, }, }, [YOUNGSTOWN_YARD2_BLOCK] = { [WB] = { [NORMAL] = { [NEXT_BLOCK] = ASHTABULA_NYC, } }, -- no Westbound connection [EB] = { [REVERSE] = { [NEXT_BLOCK] = YOUNGSTOWN_BLOCK, [SWITCH] = YOUNGSTOWN_YARD, [SWITCH_POSITION] = REVERSE, }, }, }, [YOUNGSTOWN_YARD1_BLOCK] = { [WB] = { [NORMAL] = { [NEXT_BLOCK] = CLEVELAND_EL, } }, -- no Westbound connection [EB] = { [NORMAL] = { [NEXT_BLOCK] = YOUNGSTOWN_BLOCK, [SWITCH] = YOUNGSTOWN_YARD, [SWITCH_POSITION] = NORMAL, }, }, }, }
--[[-------Distance in inches from a tag detector to when nearby switches are cleared-----------]] -- Returns nil if no switch is associated with the tag detector -- This distance is used to time it takes for the caboose to hit -- the detector and then roll enough to have the caboose clear -- all switches in the direction of travel. SwitchClearingInches = { [30] = { [EB] = 24, -- this depends on the state of Ives Switch, otherwise 0 [WB] = 0, }, [51] = { [WB] = 30, [EB] = 0, }, [10] = { [EB] = 56, -- to clear two switches into J&L thru and passing tracks [WB] = 0, }, [41] = { [WB] = 34, [EB] = 0, }, [21] = { [EB] = 32, [WB] = 0, }, [20] = { [WB] = 32, [EB] = 0, }, [40] = { [EB] = 34, [WB] = 0, }, [50] = { [WB] = 24, -- this depends on the state of Ives Switch, otherwise 0 [EB] = 0, }, [60] = { -- no switches on either side of this detector [EB] = 0, [WB] = 0, }, [61] = { -- no switches on either side of this detector [EB] = 0, [WB] = 0, }, }
--[[---------------------Station stopping distances in inches after tag detection-----------]] -- fields in the Distances table PASSENGER = 1; FREIGHT = 2; DETECTOR = 3; READER = 4;
-- -- Stopping distances for stops at a station -- local StDiStation = { [ALIQUIPPA] = { [WB] = { -- Passenger Station stop WB from McKees Rocks [PASSENGER] = 130, [FREIGHT] = 120, [DETECTOR] = 1, [READER] = 0, }, [EB] = { -- Passenger Station stop EB from Youngstown [PASSENGER] = 380, [FREIGHT] = 380, [DETECTOR] = 4, [READER] = 1, }, }, [STRUTHERS] = { [WB] = { -- Passenger Station stop WB from McKees Rocks [PASSENGER] = 75, [FREIGHT] = 75, [DETECTOR] = 2, [READER] = 0, }, [EB] = { -- Passenger Station stop EB from Youngstown [PASSENGER] = 95, [FREIGHT] = 95, [DETECTOR] = 4, [READER] = 0, }, }, [COLLEGE] = { [WB] = { -- Passenger Station stop WB from McKees Rocks [PASSENGER] = 85, [FREIGHT] = 85, [DETECTOR] = 4, [READER] = 1, }, [EB] = { -- Passenger Station stop EB from Youngstown [PASSENGER] = 105, [FREIGHT] = 105, [DETECTOR] = 2, [READER] = 1, } }, [NEWCASTLE] = { [WB] = { -- Passenger Station stop WB from McKees Rocks [PASSENGER] = 90, [FREIGHT] = 90, [DETECTOR] = 2, [READER] = 1, }, [EB] = { -- Passenger Station stop EB from Youngstown [PASSENGER] = 270, [FREIGHT] = 270, [DETECTOR] = 2, [READER] = 0, } }, [WESTALIQUIPPA] = { -- Passenger Station stop from McKees Rocks [WB] = { [PASSENGER] = 250, [FREIGHT] = 250, [DETECTOR] = 1, [READER] = 0, }, [EB] = { -- Passenger Station stop EB from Youngstown [PASSENGER] = 250, [FREIGHT] = 250, [DETECTOR] = 4, [READER] = 1, }, }, [MCKEESROCKS] = { [WB] = { -- Passenger Station stop WB from McKees Rocks [PASSENGER] = 53, [FREIGHT] = 53, [DETECTOR] = 3, [READER] = 0, }, [EB] = { -- Passenger Station stop EB from Youngstown [PASSENGER] = 50, [FREIGHT] = 50, [DETECTOR] = 5, [READER] = 1, }, }, [YOUNGSTOWN] = { [WB] = { -- Passenger Station stop WB from McKees Rocks [PASSENGER] = 270, [FREIGHT] = 270, [DETECTOR] = 4, [READER] = 0, }, [EB] = { -- Passenger Station stop EB from Youngstown [PASSENGER] = 50, [FREIGHT] = 50, [DETECTOR] = 5, [READER] = 0, }, }, [J_L] = { [WB] = { -- Siding Track stop WB from McKees Rocks [PASSENGER] = 133, [FREIGHT] = 133, [DETECTOR] = 5, [READER] = 1, }, [EB] = { -- Siding Track stop EB from Youngstown [PASSENGER] = 137, [FREIGHT] = 137, [DETECTOR] = 1, [READER] = 0, }, },
[J_LTHRU] = { [WB] = { -- Thru Track stop WB from McKees Rocks [PASSENGER] = 133, [FREIGHT] = 133, [DETECTOR] = 5, [READER] = 1, }, [EB] = { -- Thru Track stop EB from Youngstown [PASSENGER] = 165, [FREIGHT] = 165, [DETECTOR] = 1, [READER] = 0, }, }, [MILL] = { [EB] = { [PASSENGER] = 127, [FREIGHT] = 127, [DETECTOR] = 1, [READER] = 0, }, [WB] = { [PASSENGER] = 127, [FREIGHT] = 127, [DETECTOR] = 5, [READER] = 1, }, }, [YOUNGSTOWNYARD1] = { [WB] = { [PASSENGER] = 117, [FREIGHT] = 117, [DETECTOR] = 5, [READER] = 0, }, [EB] = {}, -- no EB traffic }, [YOUNGSTOWNYARD2] = { [WB] = { [PASSENGER] = 118, [FREIGHT] = 118, [DETECTOR] = 5, [READER] = 0, }, [EB] = {}, -- no EB traffic }, [MCKEESROCKSYARD1] = { [EB] = { [PASSENGER] = 101, [FREIGHT] = 101, [DETECTOR] = 3, [READER] = 0, }, [WB] = {}, -- no WB traffic }, [MCKEESROCKSYARD2] = { [EB] = { [PASSENGER] = 102, [FREIGHT] = 102, [DETECTOR] = 3, [READER] = 0, }, [WB] = {}, -- to WB traffic }, }
-- -- Stopping distances for stops at a block location -- Note: Short trains are 50 inches long (Diesel engine, 2 cars and a caboose) -- local StDiBlock = { [ALIQUIPPA_BLOCK] = { [WB] = { [PASSENGER] = 395, [FREIGHT] = 395, [DETECTOR] = 1, [READER] = 0, }, [EB] = { [PASSENGER] = 395, [FREIGHT] = 395, [DETECTOR] = 6, [READER] = 0, }, }, [STRUTHERS_THRU_TRACK] = { [WB] = { [PASSENGER] = 75, [FREIGHT] = 75, [DETECTOR] = 2, [READER] = 0, }, [EB] = { [PASSENGER] = 75, [FREIGHT] = 75, [DETECTOR] = 4, [READER] = 0, }, }, [STRUTHERS_STATION_TRACK] = { [WB] = { [PASSENGER] = 75, [FREIGHT] = 75, [DETECTOR] = 2, [READER] = 0, }, [EB] = { [PASSENGER] = 75, [FREIGHT] = 75, [DETECTOR] = 4, [READER] = 0, }, }, [COLLEGE_THRU_TRACK] = { [WB] = { [PASSENGER] = 85, [FREIGHT] = 85, [DETECTOR] = 4, [READER] = 1, }, [EB] = { [PASSENGER] = 85, [FREIGHT] = 85, [DETECTOR] = 2, [READER] = 1, } }, [COLLEGE_STATION_TRACK] = { [WB] = { [PASSENGER] = 85, [FREIGHT] = 85, [DETECTOR] = 4, [READER] = 1, }, [EB] = { [PASSENGER] = 85, [FREIGHT] = 85, [DETECTOR] = 2, [READER] = 1, } },
[MCKEES_ROCKS_BLOCK] = { [WB] = { [PASSENGER] = 50, [FREIGHT] = 50, [DETECTOR] = 3, [READER] = 0, }, [EB] = { [PASSENGER] = 50, [FREIGHT] = 50, [DETECTOR] = 5, [READER] = 1, }, }, [NEW_CASTLE_BLOCK] = { [WB] = { [PASSENGER] = 280, [FREIGHT] = 280, [DETECTOR] = 3, [READER] = 0, }, [EB] = { [PASSENGER] = 280, [FREIGHT] = 280, [DETECTOR] = 5, [READER] = 1, }, }, [YOUNGSTOWN_BLOCK] = { [WB] = { [PASSENGER] = 250, [FREIGHT] = 250, [DETECTOR] = 4, [READER] = 0, }, [EB] = { [PASSENGER] = 250, [FREIGHT] = 250, [DETECTOR] = 5, [READER] = 0, }, },
[MONACA_BLOCK] = { [WB] = { [PASSENGER] = 150, [FREIGHT] = 150, [DETECTOR] = 6, [READER] = 0, }, [EB] = { [PASSENGER] = 150, [FREIGHT] = 150, [DETECTOR] = 6, [READER] = 1, }, }, [BEAVER_FALLS_BLOCK] = { [WB] = { [PASSENGER] = 325, [FREIGHT] = 325, [DETECTOR] = 6, [READER] = 1, }, [EB] = { [PASSENGER] = 325, [FREIGHT] = 325, [DETECTOR] = 1, [READER] = 1, }, }, [J_L_PASSING_TRACK] = { [WB] = { [PASSENGER] = 125, [FREIGHT] = 125, [DETECTOR] = 5, [READER] = 1, }, [EB] = { [PASSENGER] = 125, [FREIGHT] = 125, [DETECTOR] = 1, [READER] = 0, }, },
[J_L_THRU_TRACK] = { [WB] = { [PASSENGER] = 120, [FREIGHT] = 120, [DETECTOR] = 5, [READER] = 1, }, [EB] = { [PASSENGER] = 120, [FREIGHT] = 120, [DETECTOR] = 1, [READER] = 0, }, }, [YOUNGSTOWN_YARD1_BLOCK] = { [WB] = { [PASSENGER] = 106, [FREIGHT] = 106, [DETECTOR] = 5, [READER] = 0, }, [EB] = {}, -- no EB traffic }, [YOUNGSTOWN_YARD2_BLOCK] = { [WB] = { [PASSENGER] = 105, [FREIGHT] = 105, [DETECTOR] = 5, [READER] = 0, }, [EB] = {}, -- no EB traffic }, [MCKEES_ROCKS_YARD1_BLOCK] = { [EB] = { [PASSENGER] = 100, [FREIGHT] = 100, [DETECTOR] = 3, [READER] = 0, }, [WB] = {}, -- no WB traffic }, [MCKEES_ROCKS_YARD2_BLOCK] = { [EB] = { [PASSENGER] = 100, [FREIGHT] = 100, [DETECTOR] = 3, [READER] = 0, }, [WB] = {}, -- no WB traffic }, [LIONEL_IVES_BLOCK] = { [WB] = { [PASSENGER] = 20, [FREIGHT] = 20, [DETECTOR] = 5, [READER] = 0, }, [EB] = { [PASSENGER] = 20, [FREIGHT] = 20, [DETECTOR] = 3, [READER] = 0, }, }, }
--[[-----------------------------------------------------------------------------]] -- high level API --[[-----------------------------------------------------------------------------]]
function Layout.STOPBlock(block, Direction, ConsistType) return StDiBlock[block][Direction][ConsistType] end --[[-----------------------------------------------------------------------------]]
function Layout.STOPStation(Locale, Direction, ConsistType) return StDiStation[Locale][Direction][ConsistType] end --[[-----------------------------------------------------------------------------]]
function Layout.StoppingisEmpty(Engine) return (StoppingDistance[Engine] == nil) end --[[-----------------------------------------------------------------------------]]
function Layout.Stopping(Engine, Speed) if (StoppingDistance[Engine] ~= nil) then if (StoppingDistance[Engine][Speed] ~= nil) then return StoppingDistance[Engine][Speed]; else return 0 end else return 0 end end --[[-----------------------------------------------------------------------------]]
function Layout.StartingisEmpty(Engine) return (StartingDistance[Engine] == nil) end --[[-----------------------------------------------------------------------------]]
function Layout.Starting(Engine, Speed) if (StartingDistance[Engine] ~= nil) then if (StartingDistance[Engine][Speed] ~= nil) then return StartingDistance[Engine][Speed] else return 0 end else return 0 end end --[[------------------------------Create Layout Graph---------------------------------------]]
function Layout:CreateGraph(G) -- This function creates the track layout graph. -- This graph is for Instrumented Layout #4.1
-- Youngstown Yard -- Track 1 G:addDoubleVertex(0, 1) -- double vertex G:addUndirectedEdge(1, 2, 5, YOUNGSTOWN_YARD1_BLOCK) G:addDoubleVertex(2, 3) -- double vertex -- Track 2 G:addDoubleVertex(36, 37) -- double vertex G:addUndirectedEdge(37, 38, 5, YOUNGSTOWN_YARD2_BLOCK) G:addDoubleVertex(38, 39) -- double vertex -- switch track G:addSwitchTrack(4, 3, 39, YOUNGSTOWN_YARD); -- common vertex, normal vertex, reverse vertex, Switch Name G:addDoubleVertex(4, 5) -- double vertex --[[--------------Line between Youngstown Yard and Struthers------------------]] G:addUndirectedEdge(5, 6, 5, YOUNGSTOWN_BLOCK) --[[--------------Struthers------------------]] G:addDoubleVertex(6, 7) -- double vertex G:addSwitchTrack(7, 8, 40, STRUTHERS_WEST); -- common vertex, normal vertex, reverse vertex, Switch Name -- Struthers Thru Track with different costs depending on direction G:addDoubleVertex(8, 9) -- double vertex G:addDirectedEdge(9, 10, 15, STRUTHERS_THRU_TRACK) -- Struthers Through Track Eastward G:addDirectedEdge(10, 9, 5, STRUTHERS_THRU_TRACK) -- Struthers Through Track Westward
-- Struthers Station Track with different costs depending on direction G:addDoubleVertex(40, 41) -- double vertex G:addDirectedEdge(41, 42, 7, STRUTHERS_STATION_TRACK) -- Eastward G:addDirectedEdge(42, 41, 20, STRUTHERS_STATION_TRACK) -- Westward G:addDoubleVertex(42, 43) -- double vertex G:addDoubleVertex(10, 11) -- double vertex G:addSwitchTrack(12, 11, 43, STRUTHERS_EAST); -- common vertex, normal vertex, reverse vertex, Switch Name G:addDoubleVertex(12, 13) -- double vertex
--[[--------------Line between Struthers and College------------------]] G:addUndirectedEdge(13, 14, 5, NEW_CASTLE_BLOCK) --[[--------------College------------------]] G:addDoubleVertex(14, 15) -- double vertex G:addSwitchTrack(15, 16, 44, COLLEGE_WEST); -- common vertex, normal vertex, reverse vertex, Switch Name -- College Thru Track with different costs depending on direction G:addDoubleVertex(16, 17) -- double vertex G:addDirectedEdge(17, 18, 15, COLLEGE_THRU_TRACK) -- College Through Track Eastward G:addDirectedEdge(18, 17, 5, COLLEGE_THRU_TRACK) -- College Through Track Westward -- College Station Track with different costs depending on direction G:addDoubleVertex(44, 45) -- double vertex G:addDirectedEdge(45, 46, 7, COLLEGE_STATION_TRACK) -- Eastward G:addDirectedEdge(46, 45, 20, COLLEGE_STATION_TRACK) -- Westward G:addDoubleVertex(46, 47) -- double vertex G:addDoubleVertex(18, 19) -- double vertex G:addSwitchTrack(20, 19, 47, COLLEGE_EAST); -- common vertex, normal vertex, reverse vertex, Switch Name G:addDoubleVertex(20, 21) -- double vertex --[[--------------Line between College and Aliquippa------------------]] G:addUndirectedEdge(21, 22, 5, ALIQUIPPA_BLOCK) --[[--------------Aliquppa------------------]] G:addDoubleVertex(22, 23) -- double vertex
G:addSwitchTrack(23, 24, 48, ALIQUIPPA_WEST); -- common vertex, normal vertex, reverse vertex, Switch Name -- J&L Aliquippa Thru Track with different costs depending on direction G:addDoubleVertex(24, 25) -- double vertex G:addDirectedEdge(25, 26, 15, J_L_THRU_TRACK) -- J&L Aliquippa Through Track Eastward G:addDirectedEdge(26, 25, 5, J_L_THRU_TRACK) -- J&L Aliquippa Through Track Westward -- J&L Passing Track with different costs depending on direction G:addDoubleVertex(48, 49) -- double vertex G:addDirectedEdge(49, 50, 7, J_L_PASSING_TRACK) -- Eastward G:addDirectedEdge(50, 49, 20, J_L_PASSING_TRACK) -- Westward G:addDoubleVertex(50, 51) -- double vertex G:addDoubleVertex(26, 27) -- double vertex G:addSwitchTrack(28, 27, 51, ALIQUIPPA_EAST); -- common vertex, normal vertex, reverse vertex, Switch Name G:addDoubleVertex(28, 29) -- double vertex --[[--------------Line between Aliquippa and McKees Rocks Yard------------------]] G:addUndirectedEdge(29, 30, 5, MCKEES_ROCKS_BLOCK) --[[--------------McKees Rocks Yard------------------]] G:addDoubleVertex(30, 31) -- double vertex G:addSwitchTrack(31, 32, 52, MCKEES_ROCKS_YARD); -- common vertex, normal vertex, reverse vertex, Switch Name -- Track 2 G:addDoubleVertex(52, 53) -- double vertex G:addUndirectedEdge(53, 54, 5, MCKEES_ROCKS_YARD2_BLOCK) G:addDoubleVertex(54, 55) -- double vertex -- Track 1 G:addDoubleVertex(32, 33) -- double vertex G:addUndirectedEdge(33, 34, 5, MCKEES_ROCKS_YARD1_BLOCK) G:addDoubleVertex(34, 35) -- double vertex -- -- -- templates: -- G:adddirectedEdge(000, 000, 0) -- (vertex1, vertex2, weight) -- G:addUndirectedEdge(000, 000, 0) -- (vertex1, vertex2, weight) -- G:addDoubleVertex(000, 000) -- double vertex -- G:addSwitchTrack(000, 000, 000, 000, 000, 000); -- (common vertex, normal vertex, reverse vertex, TIU, AIU, Channel) --
local requiredVertices = 56; -- 0 to 55 return requiredVertices end
return Layout
|