#PROG = $(HOME)/bin/wwmadv PROG = wwmIII_cfrs FFLAGS = -fpp -DST42 # Put MPI = on for compiling with mpi, nothing if no MPI is wished. #MPI = on MPI = on # Put PETSC = on for compiling with petsc, nothing if no petsc is wished. PETSC = on # Put NETCDF = on for compiling with netcdf, nothing if no netcdf is wished. NETCDF = on # Put OPENMP = on for compiling with openmp, nothing if no openmp is wished. OPENMP = # Put OPENMP = on for compiling with openmp, nothing if no openmp is wished. DARKO = ifdef PETSC include ${PETSC_DIR}/conf/variables endif #F90 = gfortran F90 = mpif90 #F90 = mpif90-vt #F90 = ifort #F90 = $(FLINKER) #F90 = gfortran #F90 = pgf90 #F90 = pathf95 #F90 = f77 #INTEL #save opti #F90OPTI = -fpp -traceback -g #F90OPTI = -O1 -axSSE4.2 -traceback -g -check uninit -check bounds -check pointers -warn interfaces,nouncalled #F90OPTI = -fpp -O2 -stand f03 -assume realloc_lhs -fstack-protector -assume protect_parens #F90OPTI = -warn interfaces,nouncalled -fpp -gen-interface -g -traceback -check uninit -check bounds -check pointers #F90OPTI = -fpp -O2 -stand f03 -assume realloc_lhs -check all -traceback -fstack-protector -assume protect_parens -implicitnone #extreme aggressive opti ... #F90OPTI = -g -traceback -O1 -axSSE4.2 -unroll-aggressive -assume byterecl #-openmp#-check all -warn all #F90OPTI = -g -traceback -O1 -axSSE4.2 -unroll-aggressive -assume byterecl #F90OPTI = -g -traceback -O3 -axSSE4.2 -unroll-aggressive -assume byterecl -no-inline-factor -inline-level=2 -opt-malloc-options=4 -vec-guard-write #aggressive opti F90OPTI = -O1 -axSSE4.2 -unroll-aggressive -vec-guard-write -traceback -g -assume byterecl #aggressive opti no openmp #F90OPTI = -O1 -axSSE4.2 -fpp #debug 1 #F90OPTI = -O1 -mp1 -fpp -traceback -g -traceback -check pointers -check bound -check uninit #debug 2 #F90OPTI = -fpp -g -traceback -check all #aggresive debug openmp #F90OPTI = -fpp -g -traceback -check all -openmp #debug no openmp #F90OPTI = -fpp -g -traceback -fp-model precise -check all #PGI #F90OPTI = -g -O1 -Mprof=dwarf -Mprof=time -Minfo=ccff -mp #F90OPTI = -fastsse -Munroll -Minline=reshape -Minline=levels:10 -Mvect -Mipa=fast Mipa=levels:10 -Mlarge_arrays -mp #F90OPTI = -g -Mbounds -Mchkfpstk -Mchkptr -Mchkstk #GFORTRAN #F90OPTI = -g -O3 -ffree-line-length-0 -fbacktrace -fopenmp -Wall #LDFLAGS = -Mprof=dwarf -Mprof=lines -Mprof=func -Mprof=time Minfo=ccff #TCFLAG = -tcheck #LDFLAGS = -lpthread #ITT_BASE = /home/aron/intel/itt #LIBS = #libgoto_penrynp-r1.26.a #sparskit_pgi.a libgoto.a #sparskit.a #ARCH = $(shell uname -m | sed -e s/x86_64/32e/ -e s/i.86/32/ -e s/ia// ) #LPATH = $(ITT_BASE)/tcheck/bin/$(ARCH) OBJSELFE = elfe_glbl.o elfe_msgp.o solver_subs.o io_subs.o grid_subs.o misc_subs.o OBJWWM = wwm_datapl.o wwm_petscpool.o wwm_petsc_seriell.o wwm_petsc_parallel.o \ wwm_petsc_block.o wwm_petsc_controller.o wwm_aux.o wwm_mjdv2.o wwm_blasaux.o wwm_sparskit.o \ wwm_ardhuin_old.o wwm_wind.o wwm_ardhuin_new.o wwm_dislin.o wwm_diclass.o \ wwm_gridcf.o wwm_hotfile.o wwm_parall_solver.o wwm_initio.o wwm_netcdf.o wwm_input.o wwm_bdcons.o \ wwm_specparam.o wwm_windinput.o wwm_dissipation.o wwm_snl3.o wwm_snl4.o wwm_snl42.o wwm_babanin.o wwm_sourceterms.o \ wwm_specint.o wwm_nums1d.o wwm_numtheta.o wwm_numsigma.o wwm_fluctsplit.o wwm_wave_setup.o \ wwm_ecmwf.o wwm_output.o wwm_compute.o wwm_diffrac.o wwm_coupl_roms.o wwm_coupl_shyfem.o wwm_coupl_selfe.o wwm_coupl_timor.o wwm_main.o # dislin.o diclass.o \ #LIBS = -L/home/aron/opt/dislin/lib/dislin.a #LIBS = /home/aron/opt/dislin/lib/dislin-10.2.so ifdef NETCDF all: $(NETC) $(PROG) LIBS += -L$(TACC_NETCDF_LIB) -lnetcdf FFLAGS += -DNCDF -I$(TACC_NETCDF_INC) else all: $(PROG) endif ifdef MPI METIS_PATH = ../../../opt/parmetis-4.0.2/ LIBS += $(METIS_PATH)/lib/libparmetis.a $(METIS_PATH)/lib/libmetis.a MPIFLAG = -DWWM_MPI -D'MPIVERSION=2' -DUSE_WWM -DWWM_SOLVER -DDEBUG OBJS= $(OBJSELFE) $(OBJWWM) else MPIFLAG = OBJS= $(OBJWWM) endif ifdef OPENMP OPENMPFLAG = -openmp endif ifdef PETSC MPIFLAG += -DPETSC ${PETSC_FC_INCLUDES} LIBS += ${PETSC_LIB} endif ifdef DARKO DARKOFLAG = -DDARKO endif MPI_INCLUDE = -I/home/aron/opt/mpich2_1.3_intel/include/ F90FLAGS += ${MPI_INCLUDE} F90FLAGS = ${MPIFLAG} ${FFLAGS} ${F90OPTI} ${OPENMPFLAG} ${DARKOFLAG} NETC = NETC $(NETC): cp -f $(TACC_NETCDF_INC)/netcdf.mod . cp -f $(TACC_NETCDF_INC)/typesizes.mod . $(PROG): $(OBJS) $(F90) -o $(PROG) $(F90FLAGS) $(TCFLAG) $(OBJS) $(LIBS) clean: rm -f *.o *.oo *.obj *.ipo *.mod *.map *__genmod.f90 *.ilk *.pdb $(PROG) cleanall: rm -f *.*~ *.spg *.smb *.o *.oo *.obj *.ipo *.mod *.map *.ilk *.pdb *genmod* $(PROG) .SUFFIXES: $(SUFFIXES) .F90 .f .ftn .F90.o: $(F90) $(F90FLAGS) $(TCFLAG) -c $< .ftn.o: $(F90) $(F90FLAGS) -c $<