Package | Description |
---|---|
gui.entities.sectionEntities.signal | |
gui.entities.sectionEntities.trackEntities | |
gui.entities.sectionEntityList | |
simulator.scheduler |
Modifier and Type | Field and Description |
---|---|
Link |
SignalDirection.previousLink |
Constructor and Description |
---|
SignalDirection(Train train,
Block block,
Link previousLink,
int signal,
double arrivalTime) |
Modifier and Type | Field and Description |
---|---|
java.util.ArrayList<Link> |
Block.downLinks |
java.util.ArrayList<Link> |
Block.upLinks |
Modifier and Type | Method and Description |
---|---|
Link |
Block.getNextLink(Train train) |
Modifier and Type | Method and Description |
---|---|
double |
Block.addTinyBlocksToEmptyBlock(Link previousLink,
Block iterBlock,
Train train,
Link nextIterLink,
double milepost,
boolean enteredOnYellow) |
Block |
Block.getEmptyBlockWithTinyBlocksAdded(Train train,
int signal,
Link previousLink,
Link nextLink,
double profileStartingMilePost,
boolean enteredOnYellow,
boolean enteringNextBlockOnYellow)
Add the tiny blocks of the blocks from the startBlock till the signal
value number of the blocks into the emptyBlock.
|
double |
Block.getMilePostsByNextLink(Link nextLink,
Train train,
double profileStartingMilePost) |
double |
Block.getMilePostsByPreviousLink(Link previousLink,
Train train,
double profileStartingMilePost) |
RunTimeReturn |
Block.getNonOverlappingRunTimeReturn(Train train,
VelocityProfileArray velocityProfileArray,
double startMilePost,
double endMilePost,
double linkMilePost,
Link previousLink) |
RunTimeReturn |
Block.getNonOverlappingRunTimeSignal(Train train,
int signal,
double startVelocity,
double endVelocity,
Link previousLink,
Link nextLink,
double profileStartingMilePost,
boolean enteredOnYellow)
1) It does some signal handling.
|
VelocityProfileArray |
Block.getVelocityProfileArray(Train train,
int signal,
double startVelocity,
double endVelocity,
Link nextLink,
Link previousLink,
double profileStartingMilePost,
boolean enteredOnYellow,
boolean enteringNextBlockOnYellow) |
StatusTraverseBlock |
Loop.traverseBlock(Train currTrain,
double arrivalTime,
double deptTime,
double startVelocity,
Link previousLink,
Link nextFastestLink,
double profileStartingMilePost,
SimulationInstance simulationInstance,
int nextReferenceLoopNumber)
Loop: StatusTraverseBlock traverseBlock((Train currTrain, double
arrivalTime, double deptTime, double startVelocity) 1) creates an
instance of the blockScheduler for this loop as the currentBlock and the
currTrain 2) goes to blockScheduler.traverseBlock(arrivalTime, deptTime,
startVelocity) (non-Javadoc)
|
StatusTraverseBlock |
Block.traverseBlock(Train train,
double arrivalTime,
double departureTime,
double startVelocity,
Link previousLink,
Link nextFastestLink,
double profileStartingMilePost,
SimulationInstance simulationInstance,
int nextReferenceLoopNumber) |
Modifier and Type | Method and Description |
---|---|
Link |
LinkList.getNextMainLink() |
Modifier and Type | Method and Description |
---|---|
void |
LinkList.addLinkPriorityWise(Link link)
Insert the link into a linkList sorted according to its priority
|
Modifier and Type | Method and Description |
---|---|
double |
BlockScheduler.calculateFinalVelocity(Link link,
int signal)
Get the final velocity for the scheduling of the train.
|
double |
BlockScheduler.calculateTotalTimeTillEnd(RunTimeReturn runTimeReturn,
Block nextBlock,
double arrivalTime,
Link nextLink,
double profileStartingMilePost,
OverlapParameters overlapParameters,
boolean enteredOnYellow)
Calculate the time since the head of the train leaves the currentBlock
till the tail of the train leaves currentBlock.
|
StatusTraverseBlock |
BlockScheduler.computeEarliestFreeTimeSTP(Link previousLink,
Link nextLink,
int nFreeBlocksToBeTraversed,
double arrivalTime,
double departureTime,
double totalTimeTillEnd,
double startVelocity,
boolean linkPriorityIsNotOne,
double profileStartingMilePost,
int nextReferenceLoopNumber) |
simulator.scheduler.BlockScheduler.BlockSchedulingParameters |
BlockScheduler.determineBlockSchedulingParameters(Link previousLink,
Link nextLink,
double arrivalTime,
double startVelocity,
boolean linkPriorityIsNotOne,
double departureTime,
double profileStartingMilePost,
int maxSignalAspectsToBeConsidered) |
RunTimeReturn |
BlockScheduler.getRunTimeReturnConsideringWarner(Link link,
int signal,
double arrivalTime,
boolean linkPriorityIsNotOne,
RunTimeReturn runTimeReturn,
double warnerDistance,
int maxSignalAspectsToBeConsidered)
If there is a need to consider the warner distance, get the new
RunTimeReturn for the modified block considering the warner
distance |
StatusTraverseBlock |
BlockScheduler.handleDepTimeGreaterThanArrTime(double departureTime,
double arrivalTime,
double startVelocity,
Link previousLink,
Link nextFastestLink2,
double profileStartingMilePost,
int nextReferenceLoopNumber)
Handle the cases in which departure time is greater than the arrival time
|
StatusTraverseBlock |
BlockScheduler.handleSignalFailure(Link link,
double departureTime) |
void |
BlockScheduler.reserveBlocks(Link nextLink,
Link previousLink,
int nFreeBlocksToBeReserved,
double arrivalTime,
double departureTime,
double totalTimeTillEnd,
VelocityProfileArray blockVelocityProfileArray,
VelocityProfileArray previousLinkVelocityProfileArray,
int signal) |
StatusTraverseBlock |
BlockScheduler.reserveBlocksAndGetCurrentSTP(Link nextLink,
Link previousLink,
double tempDepartureTime,
RunTimeReturn runtimereturn,
int nFreeBlocksToBeTraversed,
double arrivalTime,
double totalTimeTillEnd,
int signal,
double profileStartingMilePost,
int nextReferenceLoopNumber)
Get the
StatusTraverseBlock for the current block if the
scheduling for the next block is successful. |
OverlapParameters |
BlockScheduler.setOverlapParameters(Link nextLink,
double profileStartingMilePost)
Set the overlapStartDistance, overlapEndDistance and overlap boolean
depending upon the block and the train.
|
StatusTraverseBlock |
BlockScheduler.traverseBlock(double arrivalTime,
double departureTime,
double startVelocity,
Link previousLink,
Link nextFastestLink2,
double profileStartingMilePost,
int nextReferenceLoopNumber)
BlockScheduler: StatusTraverseBlock traverseBlock(arrivalTime, deptTime,
startVelocity) 1) if there is no next block it traverses the last block:
traverseLastBlock(arrivalTime, startVelocity) 2) if got a redSignal it
handles that with : handleRedSignal(arrivalTime); Then it calls the
getSortedLinks.
|
StatusTraverseBlock |
BlockScheduler.traverseLastBlock(double arrivalTime,
double startVelocity,
Link previousLink,
double profileStartingMilePost) |
StatusTraverseBlock |
BlockScheduler.traversePath(Link previousLink,
Link nextLink,
double arrivalTime,
double departureTime,
double startVelocity,
boolean linkPriorityIsNotOne,
int maxSignalAspectsToBeConsidered,
double profileStartingMilePost,
int nextReferenceLoopNumber)
1) It first finds what is the signal of the block for the train and the
arrival time by calling currentBlock.getSignal(currentTrain, noOfColor,
arrivalTime,currentTrain.direction); 2) It first tries to find the
running time required to traverse the path, by going to
currentBlock.getRunTimeSignal(currentTrain, j, arrivalTime,
startVelocity, !linkPriorityIsOne ? link.nextBlock.maximumPossibleSpeed :
0.0D); and setting that value in runTimeReturn 3) If the simulation is in
the signalFailureMode or if the linkPriority is one it resets the
runTimeReturn to a block whose starting milePost is the same but the
endMilePost is the actual endMilePost minus the warnerDistance.
|