added/modified CMake files for all subdirs in source/unres + junkfiles cleanup
[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 # build the xdrf library 
9 #================================ 
10 add_subdirectory(xdrf)
11
12 #================================
13 # Set source file lists
14 #================================
15 set(UNRES_MD_SRC0 unres.F arcos.f cartprint.f chainbuild.F convert.f 
16         initialize_p.F matmult.f readrtns.F parmread.F gen_rand_conf.F
17         printmat.f map.f pinorm.f randgens.f rescode.f intcor.f timing.F
18         misc.f intlocal.f cartder.F checkder_p.F econstr_local.F
19         minimize_p.F sumsld.f cored.f rmdd.f geomout.F readpdb.F regularize.F
20         thread.F fitsq.f mcm.F mc.F bond_move.f refsys.f check_sc_distr.f
21         check_bond.f contact.f djacob.f eigen.f blas.f add.f entmcm.F
22         minim_mcmf.F MP.F compare_s1.F prng_32.F banach.f rmsd.F elecont.f dihed_cons.F sc_move.F 
23         local_move.f intcartderiv.F lagrangian_lesyng.F stochfric.F kinetic_lesyng.f MD_A-MTS.F moments.f
24         int_to_cart.f surfatom.f sort.f muca_md.f MREMD.F rattle.F gauss.f energy_split-sep.F 
25         q_measure.F gnmr1.f test.F )
26
27 set(UNRES_MD_SRC3 energy_p_new_barrier.F energy_p_new-sep_barrier.F gradient_p.F )
28
29 set(UNRES_MD_PP_SRC cartder.F chainbuild.F checkder_p.F compare_s1.F dihed_cons.F econstr_local.F 
30         energy_p_new_barrier.F energy_p_new-sep_barrier.F energy_split-sep.F entmcm.F gen_rand_conf.F
31         geomout.F gradient_p.F initialize_p.F intcartderiv.F lagrangian_lesyng.F mc.F mcm.F MD_A-MTS.F
32         minimize_p.F minim_mcmf.F MP.F MREMD.F parmread.F prng_32.F q_measure1.F q_measure3.F q_measure.F
33         rattle.F readpdb.F readrtns.F regularize.F rmsd.F sc_move.F stochfric.F test.F thread.F timing.F
34         unres.F proc_proc.c ) 
35
36
37 #================================================
38 # Set comipiler flags for different sourcefiles  
39 #================================================
40 if (Fortran_COMPILER_NAME STREQUAL "ifort")
41   set(FFLAGS0 "-ip -w" ) 
42   set(FFLAGS1 "-w -g -d2 -CA -CB" ) 
43   set(FFLAGS2 "-w -g -00 ")
44   #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" )
45   set(FFLAGS3 "-w -ipo " )
46 elseif (Fortran_COMPILER_NAME STREQUAL "gfortran")
47   set(FFLAGS0 "-I. " ) 
48   set(FFLAGS1 "-g -I. " ) 
49   set(FFLAGS2 "-I. ")
50   #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" )
51   set(FFLAGS3 "-I. " )
52 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
53
54
55 # Add MPI compiler flags
56 if(UNRES_WITH_MPI)
57   set(FFLAGS0 "${FFLAGS0} -I${MPIF_INCLUDE_DIRECTORIES}")
58   set(FFLAGS1 "${FFLAGS1} -I${MPIF_INCLUDE_DIRECTORIES}")
59   set(FFLAGS2 "${FFLAGS2} -I${MPIF_INCLUDE_DIRECTORIES}")
60   set(FFLAGS3 "${FFLAGS3} -I${MPIF_INCLUDE_DIRECTORIES}")
61 endif(UNRES_WITH_MPI)
62
63 set_property(SOURCE ${UNRES_MD_SRC0} APPEND PROPERTY COMPILE_FLAGS ${FFLAGS0} )
64 #set_property(SOURCE ${UNRES_MD_SRC1} PROPERTY COMPILE_FLAGS ${FFLAGS1} )
65 #set_property(SOURCE ${UNRES_MD_SRC2} PROPERTY COMPILE_FLAGS ${FFLAGS2} )
66 set_property(SOURCE ${UNRES_MD_SRC3} PROPERTY COMPILE_FLAGS ${FFLAGS3} )
67
68 #=========================================
69 # Settings for GAB force field 
70 #=========================================
71 if(UNRES_MD_FF STREQUAL "GAB" )
72   # set preprocesor flags   
73   set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0 -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" )
74
75 #=========================================
76 #  Settings for E0LL2Y force field
77 #=========================================
78 elseif(UNRES_MD_FF STREQUAL "E0LL2Y")
79   # set preprocesor flags   
80   set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0" )
81 endif(UNRES_MD_FF STREQUAL "GAB")
82
83 #=========================================
84 # System specific flags
85 #=========================================
86 if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
87   set(CPPFLAGS "${CPPFLAGS} -DLINUX") 
88 endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
89
90 #=========================================
91 # Compiler specific flags
92 #=========================================
93
94 if (Fortran_COMPILER_NAME STREQUAL "ifort")
95   # Add ifort preprocessor flags
96   set(CPPFLAGS "${CPPFLAGS} -DPGI") 
97 elseif (Fortran_COMPILER_NAME STREQUAL "f95")
98   # Add new gfortran flags
99   set(CPPFLAGS "${CPPFLAGS} -DG77") 
100 elseif (Fortran_COMPILER_NAME STREQUAL "gfortran")
101   # Add old gfortran flags
102   set(CPPFLAGS "${CPPFLAGS} -DG77") 
103 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
104
105 #=========================================
106 # Add MPI preprocessor flags
107 #=========================================
108 if (UNRES_WITH_MPI)
109   set(CPPFLAGS "${CPPFLAGS} -DMP -DMPI") 
110 endif(UNRES_WITH_MPI)
111
112 # Apply preprocesor flags to *.F files
113 set_property(SOURCE ${UNRES_MD_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} )  
114
115
116 #========================================
117 #  Setting binary name
118 #========================================
119 if(UNRES_WITH_MPI) 
120   # binary with mpi
121   set(UNRES_BIN "unres_${Fortran_COMPILER_NAME}_MPICH_${UNRES_FF}.exe")
122 else(UNRES_WITH_MPI)
123   # binary without mpi
124   set(UNRES_BIN "unres_${Fortran_COMPILER_NAME}_single_${UNRES_FF}.exe")
125 endif(UNRES_WITH_MPI)  
126
127 #=========================================
128 # cinfo.f stupid workaround for cmake
129 #  - shame on me ]:)
130 #=========================================
131 set_property(SOURCE compinfo.c PROPERTY CMAKE_C_FLAGS "-c" )
132 add_executable(compinfo-md compinfo.c)
133 set_target_properties(compinfo-md PROPERTIES OUTPUT_NAME compinfo)
134
135 set(UNRES_CINFO_DIR "${CMAKE_CURRENT_BINARY_DIR}" )
136 add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f 
137         COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cinfo.f ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f
138         COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/COMMON.IOUNITS ${CMAKE_CURRENT_BINARY_DIR}/COMMON.IOUNITS 
139         COMMAND ${CMAKE_CURRENT_BINARY_DIR}/compinfo | true     
140         DEPENDS compinfo-md )
141 set_property(SOURCE ${UNRES_CINFO_DIR}/cinfo.f PROPERTY COMPILE_FLAGS ${FFLAGS0} )
142
143 #=========================================
144 # Set full unres MD sources
145 #=========================================
146 set(UNRES_MD_SRCS ${UNRES_MD_SRC0} ${UNRES_MD_SRC3} ${UNRES_CINFO_DIR}/cinfo.f )
147
148
149 #=========================================
150 # Build the binary
151 #=========================================
152 add_executable(UNRES_BIN-MD ${UNRES_MD_SRCS} )
153 set_target_properties(UNRES_BIN-MD PROPERTIES OUTPUT_NAME ${UNRES_BIN})
154 #set_property(TARGET ${UNRES_BIN} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/unres/MD )
155 #add_dependencies (${UNRES_BIN} ${UNRES_XDRFLIB})
156
157
158 #=========================================
159 # Link libraries
160 #=========================================
161 # link MPI library (libmpich.a)  
162 if(UNRES_WITH_MPI)
163   target_link_libraries( UNRES_BIN-MD ${MPIF_LIBRARIES} )
164 endif(UNRES_WITH_MPI)
165 # link libxdrf.a 
166 #message("UNRES_XDRFLIB=${UNRES_XDRFLIB}")
167 target_link_libraries( UNRES_BIN-MD xdrf )
168
169 #=========================================
170 # TESTS 
171 #=========================================
172
173 #-- Copy all the data files from the test directory into the source directory
174 #SET(UNRES_TEST_FILES
175 #       ala10.inp
176 #    )
177
178 #FOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES})
179 #      SET (unres_test_dest "${CMAKE_CURRENT_BINARY_DIR}/${UNRES_TEST_FILE}")
180 #      MESSAGE (STATUS " Copying ${UNRES_TEST_FILE} from ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} to ${unres_test_dest}")
181 #      ADD_CUSTOM_COMMAND (
182 #          TARGET     ${UNRES_BIN}
183 #          POST_BUILD
184 #          COMMAND    ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} ${unres_test_dest}
185 #      )
186 #ENDFOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES})
187
188 #=========================================
189 # Generate data test files
190 #=========================================
191 #  test_single_ala.sh
192 #=========================================
193
194 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh
195 "#!/bin/sh
196 export POT=GB
197 export PREFIX=ala10
198 #-----------------------------------------------------------------------------
199 UNRES_BIN=./${UNRES_BIN}
200 #-----------------------------------------------------------------------------
201 DD=${CMAKE_SOURCE_DIR}/PARAM
202 export BONDPAR=$DD/bond.parm
203 export THETPAR=$DD/thetaml.5parm
204 export ROTPAR=$DD/scgauss.parm
205 export TORPAR=$DD/torsion_631Gdp.parm
206 export TORDPAR=$DD/torsion_double_631Gdp.parm
207 export ELEPAR=$DD/electr_631Gdp.parm
208 export SIDEPAR=$DD/sc_GB_opt.1gab_3S_qclass5no310-shan2-sc-16-10-8k
209 export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3
210 export SCPPAR=$DD/scp.parm
211 export SCCORPAR=$DD/rotcorr_AM1.parm
212 export PATTERN=$DD/patterns.cart
213 #-----------------------------------------------------------------------------
214 $UNRES_BIN
215 ")
216
217 #=========================================
218 #  ala10.inp
219 #=========================================
220
221 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ala10.inp
222 "ala10 unblocked
223 SEED=-1111333 MD ONE_LETTER rescale_mode=2 PDBOUT
224 nstep=15000 ntwe=100 ntwx=1000 dt=0.1 lang=0 tbf t_bath=300 damax=1.0          &
225 reset_moment=1000 reset_vel=1000 MDPDB
226 WLONG=1.35279 WSCP=1.59304 WELEC=0.71534 WBOND=1.00000 WANG=1.13873            &
227 WSCLOC=0.16258 WTOR=1.98599 WTORD=1.57069 WCORRH=0.42887 WCORR5=0.00000        &
228 WCORR6=0.00000 WEL_LOC=0.16036 WTURN3=1.68722 WTURN4=0.66230 WTURN6=0.00000    &
229 WVDWPP=0.11371 WHPB=1.00000                                                    &
230 CUTOFF=7.00000 WCORR4=0.00000
231 12
232 XAAAAAAAAAAX 
233  0
234  0
235    90.0000   90.0000   90.0000  90.000   90.000   90.000   90.000   90.000 
236    90.0000   90.0000
237   180.0000  180.0000  180.0000 180.000  180.000  180.000  180.000  180.000
238   180.0000
239   110.0000  110.0000  110.0000 100.000  110.000  100.000  110.000  110.000 
240   110.0000  110.0000
241  -120.0000 -120.0000 -120.000 -120.000 -120.000 -120.000 -120.000 -120.000
242  -120.0000 -120.0000
243 ")
244
245
246 # Add tests
247
248 if(NOT UNRES_WITH_MPI)
249
250   add_test(NAME UNRES_MD_Ala10 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh )
251
252
253 endif(NOT UNRES_WITH_MPI)
254