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