SILUMOD, an open source (LGPL) internal domain-specific language that we developed to facilitate the study and use of user mobility models for multihop networks. Based on Scala language, SILUMOD uses the same syntax and the same libraries while adding to this language a series of keywords and operators reflecting the common characteristics of the movements of mobile nodes. SILUMOD combines ease of use and efficiency by ensuring rapid and easy implementation of most mobility models.

If you want to benefit the community of mobility models you have programmed with SILUMOD, thank you to send us the source code with an abstract describing the model, the VIRMANEL GUI screenshot, first name,  your name, affiliation and position . All this information will then be available on the VIRMANEL website.


Required binaries for Windows system

You just need to install java sdk and scala version for Windows.


Required binaries for Linux systems

To install packages, you must use one of the following commands depending on your operating system:

  • under Debian: apt-get install package_name
  • under Fedora: yum install package_name

Where package_name has to be changed to packages from the corresponding list below.

Package list under Debian and Fedora :

  • java
  • scala


For Windows and Linux, you must have OtpErlang.jar. It is generally available in the installation directory of Erlang on Windows and repositories for Linux.


LIMITS: the limits of experimental area
WALL: represents all the walls of the experiment
MOBILE: symbolizes the mobile of the experiment

Commands for VIRMANEL:
virmanelNode: name of the Erlang virtual machine running VIRMANEL
trace: you can set the display options of the trajectory of moving on the VIRMANEL GUI.
connection: You can set the display options of possible connections between mobile nodes.

Your options are:
show ["yes" | "no"]: display traces of moving on the GUI
color ["color"]: sets the color

Defining the mobile node:
mgmtIp: IP address of the management interface in the terminology of OpenVZ
nodeIp: IP address of mobile node
name: the hostname of the mobile node

Characteristics of movement of the mobile node:
distance: distance to travel before a new choice of parameters
duration: duration of movement of the mobile node before a new choice of parameters

angle: angle of the trajectory of the mobile node
speed: speed of mobile node
positionX: instantaneous X coordinate
positionY: nstantaneous Y coordinate
toPositionX: X coordinate to reach
toPositionY: Y coordinate to reach
coverageRadius: radius of signal coverage of the mobile node
pause: define a pause

Your options are:
value [param]: sets the value for a given characteristic
                       for angle, speed, positionX, positionY, it is possible to know the current value using the current keyword
example: angle current

reflexive: determines the angle of reflection of the trajectory

Actions of the mobile node:
calculateNewPosition: determines the next position of the mobile node
Move: ask to the mobile node to move to the new position

Definition of environment:
playground: defines the limits of the experimental area
block: defines a quadrilateral with right angles

Options: name, line color and fill the quadrilateral

playground define (0,0,600,400, "Border", "blue", "no")
block define (30,30,200,200, "BK1", "yellow", "yes"

 ->| : used to test if a mobile touch a wall or a limit
<->   : generates a random number between a lower and an upper bound.
example: (5 <-> 17)

Joomla templates by a4joomla