|
|
This page explains how to build the examples on your personal laptop or on the [CECI](https://www.ceci-hpc.be/) supercomputers (e.g. [nic5](https://www.ceci-hpc.be/clusters.html#nic5) at ULiège).
|
|
|
|
|
|
As prerequisite, you must have verified that [git](Git), [a C++ compiler](C++ Compiler) and [CMake](CMake) are correctly installed on your system. Using [VS Code](Visual-Studio-Code) is recommended by not mandatory.
|
|
|
|
|
|
## Windows
|
|
|
* Clone the repository somewhere on your PC:
|
|
|
```
|
|
|
git clone git@gitlab.uliege.be:rboman/math0471.git
|
|
|
```
|
|
|
* Open VS Code and load ("File / Open Folder...") the `math0471` folder.
|
|
|
* In the terminal of VS Code, go to the `lib` folder and install "gmsh-sdk" and "Eigen" using the scripts `get_gmsh.cmd` and `get_eigen.cmd` (this should be done only once per working copy of the repository):
|
|
|
```
|
|
|
cd math0471
|
|
|
cd lib
|
|
|
get_gmsh.cmd
|
|
|
get_eigen.cmd
|
|
|
cd ..
|
|
|
```
|
|
|
|
|
|
* Add MinGW, gmsh-sdk and Eigen to your environment by running this script (it should be done each time you re-open VS Code or a new terminal):
|
|
|
```
|
|
|
envs\windows.cmd
|
|
|
```
|
|
|
* Then, in the same terminal, go to the example folder:
|
|
|
```
|
|
|
cd examples\gmsh_api
|
|
|
```
|
|
|
* Create a `build` folder in `examples\gmsh_api`:
|
|
|
```
|
|
|
mkdir build
|
|
|
```
|
|
|
* Go into this folder:
|
|
|
```
|
|
|
cd build
|
|
|
```
|
|
|
* Run CMake (if an error occurs at this stage, it usually means that you forgot to run `envs\windows.cmd` or you installed the programs at locations on your hard drive other than those recommended in this wiki):
|
|
|
```
|
|
|
cmake ..
|
|
|
```
|
|
|
* Start the compilation (with 4 parallel processes):
|
|
|
```
|
|
|
make -j 4
|
|
|
```
|
|
|
* Run a program:
|
|
|
```
|
|
|
code1_loadgeo.exe ..\rectangle.geo
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## CECI clusters / Linux / macOS
|
|
|
|
|
|
* Clone the repository:
|
|
|
```
|
|
|
git clone git@gitlab.uliege.be:rboman/math0471.git
|
|
|
```
|
|
|
* Go into the project folder:
|
|
|
```
|
|
|
cd math0471
|
|
|
```
|
|
|
* Install gmsh-sdk and Eigen using the script `get_gmsh.sh` and `get_eigen.sh` in the `lib` folder:
|
|
|
```
|
|
|
cd lib
|
|
|
./get_gmsh.sh
|
|
|
./get_eigen.sh
|
|
|
cd ..
|
|
|
```
|
|
|
* Set the environment variables for cmake:
|
|
|
```
|
|
|
source ./envs/linux-macos.sh
|
|
|
```
|
|
|
* Go to the `examples/gmsh_api` folder:
|
|
|
```
|
|
|
cd examples/gmsh_api
|
|
|
```
|
|
|
* Create a `build` folder and go into it:
|
|
|
```
|
|
|
mkdir build
|
|
|
cd build
|
|
|
```
|
|
|
* Run CMake (if an error occurs at this stage, it usually means that you forgot to "source" `envs/linux-macos.sh`):
|
|
|
```
|
|
|
cmake ..
|
|
|
```
|
|
|
* Build the project (with 4 parallel processes):
|
|
|
```
|
|
|
make -j 4
|
|
|
```
|
|
|
* Run a program:
|
|
|
```
|
|
|
./code1_loadgeo ../rectangle.geo
|
|
|
```
|
|
|
# "Debug" mode vs "Release" mode
|
|
|
|
|
|
The code is built in "*debug mode*" by default. It means that the compiler makes no optimisations at all. It also enables many runtime checks and makes debugging possible by embedding all the debug symbols (the name of your variables and functions) into the executable.
|
|
|
|
|
|
In debug mode, assertions (`assert()` command) are also enabled so that you can perform many verifications of the input and output of your functions while you code.
|
|
|
|
|
|
You should keep working in this mode as long as you implement your numerical method.
|
|
|
|
|
|
As soon as you want to run a large simulation, you should build your code in "*release mode*", which produces the fastest executable. In this mode, all the assertions are ignored and your code is optimised by the compiler. This is achieved by configuring your code with the following cmake command:
|
|
|
```
|
|
|
cmake -DCMAKE_BUILD_TYPE=Release ..
|
|
|
```
|
|
|
instead of
|
|
|
```
|
|
|
cmake ..
|
|
|
```
|
|
|
which is equivalent to
|
|
|
```
|
|
|
cmake -DCMAKE_BUILD_TYPE=Debug ..
|
|
|
```
|
|
|
|
|
|
# Note about the environment scripts
|
|
|
|
|
|
The scripts in the `math0471/envs/` folder add several folders to 3 environment variables so that the system and CMake find the compiler and the libraries correctly:
|
|
|
* `PATH`: this variable should contain the location of the folder of your `g++` compiler, of `gmsh.exe` and its shared library (`gmsh.dll/.so/.dylib`),
|
|
|
* `LIB`: points to the path of the folder containing `gmsh.lib` (windows) or `gmsh.so` (linux) or `gmsh.dylib` (macOS),
|
|
|
* `INCLUDE`: points to the path of the folder containing the `gmsh.h` header and the `Eigen` folder.
|
|
|
|
|
|
Instead of using these scripts which should be loaded each time you start a new terminal, these 3 variables can be defined in your global user environment once and for all.
|
|
|
|
|
|
This is done by going to "Settings" on Windows, and typing "env" in the search bar. Then choose the appropriate menu ("modify environment variables").
|
|
|
|
|
|
On Linux/macOS, you can add/modify environment variables by editing `~/.bashrc` or `~/.profile` (just copy & paste the contents of `envs/linux-macos.sh` at the end of the file).
|
|
|
|