279b474c8cc33d3abfcdaf12b482a1c0291ffe59
[unres.git] / source / wham / src-HCD-5D / CMakeLists.txt
1 #
2 # CMake project file for WHAM multichain version 
3
4
5 enable_language (Fortran)
6
7 #================================
8 # Set source file lists
9 #================================
10 set(UNRES_WHAM_M_SRC0 
11         wham_multparm.F
12         bxread.F
13         xread.F
14         cxread.F
15         enecalc1.F 
16         energy_p_new.F
17         initialize_p.F
18         molread_zs.F
19         openunits.F
20         readrtns.F
21         read_constr_homology.F
22         arcos.f
23         cartder.f
24         cartprint.f
25         chainbuild.F
26         geomout.F
27         gnmr1.f
28         icant.f
29         intcor.f
30         int_from_cart.f
31         refsys.f
32         make_ensemble1.F
33         matmult.f
34         misc.f
35         mygetenv.F
36         parmread.F
37         permut.F
38         seq2chains.f
39         chain_symmetry.F
40         iperm.f 
41         pinorm.f
42         printmat.f
43         rescode.f
44         setup_var.f
45         slices.F
46         store_parm.F
47         timing.F
48         wham_calc1.F
49         PMFprocess.F
50         oligomer.F
51         readrtns_compar.F
52         readpdb.F
53         fitsq.f 
54         contact.f
55         elecont.f
56         contfunc.f
57         cont_frag.f
58         conf_compar.F
59         match_contact.f
60         angnorm.f
61         odlodc.f
62         promienie.f
63         qwolynes.f
64         read_ref_str.F
65         rmscalc.F
66         secondary.f
67         proc_cont.f
68         define_pairs.f
69         mysort.f
70         ssMD.F
71         boxshift.f
72 )
73
74 set(UNRES_WHAM_M_PP_SRC
75         bxread.F
76         chainbuild.F
77         chain_symmetry.F
78         conf_compar.F
79         cxread.F
80         enecalc1.F
81         energy_p_new.F
82         geomout.F
83         initialize_p.F
84         make_ensemble1.F
85         molread_zs.F
86         mygetenv.F
87         oligomer.F
88         openunits.F
89         parmread.F
90         permut.F
91         PMFprocess.F
92         read_constr_homology.F
93         read_dist_constr.F
94         readpdb.F       
95         read_ref_str.F
96         readrtns_compar.F
97         readrtns.F
98         rmscalc.F
99         slices.F
100         ssMD.F
101         store_parm.F
102         timing.F
103         wham_calc1.F
104         wham_multparm.F
105         xread.F
106
107
108 if(UNRES_DFA)
109  set(UNRES_WHAM_M_SRC0 ${UNRES_WHAM_M_SRC0} dfa.F )
110  set(UNRES_WHAM_M_PP_SRC ${UNRES_WHAM_M_PP_SRC} dfa.F )
111 endif(UNRES_DFA)
112
113
114 #================================================
115 # Set compiler flags for different sourcefiles  
116 #================================================
117 if (Fortran_COMPILER_NAME STREQUAL "ifort")
118   set(FFLAGS0 "-mcmodel=medium -shared-intel -I. -I${CMAKE_CURRENT_SOURCE_DIR}/include_unres" ) 
119 elseif (Fortran_COMPILER_NAME STREQUAL "gfortran")
120   set(FFLAGS0 "-mcmodel=medium -std=legacy -I. -I${CMAKE_CURRENT_SOURCE_DIR}/include_unres" ) 
121 elseif (Fortran_COMPILER_NAME STREQUAL "pgf90")
122   set(FFLAGS0 "-mcmodel=medium -Mlarge_arrays -I. -I${CMAKE_CURRENT_SOURCE_DIR}/include_unres" )
123 elseif (Fortran_COMPILER_NAME STREQUAL "ftn")
124   set(FFLAGS0 "-mcmodel=medium -shared-intel -I. -I${CMAKE_CURRENT_SOURCE_DIR}/include_unres" ) 
125 else ()
126   set(FFLAGS0 "-g -mcmodel=medium -I. -I${CMAKE_CURRENT_SOURCE_DIR}/include_unres" ) 
127 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
128
129
130 #=========================================
131 # Add MPI compiler flags
132 #=========================================
133 if(UNRES_WITH_MPI)
134  if (NOT MPI_Fortran_INCLUDE_PATH STREQUAL "")
135   set(FFLAGS0 "${FFLAGS0} -I${MPI_Fortran_INCLUDE_PATH}")
136  endif()
137 endif(UNRES_WITH_MPI)
138
139 set_property(SOURCE ${UNRES_WHAM_M_SRC0} PROPERTY COMPILE_FLAGS ${FFLAGS0} )
140
141 #=========================================
142 #  Settings for GAB force field
143 #=========================================
144 if(UNRES_MD_FF STREQUAL "GAB" )
145   # set preprocesor flags   
146   set(CPPFLAGS "PROCOR  -DSPLITELE -DCRYST_BOND -DCRYST_THETA -DCRYST_SC  -DSCCORPDB -DFOURBODY" )
147
148
149 #=========================================
150 #  Settings for E0LL2Y force field
151 #=========================================
152 elseif(UNRES_MD_FF STREQUAL "E0LL2Y")
153   # set preprocesor flags   
154   set(CPPFLAGS "PROCOR  -DSPLITELE -DFOURBODY" )
155 elseif(UNRES_MD_FF STREQUAL "4P")
156   set(CPPFLAGS "SPLITELE -DLANG0 -DCRYST_BOND -DCRYST_THETA -DCRYST_SC -DSCCORPDB -DFOURBODY" )
157 elseif(UNRES_MD_FF STREQUAL "NEWCORR")
158   set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0 -DNEWCORR -DCORRCD" )
159 endif(UNRES_MD_FF STREQUAL "GAB")
160
161 #=========================================
162 # Additional flags
163 #=========================================
164 set(CPPFLAGS "${CPPFLAGS} -DUNRES -DISNAN -DWHAM")
165
166 if(UNRES_DFA)
167  set(CPPFLAGS "${CPPFLAGS} -DDFA")
168 endif(UNRES_DFA)
169
170 if(UNRES_5D)
171  set(CPPFLAGS "${CPPFLAGS} -DFIVEDIAG" )
172 endif()
173  
174
175 #=========================================
176 # System specific flags
177 #=========================================
178 if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
179   set(CPPFLAGS "${CPPFLAGS} -DLINUX") 
180 endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
181
182 #=========================================
183 # Compiler specific flags
184 #=========================================
185
186 if (Fortran_COMPILER_NAME STREQUAL "ifort")
187   # Add ifort preprocessor flags
188   set(CPPFLAGS "${CPPFLAGS} -DPGI") 
189 elseif (Fortran_COMPILER_NAME STREQUAL "f95")
190   # Add new gfortran flags
191   set(CPPFLAGS "${CPPFLAGS} -DG77") 
192 elseif (Fortran_COMPILER_NAME STREQUAL "gfortran")
193   # Add old gfortran flags
194   set(CPPFLAGS "${CPPFLAGS} -DG77") 
195 elseif (Fortran_COMPILER_NAME STREQUAL "pgf90")
196   set(CPPFLAGS "${CPPFLAGS} -DPGI")
197   FILE(COPY ${CMAKE_SOURCE_DIR}/source/lib/isnan_pgi.f DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
198   list(APPEND UNRES_WHAM_M_SRC0 ${CMAKE_CURRENT_BINARY_DIR}/isnan_pgi.f)
199   set(CMAKE_EXE_LINKER_FLAGS "-Bdynamic")
200 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
201
202 #=========================================
203 # Add MPI preprocessor flags
204 #=========================================
205 set(CPPFLAGS "${CPPFLAGS} -DMPI") 
206
207 #=========================================
208 # Add 64-bit specific preprocessor flags
209 #=========================================
210 if (architektura STREQUAL "64")
211   set(CPPFLAGS "${CPPFLAGS} -DAMD64")
212 endif (architektura STREQUAL "64")
213
214 #=========================================
215 # Apply preprocesor flags to *.F files
216 #=========================================
217 set_property(SOURCE ${UNRES_WHAM_M_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} )  
218
219
220 #========================================
221 #  Setting binary name
222 #========================================
223 set(DFA "")
224 set(HCD-5D "")
225 if(UNRES_DFA)
226  set(DFA "_DFA")
227 endif()
228 if(UNRES_5D)
229  set(HCD-5D "_HCD-5D")
230 endif()
231
232 set(UNRES_WHAM_M_BIN "wham-mult_${Fortran_COMPILER_NAME}_MPI_${UNRES_MD_FF}${HCD-5D}${DFA}.exe")
233 #=========================================
234 # cinfo.f workaround for CMake
235 #=========================================
236 # get the current date  
237 TODAY(DATE)
238 # generate cinfo.f
239
240 set(CINFO "${CMAKE_CURRENT_BINARY_DIR}/cinfo.f")
241 FILE(WRITE ${CINFO}
242 "C CMake generated file
243        subroutine cinfo
244        include 'COMMON.IOUNITS'
245        write(iout,*)'++++ Compile info ++++'
246        write(iout,*)'Version ${UNRES_MAJOR}.${UNRES_MINOR} build ${UNRES_PATCH}'
247 ")
248
249 CINFO_FORMAT(${CINFO} "Compiled" "${DATE}" )
250 CINFO_FORMAT(${CINFO} "Compiled by" "$ENV{USER}@$ENV{HOST}" )
251 CINFO_FORMAT(${CINFO} "OS name:" "${CMAKE_SYSTEM_NAME}" )
252 CINFO_FORMAT(${CINFO} "OS release:" "${CMAKE_SYSTEM}" )
253 CINFO_FORMAT(${CINFO} "Fortran Compiler:" "${CMAKE_Fortran_COMPILER}" )
254 CINFO_FORMAT(${CINFO} "MD Force field:" "${UNRES_MD_FF}" )
255 CINFO_FORMAT(${CINFO} "CPPFLAGS =" "${CPPFLAGS}")
256
257 FILE(APPEND ${CINFO} 
258 "       write(iout,*)'++++ End of compile info ++++'  
259        return 
260        end ")
261
262 # set include paths
263 set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f PROPERTY COMPILE_FLAGS "${FFLAGS0} -I${CMAKE_CURRENT_SOURCE_DIR}"  )
264
265 #=========================================
266 # Set full unres CSA sources
267 #=========================================
268 set(UNRES_WHAM_M_SRCS ${UNRES_WHAM_M_SRC0} ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f )
269
270 #=========================================
271 # Build the binary
272 #=========================================
273 add_executable(UNRES_WHAM_M_BIN ${UNRES_WHAM_M_SRCS} )
274 set_target_properties(UNRES_WHAM_M_BIN PROPERTIES OUTPUT_NAME ${UNRES_WHAM_M_BIN})
275 set_property(TARGET UNRES_WHAM_M_BIN PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
276 #add_dependencies (${UNRES_BIN} ${UNRES_XDRFLIB})
277
278 #=========================================
279 # Link libraries
280 #=========================================
281 # link MPI library (libmpich.a)  
282 target_link_libraries( UNRES_WHAM_M_BIN ${MPI_Fortran_LIBRARIES} )
283 # link libxdrf.a 
284 target_link_libraries( UNRES_WHAM_M_BIN xdrf )
285
286
287 #=========================================
288 # Install Path
289 #=========================================
290 install(TARGETS UNRES_WHAM_M_BIN DESTINATION ${CMAKE_INSTALL_PREFIX}/wham)
291
292
293 #=========================================
294 # TESTS 
295 #=========================================
296
297 #  MESSAGE (STATUS "${MPI_Fortran_LIBRARIES}")
298   if ("${MPI_Fortran_LIBRARIES}"  MATCHES "lam")
299      MESSAGE (STATUS "LAM MPI library detected")
300      set (boot_lam "-boot")
301   else()
302      set (boot_lam "")
303   endif()
304
305   if (UNRES_SRUN)
306    set (np "-n")
307    set (mpiexec "srun")
308   elseif(UNRES_MPIRUN)
309    set (np "-np")
310    set (mpiexec "mpirun")
311   else()
312    set (np "-np")
313    set (mpiexec "mpiexec")
314   endif()
315
316 if(UNRES_MD_FF STREQUAL "E0LL2Y")
317 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/scripts/wham_mpi_E0LL2Y.sh
318 "#!/bin/sh
319 export POT=GB
320 export PREFIX=$1
321 #-----------------------------------------------------------------------------
322 WHAM_BIN=${CMAKE_BINARY_DIR}/bin/${UNRES_WHAM_M_BIN}
323 #-----------------------------------------------------------------------------
324 DD=${CMAKE_SOURCE_DIR}/PARAM
325 export BONDPAR=$DD/bond_AM1_ext_dum.parm
326 export THETPAR=$DD/theta_abinitio_old_ext.parm
327 export ROTPAR=$DD/rotamers_AM1_aura_ext.10022007.parm
328 export TORPAR=$DD/torsion_631Gdp_old_ext.parm
329 export TORDPAR=$DD/torsion_double_631Gdp_old_ext.parm
330 export ELEPAR=$DD/electr_631Gdp_ext.parm
331 export SIDEPAR=$DD/scinter_GB_ext_lip.parm
332 export FOURIER=$DD/fourier_opt_ext.parm.1igd_hc_iter3_3
333 export SCPPAR=$DD/scp_ext.parm
334 export SCCORPAR=$DD/sccor_am1_pawel_ext.dat
335 export THETPARPDB=$DD/thetaml_ext.5parm
336 export ROTPARPDB=$DD/scgauss_ext.parm
337 export PATTERN=$DD/patterns.cart
338 export LIPTRANPAR=$DD/Lip_tran_initial_ext.parm
339 export CONTFUNC=GB
340 export SIDEP=$DD/contact_ext.3.parm
341 export SCRATCHDIR=.
342 #-----------------------------------------------------------------------------
343 echo CTEST_FULL_OUTPUT
344 ${mpiexec} ${boot_lam} ${np} $2 $WHAM_BIN 
345 ./wham_check.sh $1 
346 ")
347 endif(UNRES_MD_FF STREQUAL "E0LL2Y")
348
349 if(UNRES_MD_FF STREQUAL "NEWCORR")
350 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/scripts/wham_mpi_E0LL2Y.sh
351 "#!/bin/sh
352 export POT=GB
353 export PREFIX=$1
354 #-----------------------------------------------------------------------------
355 WHAM_BIN=${CMAKE_BINARY_DIR}/bin/${UNRES_WHAM_M_BIN}
356 #-----------------------------------------------------------------------------
357 DD=${CMAKE_SOURCE_DIR}/PARAM
358 export BONDPAR=$DD/bond_AM1_ext_dum.parm
359 export THETPAR=$DD/theta_opt.parm.OPT_TRP1_FSD_Villin_E0L_QHK_N9L_LX7_BDD_I18
360 export ROTPAR=$DD/rotamers_AM1_aura_ext.10022007.parm
361 export TORPAR=$DD/torsion_abinitio.parm-2d-all-DL-03-02-2cos
362 export TORDPAR=$DD/pot_tord_G631_DIL_ext.parm
363 export ELEPAR=$DD/electr_631Gdp_ext.parm
364 export SIDEPAR=$DD/scinter_GB_ext_lip.parm
365 export FOURIER=$DD/fourier_opt.parm.OPT_TRP1_FSD_Villin_E0L_QHK_N9L_LX7_BDD_I18
366 export SCPPAR=$DD/scp_ext.parm
367 export SCCORPAR=$DD/sccor_am1_pawel_ext.dat
368 export THETPARPDB=$DD/thetaml_ext.5parm
369 export ROTPARPDB=$DD/scgauss_ext.parm
370 export PATTERN=$DD/patterns.cart
371 export LIPTRANPAR=$DD/Lip_tran_initial_ext.parm
372 export CONTFUNC=GB
373 export SIDEP=$DD/contact_ext.3.parm
374 export SCRATCHDIR=.
375 #-----------------------------------------------------------------------------
376 echo CTEST_FULL_OUTPUT
377 ${mpiexec} ${boot_lam} ${np} $2 $WHAM_BIN 
378 ./wham_check.sh $1 
379 ")
380 endif(UNRES_MD_FF STREQUAL "NEWCORR")
381
382
383 #
384 # File permissions workaround
385 #
386 FILE(   COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/wham_mpi_E0LL2Y.sh 
387         DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
388         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
389 )
390
391
392 if(UNRES_MD_FF STREQUAL "E0LL2Y")
393
394  FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/wham_check.sh
395         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} 
396         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
397  )
398
399  FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1L2Y_wham.inp
400         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
401
402  FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1L2Y_remd_MD000.cx
403         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
404
405  FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1L2Y.pdb
406         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
407
408  if(UNRES_DFA)
409   FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/dfa
410         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
411
412   FILE( COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/wham_mpi_E0LL2Y.sh 
413         DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/dfa
414         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
415   )
416
417   add_test(NAME WHAM_M_remd_dfa COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/dfa/wham_mpi_E0LL2Y.sh dfa_wham 2  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/dfa )
418  endif(UNRES_DFA)
419
420  add_test(NAME WHAM_M_remd COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/wham_mpi_E0LL2Y.sh 1L2Y_wham 2 )
421 endif(UNRES_MD_FF STREQUAL "E0LL2Y")
422
423 if(UNRES_MD_FF STREQUAL "NEWCORR")
424
425  FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/newcorr/wham_check.sh
426         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} 
427         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
428  )
429
430  FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/newcorr/1L2Y_wham.inp
431         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
432
433  FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/newcorr/1L2Y_remd_MD000.cx
434         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
435
436  FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1L2Y.pdb
437         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
438
439  if(UNRES_DFA)
440   FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/dfa/
441         DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/dfa/ FILES_MATCHING PATTERN "*.pdb" )
442
443   FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/dfa/
444         DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/dfa/ FILES_MATCHING PATTERN "*.sco" )
445
446   FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/dfa/
447         DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/dfa/ FILES_MATCHING PATTERN "*.dat" )
448
449   FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/dfa_newcorr/
450         DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/dfa/ FILES_MATCHING PATTERN "*" )
451
452   FILE( COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/wham_mpi_E0LL2Y.sh 
453         DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/dfa
454         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
455   )
456
457   add_test(NAME WHAM_M_remd_dfa COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/dfa/wham_mpi_E0LL2Y.sh dfa_wham 2  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/dfa )
458  endif(UNRES_DFA)
459
460  add_test(NAME WHAM_M_remd COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/wham_mpi_E0LL2Y.sh 1L2Y_wham 2 )
461
462 endif(UNRES_MD_FF STREQUAL "NEWCORR")