1 | # Makefile: smmp
|
---|
2 |
|
---|
3 | #.SILENT:
|
---|
4 |
|
---|
5 | %_p.o : %_p.f
|
---|
6 | $(MPIF90) $(F_FLAGS) $<
|
---|
7 |
|
---|
8 | %_p.o : %_p.F
|
---|
9 | $(MPIF90) $(F_FLAGS) $<
|
---|
10 |
|
---|
11 | .SUFFIXES: .o .f
|
---|
12 | .f.o:
|
---|
13 | $(F90) $(F_FLAGS) $<
|
---|
14 |
|
---|
15 | .SUFFIXES: .o .f90
|
---|
16 | .f90.o:
|
---|
17 | $(F90) $(F_FLAGS) $<
|
---|
18 |
|
---|
19 | # ==================================== Variables for compiling and linking
|
---|
20 | # L_FLAGS=-g
|
---|
21 | # Linker flags
|
---|
22 | # Default flags, e.g., for gfortran, g77
|
---|
23 | L_FLAGS=-O2 -g
|
---|
24 |
|
---|
25 | # Flags for Intel's ifort
|
---|
26 | # L_FLAGS=-O3 -axW -g
|
---|
27 |
|
---|
28 | # FLAGS for Cray
|
---|
29 | # L_FLAGS=-fastsse -Mipa
|
---|
30 |
|
---|
31 | # Flags for xlf
|
---|
32 | # L_FLAGS=-O3 -qhot -q64 -qipa -qextname=flush
|
---|
33 |
|
---|
34 | # Optimized flag for gfortran on an i686 platform
|
---|
35 | # L_FLAGS=-fPIC -O3 -funroll-loops -mmmx -msse2 -msse -march=i686 -malign-double -fomit-frame-pointer
|
---|
36 |
|
---|
37 | # Compiler flags
|
---|
38 | # Default flags, e.g., for gfortran, g77
|
---|
39 | F_FLAGS=-c -O2 -g
|
---|
40 | # Flags for Intel's ifort
|
---|
41 | # F_FLAGS=-c -O3 -axW -g
|
---|
42 | # Flags for debugging build
|
---|
43 | # F_FLAGS=-c -O0 -g
|
---|
44 | # FLAGS for Cray
|
---|
45 | # F_FLAGS=-c -fastsse -Mipa
|
---|
46 | # Flags for xlf
|
---|
47 | #F_FLAGS=-c -O3 -qhot -q64 -qipa -qextname=flush
|
---|
48 |
|
---|
49 | # Optimized flag for gfortran on an i686 platform
|
---|
50 | # F_FLAGS=-c -fPIC -O3 -funroll-loops -mmmx -msse2 -msse -march=i686 -malign-double -fomit-frame-pointer
|
---|
51 |
|
---|
52 | # Select your compiler
|
---|
53 | #F90=ifort
|
---|
54 | #F90=pgf90
|
---|
55 | #F90=xlf
|
---|
56 | F90=gfortran
|
---|
57 | MPIF90=mpif90
|
---|
58 |
|
---|
59 |
|
---|
60 | # ______________________________________________ Name of program
|
---|
61 | PROG=smmp
|
---|
62 | # ______________________________________________ Objects
|
---|
63 | OBJ=redseq.o bldmol.o getmol.o redvar.o setvar.o \
|
---|
64 | difang.o setmvs.o mklist.o redstr.o dihedr.o enyflx.o addend.o opeflx.o opeshe.o minim.o minqsn.o\
|
---|
65 | contacts.o hbond.o helix.o anneal.o metropolis.o rgyr.o zimmer.o \
|
---|
66 | canon.o mulcan_par_mod.o outvar.o outpdb.o \
|
---|
67 | pdbread.o rmsdfun.o enyreg.o opereg.o mincjg.o cnteny.o \
|
---|
68 | init_energy.o init_molecule.o gradient.o energy.o \
|
---|
69 | regul.o nursvr.o twister.o eninteract.o bgs.o eyabgn.o enylun.o utilities.o\
|
---|
70 | partem_s.o esolan.o opesol.o
|
---|
71 | #_________Serial implementation of ECEPP/3 and solvent
|
---|
72 | SOBJ=enyshe.o enysol.o
|
---|
73 | #_________Parallel implementation of ECEPP/3 and solvent
|
---|
74 | POBJ=enyshe_p.o enysol_p.o partem_p.o
|
---|
75 |
|
---|
76 | FILES=metropolis.f energy.f enyflx.f enyreg.f enyshe.f enysol.f redseq.f bldmol.f \
|
---|
77 | getmol.f redvar.f setvar.f difang.f setmvs.f mklist.f redstr.f dihedr.f addend.f \
|
---|
78 | opeflx.f opeshe.f minim.f minqsn.f contacts.f hbond.f helix.f anneal.f rgyr.f \
|
---|
79 | zimmer.f canon.f outvar.f outpdb.f \
|
---|
80 | pdbread.f rmsdfun.f opereg.f mincjg.f cnteny.f init_energy.f init_molecule.f \
|
---|
81 | gradient.f regul.f nursvr.f twister.f eninteract.f bgs.f eyabgn.f enylun.f \
|
---|
82 | mulcan_par_mod.f90 esolan.f opesol.f
|
---|
83 | # partem_s.f
|
---|
84 |
|
---|
85 |
|
---|
86 | pyInterface=init_molecule init_energy mulcan_par mulcan_sim \
|
---|
87 | init_lund sgrnd energy helix zimmer rgyr rmsdfun \
|
---|
88 | anneal canon outpdb minim regul contacts interhbond hbond
|
---|
89 | # metropolis
|
---|
90 | # ============================================== Linking
|
---|
91 |
|
---|
92 | $(PROG): $(OBJ) $(SOBJ) main.o
|
---|
93 | $(F90) -o $(PROG) $(L_FLAGS) main.o $(OBJ) $(SOBJ)
|
---|
94 |
|
---|
95 | # Build parallel version of SMMP.
|
---|
96 | parallel: $(OBJ) $(POBJ) main_p.o
|
---|
97 | $(MPIF90) -o $(PROG) $(L_FLAGS) main_p.o $(OBJ) $(POBJ)
|
---|
98 |
|
---|
99 | # Cross compile for BlueGene/L
|
---|
100 | bgl: BGL_L_FLAGS = -L$(BGLSYS)/lib -lmpich.rts -lfmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts -qextname=flush
|
---|
101 | bgl: F_FLAGS = -c -O5 -qhot -g -I$(BGLSYS)/include -L$(BGLSYS)/lib -qarch=440 -qtune=440 -qextname=flush
|
---|
102 | bgl: BGL_F90 = blrts_xlf
|
---|
103 | bgl: F90 = $(BGL_F90)
|
---|
104 | bgl: MPIF90 = $(BGL_F90)
|
---|
105 | bgl: CC = blrts_xlc
|
---|
106 | bgl: LIBSF_MPI=-lmpich.rts -lfmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts
|
---|
107 |
|
---|
108 | bgl: $(OBJ) $(POBJ) main_bgl_p.o
|
---|
109 | $(BGL_F90) -o $(PROG).rts $(BGL_L_FLAGS) main_bgl_p.o $(OBJ) $(POBJ) $(LIBSF_MPI)
|
---|
110 |
|
---|
111 | # Cross compile for BlueGene/P
|
---|
112 | bgp: BGP_SYS = /bgsys/drivers/ppcfloor/comm
|
---|
113 | bgp: DIRCOMP = /opt/ibmcmp/xlf/bg/11.1/bin
|
---|
114 | bgp: BGP_L_FLAGS = -O3 -qhot -g -I$(BGP_SYS)/include -qarch=440 -qtune=440 -qextname=flush
|
---|
115 | bgp: F_FLAGS = -c -O3 -qhot -g -I$(BGP_SYS)/include -qarch=440 -qtune=440 -qextname=flush
|
---|
116 | bgp: BGP_F90 = bgxlf
|
---|
117 | bgp: F90 = $(BGP_F90)
|
---|
118 | bgp: MPIF90 = $(BGP_F90)
|
---|
119 | bgp: LIBS=-Wl,-allow-multiple-definition $(MASS) $(ESSL) -L$(BGP_SYS)/lib -lmpich.cnk -ldcmfcoll.cnk -ldcmf.cnk -L/bgsys/drivers/ppcfloor/runtime/SPI -lSPI.cna -lrt -lpthread
|
---|
120 |
|
---|
121 | bgp: $(OBJ) $(POBJ) main_p.o
|
---|
122 | $(BGP_F90) -o $(PROG).rts $(BGP_L_FLAGS) main_p.o $(OBJ) $(POBJ) $(LIBS)
|
---|
123 |
|
---|
124 | # Build the python bindings
|
---|
125 | pybind: $(FILES)
|
---|
126 | #./rmexclpoint.py $(FILES)
|
---|
127 | f2py -c -m smmp smmp.pyf $(FILES) --f90exec=$(F90) --f77exec=$(F90)
|
---|
128 | #./restoreexclpoint.py $(FILES)
|
---|
129 |
|
---|
130 | newpybind: $(FILES)
|
---|
131 | ./rmexclpoint.py $(FILES)
|
---|
132 | mv smmp.pyf smmp.pyf.bak
|
---|
133 | f2py -h smmp.pyf -m smmp only: ${pyInterface} : $(FILES)
|
---|
134 | ./restoreexclpoint.py $(FILES)
|
---|
135 |
|
---|
136 | doc:
|
---|
137 | $(MAKE) -w -C doc/
|
---|
138 | doxygen pySMMP.doxygen
|
---|
139 |
|
---|
140 | examples: $(PROG)
|
---|
141 | $(MAKE) -w -C EXAMPLES/
|
---|
142 |
|
---|
143 | # ______________________________________________ Dependancies
|
---|
144 | main.o: multicanonical.mod
|
---|
145 |
|
---|
146 | multicanonical.mod: mulcan_par_mod.f90
|
---|
147 | $(F90) $(F_FLAGS) mulcan_par_mod.f90
|
---|
148 |
|
---|
149 | # enyshe_p.o:
|
---|
150 | # $(MPIF90) $(F_FLAGS) enyshe_p.f
|
---|
151 | # enysol_p.o:
|
---|
152 | # $(MPIF90) $(F_FLAGS) enysol_p.f
|
---|
153 | # partem_p.o:
|
---|
154 | # $(MPIF90) $(F_FLAGS) partem_p.f
|
---|
155 | # main_p.o:
|
---|
156 | # $(MPIF90) $(F_FLAGS) main_p.f
|
---|
157 |
|
---|
158 | main.o redseq.o eyring.o bldmol.o getmol.o redvar.o setvar.o \
|
---|
159 | difang.o setmvs.o mklist.o redstr.o dihedr.o enyflx.o\
|
---|
160 | enyshe.o addend.o opeflx.o opeshe.o minim.o minqsn.o enysol.o esolan.o\
|
---|
161 | contacts.o hbond.o helix.o anneal.o metropolis.o rgyr.o zimmer.o\
|
---|
162 | pdbvars.o rmsdfun.o enyreg.o opereg.o cnteny.o opesol.o\
|
---|
163 | init_energy.o init_molecule.o gradient.o energy.o nursvr.o\
|
---|
164 | regul.o eninteract.o bgs.o eyabgn.o enylun.o \
|
---|
165 | canon.o mulcan_par.o mulcan_sim.o outvar.o outpdb.o partem_s.o: INCL.H
|
---|
166 |
|
---|
167 | pdbread.o enyreg.o opereg.o init_molecule.o regul.o: INCP.H
|
---|
168 |
|
---|
169 | .PHONY: clean, restore, doc
|
---|
170 | clean:
|
---|
171 | $(MAKE) -w -C EXAMPLES/ clean
|
---|
172 | rm -f smmp core* *.o *~ *.mod
|
---|
173 | restore:
|
---|
174 | ./restoreexclpoint.py $(FILES)
|
---|
175 |
|
---|
176 | # end
|
---|