1# -*- Makefile -*- for coupling LAMMPS to PWscf for QM/MM molecular dynamics
2
3# this file will be copied to Makefile.lammps
4EXTRAMAKE = Makefile.lammps.empty
5
6# top level directory of Quantum ESPRESSO 5.4.1 or later
7QETOPDIR=$(HOME)/compile/espresso
8
9# import compiler settings from Quantum ESPRESSO
10sinclude $(QETOPDIR)/make.sys
11
12# FLAGS for GNU c++ with STUBS. non-functional for real coupling
13MPICXX=g++
14MPICXXFLAGS= -I../../src/STUBS -O2 -g -fPIC\
15	-I../../src -I$(QETOPDIR)/COUPLE/include
16MPILIBS=-fopenmp -lgfortran -ldl -ljpeg -lpng -lz -lmpi_mpifh -lmpi
17
18# location of required libraries
19# part 1: hi-level libraries for building pw.x
20PWOBJS = \
21$(QETOPDIR)/COUPLE/src/libqecouple.a \
22$(QETOPDIR)/PW/src/libpw.a \
23$(QETOPDIR)/Modules/libqemod.a
24# part 2: lo-level libraries for all of Q-E
25LIBOBJS = \
26$(QETOPDIR)/FFTXlib/libqefft.a \
27$(QETOPDIR)/LAXlib/libqela.a   \
28$(QETOPDIR)/clib/clib.a   \
29$(QETOPDIR)/iotk/src/libiotk.a
30
31# part 3: add-on libraries and main library for LAMMPS
32sinclude ../../src/Makefile.package
33LAMMPSCFG = mpi
34LAMMPSLIB = ../../src/liblammps_$(LAMMPSCFG).a
35
36# part 4: local QM/MM library and progams
37SRC=pwqmmm.c libqmmm.c
38OBJ=$(SRC:%.c=%.o)
39
40
41default: libqmmm.a
42
43all : tldeps libqmmm.a pwqmmm.x
44
45pwqmmm.x : pwqmmm.o $(OBJ) $(PWOBJS) $(LIBOBJS) $(LAMMPSLIB)
46	$(MPICXX) $(LDFLAGS) -o $@ $^ $(PKG_PATH) $(PKG_LIB) $(MPILIBS) $(LIBS)
47
48libqmmm.a: libqmmm.o
49	$(AR) $(ARFLAGS) $@ $^
50	@cp $(EXTRAMAKE) Makefile.lammps
51
52%.o: %.c
53	$(MPICXX) -c $(LAMMPSFLAGS) $(MPICXXFLAGS) $< -o $@
54
55tldeps:
56	( cd $(QETOPDIR) ; $(MAKE) $(MFLAGS) couple || exit 1)
57	$(MAKE) -C ../../src $(MFLAGS) $(LAMMPSCFG)
58	$(MAKE) -C ../../src $(MFLAGS) mode=lib $(LAMMPSCFG)
59
60clean :
61	-rm -f *.x *.o *.a *~ *.F90 *.d *.mod *.i *.L
62
63# explicit dependencies
64
65pwqmmm.o: pwqmmm.c libqmmm.h
66libqmmm.o: libqmmm.c libqmmm.h
67