CarEnter

Takes the car agent and tries to put it as a car into the specified
location inside a road network. The car can appear on the specified
road or in the specified parking lot (defined by the Appears
parameter).
If cars are set to appear on a road, the direction of the road
should be additionally specified. Cars will appear at the beginning of
the specified road and start moving in the specified direction. By
default, Random
lane parameter is selected, so the cars will appear at random
lanes (if there is more than 1 lane on the specified road). You can
explicitly specify index of lane where cars will appear by deselecting
the Random lane
option and using Lane
index parameter.
If cars are set to appear on a road, they enter the road network
only when there is enough distance on the lane ahead of the car. The
more initial velocity of the car, the longer distance is needed for a
car to safely enter the network. Cars that cannot enter the road
network immediately are accumulated in queue inside CarEnter block and taken from the
queue when there is enough space in the specified lane to place a car.
If cars are set to appear in a parking lot, they appear in free
spaces of the specified parking lot and wait until they leave the road
network or start moving by entering CarMoveTo block. If all parking
spaces are occupied, an error will be generated.
Together with CarExit, this block is used to
model part of the car movement on a higher abstraction level, namely
without detailed physical level road traffic modeling.
Parameters
- Appears
- Here you select where the cars that entered this block will
appear: on road, or in parking lot.
on road - the cars will be
placed at the beginning of the road specified below in the Road parameter.
in parking lot - the cars
will be placed in a randomly chosen free parking space of the parking
lot specified below in the Parking lot
parameter.
Get value: appears
Set new value at runtime: set_appears(new value)
Valid values: CarEnter.ON_ROAD;
CarEnter.IN_PARKING_LOT
- Road [dynamic]
- [Visible and applies only if the on Road
option is set] Road where the car
will be placed after start of movement. The car enters the Road in the
specified lane ( backward lane or forward lane
). The Lane is specified by the Enters parameter
below. Lane is picked randomly (if Random lane
option is enabled), or specified explicitly at Lane index
parameter below.
Note that car does not immediately appear at the specified location.
The car appears and starts movement only when:
- there is enough space at the specified position of road to prevent
collision, and
- the car is sent to some destination by CarMoveTo block.
Type of value: Road
Local variable: car - the car that enters road network
- Enters
- [Visible and applies only if the option Appears: on road
is selected] Specifies the lane (forward lane or backward
lane) of road in which the car will be placed. If the road does not
have the specified lane (i.e. is one-way), the error is generated.
Get value: laneDirection
Set new value at runtime: set_laneDirection(new value)
Valid values: CarEnter.FORWARD_LANE
CarEnter.BACKWARD_LANE
- Random lane
- [Visible and applies only if the option Appears: on road
is selected] Specifies whether the car will be placed in randomly
selected lane of the road. If this option is disabled, the lane will be
specified by Lane index parameter below.
Syntax: boolean
isRandomLane
Set new value at runtime: set_israndomlane(new value)
- Lane index [dynamic]
- [Visible and applies only if the Random lane option
is not selected] Specifies the index of lane where the car should be
placed. Lane indices start with 0 (the outmost lane) and increase to
inmost lane. If the specified Road does not
have the lane with the specified index, an error is generated.
Type of value: int
Local variable: car - the car that enters road network
- Parking lot [dynamic]
- [Visible and applies only if the option Appears: in parking lot
is selected] Parking lot
where car will be placed immediately after entering this block. If
parking lot does not have free parking spaces, the error will be
generated. The car will not move from parking space until it is sent to
some destination by CarMoveTo block.
Type of value: ParkingLot
Local variable: car - the car that enters road network
- Car
- Length [dynamic]
- Length of the car. Length must be > 0.
Type of value:double
Local variable: car - the car that enters road network.
- Initial speed [dynamic]
- Initial speed of the car. Initial speed must be >= 0. If
initial speed is equal to 0, the car will start accelerating to its
preferred speed once it is sent to some destination by CarMoveTo
block.
Type of value: double
Local variable: car - the car that enters road network
- Preferred speed [dynamic]
- Preferred speed of the car. Preferred speed must be >= 0. If
preferred speed is equal to 0 and initial speed is equal to 0, the car
will not start movement even if it is sent to some destination by the CarMoveTo
block. Car will only start accelerating when positive initial speed is
assigned to it by call of setPreferredSpeed(speed)
function.
The car always tries to move with speed equal to its preferred speed.
The following factors prevent car from moving with its preferred speed:
- Inability to accelerate or decelerate immediately to the preferred
speed
- Car ahead that is moving slower that the preferred speed of the car
- Stop line with red light ahead
- Closeness to parking space or bus stop, where the car should
decelerate to park or stop
- Speed limit
Type of value: double
Local variable: car - the car that enters road network
- Max acceleration [dynamic]
- Maximum acceleration of the car. Maximum acceleration should be
> 0.
Type of value: double
Local variable: car - the car that enters road network
- Max deceleration [dynamic]
- Maximum deceleration of the car. Maximum deceleration should be
> 0. The car decelerates with its maximum deceleration only in
emergency cases. At other times, it uses some fraction of max
deceleration.
Type of value: double
Local variable: car - the car that enters road network
- Actions
- On exit [code]
- Code that is executed when car exits this block.
Local variable: car - car that
exits this block
Functions
long count()
- Returns the number of cars that have entered the road network via
this CarEnter block.
Ports
- in
- The input port.
- out
- The output port.