88d93184b8e99f5ce6d5ff1aa0765269cbb6c9fb
[unres.git] / source / unres / src_MIN / CMakeLists.txt
1 #
2 # CMake project file for UNRES with Minimazation 
3
4
5 enable_language (Fortran)
6
7 #================================
8 # Set source file lists
9 #================================
10 # sources used with FFLAGS0
11 set(UNRES_MIN_SRC0 
12         arcos.f
13         cartder.F 
14         cartprint.f 
15         chainbuild.F 
16         checkder_p.F 
17         convert.f 
18         djacob.f
19         econstr_local.F
20         gen_rand_conf.F
21         geomout_min.F
22         initialize_p.F 
23         intcartderiv.F
24         intcor.f 
25         intlocal.f 
26         int_to_cart.f 
27         matmult.f 
28         minimize_p.F
29         misc.f 
30         MP.F 
31         parmread.F 
32         pinorm.f 
33         printmat.f 
34         randgens.f 
35         readrtns_min.F
36         rescode.f 
37         refsys.f
38         rmdd.f 
39         sc_move.F
40         sumsld.f 
41         timing.F
42         unres_min.F
43
44 )
45 # sources used with FFLAGS1
46 set(UNRES_MIN_SRC1 
47         cored.f
48 )
49
50 # sources used with FFLAGS2
51 set(UNRES_MIN_SRC2 
52         readpdb.F
53 )
54
55 # sources used with FFLAGS3
56 set(UNRES_MIN_SRC3 
57         energy_p_new_barrier.F
58         gradient_p.F
59 )
60
61 # sources used with preprocesor flags (should also be listed above with FFLAGSX)
62 set(UNRES_MIN_PP_SRC
63         bank.F 
64         cartder.F 
65         chainbuild.F 
66         checkder_p.F 
67         compare_s1.F
68         cored.f
69         csa.f 
70         dihed_cons.F
71         diff12.f 
72         econstr_local.F
73         energy_p_new.F
74         energy_p_new_barrier.F 
75         energy_split-sep.F 
76         entmcm.F 
77         gen_rand_conf.F
78         geomout_min.F 
79         gradient_p.F 
80         intcor.f
81         initialize_p.F 
82         intcartderiv.F 
83         lagrangian_lesyng.F 
84         matmult.f
85         mc.F 
86         mcm.F 
87         MD_A-MTS.F
88         minimize_p.F 
89         minim_jlee.F
90         minim_mcmf.F 
91         MP.F 
92         MREMD.F
93         newconf.f 
94         parmread.F 
95         permut.F
96         prng_32.F 
97         q_measure1.F 
98         q_measure3.F 
99         q_measure.F
100         ran.f
101         rattle.F 
102         readpdb.F 
103         readrtns_min.F
104         regularize.F
105         rmdd.f 
106         rmsd.F 
107         sc_move.F
108         shift.F 
109         stochfric.F
110         sumsld.f 
111         test.F 
112         thread.F 
113         timing.F
114         together.F
115         unres.F 
116
117
118
119 #================================================
120 # Set comipiler flags for different sourcefiles  
121 #================================================
122 if (Fortran_COMPILER_NAME STREQUAL "ifort")
123   find_package (Threads)
124   set(FFLAGS0 "-g -ip -w" ) 
125   set(FFLAGS1 "-w -g -d2 -CA -CB" ) 
126   set(FFLAGS2 "-w -g -00 ")
127   set(FFLAGS3 "-g -w -ipo " )
128 elseif (Fortran_COMPILER_NAME STREQUAL "gfortran")
129   set(FFLAGS0 "-std=legacy -O " ) 
130   set(FFLAGS1 "-std=legacy -g -C" ) 
131   set(FFLAGS2 "-std=legacy -g -O0 ")
132   set(FFLAGS3 "-std=legacy -O3" )
133 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
134
135
136 set_property(SOURCE ${UNRES_MIN_SRC0} PROPERTY COMPILE_FLAGS ${FFLAGS0} )
137 set_property(SOURCE ${UNRES_MIN_SRC1} PROPERTY COMPILE_FLAGS ${FFLAGS1} )
138 set_property(SOURCE ${UNRES_MIN_SRC2} PROPERTY COMPILE_FLAGS ${FFLAGS2} )
139 set_property(SOURCE ${UNRES_MIM_SRC3} PROPERTY COMPILE_FLAGS ${FFLAGS3} )
140
141 # set preprocesor flags   
142 set(CPPFLAGS "PROCOR -DLINUX -DISNAN -DSPLITELE -DLANG0 -DSCCORPDB" )
143
144 if (Fortran_COMPILER_NAME STREQUAL "ifort")
145   # Add ifort preprocessor flags
146   set(CPPFLAGS "${CPPFLAGS} -DPGI") 
147 elseif (Fortran_COMPILER_NAME STREQUAL "f95")
148   # Add gfortran flags
149   set(CPPFLAGS "${CPPFLAGS} -DG77") 
150 elseif (Fortran_COMPILER_NAME STREQUAL "gfortran")
151   # Add gfortran flags
152   set(CPPFLAGS "${CPPFLAGS} -DG77") 
153 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
154
155
156 # add 64-bit specific preprocessor flags
157 if (architektura STREQUAL "64")
158   set(CPPFLAGS "${CPPFLAGS} -DAMD64")
159 endif (architektura STREQUAL "64")
160
161 # Apply preprocesor flags to *.F files
162 set_property(SOURCE ${UNRES_MIN_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} )  
163
164
165
166 #========================================
167 #  Setting binary name
168 #========================================
169 set(UNRES_BIN "unres_${Fortran_COMPILER_NAME}_MIN_single_${UNRES_MD_FF}.exe")
170
171 #========================================
172 #  cinfo.f workaround for Cmake
173 #========================================
174 # get the current date  
175 TODAY(DATE)
176 # generate cinfo.f
177
178 set(CINFO "${CMAKE_CURRENT_BINARY_DIR}/cinfo.f")
179 FILE(WRITE ${CINFO}
180 "C CMake generated file
181        subroutine cinfo
182        include 'COMMON.IOUNITS'
183        write(iout,*)'++++ Compile info ++++'
184        write(iout,*)'Version ${UNRES_MAJOR}.${UNRES_MINOR} build ${UNRES_PATCH}'
185 ")
186
187 CINFO_FORMAT(${CINFO} "Compiled" "${DATE}" )
188 CINFO_FORMAT(${CINFO} "Compiled by" "$ENV{USER}@$ENV{HOST}" )
189 CINFO_FORMAT(${CINFO} "OS name:" "${CMAKE_SYSTEM_NAME}" )
190 CINFO_FORMAT(${CINFO} "OS release:" "${CMAKE_SYSTEM}" )
191 CINFO_FORMAT(${CINFO} "Fortran Compiler:" "${CMAKE_Fortran_COMPILER}" )
192 CINFO_FORMAT(${CINFO} "CPPFLAGS =" "${CPPFLAGS}")
193
194 FILE(APPEND ${CINFO} 
195 "       write(iout,*)'Version MINI energy and minimalization only'
196        write(iout,*)'++++ End of compile info ++++'  
197        return 
198        end ")
199
200 # add include path
201 set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f PROPERTY COMPILE_FLAGS "${FFLAGS0} -I${CMAKE_CURRENT_SOURCE_DIR}")
202
203 #=========================================
204 # Set full unres MIN sources
205 #=========================================
206 set(UNRES_MIN_SRCS ${UNRES_MIN_SRC0} ${UNRES_MIN_SRC1} ${UNRES_MIN_SRC2} ${UNRES_MIN_SRC3} ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f )
207
208 #=========================================
209 # Build the binary
210 #=========================================
211 add_executable(UNRES_MIN_BIN ${UNRES_MIN_SRCS} )
212 set_target_properties(UNRES_MIN_BIN PROPERTIES OUTPUT_NAME ${UNRES_BIN})
213
214 if (Fortran_COMPILER_NAME STREQUAL "ifort")
215   target_link_libraries (UNRES_MIN_BIN ${CMAKE_THREAD_LIBS_INIT})
216 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
217 set_property(TARGET UNRES_MIN_BIN PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
218
219
220 #=========================================
221 # Install Path
222 #=========================================
223 install(TARGETS UNRES_MIN_BIN DESTINATION ${CMAKE_INSTALL_PREFIX}/unres/MINIM)
224
225 #=========================================
226 # TESTS 
227 #=========================================
228
229 #=========================================
230 # Generate data test files
231 #=========================================
232 #  test_single_ala.sh
233 #=========================================
234
235 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_single_ala.sh
236 "#!/bin/sh
237 export POT=GB
238 export PREFIX=ala10
239 #-----------------------------------------------------------------------------
240 UNRES_BIN=${CMAKE_BINARY_DIR}/bin/${UNRES_BIN}
241 #-----------------------------------------------------------------------------
242 DD=${CMAKE_SOURCE_DIR}/PARAM
243 export BONDPAR=$DD/bond.parm
244 export THETPAR=$DD/thetaml.5parm
245 export ROTPAR=$DD/scgauss.parm
246 export TORPAR=$DD/torsion_631Gdp.parm
247 export TORDPAR=$DD/torsion_double_631Gdp.parm
248 export ELEPAR=$DD/electr_631Gdp.parm
249 export SIDEPAR=$DD/sc_GB_opt.1gab_3S_qclass5no310-shan2-sc-16-10-8k
250 export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3
251 export SCPPAR=$DD/scp.parm
252 export SCCORPAR=$DD/sccor_pdb_shelly.dat
253 export PATTERN=$DD/patterns.cart
254 #-----------------------------------------------------------------------------
255 $UNRES_BIN
256 ")
257
258 #
259 # File permissions workaround
260 #
261 FILE(   COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_single_ala.sh 
262         DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
263         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
264 )
265
266
267
268 #=========================================
269 #  ala10.inp
270 #=========================================
271
272 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ala10.inp
273 "ala10 unblocked
274 SEED=-1111333 MD ONE_LETTER rescale_mode=2 
275 nstep=15000 ntwe=100 ntwx=1000 dt=0.1 lang=0 tbf t_bath=300 damax=1.0          &
276 reset_moment=1000 reset_vel=1000
277 WLONG=1.35279 WSCP=1.59304 WELEC=0.71534 WBOND=1.00000 WANG=1.13873            &
278 WSCLOC=0.16258 WTOR=1.98599 WTORD=1.57069 WCORRH=0.42887 WCORR5=0.00000        &
279 WCORR6=0.00000 WEL_LOC=0.16036 WTURN3=1.68722 WTURN4=0.66230 WTURN6=0.00000    &
280 WVDWPP=0.11371 WHPB=1.00000                                                    &
281 CUTOFF=7.00000 WCORR4=0.00000
282 12
283 XAAAAAAAAAAX 
284  0
285  0
286    90.0000   90.0000   90.0000  90.000   90.000   90.000   90.000   90.000 
287    90.0000   90.0000
288   180.0000  180.0000  180.0000 180.000  180.000  180.000  180.000  180.000
289   180.0000
290   110.0000  110.0000  110.0000 100.000  110.000  100.000  110.000  110.000 
291   110.0000  110.0000
292  -120.0000 -120.0000 -120.000 -120.000 -120.000 -120.000 -120.000 -120.000
293  -120.0000 -120.0000
294 ")
295
296 if(UNRES_MD_FF STREQUAL "E0LL2Y")
297
298 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/prota.pdb
299         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
300
301 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/prota_ENE.inp
302         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
303
304 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/prota_MIN_CART.inp
305         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
306
307 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1l2y_MIN_INT.inp
308         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
309
310 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1L2Y.pdb
311         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
312
313 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/prota_unres_energy_check.sh
314         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} 
315         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
316 )
317
318
319 #=========================================
320 #  test_prota_E0LL2Y.sh
321 #=========================================
322
323 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_prota_E0LL2Y.sh
324 "#!/bin/sh
325 export POT=GB
326 export FGPROCS=$2
327 export PREFIX=$1
328 #-----------------------------------------------------------------------------
329 UNRES_BIN=${CMAKE_BINARY_DIR}/bin/${UNRES_BIN}
330 #-----------------------------------------------------------------------------
331 DD=${CMAKE_SOURCE_DIR}/PARAM
332 export BONDPAR=$DD/bond_AM1.parm
333 export THETPAR=$DD/theta_abinitio.parm
334 export ROTPAR=$DD/rotamers_AM1_aura.10022007.parm
335 export TORPAR=$DD/torsion_631Gdp.parm
336 export TORDPAR=$DD/torsion_double_631Gdp.parm
337 export ELEPAR=$DD/electr_631Gdp.parm
338 export SIDEPAR=$DD/scinter_$POT.parm
339 export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3
340 export SCPPAR=$DD/scp.parm
341 export SCCORPAR=$DD/sccor_am1_pawel.dat
342 export THETPARPDB=$DD/thetaml.5parm
343 export ROTPARPDB=$DD/scgauss.parm
344 export PATTERN=$DD/patterns.cart
345 #-----------------------------------------------------------------------------
346 echo CTEST_FULL_OUTPUT
347 $UNRES_BIN
348 ./prota_unres_energy_check.sh $1 ${UNRES_BIN}
349 ")
350
351 #
352 # File permissions workaround
353 #
354 FILE(   COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_prota_E0LL2Y.sh 
355         DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
356         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
357 )
358
359 endif(UNRES_MD_FF STREQUAL "E0LL2Y")
360
361
362
363 # Add tests
364
365   if(UNRES_MD_FF STREQUAL "GAB")
366     add_test(NAME UNRES-MIN_Ala10 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh )
367   endif(UNRES_MD_FF STREQUAL "GAB")
368  
369   if(UNRES_MD_FF STREQUAL "E0LL2Y")
370     add_test(NAME UNRES-MIN_ENE_prota COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_ENE 1 )
371     add_test(NAME UNRES-MIN_MIN_prota COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_MIN_CART 1 )
372     add_test(NAME UNRES-MIN_MIN_INT COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_MIN_INT 1 )
373   endif(UNRES_MD_FF STREQUAL "E0LL2Y")
374
375