#!smake

CC		= mpicxx

CCOPT		= -c -O3  -I. -Wno-deprecated

MPI_DIR         = /opt/local

# OpenMP (libomp de MacPorts, mpicxx utilise clang)
OMP_FLAGS       = -Xpreprocessor -fopenmp -I$(MPI_DIR)/include/libomp
OMP_LIBS        = -L$(MPI_DIR)/lib/libomp -lomp

INCLUDE_PATH    = -I. -I$(MPI_DIR)/include
LIB_PATH        = -L. -L$(MPI_DIR)/lib \
                  -Wl,-rpath,$(MPI_DIR)/lib/libomp

LIBS            = $(LIB_PATH) $(OMP_LIBS) $(SOLVER_LIBS) -lm -lfftw3 -llapack -lblas

COMMON          = Array.o

# Solveur lineaire pour Poisson : MUMPS (comme PIC-3D)
SOLVER_LIBS     = -ldmumps -lmumps_common

#####################################################################

# codes principaux
all : main_kh

# instabilite de Kelvin-Helmholtz (domaine rectangulaire)
main_kh : main_kh.o $(COMMON)
	$(CC) $(INCLUDE_PATH) -o main_kh main_kh.o $(COMMON) $(LIBS)

# centre-guide dans un disque
main_gc_disk : main_gc_disk.o $(COMMON)
	$(CC) $(INCLUDE_PATH) -o main_gc_disk main_gc_disk.o $(COMMON) $(LIBS)

# centre-guide dans un domaine en D
main_gc_D : main_gc_D.o $(COMMON)
	$(CC) $(INCLUDE_PATH) -o main_gc_D main_gc_D.o $(COMMON) $(LIBS)


#######################################################################
# compilation des fichiers principaux

main_%.o : main_%.cpp *.hpp
	   $(CC) $(CCOPT) $(OMP_FLAGS) $(INCLUDE_PATH) $<

# compilation du fichier array

Array.o : Array.cpp
	   $(CC) $(CCOPT) $(INCLUDE_PATH) Array.cpp


clean :
	\rm -rf *.o *.mod *~ main_kh main_gc_disk main_gc_D *.out *.vtk macro.* fxvx* fxy* phi*
menage :
	\rm -rf *.out *.vtk macro.* fxvx* fxy* phi*
