Facsimile Simulation Library

The Facsimile project's goal is to develop and maintain a high-quality, 3D, discrete-event simulation library that can be used for industrial simulation projects in an engineering, logistics and/or manufacturing environment.

Facsimile simulations run on the Java Virtual Machine under Microsoft Windows, Linux, Mac OS X, BSD and Unix.

Facsimile is open-source/free software and is distributed under version 3 of the GNU General Public License (GPLv3).

Current status of official master Facsimile branch:

Maven Central Build Status Coverage Status Codacy Badge Join the chat at https://gitter.im/Facsimile Scala Steward badge

Using Facsimile

Status

Note: Facsimile is not currently usable as a simulation library; it is currently anticipated that this will be addressed by the 0.3 release.

In the meantime, please feel free to use the library (and its sub-components), and provide feedback in the form of bug reports and enhancement requests.

The library API should be regarded as experimental until the 1.0 release is achieved; please be aware that significant API changes may be made before this release, which may break code that relies up on it. Do not use Facsimile for your day-today projects just yet.

Pre-requisites

Note: Installers for Facsimile that allow it to be utilized for simulation modeling are currently unavailable; check back for developments.

Facsimile utilizes the most recent Java LTS (long-term support) release that is supported by its dependencies. The current Facsimile version depends upon Java 11 LTS, and it is recommended that you utilize only this version of Java for Facsimile.

Any Java 11 LTS release, including those by Oracle, OpenJDK, Azul Systems, AdoptOpenJDK, etc. should work just fine. It is strongly recommended that your organization reviews the licensing of your chosen Java supplier to ensure that you are in compliance with its terms.

Once Java has been installed, it is trivial to build models using SBT; this will download all necessary resources, including the Scala compiler, Facsimile libraries themselves, and their dependencies.

A template SBT project (for use with the sbt new command) will be released shortly. In the meantime, the following example should suffice:

// Human-readable name of your project.
name := "Your project's name"

// Repository artifact name of your project.
normalizedName := "yourproject"

// Repository organization name of your project.
organization := "your.organization"

// Human-readable name of your organization.
organizationName := "Name of your organization"

// Version number for this release of your project.
version := "1.0.0-SNAPSHOT"

// Version of the Scala compiler and libraries to be used to build your project.
//
// This should match the supported version of _Scala_ for the specified release.
scalaVersion := "2.13.2"

// Version of Facsimile required to build your project.
libraryDependencies += "org.facsim" %% "facsimile-simulation" % "0.2.1"

Use of JetBrains' IntelliJ IDEA is highly recommended for developing both Facsimile itself, and code using it; the Scala and HOCON IntelliJ plugins are essential.