restoring read2sigma code after wrong merge
[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         ssMD.F
83         dfa.F
84 )
85
86 set(UNRES_MD_SRC3 
87         energy_p_new_barrier.F 
88         energy_p_new-sep_barrier.F 
89         gradient_p.F )
90
91 set(UNRES_MD_PP_SRC
92         cartder.F
93         chainbuild.F 
94         checkder_p.F 
95         compare_s1.F 
96         dihed_cons.F 
97         econstr_local.F 
98         energy_p_new_barrier.F 
99         energy_p_new-sep_barrier.F 
100         energy_split-sep.F 
101         entmcm.F 
102         gen_rand_conf.F
103         geomout.F 
104         gradient_p.F 
105         initialize_p.F 
106         intcartderiv.F 
107         lagrangian_lesyng.F 
108         mc.F 
109         mcm.F 
110         MD_A-MTS.F
111         minimize_p.F 
112         minim_mcmf.F 
113         MP.F 
114         MREMD.F 
115         parmread.F 
116         prng_32.F
117         q_measure1.F 
118         q_measure3.F 
119         q_measure.F
120         rattle.F 
121         readpdb.F 
122         readrtns.F 
123         regularize.F 
124         rmsd.F 
125         sc_move.F 
126         stochfric.F 
127         test.F 
128         thread.F 
129         timing.F
130         unres.F 
131         proc_proc.c 
132
133
134 #================================================
135 # Set comipiler flags for different sourcefiles  
136 #================================================
137 if (Fortran_COMPILER_NAME STREQUAL "ifort")
138   set(FFLAGS0 "-ip -w" ) 
139   set(FFLAGS1 "-w -g -d2 -CA -CB" ) 
140   set(FFLAGS2 "-w -g -00 ")
141   #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" )
142   set(FFLAGS3 "-w -ipo " )
143 elseif (Fortran_COMPILER_NAME STREQUAL "gfortran")
144   set(FFLAGS0 "-std=legacy -I. " ) 
145   set(FFLAGS1 "-std=legacy -g -I. " ) 
146   set(FFLAGS2 "-std=legacy -I. ")
147   #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" )
148   set(FFLAGS3 "-std=legacy -I. " )
149 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
150
151
152 # Add MPI compiler flags
153 if(UNRES_WITH_MPI)
154   set(FFLAGS0 "${FFLAGS0} -I${MPI_Fortran_INCLUDE_PATH}")
155   set(FFLAGS1 "${FFLAGS1} -I${MPI_Fortran_INCLUDE_PATH}")
156   set(FFLAGS2 "${FFLAGS2} -I${MPI_Fortran_INCLUDE_PATH}")
157   set(FFLAGS3 "${FFLAGS3} -I${MPI_Fortran_INCLUDE_PATH}")
158 endif(UNRES_WITH_MPI)
159
160 set_property(SOURCE ${UNRES_MD_SRC0} APPEND PROPERTY COMPILE_FLAGS ${FFLAGS0} )
161 #set_property(SOURCE ${UNRES_MD_SRC1} PROPERTY COMPILE_FLAGS ${FFLAGS1} )
162 #set_property(SOURCE ${UNRES_MD_SRC2} PROPERTY COMPILE_FLAGS ${FFLAGS2} )
163 set_property(SOURCE ${UNRES_MD_SRC3} PROPERTY COMPILE_FLAGS ${FFLAGS3} )
164
165 #=========================================
166 # Settings for GAB force field 
167 #=========================================
168 if(UNRES_MD_FF STREQUAL "GAB" )
169   # set preprocesor flags   
170   set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0 -DCRYST_BOND -DCRYST_THETA -DCRYST_SC")
171
172 #=========================================
173 #  Settings for E0LL2Y force field
174 #=========================================
175 elseif(UNRES_MD_FF STREQUAL "E0LL2Y")
176   # set preprocesor flags   
177   set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0" )
178 endif(UNRES_MD_FF STREQUAL "GAB")
179
180 #=========================================
181 # System specific flags
182 #=========================================
183 if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
184   set(CPPFLAGS "${CPPFLAGS} -DLINUX") 
185 endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
186
187 #=========================================
188 # Compiler specific flags
189 #=========================================
190
191 if (Fortran_COMPILER_NAME STREQUAL "ifort")
192   # Add ifort preprocessor flags
193   set(CPPFLAGS "${CPPFLAGS} -DPGI") 
194 elseif (Fortran_COMPILER_NAME STREQUAL "f95")
195   # Add new gfortran flags
196   set(CPPFLAGS "${CPPFLAGS} -DG77") 
197 elseif (Fortran_COMPILER_NAME STREQUAL "gfortran")
198   # Add old gfortran flags
199   set(CPPFLAGS "${CPPFLAGS} -DG77") 
200 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
201
202 #=========================================
203 # Add MPI preprocessor flags
204 #=========================================
205 if (UNRES_WITH_MPI)
206   set(CPPFLAGS "${CPPFLAGS} -DMP -DMPI") 
207 endif(UNRES_WITH_MPI)
208
209 #=========================================
210 # Add 64-bit specific preprocessor flags
211 #=========================================
212 if (architektura STREQUAL "64")
213   set(CPPFLAGS "${CPPFLAGS} -DAMD64")
214 endif (architektura STREQUAL "64")
215
216 #=========================================
217 # Apply preprocesor flags to *.F files
218 #=========================================
219 set_property(SOURCE ${UNRES_MD_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} )  
220
221
222 #========================================
223 #  Setting binary name
224 #========================================
225 if(UNRES_WITH_MPI) 
226   # binary with mpi
227   set(UNRES_BIN "unresMD_${Fortran_COMPILER_NAME}_MPICH_${UNRES_MD_FF}.exe")
228 else(UNRES_WITH_MPI)
229   # binary without mpi
230   set(UNRES_BIN "unresMD_${Fortran_COMPILER_NAME}_single_${UNRES_MD_FF}.exe")
231 endif(UNRES_WITH_MPI)  
232
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 # add include path
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 MD sources
267 #=========================================
268 set(UNRES_MD_SRCS ${UNRES_MD_SRC0} ${UNRES_MD_SRC3} ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f )
269
270
271 #=========================================
272 # Build the binary
273 #=========================================
274 add_executable(UNRES_BIN-MD ${UNRES_MD_SRCS} )
275 set_target_properties(UNRES_BIN-MD PROPERTIES OUTPUT_NAME ${UNRES_BIN})
276 set_property(TARGET UNRES_BIN-MD PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
277 #add_dependencies (${UNRES_BIN} ${UNRES_XDRFLIB})
278
279
280 #=========================================
281 # Link libraries
282 #=========================================
283 # link MPI library (libmpich.a)  
284 if(UNRES_WITH_MPI)
285   target_link_libraries( UNRES_BIN-MD ${MPI_Fortran_LIBRARIES} )
286 endif(UNRES_WITH_MPI)
287 # link libxdrf.a 
288 #message("UNRES_XDRFLIB=${UNRES_XDRFLIB}")
289 target_link_libraries( UNRES_BIN-MD xdrf )
290
291 #=========================================
292 # Install Path
293 #=========================================
294 install(TARGETS UNRES_BIN-MD DESTINATION ${CMAKE_INSTALL_PREFIX}) 
295
296 #=========================================
297 # TESTS 
298 #=========================================
299
300 #-- Copy all the data files from the test directory into the source directory
301 #SET(UNRES_TEST_FILES
302 #       ala10.inp
303 #    )
304
305 #FOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES})
306 #      SET (unres_test_dest "${CMAKE_CURRENT_BINARY_DIR}/${UNRES_TEST_FILE}")
307 #      MESSAGE (STATUS " Copying ${UNRES_TEST_FILE} from ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} to ${unres_test_dest}")
308 #      ADD_CUSTOM_COMMAND (
309 #          TARGET     ${UNRES_BIN}
310 #          POST_BUILD
311 #          COMMAND    ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} ${unres_test_dest}
312 #      )
313 #ENDFOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES})
314
315 #=========================================
316 # Generate data test files
317 #=========================================
318 #  test_single_ala.sh
319 #=========================================
320
321 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_single_ala.sh
322 "#!/bin/sh
323 export POT=GB
324 export PREFIX=ala10
325 #-----------------------------------------------------------------------------
326 UNRES_BIN=${CMAKE_BINARY_DIR}/bin/${UNRES_BIN}
327 #-----------------------------------------------------------------------------
328 DD=${CMAKE_SOURCE_DIR}/PARAM
329 export BONDPAR=$DD/bond.parm
330 export THETPAR=$DD/thetaml.5parm
331 export ROTPAR=$DD/scgauss.parm
332 export TORPAR=$DD/torsion_631Gdp.parm
333 export TORDPAR=$DD/torsion_double_631Gdp.parm
334 export ELEPAR=$DD/electr_631Gdp.parm
335 export SIDEPAR=$DD/sc_GB_opt.1gab_3S_qclass5no310-shan2-sc-16-10-8k
336 export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3
337 export SCPPAR=$DD/scp.parm
338 export SCCORPAR=$DD/sccor_pdb_shelly.dat
339 export PATTERN=$DD/patterns.cart
340 #-----------------------------------------------------------------------------
341 $UNRES_BIN
342 ")
343
344 #
345 # File permissions workaround
346 #
347 FILE(   COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_single_ala.sh 
348         DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
349         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
350 )
351
352
353
354 #=========================================
355 #  ala10.inp
356 #=========================================
357
358 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ala10.inp
359 "ala10 unblocked
360 SEED=-1111333 MD ONE_LETTER rescale_mode=2 
361 nstep=15000 ntwe=100 ntwx=1000 dt=0.1 lang=0 tbf t_bath=300 damax=1.0          &
362 reset_moment=1000 reset_vel=1000
363 WLONG=1.35279 WSCP=1.59304 WELEC=0.71534 WBOND=1.00000 WANG=1.13873            &
364 WSCLOC=0.16258 WTOR=1.98599 WTORD=1.57069 WCORRH=0.42887 WCORR5=0.00000        &
365 WCORR6=0.00000 WEL_LOC=0.16036 WTURN3=1.68722 WTURN4=0.66230 WTURN6=0.00000    &
366 WVDWPP=0.11371 WHPB=1.00000                                                    &
367 CUTOFF=7.00000 WCORR4=0.00000
368 12
369 XAAAAAAAAAAX 
370  0
371  0
372    90.0000   90.0000   90.0000  90.000   90.000   90.000   90.000   90.000 
373    90.0000   90.0000
374   180.0000  180.0000  180.0000 180.000  180.000  180.000  180.000  180.000
375   180.0000
376   110.0000  110.0000  110.0000 100.000  110.000  100.000  110.000  110.000 
377   110.0000  110.0000
378  -120.0000 -120.0000 -120.000 -120.000 -120.000 -120.000 -120.000 -120.000
379  -120.0000 -120.0000
380 ")
381
382
383 # Add tests
384
385 if(NOT UNRES_WITH_MPI)
386                   
387   add_test(NAME UNRES_MD_Ala10 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh )
388
389 else(NOT UNRES_WITH_MPI)
390
391
392   add_test(NAME UNRES_MD_MPI_Ala10 COMMAND mpiexec -boot ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh )
393
394 endif(NOT UNRES_WITH_MPI)
395