Update faq authored by Rémy Mozul's avatar Rémy Mozul
# Frequently Asked Question # # Frequently Asked Question #
## <a name=general_questions> General questions </a> ## ## <a name=general_questions> General questions </a> ##
###### What is the license of this software ? ###### ###### What is the license of this software ? ######
This software is distributed under the [Free Software CECILL License]() This software is distributed under the [Free Software CECILL License]()
###### On which OS does it work ? ###### ###### On which OS does it work ? ######
Currently it works on UNIX OS (Linux, Solaris, MacOSX, etc). Currently it works on UNIX OS (Linux, Solaris, MacOSX, etc).
Concerning Windows, a pre-compiled version is available for a specific version of Anaconda Python Distribution. Concerning Windows, a pre-compiled version is available for a specific version of Anaconda Python Distribution.
Check the [prerequisites](https://git-xen.lmgc.univ-montp2.fr/lmgc90/lmgc90_user/wikis/prerequisites) section Check the [prerequisites](https://git-xen.lmgc.univ-montp2.fr/lmgc90/lmgc90_user/wikis/prerequisites) section
of the wiki. of the wiki.
###### What is needed to install ? ###### ###### What is needed to install ? ######
Check the [prerequisites](https://git-xen.lmgc.univ-montp2.fr/lmgc90/lmgc90_user/wikis/prerequisites) section Check the [prerequisites](https://git-xen.lmgc.univ-montp2.fr/lmgc90/lmgc90_user/wikis/prerequisites) section
of the wiki. of the wiki.
###### I get the message "ImportError: No module named pylmgc90" when running an example, what is wrong ? ###### ###### I get the message "ImportError: No module named pylmgc90" when running an example, what is wrong ? ######
Python did not find the module with lmgc90. If the path to your build directory is *my_build_path*, Python did not find the module with lmgc90. If the path to your build directory is *my_build_path*,
then make sure your ```PYTHONPATH``` environment variable is correctly set with: then make sure your ```PYTHONPATH``` environment variable is correctly set with:
```shell ```shell
export PYTHONPATH=my_build_path export PYTHONPATH=my_build_path
``` ```
or that you add the path inside your command script with the two lines: or that you add the path inside your command script with the two lines:
```python ```python
import sys import sys
sys.path.append("my_build_path") sys.path.append("my_build_path")
``` ```
###### How to use multi-threaded version ? #### ###### How to use multi-threaded version ? ####
First the code must be re-compiled (unavailable on Windows). First the code must be re-compiled (unavailable on Windows).
Go to your build directory (if you followed the instruction of the wiki it should be *lmgc90_user/build*), then type the Go to your build directory (if you followed the instruction of the wiki it should be *lmgc90_user/build*), then type the
following command in your terminal: following command in your terminal:
```shell ```shell
cmake . -DWITH_OPENMP=True cmake . -DWITH_OPENMP=True
``` ```
Finally before running a computation, you must set two environment variables which are: Finally before running a computation, you must set two environment variables which are:
```shell ```shell
export OMP_SCHEDULE=STATIC export OMP_SCHEDULE=STATIC
export OMP_NUM_THREADS=n export OMP_NUM_THREADS=n
export OPENBLAS_NUM_THREADS=1 export OPENBLAS_NUM_THREADS=1
``` ```
where **n** is the number of threads you want to use (usually no more than the number of core available). where **n** is the number of threads you want to use (usually no more than the number of core available).
Additional informations in: examples/Ateliers/Performance/directions/index.html Additional informations in: examples/Ateliers/Performance/directions/index.html
## <a name=compile_error> Known compilation errors </a> ## ## <a name=compile_error> Known compilation errors </a> ##
##### An error arise at the very beginning when running `cmake` command #### ##### An error arise at the very beginning when running `cmake` command ####
* if the error message is something like: * if the error message is something like:
```Text ```Text
CMake generation for this library is not allowed within the source CMake generation for this library is not allowed within the source
directory! directory!
Remove the CMakeCache.txt file and try again from another folder, e.g.: Remove the CMakeCache.txt file and try again from another folder, e.g.:
rm -r CMakeCache.txt CMakeFiles rm -r CMakeCache.txt CMakeFiles
cd <somewhere (preferably a local place on your computer and not a network folder)> cd <somewhere (preferably a local place on your computer and not a network folder)>
cmake <source directory of LMGC90> cmake <source directory of LMGC90>
If you really need an in source build, then run : cmake If you really need an in source build, then run : cmake
-DIN_SOURCE_BUILD=ON -DIN_SOURCE_BUILD=ON
Call Stack (most recent call first): Call Stack (most recent call first):
CMakeLists.txt:21 (include) CMakeLists.txt:21 (include)
-- Configuring incomplete, errors occurred! -- Configuring incomplete, errors occurred!
``` ```
Then it means you issued the `cmake` command within the base of your source Then it means you issued the `cmake` command within the base of your source
directory. In this case, following the recommendation of the error message directory. In this case, following the recommendation of the error message
you have to remove, in the source directory the `CMakeCache.txt` file and you have to remove, in the source directory the `CMakeCache.txt` file and
the `CMakeFiles` directory. Then you can go back to step where you change of the `CMakeFiles` directory. Then you can go back to step where you change of
directory (`cd build`) before continuing the installation process. directory (`cd build`) before continuing the installation process.
##### An error arise when building the `matlib` on Mac OS Yosemite #### ##### An error arise when building on Mac OS ####
* if the error is something like: On MacOS, at the time of writing (May 27th 2025) there may be an error during the `make` step:
```
```shell from /Users/mozul/WORK/LMGC90/sources/lmgc90_dev/src/contribs/clipper2-1.4.0/CPP/Clipper2Lib/src/clipper.engine.cpp:10:
/usr/include/dispatch/object.h:143:15: error: expected ')' before '^' token /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h:627:35: error: expected primary-expression before 'unsigned'
/usr/include/dispatch/object.h:362:3: error: 'dispatch_block_t' has not been declared 627 | } __attribute__((aligned(_Alignof(unsigned int))));
dispatch_block_t notification_block); | ^~~~~~~~
^ ```
make[5]: *** [CMakeFiles/matlib.dir/src/math/eigmat.cpp.o] Error 1
make[4]: *** [CMakeFiles/matlib.dir/all] Error 2 In this case, following these instructions https://fluka-forum.web.cern.ch/t/geoviewer-compilation-error-on-macbook-pro-m4-macos-15-4/7246, you must:
make[3]: *** [all] Error 2 * Check that you are using the Command Line Tools (CLT) 16.3
make[2]: *** [src/contribs/matlib-prefix/src/matlib-stamp/matlib-build] Error 2 * `pkgutil --pkg-info=com.apple.pkg.CLTools_Executables`
make[1]: *** [src/contribs/CMakeFiles/matlib.dir/all] Error 2 * Uninstall Xcode if installed
make: *** [all] Error 2 * Remove the command line tools:
``` * `sudo rm -rf /Library/Developer/CommandLineTools`
* Download and install CLT 16.2 from [Apple Developer website](https://developer.apple.com/download/all/)
Then you can: * Clean your build directory and start over...
* shut down the MatLib if you do not need it:
```shell | [back](./Documentation) | [home](./Home) |
cmake . -DMATLIB_VERSION=none
make
```
* or modifiy the file *src/contribs/MatLib4-LMGC-2015-1/src/math/lapack.h* so that it looks like this:
```
#ifndef ZORGLIB_MATH_LAPACK_H
#define ZORGLIB_MATH_LAPACK_H
#ifndef __has_extension
#define __has_extension(x) 0
#endif
#define vImage_Utilities_h
#define vImage_CVUtilities_h
// config
#include <matlib_macros.h>
```
Then run `make` again.
****
| [back](./Documentation) | [home](./Home) |
|:---------------------|---------------:| |:---------------------|---------------:|
\ No newline at end of file