src_MD-M CMake build files + junkfiles cleanup
[unres.git] / source / unres / src_MD-M / CMakeLists.txt
1 #
2 # CMake project file for UNRES with MD for single chains
3
4
5 enable_language (Fortran)
6
7 #================================
8 # build the xdrf library 
9 #================================ 
10 add_subdirectory(xdrf)
11
12 #================================
13 # Set source file lists
14 #================================
15 set(UNRES_MDM_SRC0 
16         add.f 
17         arcos.f
18         banach.f
19         bank.F 
20         blas.f 
21         bond_move.f 
22         cartder.F 
23         cartprint.f 
24         chainbuild.F 
25         check_bond.f 
26         checkder_p.F 
27         check_sc_distr.f
28         compare_s1.F 
29         contact.f 
30         convert.f 
31         cored.f
32         csa.f 
33         dihed_cons.F
34         diff12.f
35         distfit.f 
36         djacob.f
37         econstr_local.F
38         eigen.f 
39         elecont.f 
40         energy_split-sep.F 
41         entmcm.F
42         fitsq.f 
43         gauss.f 
44         gen_rand_conf.F
45         geomout.F 
46         gnmr1.f
47         indexx.f 
48         initialize_p.F 
49         intcartderiv.F
50         intcor.f 
51         intlocal.f 
52         int_to_cart.f 
53         kinetic_lesyng.f 
54         lagrangian_lesyng.F
55         local_move.f 
56         map.f 
57         matmult.f 
58         mc.F 
59         mcm.F 
60         MD_A-MTS.F 
61         minimize_p.F
62         minim_jlee.F 
63         minim_mcmf.F 
64         misc.f 
65         moments.f
66         MP.F 
67         MREMD.F 
68         muca_md.f 
69         newconf.f
70         parmread.F 
71         permut.F
72         pinorm.f 
73         printmat.f 
74         prng_32.F 
75         q_measure.F 
76         ran.f
77         randgens.f 
78         rattle.F 
79         readpdb.F
80         readrtns_CSA.F 
81         refsys.f 
82         regularize.F
83         rescode.f 
84         rmdd.f 
85         rmsd.F 
86         sc_move.F 
87         shift.F
88         sort.f 
89         stochfric.F 
90         sumsld.f 
91         surfatom.f 
92         test.F 
93         thread.F 
94         timing.F
95         together.F
96         unres.F
97 )
98
99 set(UNRES_MDM_SRC3 energy_p_new_barrier.F energy_p_new-sep_barrier.F gradient_p.F )
100
101 set(UNRES_MDM_PP_SRC
102         bank.F 
103         cartder.F 
104         chainbuild.F 
105         checkder_p.F 
106         compare_s1.F
107         cored.f
108         csa.f 
109         dihed_cons.F
110         diff12.f 
111         econstr_local.F 
112         energy_p_new.F
113         energy_p_new_barrier.F 
114         energy_p_new-sep_barrier.F 
115         energy_split-sep.F 
116         entmcm.F 
117         gen_rand_conf.F
118         geomout.F 
119         gradient_p.F 
120         intcor.f
121         initialize_p.F 
122         intcartderiv.F 
123         lagrangian_lesyng.F 
124         matmult.f
125         mc.F 
126         mcm.F 
127         MD_A-MTS.F
128         minimize_p.F 
129         minim_jlee.F
130         minim_mcmf.F 
131         MP.F 
132         MREMD.F
133         newconf.f 
134         parmread.F 
135         permut.F
136         prng_32.F 
137         q_measure1.F 
138         q_measure3.F 
139         q_measure.F
140         ran.f
141         rattle.F 
142         readpdb.F 
143         readrtns_CSA.F 
144         regularize.F
145         rmdd.f 
146         rmsd.F 
147         sc_move.F
148         shift.F 
149         stochfric.F
150         sumsld.f 
151         test.F 
152         thread.F 
153         timing.F
154         together.F
155         unres.F 
156
157
158
159 #================================================
160 # Set comipiler flags for different sourcefiles  
161 #================================================
162 if (Fortran_COMPILER_NAME STREQUAL "ifort")
163   set(FFLAGS0 "-c -ip -w" ) 
164   set(FFLAGS1 "-c -w -g -d2 -CA -CB" ) 
165   set(FFLAGS2 "-c -w -g -00 ")
166   #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" )
167   set(FFLAGS3 "-c -w -ipo " )
168 elseif (Fortran_COMPILER_NAME STREQUAL "gfortran")
169   set(FFLAGS0 "-c -I. " ) 
170   set(FFLAGS1 "-c -g -I. " ) 
171   set(FFLAGS2 "-c -I. ")
172   #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" )
173   set(FFLAGS3 "-c -I. " )
174 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
175
176
177 # Add MPI compiler flags
178 if(UNRES_WITH_MPI)
179   set(FFLAGS0 "${FFLAGS0} -I${MPIF_INCLUDE_DIRECTORIES}")
180   set(FFLAGS1 "${FFLAGS1} -I${MPIF_INCLUDE_DIRECTORIES}")
181   set(FFLAGS2 "${FFLAGS2} -I${MPIF_INCLUDE_DIRECTORIES}")
182   set(FFLAGS3 "${FFLAGS3} -I${MPIF_INCLUDE_DIRECTORIES}")
183 endif(UNRES_WITH_MPI)
184
185 set_property(SOURCE ${UNRES_MDM_SRC0} APPEND PROPERTY COMPILE_FLAGS ${FFLAGS0} )
186 #set_property(SOURCE ${UNRES_MD_SRC1} PROPERTY COMPILE_FLAGS ${FFLAGS1} )
187 #set_property(SOURCE ${UNRES_MD_SRC2} PROPERTY COMPILE_FLAGS ${FFLAGS2} )
188 set_property(SOURCE ${UNRES_MDM_SRC3} PROPERTY COMPILE_FLAGS ${FFLAGS3} )
189
190 #=========================================
191 # Settings for GAB force field 
192 #=========================================
193 if(UNRES_FF STREQUAL "GAB" )
194   # set preprocesor flags   
195   set(CPPFLAGS "PROCOR -DLINUX -DUNRES -DISNAN -DSPLITELE -DLANGO -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" )
196
197   if (Fortran_COMPILER_NAME STREQUAL "ifort")
198     # Add ifort preprocessor flags
199     set(CPPFLAGS "${CPPFLAGS} -DPGI") 
200   elseif (Fortran_COMPILER_NAME STREQUAL "f95")
201     # Add gfortran flags
202     set(CPPFLAGS "${CPPFLAGS} -DG77") 
203   elseif (Fortran_COMPILER_NAME STREQUAL "gfortran")
204     # Add gfortran flags
205     set(CPPFLAGS "${CPPFLAGS} -DG77") 
206   endif (Fortran_COMPILER_NAME STREQUAL "ifort")
207
208 #=========================================
209 #  Settings for E0LL2Y force field
210 #=========================================
211 elseif(UNRES_FF STREQUAL "E0LL2Y")
212   # set preprocesor flags   
213   set(CPPFLAGS "PROCOR -DLINUX -DUNRES -DISNAN -DSPLITELE -DLANG0" )
214
215   if (Fortran_COMPILER_NAME STREQUAL "ifort")
216     # Add ifort preprocessor flags
217     set(CPPFLAGS "${CPPFLAGS} -DPGI")
218   endif (Fortran_COMPILER_NAME STREQUAL "ifort")
219
220 endif(UNRES_FF STREQUAL "GAB")
221
222 # Add MPI preprocessor flags
223 if (UNRES_WITH_MPI)
224   set(CPPFLAGS "${CPPFLAGS} -DMP -DMPI") 
225 endif(UNRES_WITH_MPI)
226
227 # Apply preprocesor flags to *.F files
228 set_property(SOURCE ${UNRES_MDM_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} )  
229
230 # Apply preprocesor flags to proc_proc.c
231 set_property(SOURCE proc_proc.c APPEND PROPERTY COMPILE_DEFINITIONS "SGI" )  
232
233
234 #========================================
235 #  Setting binary name
236 #========================================
237 if(UNRES_WITH_MPI) 
238   # binary with mpi
239   set(UNRES_BIN "unres_${Fortran_COMPILER_NAME}_MPICH_${UNRES_FF}.exe")
240 else(UNRES_WITH_MPI)
241   # binary without mpi
242   set(UNRES_BIN "unres_${Fortran_COMPILER_NAME}_single_${UNRES_FF}.exe")
243 endif(UNRES_WITH_MPI)  
244
245 #=========================================
246 # cinfo.f stupid workaround for cmake
247 #  - shame on me ]:)
248 #=========================================
249 set_property(SOURCE compinfo.c PROPERTY CMAKE_C_FLAGS "-c" )
250 add_executable(compinfo-mdm compinfo.c)
251 set_target_properties(compinfo-mdm PROPERTIES OUTPUT_NAME compinfo)
252
253 set(UNRES_CINFO_DIR "${CMAKE_CURRENT_BINARY_DIR}" )
254 add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f 
255         COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cinfo.f ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f
256         COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/COMMON.IOUNITS ${CMAKE_CURRENT_BINARY_DIR}/COMMON.IOUNITS 
257         COMMAND ${CMAKE_CURRENT_BINARY_DIR}/compinfo | true     
258         DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/cinfo.f )
259 set_property(SOURCE ${UNRES_CINFO_DIR}/cinfo.f PROPERTY COMPILE_FLAGS ${FFLAGS0} )
260
261 #=========================================
262 # Set full unres MD sources
263 #=========================================
264 set(UNRES_MDM_SRCS ${UNRES_MDM_SRC0} ${UNRES_MDM_SRC3} ${UNRES_CINFO_DIR}/cinfo.f proc_proc.c )
265
266
267
268 #=========================================
269 # Build the binary
270 #=========================================
271 add_executable(UNRES_BIN-MD-M ${UNRES_MDM_SRCS} )
272 set_target_properties(UNRES_BIN-MD-M PROPERTIES OUTPUT_NAME ${UNRES_BIN})
273
274 #set_property(TARGET ${UNRES_BIN} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/unres/MD )
275 #add_dependencies (${UNRES_BIN} ${UNRES_XDRFLIB})
276
277 #=========================================
278 # Link libraries
279 #=========================================
280 # link MPI library (libmpich.a)  
281 if(UNRES_WITH_MPI)
282   target_link_libraries( UNRES_BIN-MD-M ${MPIF_LIBRARIES} )
283 endif(UNRES_WITH_MPI)
284 # link libxdrf.a 
285 #message("UNRES_XDRFLIB=${UNRES_XDRFLIB}")
286 target_link_libraries( UNRES_BIN-MD-M xdrf-MD-M )
287
288 #=========================================
289 # TESTS 
290 #=========================================
291
292 #-- Copy all the data files from the test directory into the source directory
293 #SET(UNRES_TEST_FILES
294 #       ala10.inp
295 #    )
296
297 #FOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES})
298 #      SET (unres_test_dest "${CMAKE_CURRENT_BINARY_DIR}/${UNRES_TEST_FILE}")
299 #      MESSAGE (STATUS " Copying ${UNRES_TEST_FILE} from ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} to ${unres_test_dest}")
300 #      ADD_CUSTOM_COMMAND (
301 #          TARGET     ${UNRES_BIN}
302 #          POST_BUILD
303 #          COMMAND    ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} ${unres_test_dest}
304 #      )
305 #ENDFOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES})
306
307 #=========================================
308 # Generate data test files
309 #=========================================
310 #  test_single_ala.sh
311 #=========================================
312
313 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh
314 "#!/bin/sh
315 export POT=GB
316 export PREFIX=ala10
317 #-----------------------------------------------------------------------------
318 UNRES_BIN=./${UNRES_BIN}
319 #-----------------------------------------------------------------------------
320 DD=${CMAKE_SOURCE_DIR}/PARAM
321 export BONDPAR=$DD/bond.parm
322 export THETPAR=$DD/thetaml.5parm
323 export ROTPAR=$DD/scgauss.parm
324 export TORPAR=$DD/torsion_631Gdp.parm
325 export TORDPAR=$DD/torsion_double_631Gdp.parm
326 export ELEPAR=$DD/electr_631Gdp.parm
327 export SIDEPAR=$DD/sc_GB_opt.1gab_3S_qclass5no310-shan2-sc-16-10-8k
328 export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3
329 export SCPPAR=$DD/scp.parm
330 export SCCORPAR=$DD/rotcorr_AM1.parm
331 export PATTERN=$DD/patterns.cart
332 #-----------------------------------------------------------------------------
333 $UNRES_BIN
334 ")
335
336 #=========================================
337 #  ala10.inp
338 #=========================================
339
340 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ala10.inp
341 "ala10 unblocked
342 SEED=-1111333 MD ONE_LETTER rescale_mode=2 PDBOUT
343 nstep=15000 ntwe=100 ntwx=1000 dt=0.1 lang=0 tbf t_bath=300 damax=1.0          &
344 reset_moment=1000 reset_vel=1000 MDPDB
345 WLONG=1.35279 WSCP=1.59304 WELEC=0.71534 WBOND=1.00000 WANG=1.13873            &
346 WSCLOC=0.16258 WTOR=1.98599 WTORD=1.57069 WCORRH=0.42887 WCORR5=0.00000        &
347 WCORR6=0.00000 WEL_LOC=0.16036 WTURN3=1.68722 WTURN4=0.66230 WTURN6=0.00000    &
348 WVDWPP=0.11371 WHPB=1.00000                                                    &
349 CUTOFF=7.00000 WCORR4=0.00000
350 12
351 XAAAAAAAAAAX 
352  0
353  0
354    90.0000   90.0000   90.0000  90.000   90.000   90.000   90.000   90.000 
355    90.0000   90.0000
356   180.0000  180.0000  180.0000 180.000  180.000  180.000  180.000  180.000
357   180.0000
358   110.0000  110.0000  110.0000 100.000  110.000  100.000  110.000  110.000 
359   110.0000  110.0000
360  -120.0000 -120.0000 -120.000 -120.000 -120.000 -120.000 -120.000 -120.000
361  -120.0000 -120.0000
362 ")
363
364
365 # Add tests
366
367 if(NOT UNRES_WITH_MPI)
368
369   add_test(NAME UNRES_MD_Ala10 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh )
370
371 endif(NOT UNRES_WITH_MPI)
372