They should probably be installed in this order. On linux distributions such as Ubuntu, they may be available as packages.
These do not have to be installed separately.
When all dependencies are satisfied, the program is then compiled in the standard way:
1 ##############################################################################
3 # Example makefile for the program PB3D (Peeling Ballooning in 3D)
4 # \author Author: Toon Weyens
6 # Don't forget to set the directories:
9 # - NETCDFF_DIR (note: Fortran library)
13 ##############################################################################
15 ##############################################################################
17 ##############################################################################
18 ## [PETSc and SLEPc trick]
19 include $(PETSC_DIR)/lib/petsc/conf/variables
20 include $(SLEPC_DIR)/lib/slepc/conf/slepc_variables
21 ## [PETSc and SLEPc trick]
23 ## [PETSc and SLEPc trick inc]
24 INCLUDE = $(PETSC_FC_INCLUDES) $(SLEPC_INCLUDE)
25 ## [PETSc and SLEPc trick inc]
27 INCLUDE += -I$(LIBSTELL_DIR)/libstell_dir
29 INCLUDE += -I$(STRUMPACK_DIR)/include
31 INCLUDE += -I$(PB3D_DIR)/include
33 INCLUDE += -I/usr/include/hdf5/openmpi
35 ##############################################################################
37 ##############################################################################
39 LIB_INTERNAL = libdfftpack.a libfoul.a libbspline.a
42 LINK := $(LIB_INTERNAL)
44 ## [PETSc and SLEPc trick lib]
47 ## [PETSc and SLEPc trick lib]
48 LINK += $(LIBSTELL_DIR)/libstell.a
49 LINK += -L$(STRUMPACK_DIR)/lib -lstrumpack
50 LINK += -L$(HDF5_DIR) -lhdf5_fortran -lhdf5
51 LINK += -L$(NETCDFF_DIR)/lib -lnetcdff
52 LINK += -Wl,-R$(NETCDFF_DIR)/lib
53 LINK += -lscalapack -lblacs -lblas -lm
54 LINK += -lstdc++ -lmpi_cxx
57 ##############################################################################
59 ##############################################################################
63 ##############################################################################
65 ##############################################################################
69 ##############################################################################
71 # options (used with -D[name]):
74 # lwith_gnu: use GNU compiler [default]
75 # lwith_intel: use INTEL compiler, (checked for version 12.0.2)
76 # note: INTEL warning 6536 is suppressed, which informs about extra "USE".
77 # note: INTEL warning 6843 is suppressed, which informs about empty
78 # intent(out) variables
79 ##############################################################################
80 COMP_FLAGS = -finit-real=snan -g -Og -Wall -Wextra -pedantic \
81 -fimplicit-none -fbacktrace -fno-omit-frame-pointer \
82 -fcheck=all -cpp -Dldebug# debug, profiling with gprof2dot, GCC
83 #COMP_FLAGS = -O3 -fbacktrace -g -fimplicit-none -fno-omit-frame-pointer \
86 #COMP_FLAGS = -O0 -DlIB -Dldebug -g -heap-arrays 100 -recursive \
87 #-ftrapuv -check bounds -check uninit -traceback -implicitnone \
88 #-fno-omit-frame-pointer -cpp -Dlwith_intel -diag-disable 6536 \
89 #-diag-disable 6843# debug, profiling with gprof2dot, INTEL
90 #COMP_FLAGS = -O3 -DlIB -traceback -g -heap-arrays 100 -recursive \
91 #-implicitnone -fno-omit-frame-pointer -cpp -Dlwith_intel \
92 #-diag-disable 6536 -diag-disable 6843# optimized, INTEL
96 COMP_FLAGS_F= -O2 -funroll-loops -fexpensive-optimizations
99 ##############################################################################
101 ##############################################################################
102 LINK_FLAGS = -fPIC -finit-real=snan# debug
103 #LINK_FLAGS = -fPIC# optimized
106 ##############################################################################
108 ##############################################################################
109 # Add "Modules" and "Libraries" to the search path for the prerequisites
110 VPATH = Modules:Libraries
112 # Contains list of source files (.o) and dependencies
114 OBJLIST = ObjectList# defines "ObjectFiles"
116 # Includes source files and dependency list
117 include $(DEPLIST)# Dependencies of all the objects
118 include $(OBJLIST)# Names of all the objects
121 ##############################################################################
123 ##############################################################################
126 PB3D: $(ObjectFiles) $(LIB_INTERNAL) PB3D.o
127 $(LINKER) -o $@ $(ObjectFiles) PB3D.o $(LINK) $(LINK_FLAGS)
129 POST: $(ObjectFiles) $(LIB_INTERNAL) POST.o
130 $(LINKER) -o $@ $(ObjectFiles) POST.o $(LINK) $(LINK_FLAGS)
132 libdfftpack.a: dfft.o
133 ar -rcs libdfftpack.a dfft.o
136 ar -rcs libfoul.a foul.o
138 libbspline.a: bspline_sub_module.o
139 ar -rcs libbspline.a bspline_sub_module.o
142 $(COMPILER) $(INCLUDE) $(COMP_FLAGS) -c $<
145 $(COMPILER) $(COMP_FLAGS_F) -c $<
148 $(COMPILER) $(COMP_FLAGS_EX) -c $<
151 $(COMPILER) $(COMP_FLAGS_EX) -c $<
153 bspline_sub_module.o: bspline_sub_module.f90
154 $(COMPILER) $(COMP_FLAGS_EX) -c $<
157 @rm -f *.o *.a *.mod *~ fort.*
160 @rm -f *.o *.mod *~ fort.* PB3D POST