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