# Makefile pour compiler le code d'advection-diffusion
# Code issu du bureau d'etudes Volumes Finis du departement hydraulique de l'ENSEEIHT
# IMFT - Service Cosinus
# A. Pedrono & H. Neau
#
# E. courcelle. Pour eos => Utiliser l'environnement suivant:
# module load intel/17.0.4 intelmpi/5.1.3.210 visit/vbatch-2.12.3
# Le module visit definit la variable d'environnement VISIT_DIR
# 

# On Eos, BEFORE calling make, you can initialize the environment with:
# module purge
# module load intel/17.0.4 intelmpi/5.1.3.210
#
# On Eos, comment out those lines
# FC = mpiifort 
# INCLUDE = 

# Or using gfortran on your machine:
# FC = mpif90  
#
OPT = #-g -O0 -fbounds-check

# To compile with visit:
# 1/ Initiate the environment with .visit_batch.sh, (on Eos: module load visit/vbatch-2.10.2)
# 2/ Decomment the following line:
# VISIT = 1

EXE = pjacobi  

ifdef VISIT

DEFINE = -D_VISIT_ 

VISIT_INCDIR = -I$(VISIT_DIR)/linux-x86_64/libsim/V2/include
INCLUDE += $(VISIT_INCDIR)

VISIT_LIBS = -L$(VISIT_DIR)/linux-x86_64/libsim/V2/lib -lsimV2 -lsimV2f -lstdc++ -Wl,--no-as-needed -ldl
LIBS += $(VISIT_LIBS)

SRC  = jacobi_module.f90 pjacobi.f90 simulationexamplev2.f PJacobi_Visit.f
OBJS = jacobi_module.o pjacobi.o simulationexamplev2.o PJacobi_Visit.o 

else

SRC  = jacobi_module.f90 pjacobi.f90
OBJS = jacobi_module.o pjacobi.o 

endif

$(EXE):	$(OBJS)
	$(FC) $(OPT) $(OBJS) $(INCLUDE) $(LIBS) -o $(EXE)
	
jacobi_module.o:	jacobi_module.f90
	$(FC) $(OPT) $(INCLUDE) $(DEFINE) jacobi_module.f90 -c -cpp
	
pjacobi.o:	pjacobi.f90
	$(FC) $(OPT) $(INCLUDE) $(DEFINE) pjacobi.f90 -c -cpp
	
simulationexamplev2.o:	simulationexamplev2.f
	$(FC) $(OPT) $(INCLUDE)  simulationexamplev2.f -c

PJacobi_Visit.o:		PJacobi_Visit.f
	$(FC) $(OPT) $(INCLUDE)  PJacobi_Visit.f -c

clean :
	/bin/rm -f $(OBJS) *.mod $(EXE)
