Compiling JOREK on Leonardo-CPU with Intel and Oneapi
## bashrc
module load gcc/12.2.0
module load openmpi/4.1.6--gcc--12.2.0
module load openblas/0.3.24--gcc--12.2.0
module load netlib-scalapack/2.2.0--openmpi--4.1.6--gcc--12.2.0
module load fftw/3.3.10--openmpi--4.1.6--gcc--12.2.0
module load boost/1.83.0--openmpi--4.1.6--gcc--12.2.0
module load hdf5/1.14.3--openmpi--4.1.6--gcc--12.2.0
module load metis/5.1.0--gcc--12.2.0
module load parmetis/4.0.3--openmpi--4.1.6--gcc--12.2.0
# Other module loads
module load python/3.10.8--gcc--8.5.0
# PUBLIC OpenMPI compiled libraries with LEONARDO METIS/PARMETIS
export BASE_LIBRARY_PATH="/leonardo/pub/userexternal/csommari"
export MUMPS_PUBLIC_LEO_ROOT="$BASE_LIBRARY_PATH/jorek_libraries/openmpi416_gcc122/MUMPS_v541_openmpi416_gcc122_leonardo_metis510_parmetis403_13022025"
export MUMPS_PUBLIC_LEO_LIB="$MUMPS_PUBLIC_LEO_ROOT/lib"
export MUMPS_PUBLIC_LEO_INC="$MUMPS_PUBLIC_LEO_ROOT/include"
export STRUMPACK_PUBLIC_LEO_ROOT="$BASE_LIBRARY_PATH/jorek_libraries/openmpi416_gcc122/STRUMPACK_v710_openmpi416_gcc122_leonardo_metis510_parmetis403_13022025"
export STRUMPACK_PUBLIC_LEO_LIB="$STRUMPACK_PUBLIC_LEO_ROOT/lib/cmake/STRUMPACK"
export STRUMPACK_PUBLIC_LEO_LIB64="$STRUMPACK_PUBLIC_LEO_ROOT/lib64"
export STRUMPACK_PUBLIC_LEO_INC="$STRUMPACK_PUBLIC_LEO_ROOT/include"
Makefile.inc
# model directory
MODEL = model600
# Fortran compiler
FC = mpif90
CC = mpicc
CXX = mpicxx
FFLAGS_OMP = -fopenmp
FFLAGS = -w -fallow-argument-mismatch -fdefault-real-8 -fdefault-double-8 -DFUNNELED
#FFLAGS = -w -fallow-argument-mismatch -fdefault-real-8 -fdefault-double-8 -DUSE_BLOCK -DFUNNELED -DWORLDWAR2 -DUNIT_TESTS -DUNIT_TESTS_AFIELDS #-DCOMPARE_ELEMENT_MATRIX
FFLAGS := $(FFLAGS) -O2 -msse2 -march=native
# --- DEBUGGING
# --- Debug symbols for debuggers
DEBUGFLAGS = -g -p
#DEBUGFLAGS += -warn all,nounused -check all,noarg_temp_created -debug all -debug-parameters -fstack-security-check -traceback
FFLAGS_FIXEDFORM := $(FFLAGS) $(DEBUGFLAGS) $(FFLAGS_OMP)
FFLAGS_NOBOUNDS := $(FFLAGS) $(FFLAGS_OMP)
FFLAGS := $(FFLAGS) $(DEBUGFLAGS) $(FFLAGS_OMP)
#FFLAGS_NO_OMP = $(FFLAGS) $(DEBUGFLAGS)
# Solvers dependencies
USE_STRUMPACK = 1
USE_HIPS = 0
USE_PASTIX = 0
USE_PASTIX_MURGE = 0
USE_PASTIX6 = 0
USE_MUMPS = 1
USE_WSMP = 0
USE_FFTW = 1
USE_HDF5 = 1
USE_BOOST = 0
USE_STD_BESSELK = 1
USE_TASKLOOP = 0
#Scotch library
#SCOTCH_HOME = $(SCOTCH_ROOT)
#LIB_SCOTCH = -L$(SCOTCH_HOME)/lib -lptesmumps -lptscotch -lesmumps -lscotch -lptscotcherrexit -lptscotcherr -lscotcherrexit -lscotcherr
#INC_SCOTCH = -I$(SCOTCH_HOME)/include
LIBLAPACK = -L$(NETLIB_SCALAPACK_LIB) -lscalapack $(OPENBLAS_LIB)/libopenblas.a
# METIS
#METIS_HOME = $(METIS_ROOT)
LIB_METIS = -L$(METIS_LIB) -lmetis
INC_METIS = -I$(METIS_INCLUDE)
# PARMETIS
#PARMETIS_HOME = $(PARMETIS_ROOT)
LIB_PARMETIS = -L$(PARMETIS_LIB) -lparmetis
INC_PARMETIS = -I$(PARMETIS_INCLUDE)
# STRUMPACK
STRUMPACKLIB = -L$(STRUMPACK_PUBLIC_LEO_LIB64) -lstrumpack $(LIB_PARMETIS) $(LIB_METIS) $(LIBLAPACK)
STRUMPACKINC = -I$(STRUMPACK_PUBLIC_LEO_INC) $(INC_PARMETIS) $(INC_METIS)
# MUMPS
#MUMPS_HOME = $(MUMPS_ROOT)
LIB_MUMPS = -L$(MUMPS_PUBLIC_LEO_LIB) -lzmumps -ldmumps -lmumps_common $(LIB_PARMETIS) $(LIB_METIS)
INC_MUMPS = $(MUMPS_PUBLIC_LEO_INC) $(INC_SCOTCH) $(INC_PARMETIS) $(INC_METIS)
ORDLIB = -L$(MUMPS_PUBLIC_LEO_ROOT)/PORD/lib -lpord
# PASTIX
#LIB_PASTIX = `$(PASTIX_INSTALL_ROOT)/pastix-conf --libs` -L$(MKLROOT) -lpciaccess
#LIB_PASTIX_MURGE = `$(PASTIX_INSTALL_ROOT)/pastix-conf --libs_murge`
#LIB_PASTIX_BLAS = `$(PASTIX_INSTALL_ROOT)/pastix-conf --blas`
#INC_PASTIX = `$(PASTIX_INSTALL_ROOT)/pastix-conf --incs`
#PASTIX6_HOME = -I$(PASTIX_ROOT)
#LIB_PASTIX6 = -L$(PASTIX6_HOME)/lib -lpastixf -lspmf -lpastix -lspm -lpastix_kernels $(LIB_SCOTCH)
#LIB_PASTIX6_BLAS =
#INC_PASTIX6 = $(PASTIX6_HOME)/include $(INC_SCOTCH)
# BOOST
#BOOST_HOME = $(BOOST_ROOT)
#LIB_BOOST = -L$(BOOST_HOME)/lib -lboost_math_tr1
#INC_BOOST = -I$(BOOST_HOME)/include
#HIPS
#LIBHIPS = -L$(HOME)/hips_trunk/trunk/LIB -lhips -lio $(LIBSCOTCH)
#INCHIPS = -I$(HOME)/hips_trunk/trunk/LIB
#WSMP
#LIB_WSMP = -L$(WSMP_HOME) -lpwsmp64
# LIBFFTW
FFTW_HOME = $(FFTW_ROOT)
LIBFFTW = -L$(FFTW_LIB) -lfftw3_mpi -lfftw3
INC_FFTW = -I$(FFTW_INC)
# HDF5
HDF5INCLUDE = $(HDF5_INC)
HDF5LIB = $(HDF5_LIB)/libhdf5_hl_fortran.a \
$(HDF5_LIB)/libhdf5_fortran.a \
$(HDF5_LIB)/libhdf5_hl_f90cstub.a \
$(HDF5_LIB)/libhdf5_f90cstub.a \
$(HDF5_LIB)/libhdf5_hl.a \
$(HDF5_LIB)/libhdf5_tools.a \
$(HDF5_LIB)/libhdf5.a $(ZLIB_LIB)/libz.a -ldl