# Objective

This repository contains the materials that are used in the MoDELS tutorial of physical systems modelling for software engineers, in 2019.

# Running the Materials

1. Install [Docker](https://www.docker.com/).

2. Using docker's console, navigate to the root of this repository.

3. Build the corresponding docker image: 
    ```
    docker build -f DockerfileTutorials123567 -t jupyter .
    ```
or 

    ```
    docker build -f DockerfileTutorials4 -t jupyter .
    ```

This will download all dependencies you need to run the examples. You might need root access.

4. Note the host's ip address by running: 
   ```
   docker-machine ip
   ```
   Let us denote it by `MACHINE_IP`

5. Run the docker container:
    ```
    docker run --name jupyterrun -p 8888:8888 -t jupyter
    ```
This will start a container with name `jupyterrun` of the image tagged with `jupyter` and will forward any traffic going into port 8888 (in the host machine) to the same port in the virtual machine. If a token is given, copy it so that you can later access the jupyter notebook from your browser. Let `TOKEN` denote the token given.
    
6. Open your browser and navigate to `http://MACHINE_IP:8888/`. If asked for a token, insert `TOKEN`.

7. Explore the examples.

8. Any changes made in the notebooks affect only the files inside the container. To retrieve them, either use the notebook interface to download them to your computer (`File -> Download As -> Notebook`), or detach from the `jupyterrun` container (typing `Ctrl+C` on docker's console), and use the following command on docker's console: 
    ```bash
    docker cp jupyterrun:/opt/notebooks/tutorial mytutorial
    ```
   Which will copy all files under the `tutorial ` folder to the `mytutorial` folder in the repository.

9. To terminate and clean up, run the following commands
    ```
    docker stop jupyterrun && docker rm jupyterrun
    ```
