SHELL = /bin/sh # ============================================================================ # ===== flags and directories (to be modified by the user) =================== # ============================================================================ USE_PARALLEL_AMDIS = 0 # 1 if AMDiS was compiled with parallel support, 0 otherwise USE_OPENMP = 0 # 1 if AMDiS was compiled with OpenMP support, 0 otherwise USE_UMFPACK = 0 # 1 if AMDiS was compiled with UMFPACK library, 0 otherwise USE_MKL = 0 # 1 if AMDiS was compiled with Intel MKL library, 0 otherwise USE_BOOST = 0 # 1 if AMDiS was compiled with Boost support, 0 otherwise USE_SERVER = # mars, deimos or themisto. If no special server blank USE_COMPILER = gcc # gcc or icc USE_SMI = 0 USE_MPCCI = 0 DEBUG = 0 AMDIS_DIR = ../AMDiS MPI_DIR = # on mars, deimos or themisto, leave this field blank BOOST_DIR = # if compiled with boost support, define here the boost directory SMI_DIR = MPCCI_DIR = # ============================================================================ # !!! Do not edit after this line !!! # ============================================================================ PARMETIS_DIR = $(AMDIS_DIR)/lib/ParMetis-3.1 # ============================================================================ # ===== includes pathes ====================================================== # ============================================================================ AMDIS_INCLUDE = -I$(AMDIS_DIR)/src -I$(AMDIS_DIR)/compositeFEM/src -I$(AMDIS_DIR)/lib/mtl4 SMI_INCLUDE = -I$(SMI_DIR)/smi MPCCI_INCLUDE = -I$(MPCCI_DIR)/include PARMETIS_INCLUDE = -I$(PARMETIS_DIR) PARALLEL_INCLUDE = -I$(AMDIS_DIR)/src/parallel INCLUDES = -I. $(AMDIS_INCLUDE) $(SMI_INCLUDE) $(MPCCI_INCLUDE) -I$(SMI_DIR)/etc/commoncpp/include $(PARALLEL_INCLUDE) # ============================================================================ # ===== libraries ============================================================ # ============================================================================ AMDIS_LIB = -L$(AMDIS_DIR)/lib -lamdis PNG_LIB = -lpng UMFPACK_LIB = -L$(AMDIS_DIR)/lib/AMD/Lib -L$(AMDIS_DIR)/lib/UMFPACK/Lib ifeq ($(strip $(USE_SERVER)), mars) UMFPACK_LIB += -lmkl -lumfpack -lamd else ifeq ($(strip $(USE_SERVER)), themisto) UMFPACK_LIB += $(MKL_LIB) -lmkl -lguide -lpthread -lumfpack -lamd else ifeq ($(strip $(USE_SERVER)), deimos) MPI_DIR = /licsoft/libraries/openmpi/1.2.6/64bit UMFPACK_LIB += -lumfpack -lamd -L/licsoft/libraries/goto -lgoto -lpthread else UMFPACK_LIB += -lblas -lumfpack -lamd endif endif endif SMI_LIB = -L$(SMI_DIR)/lib -lsmi MPCCI_LIB = -L$(MPCCI_DIR)/lib/linux-x86-glibc22 -lmpcci PARMETIS_LIB = -L$(PARMETIS_DIR) -lparmetis -lmetis LIBS = $(AMDIS_LIB) $(PNG_LIB) ifeq ($(strip $(USE_UMFPACK)), 1) LIBS += $(UMFPACK_LIB) endif ifeq ($(strip $(USE_MKL)), 1) ifeq ($(strip $(USE_SERVER)), themisto) LIBS += $(MKL_LIB) else LIBS += -L$(MKL_LIB) endif LIBS += -lmkl -lmkl_solver -lguide -lpthread endif ifeq ($(strip $(USE_SMI)), 1) LIBS += $(SMI_LIB) endif ifeq ($(strip $(USE_MPCCI)), 1) LIBS += $(MPCCI_LIB) endif ifeq ($(strip $(USE_BOOST)), 1) LIBS += -L$(BOOST_DIR)/lib -lboost_iostreams endif # ============================================================================ # ===== parallel or sequential ? ============================================= # ============================================================================ ifeq ($(strip $(USE_PARALLEL_AMDIS)), 1) ifeq ($(strip $(USE_SERVER)), mars) ifeq ($(strip $(USE_COMPILER)), gcc) COMPILE = g++ else COMPILE = icpc endif else COMPILE = $(MPI_DIR)/bin/mpiCC endif LIBS += $(PARMETIS_LIB) -lmpi else ifeq ($(strip $(USE_COMPILER)), gcc) COMPILE = g++ else COMPILE = icpc endif endif # ============================================================================ # ===== compile flags ======================================================== # ============================================================================ ifeq ($(strip $(DEBUG)), 0) CPPFLAGS = -O2 else CPPFLAGS = -g -O0 endif ifeq ($(strip $(USE_OPENMP)), 1) ifeq ($(strip $(USE_COMPILER)), gcc) CPPFLAGS += -fopenmp else CPPFLAGS += -openmp endif endif # ============================================================================ # ===== libtool linking ====================================================== # ============================================================================ LIBTOOL = $(AMDIS_DIR)/libtool LINK = $(LIBTOOL) --mode=link $(COMPILE) # ============================================================================ # ===== rules ================================================================ # ============================================================================ all : make $(PROGRAMS) clean: -rm -rf *.o -rm -rf $(PROGRAMS) .cc.o: $*.cc $(COMPILE) $(DEFS) $(INCLUDES) $(CPPFLAGS) -c -o $*.o $^ # ============================================================================ # ===== user programs ======================================================== # ============================================================================ PROGRAMS = ellipt nonlin heat vecellipt vecnonlin vecheat sphere ball smitest parametric torus bunny navierstokes stokesnonlin vecmultigrid VPATH = .:./src:/solhome/vey/sourcen/currentcvs/AMDiS/src # ===== ellipt ============================================================ ELLIPT_OFILES = ellipt.o ellipt: $(ELLIPT_OFILES) $(LINK) $(CPPFLAGS) -o ellipt $(ELLIPT_OFILES) $(LIBS) # ===== nonlin ============================================================ NONLIN_OFILES = nonlin.o nonlin: $(NONLIN_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o nonlin $(NONLIN_OFILES) $(LIBS) # ===== heat ============================================================ HEAT_OFILES = heat.o heat: $(HEAT_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o heat $(HEAT_OFILES) $(LIBS) # ===== vecellipt ============================================================ VECELLIPT_OFILES = vecellipt.o vecellipt: $(VECELLIPT_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o vecellipt $(VECELLIPT_OFILES) $(LIBS) # ===== vecnonlin ============================================================ VECNONLIN_OFILES = vecnonlin.o vecnonlin: $(VECNONLIN_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o vecnonlin $(VECNONLIN_OFILES) $(LIBS) # ===== vecheat ============================================================ VECHEAT_OFILES = vecheat.o vecheat: $(VECHEAT_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o vecheat $(VECHEAT_OFILES) $(LIBS) # ===== vecmultigrid ============================================================ VECMULTIGRID_OFILES = vecmultigrid.o vecmultigrid: $(VECMULTIGRID_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o vecmultigrid $(VECMULTIGRID_OFILES) $(LIBS) # ===== sphere ============================================================ SPHERE_OFILES = sphere.o sphere: $(SPHERE_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o sphere $(SPHERE_OFILES) $(LIBS) # ===== bunny ============================================================ BUNNY_OFILES = bunny.o bunny: $(BUNNY_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o bunny $(BUNNY_OFILES) $(LIBS) # ===== torus ============================================================ TORUS_OFILES = torus.o torus: $(TORUS_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o torus $(TORUS_OFILES) $(AMDIS_LIB) $(LIBS) # ===== ball ============================================================ BALL_OFILES = ball.o ball: $(BALL_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o ball $(BALL_OFILES) $(LIBS) # ===== parametric ============================================================ PARAMETRIC_OFILES = parametric.o parametric: $(PARAMETRIC_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o parametric $(PARAMETRIC_OFILES) $(LIBS) # ===== navierstokes ======================================================== NAVIERSTOKES_OFILES = navierstokes.o navierstokes: $(NAVIERSTOKES_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o navierstokes $(NAVIERSTOKES_OFILES) $(LIBS) # ===== stokes non linear======================================================== STOKESNONLIN_OFILES = stokesnonlin.o stokesnonlin: $(STOKESNONLIN_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o stokesnonlin $(STOKESNONLIN_OFILES) $(LIBS) # ===== smitest ============================================================ SMITEST_OFILES = smitest.o smitest: $(SMITEST_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o smitest $(INCLUDES) $(SMITEST_OFILES) $(SMI_LIB) # ===== mpccitest ============================================================ MPCCITEST_OFILES = mpccitest.o SMIAdapter.o MpCCIAdapter.o mpccitest: $(MPCCITEST_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o mpccitest $(INCLUDES) $(MPCCITEST_OFILES) $(LIBS) $(MPCCI_LIB) $(SMI_LIB) # ===== mpcci1 ============================================================ MPCCI1_OFILES = mpcci1.o SMIAdapter.o MpCCIAdapter.o mpcci1: $(MPCCI1_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o mpcci1 $(INCLUDES) $(MPCCI1_OFILES) $(LIBS) $(MPCCI_LIB) $(SMI_LIB) # ===== mpcci2 ============================================================ MPCCI2_OFILES = mpcci2.o SMIAdapter.o MpCCIAdapter.o mpcci2: $(MPCCI2_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o mpcci2 $(INCLUDES) $(MPCCI2_OFILES) $(LIBS) $(MPCCI_LIB) $(SMI_LIB) # ===== periodic ============================================================ PERIODIC_OFILES = periodic.o periodic: $(PERIODIC_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o periodic $(INCLUDES) $(PERIODIC_OFILES) $(LIBS) # ===== multigrid ============================================================ MULTIGRID_OFILES = multigrid.o multigrid: $(MULTIGRID_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o multigrid $(INCLUDES) $(MULTIGRID_OFILES) $(LIBS) # ===== bmp2amdis ============================================================ BMP2AMDIS_OFILES = bmp2amdis.o EasyBMP.o bmp2amdis: $(BMP2AMDIS_OFILES) $(LINK) $(CPPFLAGS) $(LDFLAGS) -o bmp2amdis $(INCLUDES) $(BMP2AMDIS_OFILES) $(LIBS) # ===== parallelellipt ======================================================= PARALLELELLIPT_OFILES = parallelellipt.o parallelellipt: $(PARALLELELLIPT_OFILES) $(LINK) $(CPPFLAGS) -o parallelellipt $(PARALLELELLIPT_OFILES) $(LIBS) $(PARMETIS_LIB) # ===== parallelheat ======================================================= PARALLELHEAT_OFILES = parallelheat.o parallelheat: $(PARALLELHEAT_OFILES) $(LINK) $(CPPFLAGS) -o parallelheat $(PARALLELHEAT_OFILES) $(LIBS) $(PARMETIS_LIB) # ===== couple ============================================================ COUPLE_OFILES = couple.o couple: $(COUPLE_OFILES) $(LINK) $(CPPFLAGS) -o couple $(COUPLE_OFILES) $(LIBS) # ===== nonlin2 ============================================================ NONLIN3_OFILES = nonlin3.o nonlin3: $(NONLIN3_OFILES) $(LINK) $(CPPFLAGS) -o nonlin3 $(NONLIN3_OFILES) $(LIBS) # ===== neumann ============================================================ NEUMANN_OFILES = neumann.o neumann: $(NEUMANN_OFILES) $(LINK) $(CPPFLAGS) -o neumann $(NEUMANN_OFILES) $(LIBS)