Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
zykure committed May 4, 2020
1 parent b5244d7 commit 1c4d621
Showing 1 changed file with 193 additions and 127 deletions.
320 changes: 193 additions & 127 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,140 +4,206 @@ along with calculations of electric and magnetic fields.

Find a full user guide under http://katrin-experiment.github.io/Kassiopeia/index.html

Kassiopeia: Simulation of electric and magnetic fields and particle tracking
============================================================================

--------------------------------------------------
Kassiopeia: Simulation of electric and magnetic fields and particle tracking
==============================================================================


System requirements:
--------------------------------------------------

Linux/MacOS (Windows+cygwin should work too, but has not been tested)

Some dependencies are only required if certain module are compiled in.

Dependencies:
CMake (www.cmake.org) version 2.8 or higher
G++ version 4.5 or higher (if compiling with GCC)
GSL (www.gnu.org/software/gsl)
ROOT (www.cern.ch/root) version 5.24 or higher (6.x should work too)
--enable-minuit2 (if you want to use KaFit)
--enable-fftw3 (if you want to use KEMField)

Optional Dependencies:
Boost (www.boost.org) version 1.46 or higher
LibXml2 (xmlsoft.org)
Log4CXX (logging.apache.org/log4cxx)
MPI (www.open-mpi.org or mpich.org)
OpenCL (www.khronos.org/opencl), installation details depend on your system
OpenSSL (openssl.org) version 0.9.6 or higher
PETSc (mcs.anl.gov/petsc)
VTK (www.vtk.org) version 5.0 or higher
zlib (www.zlib.net)
pdflatex (for making the documentation; minimum version not known)
doxygen (for making the documentation; minimum version not known)


--------------------------------------------------
----------------------

NOTE: Kasper requires Linux/MacOS. Windows+cygwin should work too, but has not been tested.

Some dependencies are only required if certain module are compiled in.

Dependencies:
* CMake (https://www.cmake.org) version 3.13 or higher
* G++ (https://gcc.gnu.org) version 6.1 or higher (if compiling with GCC)
* Clang++ (https://clang.llvm.org) version 3.4 or higher (if compiling with clang)
* GSL (https://www.gnu.org/software/gsl)
* ROOT (https://www.cern.ch/root) version 6.0 or higher
+ --enable-minuit2 (if you want to use KaFit)
+ --enable-fftw3 (if you want to use KEMField)

Optional Dependencies:
* Boost (https://www.boost.org) version 1.61 or higher
* FFTW (https://fftw.org) version 3.3.4 or higher
* HDF5 (https://support.hdfgroup.org/HDF5/)
* LibXml2 (https://www.xmlsoft.org)
* Log4CXX (https://logging.apache.org/log4cxx)
* MPI (https://www.open-mpi.org or mpich.org)
* OpenCL (https://www.khronos.org/opencl), installation details depend on your system
* OpenMP (https://www.openmp.org)
* OpenSSL (https://openssl.org) version 1.0.0 or higher
* PCL (https://www.pointclouds.org) version 1.2 or higher
* PETSc (https://mcs.anl.gov/petsc)
* SQLite3 (https://sqlite.org), for IDLE local storage
* TBB (https://software.intel.com/en-us/tbb)
* VTK (https://www.vtk.org) version 6.1 or higher
* zlib (https://www.zlib.net)
* pdflatex (for making the documentation; minimum version not known)
* doxygen (for making the documentation; minimum version not known)

### Ubuntu Linux 18.04 LTS (bionic)

* Make sure to update CMake to version 3.13 or newer. See www.cmake.org or use this
[direct link](https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-Linux-x86_64.tar.gz).
* Download ROOT libraries from cern.root.ch or use this
[direct link](https://root.cern/download/root_v6.18.04.Linux-ubuntu18-x86_64-gcc7.4.tar.gz).
Another option is to build your own version from the source files.
* To install all build dependencies:
```
> apt-get update -y && apt-get install -y \
build-essential cmake cmake-curses-gui \
libqt4-dev libx11-dev libxext-dev libxft-dev libxpm-dev \
libboost-all-dev libfftw3-dev libgsl0-dev libhdf5-dev liblog4cxx-dev libomp-dev libopenmpi-dev \
libpcl-dev libsqlite3-dev libssl-dev libtbb-dev libvtk6-dev libxml2-dev ocl-icd-opencl-dev zlib1g-dev
```

### Fedora Linux 31

* The ROOT libraries can be installed easily with the package manager.
* To install all build dependencies:
```
> dnf install -y \
@development-tools cmake cmake-gui \
root-core root-io-xmlparser root-minuit2 root-spectrum \
vtk vtk-qt vtk-java \
boost-devel fftw-devel gsl-devel hdf5-devel libomp-devel libxml2-devel log4cxx-devel \
ocl-icd-devel openmpi-devel openssl-devel pcl-devel sqlite-devel tbb-devel vtk-devel zlib-devel
```

Installation
--------------------------------------------------

1. Make a separate directory for the build tree, and enter that directory:
> mkdir build
> cd build

1.5. Consider setting important environmental variables now.
Selecting a specific compiler to be configured
by CMake is done for example by
> export CXX=clang++
> export CC=clang
to use the Clang/LLVM compiler, or
> export CXX=g++
> export CC=gcc
to use the GNU compiler (GCC).

2. Run cmake (or ccmake, or cmake-gui, if you prefer):
> cmake ..

2.5. If applicable, make any changes you need to the configuration,
and (re)generate the makefiles. e.g. You may want to change the
install prefix (NOTE: most users will probably want to do this).
The default is <Source-Directory>/install. If you're not doing
a general install for your system, or if you just want to use
a different location, you should change CMAKE_INSTALL_PREFIX
to your desired location. Note the CMAKE_BUILD_TYPE.
If you do not plan to debug kasper applications,
'Release' will give you the best execution performance.
If you use one of the GUI variants (ccmake or cmake-gui),
you can just go through a list of all the available build options.
Most options also have a short description. Note that some variables
have dependencies (e.g. BUILD_KASSIOPEIA will also enable BUILD_KEMFIELD).

3. Then type
> make
to start the build process. This can take some time,
depending on the modules you activated in CMake.
If you have more than one CPU core on your system,
you can build several files in parallel:
> make -j2
Make sure to keep the number passed to 'make' smaller
than the number of actual CPU cores.

4. Install the executables and libraries with
> make install
Executables are installed in the bin/ directory,
and libraries are installed in the lib/ directory.

5. Include kasperenv.sh in your .bashrc with
> source /path/to/Kasper/install/bin/kasperenv.sh
This script adds the bin/ directory to your $PATH so you
can call executables directly from the commandline.
Furthermore this sets the $KASPERSYS environment variable.


--------------------------------------------------
--------------

1. Make a separate directory for the build tree, and enter that directory:
```
> mkdir build
> cd build
```

* Consider setting important environmental variables now.
Selecting a specific compiler to be configured by CMake is done for example by
```
> export CXX=clang++
> export CC=clang
```
to use the Clang/LLVM compiler, or
```
> export CXX=g++
> export CC=gcc
```
to use the GNU compiler (GCC).

2. Run cmake (or ccmake, or cmake-gui, if you prefer):
```
> cmake ..
> ccmake ..
```

* If applicable, make any changes you need to the configuration, and
(re)generate the makefiles. e.g. You may want to change the install
prefix. (NOTE: Most users will probably want to do this.)

The default is `<Source-Directory>/install`. If you're not doing
a general install for your system, or if you just want to use a
different location, you should change `CMAKE_INSTALL_PREFIX` to
your desired location. Also note the `CMAKE_BUILD_TYPE`. If you
do not plan to debug Kasper applications, 'Release' will give you
the best execution performance.

If you use one of the GUI variants (ccmake or cmake-gui), you can
just go through a list of all the available build options. Most
options also have a short description. Note that some variables
have dependencies (e.g. `BUILD_KASSIOPEIA` will also enable
`BUILD_KEMFIELD`).

3. Then type
```
> make
```
to start the build process. This can take some time, depending on the
modules you activated in CMake. If you have more than one CPU core on
your system, you can build several files in parallel:
```
> make -j2
```
Make sure to keep the number passed to 'make' smaller than the number
of actual CPU cores. Instead of 'make' you could also use 'ninja'
or any other build tool that works with CMake.

4. Install the executables and libraries with
```
> make install
```
Executables are installed in the `bin/` directory, and libraries are
installed in the `lib/` directory (or `lib64/` on some systems.)

5. Include `kasperenv.sh` in your `~/.bashrc` (or similar, depending on
your shell) with
```
> source /path/to/Kasper/install/bin/kasperenv.sh
```
This script adds the `bin/` directory to your `$PATH` so you can call
any Kasper executables directly from the commandline. Furthermore this
sets the `$KASPERSYS` environment variable to the install directory.


Docker container
--------------------------------------------------

1. A Docker container with Kasper is available at
https://hub.docker.com/r/katrinexperiment/kassiopeia
2. This Docker container can be used with Docker
(with superuser privileges).
A. Pull the container to your system with
> sudo docker pull katrinexperiment/kassiopeia
B. Open a shell inside the container with
> sudo docker run --rm -it katrinexperiment/kassiopeia /bin/bash
3. The Docker container can also be used with Singularity
(as a regular user).
A. Pull the container to your system with
> singularity pull docker://katrinexperiment/kassiopeia
B. Open a shell inside the container with
> singularity shell docker://katrinexperiment/kassiopeia
or (if a local copy is available already)
> singularity shell kassiopeia-latest.sif
4. Build the container locally with
> sudo docker build -t katrinexperiment/kassiopeia .
and upload the local container to Docker Hub with
> sudo docker push katrinexperiment/kassiopeia


--------------------------------------------------
------------------

1. A Docker container with Kasper is available at
https://hub.docker.com/r/katrinexperiment/kassiopeia

2. This Docker container can be used with Docker (with superuser privileges).
1. Pull the container to your system with
```
> sudo docker pull katrinexperiment/kassiopeia
```
2. Open a shell inside the container with
```
> sudo docker run --rm -it katrinexperiment/kassiopeia /bin/bash
```

3. The Docker container can also be used with Singularity (as a regular user).
1. Pull the container to your system with
```
> singularity pull docker://katrinexperiment/kassiopeia
```
2. Open a shell inside the container with
```
> singularity shell docker://katrinexperiment/kassiopeia
```
or (if a local copy is available already)
```
> singularity shell kassiopeia-latest.sif
```

4. Build the container locally with
```
> sudo docker build -t katrinexperiment/kassiopeia .
```
an (optionally) upload the local container to DockerHub with
```
> sudo docker push katrinexperiment/kassiopeia
```


Documentation
--------------------------------------------------
---------------

1. Documentation distributed with Kasper
A. This README file
B. The Kasper Documentation Center is an HTML page that will
lead you to all of the documentation that is included
in the Kasper distribution:
http://katrin-experiment.github.io/Kassiopeia/index.html
1. Documentation distributed with Kasper
1. This `README.md` file
2. The Kassiopeia documentation is an HTML page hosted on GitHub
that will guide you through the installation process and
explains how to get started with your first simulation:
http://katrin-experiment.github.io/Kassiopeia/index.html


--------------------------------------------------
Getting help
--------------------------------------------------

--------------

Primary email contacts:
Kasper development list: [email protected]
Jan Behrens: [email protected]
Nicholas Buzinsky: [email protected]
Primary email contacts:
* Kasper development list: [email protected]
* Jan Behrens: [email protected]
* Nicholas Buzinsky: [email protected]

0 comments on commit 1c4d621

Please sign in to comment.