/IF-DDAM

Electromagnetic scattering in 3D for object in a multilayer

Primary LanguageC++

-------------------------------------------------------------
Licence:
-------------------------------------------------------------

Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA
4.0)

You are free to:

    Share — copy and redistribute the material in any medium or format
    Adapt — remix, transform, and build upon the material

    The licensor cannot revoke these freedoms as long as you follow
    the license terms.

-----------------------------------------------------------
VERSION
-----------------------------------------------------------

By default, the code compiles without FFTW and HDF5. A custom FFT library is uded. It is single processor.
If you have FFTW installed, type:
qmake-qt4 "CONFIG+=fftw" or qmake-qt5 "CONFIG+=fftw" following the qt version you have
before make.

if you have 4 processors,
export OMP_NUM_THREADS=4
before launching the code.

It is compiled in parallel and hence, needs to have on the computer
openmp (version 4.5 at least).
beware that if you use the parallel version, if you have a
core dump issue, the main reason may be the stack size. Use the
instructions (on LINUX system).
ulimit-s unlimited

If you want to use HDF5, type:
qmake-qt4 "CONFIG+=fftw hdf5" or qmake-qt5 "CONFIG+=fftw hdf5"
make

if you have 4 processors,
export OMP_NUM_THREADS=4
-------------------------------------------------------------
Linux installation:
-------------------------------------------------------------

The application is based on Qt-4 (or Qt-5 for recent system) and gfortran

To install it on Fedora (take a look into .gitlab-ci.yml in cas), first you need to:

1) install the Qt packages as root:
dnf install qt* qt-devel

2) install gcc-c++ and gfortran as root
dnf install gcc-c++ gcc-gfortran

3) Install all the packages FFTW
dnf install fftw*

4) Install hdf5
dnf install hdf hdf5 hdf5-static hdf5-devel

1) 2) 3) 4) on Ubuntu system you need to do:
sudo  apt install build-essential
sudo  apt install qt4-qmake (or qt5-qmake)
sudo  apt install gfortran
sudo  apt install libqt4-dev (or libqt5-dev)
sudo  apt install fftw*
sudo  apt install libhdf5-dev 

5) at root directory
qmake-qt4 "CONFIG+=fftw hdf5" for qt4 or qmake-qt5 "CONFIG+=fftw hdf5" for qt5
make
make install

To run the application:
cd bin
./cdm

If you get Segmentation fault (core dumped), please fix it with
$ulimit -s unlimited

-------------------------------------------------------------
Windows installation:
-------------------------------------------------------------
The application is based on Qt and MinGW and OpenGL

To build and install it, you need to:

1) install the Qt (5.0 or higher) with OpenGl and MinGW options including the QtCreator IDE

2) Open cmd_install.pro file in the root directory with QtCreator.exe

3) Build full project. You can run the executable cdm.exe directly from QtCreator.

4) To run the application in stand-alone, you need to deploy it along with a few runtime libraries.
For example if you built with Qt 5.3 (OpenGL included) and MinGW-4.8.2 option, 
the list of dll (in the Qt and MinGW-4.8.2 lib subdirectories) 
that have to be present in the same directory as cdm.exe:
icudt52.dll
icuin52.dll
icuuc52.dll
libgcc_s_dw2-1.dll
libgfortran-3.dll
libquadmath-0.dll
libstdc++-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5OpenGL.dll
Qt5PrintSupport.dll
Qt5Sql.dll
Qt5Svg.dll
Qt5Widgets.dll