Files to working MD_DFA
[unres.git] / source / unres / src_MD_DFA / 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_DFA_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         dfa.F 
28         dihed_cons.F 
29         djacob.f 
30         econstr_local.F
31         eigen.f 
32         elecont.f 
33         energy_split-sep.F 
34         entmcm.F
35         fitsq.f 
36         gauss.f 
37         gen_rand_conf.F
38         geomout.F 
39         gnmr1.f 
40         intcartderiv.F 
41         initialize_p.F 
42         int_to_cart.f 
43         intcor.f 
44         intlocal.f 
45         kinetic_lesyng.f 
46         lagrangian_lesyng.F 
47         local_move.f 
48         map.f 
49         matmult.f 
50         mc.F 
51         mcm.F 
52         MD_A-MTS.F 
53         minimize_p.F 
54         minim_mcmf.F 
55         misc.f 
56         moments.f
57         MP.F 
58         MREMD.F 
59         muca_md.f 
60         parmread.F 
61         pinorm.f 
62         printmat.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_DFA_SRC0 ${UNRES_MD_DFA_SRC0} prng.f ) 
86 elseif(Fortran_COMPILER_NAME STREQUAL "mpif90")
87   set(UNRES_MD_SRC0 ${UNRES_MD_SRC0} prng.f )
88 else()
89   set(UNRES_MD_DFA_SRC0 ${UNRES_MD_DFA_SRC0} prng_32.F )
90 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
91
92
93 set(UNRES_MD_DFA_SRC3 
94         energy_p_new_barrier.F 
95         energy_p_new-sep_barrier.F 
96         gradient_p.F )
97
98 set(UNRES_MD_DFA_PP_SRC
99         cartder.F
100         chainbuild.F 
101         checkder_p.F 
102         compare_s1.F 
103         dihed_cons.F
104         dfa.F
105         econstr_local.F 
106         energy_p_new_barrier.F 
107         energy_p_new-sep_barrier.F 
108         energy_split-sep.F 
109         entmcm.F 
110         gen_rand_conf.F
111         geomout.F 
112         gradient_p.F 
113         initialize_p.F 
114         intcartderiv.F 
115         lagrangian_lesyng.F 
116         mc.F 
117         mcm.F 
118         MD_A-MTS.F
119         minimize_p.F 
120         minim_mcmf.F 
121         MP.F 
122         MREMD.F 
123         parmread.F 
124         q_measure1.F 
125         q_measure3.F 
126         q_measure.F
127         rattle.F 
128         readpdb.F 
129         readrtns.F 
130         regularize.F 
131         rmsd.F 
132         sc_move.F 
133         stochfric.F 
134         test.F 
135         thread.F 
136         timing.F
137         unres.F 
138         proc_proc.c 
139
140
141
142 if(NOT Fortran_COMPILER_NAME STREQUAL "ifort")
143   set(UNRES_MD_PP_SRC ${UNRES_MD_PP_SRC} prng_32.F) 
144 endif(NOT Fortran_COMPILER_NAME STREQUAL "ifort")
145
146 #================================================
147 # Set comipiler flags for different sourcefiles  
148 #================================================
149 if (Fortran_COMPILER_NAME STREQUAL "ifort")
150   set(FFLAGS0 "-ip -w" ) 
151   set(FFLAGS1 "-w -g -d2 -CA -CB" ) 
152   set(FFLAGS2 "-w -g -00 ")
153   #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" )
154   set(FFLAGS3 "-w -ipo " )
155 elseif (Fortran_COMPILER_NAME STREQUAL "gfortran")
156   set(FFLAGS0 "-std=legacy -I. " ) 
157   set(FFLAGS1 "-std=legacy -g -I. " ) 
158   set(FFLAGS2 "-std=legacy -I. ")
159   #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" )
160   set(FFLAGS3 "-std=legacy -I. " )
161 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
162
163
164 # Add MPI compiler flags
165 if(UNRES_WITH_MPI)
166   set(FFLAGS0 "${FFLAGS0} -I${MPIF_INCLUDE_DIRECTORIES}")
167   set(FFLAGS1 "${FFLAGS1} -I${MPIF_INCLUDE_DIRECTORIES}")
168   set(FFLAGS2 "${FFLAGS2} -I${MPIF_INCLUDE_DIRECTORIES}")
169   set(FFLAGS3 "${FFLAGS3} -I${MPIF_INCLUDE_DIRECTORIES}")
170 endif(UNRES_WITH_MPI)
171
172 set_property(SOURCE ${UNRES_MD_DFA_SRC0} APPEND PROPERTY COMPILE_FLAGS ${FFLAGS0} )
173 #set_property(SOURCE ${UNRES_MD_DFA_SRC1} PROPERTY COMPILE_FLAGS ${FFLAGS1} )
174 #set_property(SOURCE ${UNRES_MD_DFA_SRC2} PROPERTY COMPILE_FLAGS ${FFLAGS2} )
175 set_property(SOURCE ${UNRES_MD_DFA_SRC3} PROPERTY COMPILE_FLAGS ${FFLAGS3} )
176
177 #=========================================
178 # Settings for GAB force field 
179 #=========================================
180 if(UNRES_MD_FF STREQUAL "GAB" )
181   # set preprocesor flags   
182   set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0 -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" )
183
184 #=========================================
185 #  Settings for E0LL2Y force field
186 #=========================================
187 elseif(UNRES_MD_FF STREQUAL "E0LL2Y")
188   # set preprocesor flags   
189   set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0" )
190 endif(UNRES_MD_FF STREQUAL "GAB")
191
192 #=========================================
193 # System specific flags
194 #=========================================
195 if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
196   set(CPPFLAGS "${CPPFLAGS} -DLINUX") 
197 endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
198
199 #=========================================
200 # Compiler specific flags
201 #=========================================
202
203 if (Fortran_COMPILER_NAME STREQUAL "ifort")
204   # Add ifort preprocessor flags
205   set(CPPFLAGS "${CPPFLAGS} -DPGI") 
206 elseif (Fortran_COMPILER_NAME STREQUAL "f95")
207   # Add new gfortran flags
208   set(CPPFLAGS "${CPPFLAGS} -DG77") 
209 elseif (Fortran_COMPILER_NAME STREQUAL "gfortran")
210   # Add old gfortran flags
211   set(CPPFLAGS "${CPPFLAGS} -DG77") 
212 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
213
214 #=========================================
215 # Add MPI preprocessor flags
216 #=========================================
217 if (UNRES_WITH_MPI)
218   set(CPPFLAGS "${CPPFLAGS} -DMP -DMPI") 
219 endif(UNRES_WITH_MPI)
220
221 #=========================================
222 # Apply preprocesor flags to *.F files
223 #=========================================
224 set_property(SOURCE ${UNRES_MD_DFA_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} )  
225
226
227 #========================================
228 #  Setting binary name
229 #========================================
230 if(UNRES_WITH_MPI) 
231   # binary with mpi
232   set(UNRES_BIN "unres_${Fortran_COMPILER_NAME}_MPICH_${UNRES_MD_FF}.exe")
233 else(UNRES_WITH_MPI)
234   # binary without mpi
235   set(UNRES_BIN "unres_${Fortran_COMPILER_NAME}_single_${UNRES_MD_FF}.exe")
236 endif(UNRES_WITH_MPI)  
237
238 #=========================================
239 # cinfo.f workaround for cmake
240 #=========================================
241 # get the current date  
242 TODAY(DATE)
243 # generate cinfo.f
244
245 set(CINFO "${CMAKE_CURRENT_BINARY_DIR}/cinfo.f")
246 FILE(WRITE ${CINFO}
247 "C CMake generated file
248        subroutine cinfo
249        include 'COMMON.IOUNITS'
250        write(iout,*)'++++ Compile info ++++'
251        write(iout,*)'Version ${UNRES_MAJOR}.${UNRES_MINOR} build ${UNRES_PATCH}'
252 ")
253
254 CINFO_FORMAT(${CINFO} "Compiled" "${DATE}" )
255 CINFO_FORMAT(${CINFO} "Compiled by" "$ENV{USER}@$ENV{HOST}" )
256 CINFO_FORMAT(${CINFO} "OS name:" "${CMAKE_SYSTEM_NAME}" )
257 CINFO_FORMAT(${CINFO} "OS release:" "${CMAKE_SYSTEM}" )
258 CINFO_FORMAT(${CINFO} "Fortran Compiler:" "${CMAKE_Fortran_COMPILER}" )
259 CINFO_FORMAT(${CINFO} "MD Force field:" "${UNRES_MD_FF}" )
260 CINFO_FORMAT(${CINFO} "CPPFLAGS =" "${CPPFLAGS}")
261
262 FILE(APPEND ${CINFO} 
263 "       write(iout,*)'++++ End of compile info ++++'  
264        return 
265        end ")
266
267 # add include path
268 set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f PROPERTY COMPILE_FLAGS "${FFLAGS0} -I${CMAKE_CURRENT_SOURCE_DIR}")
269
270 #=========================================
271 # Set full unres MD sources
272 #=========================================
273 set(UNRES_MD_DFA_SRCS ${UNRES_MD_DFA_SRC0} ${UNRES_MD_DFA_SRC3} ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f )
274
275
276 #=========================================
277 # Build the binary
278 #=========================================
279 add_executable(UNRES_BIN-MD-DFA ${UNRES_MD_DFA_SRCS} )
280 set_target_properties(UNRES_BIN-MD-DFA PROPERTIES OUTPUT_NAME ${UNRES_BIN})
281 #set_property(TARGET ${UNRES_BIN} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/unres/MD )
282 #add_dependencies (${UNRES_BIN} ${UNRES_XDRFLIB})
283
284
285 #=========================================
286 # Link libraries
287 #=========================================
288 # link MPI library (libmpich.a)  
289 if(UNRES_WITH_MPI)
290   target_link_libraries( UNRES_BIN-MD-DFA ${MPIF_LIBRARIES} )
291 endif(UNRES_WITH_MPI)
292 # link libxdrf.a 
293 #message("UNRES_XDRFLIB=${UNRES_XDRFLIB}")
294 target_link_libraries( UNRES_BIN-MD-DFA xdrf )
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=./${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/rotcorr_AM1.parm
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