prng.f unification
[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 )
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         stochfric.F 
126         test.F 
127         thread.F 
128         timing.F
129         unres.F 
130         proc_proc.c 
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 "-std=legacy -I. " ) 
144   set(FFLAGS1 "-std=legacy -g -I. " ) 
145   set(FFLAGS2 "-std=legacy -I. ")
146   #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" )
147   set(FFLAGS3 "-std=legacy -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 #=========================================
209 # Apply preprocesor flags to *.F files
210 #=========================================
211 set_property(SOURCE ${UNRES_MD_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} )  
212
213
214 #========================================
215 #  Setting binary name
216 #========================================
217 if(UNRES_WITH_MPI) 
218   # binary with mpi
219   set(UNRES_BIN "unres_${Fortran_COMPILER_NAME}_MPICH_${UNRES_MD_FF}.exe")
220 else(UNRES_WITH_MPI)
221   # binary without mpi
222   set(UNRES_BIN "unres_${Fortran_COMPILER_NAME}_single_${UNRES_MD_FF}.exe")
223 endif(UNRES_WITH_MPI)  
224
225 #=========================================
226 # cinfo.f workaround for cmake
227 #=========================================
228 # get the current date  
229 TODAY(DATE)
230 # generate cinfo.f
231
232 set(CINFO "${CMAKE_CURRENT_BINARY_DIR}/cinfo.f")
233 FILE(WRITE ${CINFO}
234 "C CMake generated file
235        subroutine cinfo
236        include 'COMMON.IOUNITS'
237        write(iout,*)'++++ Compile info ++++'
238        write(iout,*)'Version ${UNRES_MAJOR}.${UNRES_MINOR} build ${UNRES_PATCH}'
239 ")
240
241 CINFO_FORMAT(${CINFO} "Compiled" "${DATE}" )
242 CINFO_FORMAT(${CINFO} "Compiled by" "$ENV{USER}@$ENV{HOST}" )
243 CINFO_FORMAT(${CINFO} "OS name:" "${CMAKE_SYSTEM_NAME}" )
244 CINFO_FORMAT(${CINFO} "OS release:" "${CMAKE_SYSTEM}" )
245 CINFO_FORMAT(${CINFO} "Fortran Compiler:" "${CMAKE_Fortran_COMPILER}" )
246 CINFO_FORMAT(${CINFO} "MD Force field:" "${UNRES_MD_FF}" )
247 CINFO_FORMAT(${CINFO} "CPPFLAGS =" "${CPPFLAGS}")
248
249 FILE(APPEND ${CINFO} 
250 "       write(iout,*)'++++ End of compile info ++++'  
251        return 
252        end ")
253
254 # add include path
255 set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f PROPERTY COMPILE_FLAGS "${FFLAGS0} -I${CMAKE_CURRENT_SOURCE_DIR}")
256
257 #=========================================
258 # Set full unres MD sources
259 #=========================================
260 set(UNRES_MD_SRCS ${UNRES_MD_SRC0} ${UNRES_MD_SRC3} ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f )
261
262
263 #=========================================
264 # Build the binary
265 #=========================================
266 add_executable(UNRES_BIN-MD ${UNRES_MD_SRCS} )
267 set_target_properties(UNRES_BIN-MD PROPERTIES OUTPUT_NAME ${UNRES_BIN})
268 #set_property(TARGET ${UNRES_BIN} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/unres/MD )
269 #add_dependencies (${UNRES_BIN} ${UNRES_XDRFLIB})
270
271
272 #=========================================
273 # Link libraries
274 #=========================================
275 # link MPI library (libmpich.a)  
276 if(UNRES_WITH_MPI)
277   target_link_libraries( UNRES_BIN-MD ${MPIF_LIBRARIES} )
278 endif(UNRES_WITH_MPI)
279 # link libxdrf.a 
280 #message("UNRES_XDRFLIB=${UNRES_XDRFLIB}")
281 target_link_libraries( UNRES_BIN-MD xdrf )
282
283 #=========================================
284 # TESTS 
285 #=========================================
286
287 #-- Copy all the data files from the test directory into the source directory
288 #SET(UNRES_TEST_FILES
289 #       ala10.inp
290 #    )
291
292 #FOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES})
293 #      SET (unres_test_dest "${CMAKE_CURRENT_BINARY_DIR}/${UNRES_TEST_FILE}")
294 #      MESSAGE (STATUS " Copying ${UNRES_TEST_FILE} from ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} to ${unres_test_dest}")
295 #      ADD_CUSTOM_COMMAND (
296 #          TARGET     ${UNRES_BIN}
297 #          POST_BUILD
298 #          COMMAND    ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} ${unres_test_dest}
299 #      )
300 #ENDFOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES})
301
302 #=========================================
303 # Generate data test files
304 #=========================================
305 #  test_single_ala.sh
306 #=========================================
307
308 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_single_ala.sh
309 "#!/bin/sh
310 export POT=GB
311 export PREFIX=ala10
312 #-----------------------------------------------------------------------------
313 UNRES_BIN=./${UNRES_BIN}
314 #-----------------------------------------------------------------------------
315 DD=${CMAKE_SOURCE_DIR}/PARAM
316 export BONDPAR=$DD/bond.parm
317 export THETPAR=$DD/thetaml.5parm
318 export ROTPAR=$DD/scgauss.parm
319 export TORPAR=$DD/torsion_631Gdp.parm
320 export TORDPAR=$DD/torsion_double_631Gdp.parm
321 export ELEPAR=$DD/electr_631Gdp.parm
322 export SIDEPAR=$DD/sc_GB_opt.1gab_3S_qclass5no310-shan2-sc-16-10-8k
323 export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3
324 export SCPPAR=$DD/scp.parm
325 export SCCORPAR=$DD/sccor_pdb_shelly.dat
326 export PATTERN=$DD/patterns.cart
327 #-----------------------------------------------------------------------------
328 $UNRES_BIN
329 ")
330
331 #
332 # File permissions workaround
333 #
334 FILE(   COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_single_ala.sh 
335         DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
336         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
337 )
338
339
340
341 #=========================================
342 #  ala10.inp
343 #=========================================
344
345 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ala10.inp
346 "ala10 unblocked
347 SEED=-1111333 MD ONE_LETTER rescale_mode=2 
348 nstep=15000 ntwe=100 ntwx=1000 dt=0.1 lang=0 tbf t_bath=300 damax=1.0          &
349 reset_moment=1000 reset_vel=1000
350 WLONG=1.35279 WSCP=1.59304 WELEC=0.71534 WBOND=1.00000 WANG=1.13873            &
351 WSCLOC=0.16258 WTOR=1.98599 WTORD=1.57069 WCORRH=0.42887 WCORR5=0.00000        &
352 WCORR6=0.00000 WEL_LOC=0.16036 WTURN3=1.68722 WTURN4=0.66230 WTURN6=0.00000    &
353 WVDWPP=0.11371 WHPB=1.00000                                                    &
354 CUTOFF=7.00000 WCORR4=0.00000
355 12
356 XAAAAAAAAAAX 
357  0
358  0
359    90.0000   90.0000   90.0000  90.000   90.000   90.000   90.000   90.000 
360    90.0000   90.0000
361   180.0000  180.0000  180.0000 180.000  180.000  180.000  180.000  180.000
362   180.0000
363   110.0000  110.0000  110.0000 100.000  110.000  100.000  110.000  110.000 
364   110.0000  110.0000
365  -120.0000 -120.0000 -120.000 -120.000 -120.000 -120.000 -120.000 -120.000
366  -120.0000 -120.0000
367 ")
368
369
370 # Add tests
371
372 if(NOT UNRES_WITH_MPI)
373                   
374   add_test(NAME UNRES_MD_Ala10 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh )
375
376 else(NOT UNRES_WITH_MPI)
377
378
379   add_test(NAME UNRES_MD_MPI_Ala10 COMMAND mpiexec -boot ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh )
380
381 endif(NOT UNRES_WITH_MPI)
382