############################################################################# # If you have problems with this makefile, contact Romain.Teyssier@gmail.com ############################################################################# # Compilation time parameters NVECTOR = 128 NDIM = 3 NPRE = 8 NVAR = 10 NENER = 0 SOLVER = hydro PATCH = /home/hemv_g/srf_a/RAMSES_CODE_CORI/ramses06062019_grackle311Cosmo/patch/mom2 GRACKLE = 1 EXEC = ramses_AGORA_Cosmo # Set to one to use 'include "mpif.h"' instead of more recent "use mpi" OLD_MPI_SUPPORT = 1 ############################################################################# BUILDDATE = $(shell date +"%D-%T") DEFINES = -DNVECTOR=$(NVECTOR) -DNDIM=$(NDIM) -DNPRE=$(NPRE) -DNENER=$(NENER) -DNVAR=$(NVAR) \ -DSOLVER$(SOLVER) ifeq ($(GRACKLE),1) DEFINES += -Dgrackle endif ifeq ($(OLD_MPI_SUPPORT),1) DEFINES += -DMPI_OLD endif ############################################################################# # Fortran compiler options and directives #F90 = mpiifort #FFLAGS = -cpp -O3 -g $(DEFINES) -DNOSYSTEM -DQUADHILBERT # --- No MPI, gfortran ------------------------------- #F90 = gfortran -O3 -frecord-marker=4 -fbacktrace -ffree-line-length-none -g -fimplicit-none #FFLAGS = -x f95-cpp-input $(DEFINES) -DWITHOUTMPI # --- No MPI, tau ---------------------------------- #F90 = tau_f90.sh -optKeepFiles -optPreProcess -optCPPOpts=$(DEFINES) -DWITHOUTMPI # --- No MPI, pgf90 ---------------------------------- #F90 = pgf90 #FFLAGS = -Mpreprocess $(DEFINES) -DWITHOUTMPI # --- No MPI, xlf ------------------------------------ #F90 = xlf #FFLAGS = -WF,-DNDIM=$(NDIM),-DNPRE=$(NPRE),-DNVAR=$(NVAR),-DSOLVER$(SOLVER),-DWITHOUTMPI -qfree=f90 -qsuffix=f=f90 -qsuffix=cpp=f90 # --- No MPI, f90 ------------------------------------ #F90 = f90 #FFLAGS = -cpp $(DEFINES) -DWITHOUTMPI # --- No MPI, ifort ---------------------------------- #F90 = ifort #FFLAGS = -cpp $(DEFINES) -DWITHOUTMPI # --- MPI, gfortran syntax ------------------------------ #F90 = mpif90 -O3 -g #FFLAGS = -cpp $(DEFINES) -DNOSYSTEM -DQUADHILBERT # --- MPI, gfortran DEBUG syntax ------------------------------ #F90 = mpif90 -frecord-marker=4 -ffree-line-length-none -fbacktrace -g -O -fbounds-check -Wuninitialized -Wall #FFLAGS = -x f95-cpp-input -ffpe-trap=zero,underflow,overflow,invalid -finit-real=nan $(DEFINES) # --- MPI, pgf90 syntax ------------------------------ #F90 = mpif90 -O3 #FFLAGS = -Mpreprocess $(DEFINES) # --- MPI, ifort syntax ------------------------------ #F90 = mpif90 #FFLAGS = -cpp -fast $(DEFINES) -DNOSYSTEM # --- MPI, ifort syntax, additional checks ----------- #F90 = mpif90 #FFLAGS = -warn all -O0 -g -traceback -fpe0 -ftrapuv -check bounds -cpp $(DEFINES) -DNOSYSTEM # --- MPI, cray syntax, high optimisation ----------- # --- NOTE: 03 is slower, hfp3 is too aggresive #F90 = ftn #FFLAGS = -eZ $(DEFINES) -DCRAY -O2 -hfp2 -g # --- MPI, ifort syntax ------------------------------ #F90 = ftn #FFLAGS = -xAVX -g -traceback -fpp -fast $(DEFINES) -DNOSYSTEM #-DRT # --- MPI, ifort syntax, additional checks ----------- #F90 = ftn #FFLAGS = -O3 -g -traceback -fpe0 -ftrapuv -cpp $(DEFINES) -DNOSYSTEM #-DRT F90 = mpiifort FFLAGS = -cpp -O2 $(DEFINES) -DNOSYSTEM -DQUADHILBERT ############################################################################# MOD = mod ############################################################################# # MPI librairies LIBMPI = #LIBMPI = -lfmpi -lmpi -lelan # --- CUDA libraries, for Titane --- LIBCUDA = #-L/opt/cuda/lib -lm -lcuda -lcudart ifeq ($(GRACKLE),1) # Add include and library install path for grackle and hdf5 here LIBS_GRACKLE = -L/home/hemv_g/srf_a/local/lib -lgrackle -L/opt/SC/bibliotecas/intel-15.0.1/hdf5-1.8.15/lib -lhdf5 -lz -ldl LIBS_OBJ = -I/opt/SC/util/intel/15_update1/impi/5.0.2.044/include -I/home/hemv_g/srf_a/local/include -I/opt/SC/util/miniconda-4.3.18/include -DCONFIG_BFLOAT_8 -DH5_USE_16_API -fPIC endif LIBS = $(LIBMPI) $(LIBS_GRACKLE) ############################################################################# # Sources directories are searched in this exact order VPATH = $(shell [ -z $(PATCH) ] || find $(PATCH) -type d):../$(SOLVER):../aton:../hydro:../pm:../poisson:../amr:../io ############################################################################# # All objects MODOBJ = mpi_mod.o amr_parameters.o amr_commons.o random.o pm_parameters.o pm_commons.o poisson_parameters.o dump_utils.o constants.o ifeq ($(GRACKLE),1) MODOBJ += grackle_parameters.o endif MODOBJ += poisson_commons.o hydro_parameters.o hydro_commons.o cooling_module.o bisection.o sparse_mat.o \ clfind_commons.o gadgetreadfile.o write_makefile.o write_patch.o AMROBJ = read_params.o init_amr.o init_time.o init_refine.o adaptive_loop.o amr_step.o update_time.o \ output_amr.o flag_utils.o physical_boundaries.o virtual_boundaries.o refine_utils.o nbors_utils.o \ hilbert.o load_balance.o title.o sort.o cooling_fine.o units.o light_cone.o movie.o memory.o \ end.o # Particle-Mesh objects PMOBJ = init_part.o output_part.o rho_fine.o synchro_fine.o move_fine.o newdt_fine.o particle_tree.o \ add_list.o remove_list.o star_formation.o sink_particle.o feedback.o clump_finder.o clump_merger.o \ flag_formation_sites.o init_sink.o output_sink.o # Poisson solver objects POISSONOBJ = init_poisson.o phi_fine_cg.o interpol_phi.o force_fine.o multigrid_coarse.o multigrid_fine_commons.o \ multigrid_fine_fine.o multigrid_fine_coarse.o gravana.o boundary_potential.o rho_ana.o output_poisson.o # Hydro objects HYDROOBJ = init_hydro.o init_flow_fine.o write_screen.o output_hydro.o courant_fine.o godunov_fine.o \ uplmde.o umuscl.o interpol_hydro.o godunov_utils.o condinit.o hydro_flag.o hydro_boundary.o \ boundana.o read_hydro_params.o synchro_hydro_fine.o # Patch objects sinclude $(PATCH)/Makefile # All objects AMRLIB = $(AMROBJ) $(HYDROOBJ) $(PMOBJ) $(POISSONOBJ) # ATON objects ATON_MODOBJ = timing.o radiation_commons.o rad_step.o ATON_OBJ = observe.o init_radiation.o rad_init.o rad_boundary.o rad_stars.o rad_backup.o ../aton/atonlib/libaton.a ############################################################################# ramses: $(MODOBJ) $(AMRLIB) ramses.o $(F90) $(MODOBJ) $(AMRLIB) ramses.o -o $(EXEC)$(NDIM)d $(LIBS) rm write_makefile.f90 rm write_patch.f90 ramses_aton: $(MODOBJ) $(ATON_MODOBJ) $(AMRLIB) $(ATON_OBJ) ramses.o $(F90) $(MODOBJ) $(ATON_MODOBJ) $(AMRLIB) $(ATON_OBJ) ramses.o -o $(EXEC)$(NDIM)d $(LIBS) $(LIBCUDA) rm write_makefile.f90 rm write_patch.f90 ############################################################################# write_makefile.o: FORCE ../utils/scripts/cr_write_makefile.sh $(MAKEFILE_LIST) $(F90) $(FFLAGS) -c write_makefile.f90 -o $@ write_patch.o: FORCE ../utils/scripts/cr_write_patch.sh $(PATCH) $(F90) $(FFLAGS) -c write_patch.f90 -o $@ %.o:%.F $(F90) $(FFLAGS) -c $^ -o $@ $(LIBS_OBJ) %.o:%.f90 $(F90) $(FFLAGS) -c $^ -o $@ $(LIBS_OBJ) FORCE: ############################################################################# clean: rm -f *.o *.$(MOD) *.i #############################################################################