PROGRAM = ../oth_mpi

MPIOPT  = -D_MPI
OMPOPT  = -fopenmp

OBJS    =        \
Main.o           \
setupIndex_mpi.o \
setupBg_mpi.o    \
bicgstab.o       \
copyV.o          \
copyE.o          \
comm.o           \
comm2.o          \
../sol/input_data.o     \
../sol/input2.o         \
../sol/monitor.o        \
../sol/memory.o         \
../sol/setup.o          \
../sol/arrayIndex.o     \
../sol/setupMaterial.o  \
../sol/setup2.o         \
../sol/solve.o          \
../sol/rhs.o            \
../sol/planewaveEx.o    \
../sol/planewaveEy.o    \
../sol/planewaveEz.o    \
../sol/planewave.o      \
../sol/pbcX.o           \
../sol/pbcY.o           \
../sol/pbcZ.o           \
../sol/prodmv.o         \
../sol/matrixEx.o       \
../sol/matrixEy.o       \
../sol/matrixEz.o       \
../sol/prodmvEx.o       \
../sol/prodmvEy.o       \
../sol/prodmvEz.o       \
../sol/blas1c.o         \
../sol/eyee.o           \
../sol/hyee.o           \
../sol/cyee.o           \
../sol/outputChars.o    \
../sol/outputZin.o      \
../sol/outputSpara.o    \
../sol/outputCoupling.o \
../sol/outputCross.o    \
../sol/outputPloss.o    \
../sol/ingeometry.o     \
../sol/geomlines.o      \
../sol/farfield.o       \
../sol/writeout.o       \
../sol/utils.o          \
../sol/cputime.o        \
../sol/plot3dGeom.o     \
../sol/ev3d.o

CC      = mpicc
CFLAGS  = -O2 -I../include -Wall
CFLAGS  += -std=c99
LDFLAGS = -O2 $(OMPOPT)
LIBS    = -lm

$(PROGRAM): $(OBJS)
	@echo "Loading $(PROGRAM) ... "
	@$(CC) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LIBS)

Main.o: Main.c
	$(CC) -c $(CFLAGS) $(OMPOPT) $?
comm.o: comm.c
	$(CC) -c $(CFLAGS) $(MPIOPT) $?
comm2.o: comm2.c
	$(CC) -c $(CFLAGS) $(MPIOPT) $?

.c.o:
	$(CC) -c $(CFLAGS) $<

clean:
	rm -f *.o
