removed obsolite code in ssMD.F files
[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         ssMD.F
76         stochfric.F 
77         sumsld.f 
78         surfatom.f 
79         test.F
80         timing.F
81         thread.F 
82         unres.F
83 )
84
85 set(UNRES_MD_SRC3 
86         energy_p_new_barrier.F 
87         energy_p_new-sep_barrier.F 
88         gradient_p.F )
89
90 set(UNRES_MD_PP_SRC
91         cartder.F
92         chainbuild.F 
93         checkder_p.F 
94         compare_s1.F 
95         dihed_cons.F 
96         econstr_local.F 
97         energy_p_new_barrier.F 
98         energy_p_new-sep_barrier.F 
99         energy_split-sep.F 
100         entmcm.F 
101         gen_rand_conf.F
102         geomout.F 
103         gradient_p.F 
104         initialize_p.F 
105         intcartderiv.F 
106         lagrangian_lesyng.F 
107         mc.F 
108         mcm.F 
109         MD_A-MTS.F
110         minimize_p.F 
111         minim_mcmf.F 
112         MP.F 
113         MREMD.F 
114         parmread.F 
115         prng_32.F
116         q_measure1.F 
117         q_measure3.F 
118         q_measure.F
119         rattle.F 
120         readpdb.F 
121         readrtns.F 
122         regularize.F 
123         rmsd.F 
124         sc_move.F 
125         ssMD.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 elseif (Fortran_COMPILER_NAME STREQUAL "g77")
150   set(FFLAGS0 "-I ${CMAKE_CURRENT_SOURCE_DIR} " ) 
151   set(FFLAGS1 "-g -I ${CMAKE_CURRENT_SOURCE_DIR} " ) 
152   set(FFLAGS2 "-I ${CMAKE_CURRENT_SOURCE_DIR} ")
153   set(FFLAGS3 "-I ${CMAKE_CURRENT_SOURCE_DIR} " )
154 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
155
156
157 # Add MPI compiler flags
158 if(UNRES_WITH_MPI)
159   set(FFLAGS0 "${FFLAGS0} -I${MPI_Fortran_INCLUDE_PATH}")
160   set(FFLAGS1 "${FFLAGS1} -I${MPI_Fortran_INCLUDE_PATH}")
161   set(FFLAGS2 "${FFLAGS2} -I${MPI_Fortran_INCLUDE_PATH}")
162   set(FFLAGS3 "${FFLAGS3} -I${MPI_Fortran_INCLUDE_PATH}")
163 endif(UNRES_WITH_MPI)
164
165 set_property(SOURCE ${UNRES_MD_SRC0} APPEND PROPERTY COMPILE_FLAGS ${FFLAGS0} )
166 #set_property(SOURCE ${UNRES_MD_SRC1} PROPERTY COMPILE_FLAGS ${FFLAGS1} )
167 #set_property(SOURCE ${UNRES_MD_SRC2} PROPERTY COMPILE_FLAGS ${FFLAGS2} )
168 set_property(SOURCE ${UNRES_MD_SRC3} PROPERTY COMPILE_FLAGS ${FFLAGS3} )
169
170 #=========================================
171 # Settings for GAB force field 
172 #=========================================
173 if(UNRES_MD_FF STREQUAL "GAB" )
174   # set preprocesor flags   
175   set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0 -DCRYST_BOND -DCRYST_THETA -DCRYST_SC -DSCCORPDB" )
176
177 #=========================================
178 #  Settings for E0LL2Y force field
179 #=========================================
180 elseif(UNRES_MD_FF STREQUAL "E0LL2Y")
181   # set preprocesor flags   
182   set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0 -DSCCORPDB" )
183 endif(UNRES_MD_FF STREQUAL "GAB")
184
185 #=========================================
186 # System specific flags
187 #=========================================
188 if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
189   set(CPPFLAGS "${CPPFLAGS} -DLINUX") 
190 endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
191
192 #=========================================
193 # Compiler specific flags
194 #=========================================
195
196 if (Fortran_COMPILER_NAME STREQUAL "ifort")
197   # Add ifort preprocessor flags
198   set(CPPFLAGS "${CPPFLAGS} -DPGI") 
199 elseif (Fortran_COMPILER_NAME STREQUAL "f95")
200   # Add new gfortran flags
201   set(CPPFLAGS "${CPPFLAGS} -DG77") 
202 elseif (Fortran_COMPILER_NAME STREQUAL "gfortran")
203   # Add old gfortran flags
204   set(CPPFLAGS "${CPPFLAGS} -DG77") 
205 elseif (Fortran_COMPILER_NAME STREQUAL "g77")
206   # Add old gfortran flags
207   set(CPPFLAGS "${CPPFLAGS} -DG77")
208 else(Fortran_COMPILER_NAME STREQUAL "ifort")
209   # Default preprocessor flag
210   set(CPPFLAGS "${CPPFLAGS} -DPGI")
211 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
212
213 #=========================================
214 # Add MPI preprocessor flags
215 #=========================================
216 if (UNRES_WITH_MPI)
217   set(CPPFLAGS "${CPPFLAGS} -DMP -DMPI") 
218 endif(UNRES_WITH_MPI)
219
220 #=========================================
221 # Add 64-bit specific preprocessor flags
222 #=========================================
223 if (architektura STREQUAL "64")
224   set(CPPFLAGS "${CPPFLAGS} -DAMD64")
225 endif (architektura STREQUAL "64")
226
227 #=========================================
228 # Apply preprocesor flags to *.F files
229 #=========================================
230 set_property(SOURCE ${UNRES_MD_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} )  
231
232
233 #========================================
234 #  Setting binary name
235 #========================================
236 if(UNRES_WITH_MPI) 
237   # binary with mpi
238   set(UNRES_BIN "unresMD_${Fortran_COMPILER_NAME}_MPICH_${UNRES_MD_FF}.exe")
239 else(UNRES_WITH_MPI)
240   # binary without mpi
241   set(UNRES_BIN "unresMD_${Fortran_COMPILER_NAME}_single_${UNRES_MD_FF}.exe")
242 endif(UNRES_WITH_MPI)  
243
244 #=========================================
245 # cinfo.f workaround for cmake
246 #=========================================
247 # get the current date  
248 TODAY(DATE)
249 # generate cinfo.f
250
251 set(CINFO "${CMAKE_CURRENT_BINARY_DIR}/cinfo.f")
252 FILE(WRITE ${CINFO}
253 "C CMake generated file
254        subroutine cinfo
255        include 'COMMON.IOUNITS'
256        write(iout,*)'++++ Compile info ++++'
257        write(iout,*)'Version ${UNRES_MAJOR}.${UNRES_MINOR} build ${UNRES_PATCH}'
258 ")
259
260 CINFO_FORMAT(${CINFO} "Compiled" "${DATE}" )
261 CINFO_FORMAT(${CINFO} "Compiled by" "$ENV{USER}@$ENV{HOST}" )
262 CINFO_FORMAT(${CINFO} "OS name:" "${CMAKE_SYSTEM_NAME}" )
263 CINFO_FORMAT(${CINFO} "OS release:" "${CMAKE_SYSTEM}" )
264 CINFO_FORMAT(${CINFO} "Fortran Compiler:" "${CMAKE_Fortran_COMPILER}" )
265 CINFO_FORMAT(${CINFO} "MD Force field:" "${UNRES_MD_FF}" )
266 CINFO_FORMAT(${CINFO} "CPPFLAGS =" "${CPPFLAGS}")
267
268 FILE(APPEND ${CINFO} 
269 "       write(iout,*)'++++ End of compile info ++++'  
270        return 
271        end ")
272
273 # add include path
274 set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f PROPERTY COMPILE_FLAGS "${FFLAGS0} -I${CMAKE_CURRENT_SOURCE_DIR}")
275
276 #=========================================
277 # Set full unres MD sources
278 #=========================================
279 set(UNRES_MD_SRCS ${UNRES_MD_SRC0} ${UNRES_MD_SRC3} ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f )
280
281
282 #=========================================
283 # Build the binary
284 #=========================================
285 add_executable(UNRES_BIN-MD ${UNRES_MD_SRCS} )
286 set_target_properties(UNRES_BIN-MD PROPERTIES OUTPUT_NAME ${UNRES_BIN})
287 set_property(TARGET UNRES_BIN-MD PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
288 #add_dependencies (${UNRES_BIN} ${UNRES_XDRFLIB})
289
290
291 #=========================================
292 # Link libraries
293 #=========================================
294 # link MPI library (libmpich.a)  
295 if(UNRES_WITH_MPI)
296   target_link_libraries( UNRES_BIN-MD ${MPI_Fortran_LIBRARIES} )
297 endif(UNRES_WITH_MPI)
298 # link libxdrf.a 
299 #message("UNRES_XDRFLIB=${UNRES_XDRFLIB}")
300 target_link_libraries( UNRES_BIN-MD xdrf )
301
302 #=========================================
303 # Install Path
304 #=========================================
305 install(TARGETS UNRES_BIN-MD DESTINATION ${CMAKE_INSTALL_PREFIX}/unres/MD) 
306
307 #=========================================
308 # TESTS 
309 #=========================================
310
311 #-- Copy all the data files from the test directory into the source directory
312 #SET(UNRES_TEST_FILES
313 #       ala10.inp
314 #    )
315
316 #FOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES})
317 #      SET (unres_test_dest "${CMAKE_CURRENT_BINARY_DIR}/${UNRES_TEST_FILE}")
318 #      MESSAGE (STATUS " Copying ${UNRES_TEST_FILE} from ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} to ${unres_test_dest}")
319 #      ADD_CUSTOM_COMMAND (
320 #          TARGET     ${UNRES_BIN}
321 #          POST_BUILD
322 #          COMMAND    ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} ${unres_test_dest}
323 #      )
324 #ENDFOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES})
325
326 #=========================================
327 # Generate data test files
328 #=========================================
329 #  test_single_ala.sh
330 #=========================================
331 #
332 # Set parmaeters depending on force field
333 if(UNRES_MD_FF STREQUAL "GAB")
334    set(UNRES_BONDPAR "bond.parm")       
335 elseif(UNRES_MD_FF STREQUAL "E0LL2Y")
336    set(UNRES_BONDPAR "bond_AM1.parm")
337 endif(UNRES_MD_FF STREQUAL "GAB")
338
339 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_single_ala.sh
340 "#!/bin/sh
341 export POT=GB
342 export PREFIX=ala10
343 #-----------------------------------------------------------------------------
344 UNRES_BIN=${CMAKE_BINARY_DIR}/bin/${UNRES_BIN}
345 #-----------------------------------------------------------------------------
346 DD=${CMAKE_SOURCE_DIR}/PARAM
347 export BONDPAR=$DD/${UNRES_BONDPAR}
348 export THETPAR=$DD/thetaml.5parm
349 export ROTPAR=$DD/scgauss.parm
350 export TORPAR=$DD/torsion_631Gdp.parm
351 export TORDPAR=$DD/torsion_double_631Gdp.parm
352 export ELEPAR=$DD/electr_631Gdp.parm
353 export SIDEPAR=$DD/sc_GB_opt.1gab_3S_qclass5no310-shan2-sc-16-10-8k
354 export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3
355 export SCPPAR=$DD/scp.parm
356 export SCCORPAR=$DD/sccor_pdb_shelly.dat
357 export PATTERN=$DD/patterns.cart
358 #-----------------------------------------------------------------------------
359 $UNRES_BIN
360 ")
361
362 #
363 # File permissions workaround
364 #
365 FILE(   COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_single_ala.sh 
366         DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
367         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
368 )
369
370
371
372 #=========================================
373 #  ala10.inp
374 #=========================================
375
376 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ala10.inp
377 "ala10 unblocked
378 SEED=-1111333 MD ONE_LETTER rescale_mode=2 
379 nstep=15000 ntwe=100 ntwx=1000 dt=0.1 lang=0 tbf t_bath=300 damax=1.0          &
380 reset_moment=1000 reset_vel=1000
381 WLONG=1.35279 WSCP=1.59304 WELEC=0.71534 WBOND=1.00000 WANG=1.13873            &
382 WSCLOC=0.16258 WTOR=1.98599 WTORD=1.57069 WCORRH=0.42887 WCORR5=0.00000        &
383 WCORR6=0.00000 WEL_LOC=0.16036 WTURN3=1.68722 WTURN4=0.66230 WTURN6=0.00000    &
384 WVDWPP=0.11371 WHPB=1.00000                                                    &
385 CUTOFF=7.00000 WCORR4=0.00000
386 12
387 XAAAAAAAAAAX 
388  0
389  0
390    90.0000   90.0000   90.0000  90.000   90.000   90.000   90.000   90.000 
391    90.0000   90.0000
392   180.0000  180.0000  180.0000 180.000  180.000  180.000  180.000  180.000
393   180.0000
394   110.0000  110.0000  110.0000 100.000  110.000  100.000  110.000  110.000 
395   110.0000  110.0000
396  -120.0000 -120.0000 -120.000 -120.000 -120.000 -120.000 -120.000 -120.000
397  -120.0000 -120.0000
398 ")
399
400
401 # Add tests
402
403 if(NOT UNRES_WITH_MPI)
404                   
405   add_test(NAME UNRES_MD_Ala10 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh )
406
407 else(NOT UNRES_WITH_MPI)
408
409
410   add_test(NAME UNRES_MD_MPI_Ala10 COMMAND mpiexec -boot ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh )
411
412 endif(NOT UNRES_WITH_MPI)
413