GYACOMO (Gyrokinetic Advanced Collision Moment solver, 2021)
Copyright (C) 2022  A.C.D. Hoffmann

A better tutorial is present on the code's wiki https://gitlab.epfl.ch/ahoffman/gyacomo/-/wikis/home.


Cloning the code :

1. ssh-keygen to generate a public key (press enter to the questions)
2. copy .ssh/id_rsa.pub in the ssh public key list of your gitlab account
3. git clone ssh://git@c4science.ch/source/gyacomo.git

Installing librairies :

requirements : intel mpi compiler

fftw3-mpi :
1. download .tar.gz on download page http://www.fftw.org/download.html
2. move it to the lib folder and unzip it with tar -zxvf fftw-3.x.x.tar.gz
3. cd into the folder created ffw-3.x.x/
5. use pwd to find the path of the current folder and use it as the prefix in "CURRENT PATH" so all the lib, headers and bin will be installed in this folder (prevents problem with root access)
4. ./configure --enable-mpi --prefix="CURRENT PATH"
5. make
6. make install (if problems, do make distclean before retrying)
7. mv lib64 lib in the fftw3 folder so the HeLaZ makefile finds it

FM Multiple-Precision Software Package:
0. copy the source code from https://dmsmith.lmu.build/


hdf5:
1. download latest release .tar.gz here https://www.hdfgroup.org/downloads/hdf5/source-code/
2. mv it to the lib/ and tar -zxvf *.tar.gz
3. cd the hdf5 folder then we follow instructions from futils.pdf
	export F9X=mpif90
	export CC=mpicc
	VERSION=1.12.0
	PREFIX=$HOME/lib/hdf5-$VERSION
	./configure --prefix=$PREFIX \
	--enable-fortran \
	--enable-parallel \
	--disable-shared \
	2>&1 | tee configure.log

zlib:
1. download https://www.zlib.net/ by clicking "Pick a mirror" (sourceforge.net)
2. inside zlib folder : ./configure then make


futils:
1. Go to futils c4science page > https://c4science.ch/diffusion/7804/
2. clone it in lib/
3. go to futils/src/ and modify the Makefile by replacing $(OPT) by -O3 in F90FLAGS and LIBS, moreover change F90 = mpif90 to mpiifort
4. make lib
5. make install


Compilation of GYACOMO
1. ensure that gyacomo/local/dirs.inc contains the right paths to the librairies (Be careful of fftw name)
2. make install
3. the file fort.90 is a Z-pinch turbulence test that can be run easily with ./bin/gyacomo in the home folder
4. next times, for compilation, make is sufficient

Remark for PPB110
- before compilation do : module purge, then module load ProgEnv-intel/17.0

Installation on Piz Daint (CSCS)
- module cray-hdf5-parallel, cray-fftw
- Have to install futils, FM
- Modify the Makefile by removing -XHOST option and using ftn as compiler

Installation on Marconi (CINECA)
- module load autoload hdf5/1.8...mpi... fftw3
(note: the module miller does not compile on Marconi with intelmpi 2020 compiler on Marconi)
- Have to install futils and FM
- Makefile works once local/dirs.inc is adapted