* In the terminal of VS Code, open VS Code and load ("File / Open Folder...") the `math0471` folder.
* Open VS Code and load ("File / Open Folder...") the `math0471` folder.
* Add the MinGW compiler (and the future zlib path) to your environment by running this script. This script assumes that the compiler has been installed in the default location proposed by the MinGW installer. Running this script should be done each time you re-open VS Code or a new terminal:
* 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):
```
envs\windows.cmd
```
* Then, go to the `lib` folder and install "zlib" using the scripts `get_zlib.cmd`. This should be done only once per working copy of the repository:
```
```
cd math0471
cd math0471
cd lib
cd lib
get_zlib.cmd
get_gmsh.cmd
get_eigen.cmd
cd ..
cd ..
```
```
* Next, in the same terminal, go to the `src` folder:
* 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):
```
```
cd src
envs\windows.cmd
```
```
* Create a `build` folder in `src`:
* Then, in the same terminal, go to the example folder:
```
cd examples\gmsh_api
```
* Create a `build` folder in `examples\gmsh_api`:
```
```
mkdir build
mkdir build
```
```
...
@@ -37,31 +39,15 @@ cmake ..
...
@@ -37,31 +39,15 @@ cmake ..
```
```
* Start the compilation (with 4 parallel processes):
* Start the compilation (with 4 parallel processes):
```
```
make
make -j 4
```
```
* Run the program:
* Run a program:
```
```
solver.exe ..\simulation.json
code1_loadgeo.exe ..\rectangle.geo
```
```
* Open Paraview from the start menu and open the `.vtp` files that have been created by the solver.
You can also build the OpenMP and MPI examples from the `examples` folder using the same method:
*Install gmsh-sdk and Eigen using the script `get_gmsh.sh` and `get_eigen.sh` in the `lib` folder:
```
```
cd src
cd lib
mkdir build
./get_gmsh.sh
cd build
./get_eigen.sh
cmake .. && make -j 4
cd ..
./solver ../simulation.json
```
```
* Display the results with Paraview
* Set the environment variables for cmake:
You can also build the OpenMP and MPI examples from the `examples` folder using the same method:
```
```
cd examples/openmp
source ./envs/linux-macos.sh
mkdir build
cd build
cmake .. && make
export OMP_NUM_THREADS=4
./omp_hello
```
```
* Go to the `examples/gmsh_api` folder:
```
cd examples/gmsh_api
```
* Create a `build` folder and go into it:
```
```
cd examples/mpi
mkdir build
mkdir build
cd build
cd build
cmake .. && make
mpirun -np 4 ./mpi_hello
```
```
* 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
# "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.
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.
...
@@ -124,16 +113,16 @@ which is equivalent to
...
@@ -124,16 +113,16 @@ which is equivalent to
cmake -DCMAKE_BUILD_TYPE=Debug ..
cmake -DCMAKE_BUILD_TYPE=Debug ..
```
```
# Note about environment scripts
# 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:
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, and the shared libraries you use in your program (`libzlib.dll/.so/.dylib`),
*`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 `zlib.lib` (windows),
*`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 `zlib.h` header.
*`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.
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").
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`.
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).