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