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