49d5bcb9c16cd1368b918d1edde4808694a416e5
[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 if(UNRES_DFA)
12  set(UNRES_MD_SRC0 
13         add.f 
14         arcos.f
15         banach.f 
16         blas.f 
17         bond_move.f 
18         cartder.F 
19         cartprint.f 
20         check_sc_distr.f
21         check_bond.f 
22         chainbuild.F 
23         checkder_p.F 
24         compare_s1.F 
25         contact.f 
26         convert.f 
27         cored.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         prng_32.F
64         q_measure.F 
65         randgens.f 
66         rattle.F 
67         readpdb.F 
68         readrtns.F 
69         refsys.f 
70         regularize.F
71         rescode.f 
72         rmdd.f 
73         rmsd.F 
74         sc_move.F 
75         sort.f 
76         stochfric.F 
77         sumsld.f 
78         surfatom.f 
79         test.F
80         timing.F
81         thread.F 
82         unres.F
83         ssMD.F
84         dfa.F
85 )
86 else(UNRES_DFA)
87  set(UNRES_MD_SRC0 
88         add.f 
89         arcos.f
90         banach.f 
91         blas.f 
92         bond_move.f 
93         cartder.F 
94         cartprint.f 
95         check_sc_distr.f
96         check_bond.f 
97         chainbuild.F 
98         checkder_p.F 
99         compare_s1.F 
100         contact.f 
101         convert.f 
102         cored.f 
103         dihed_cons.F 
104         djacob.f 
105         econstr_local.F
106         eigen.f 
107         elecont.f 
108         energy_split-sep.F 
109         entmcm.F
110         fitsq.f 
111         gauss.f 
112         gen_rand_conf.F
113         geomout.F 
114         gnmr1.f 
115         intcartderiv.F 
116         initialize_p.F 
117         int_to_cart.f 
118         intcor.f 
119         intlocal.f 
120         kinetic_lesyng.f 
121         lagrangian_lesyng.F 
122         local_move.f 
123         map.f 
124         matmult.f 
125         mc.F 
126         mcm.F 
127         MD_A-MTS.F 
128         minimize_p.F 
129         minim_mcmf.F 
130         misc.f 
131         moments.f
132         MP.F 
133         MREMD.F 
134         muca_md.f 
135         parmread.F 
136         pinorm.f 
137         printmat.f 
138         prng_32.F
139         q_measure.F 
140         randgens.f 
141         rattle.F 
142         readpdb.F 
143         readrtns.F 
144         refsys.f 
145         regularize.F
146         rescode.f 
147         rmdd.f 
148         rmsd.F 
149         sc_move.F 
150         sort.f 
151         stochfric.F 
152         sumsld.f 
153         surfatom.f 
154         test.F
155         timing.F
156         thread.F 
157         unres.F
158         ssMD.F
159 )
160 endif(UNRES_DFA)
161
162 set(UNRES_MD_SRC3 
163         energy_p_new_barrier.F 
164         energy_p_new-sep_barrier.F 
165         gradient_p.F )
166
167 set(UNRES_MD_PP_SRC
168         cartder.F
169         chainbuild.F 
170         checkder_p.F 
171         compare_s1.F 
172         dihed_cons.F 
173         econstr_local.F 
174         energy_p_new_barrier.F 
175         energy_p_new-sep_barrier.F 
176         energy_split-sep.F 
177         entmcm.F 
178         gen_rand_conf.F
179         geomout.F 
180         gradient_p.F 
181         initialize_p.F 
182         intcartderiv.F 
183         lagrangian_lesyng.F 
184         mc.F 
185         mcm.F 
186         MD_A-MTS.F
187         minimize_p.F 
188         minim_mcmf.F 
189         MP.F 
190         MREMD.F 
191         parmread.F 
192         prng_32.F
193         q_measure1.F 
194         q_measure3.F 
195         q_measure.F
196         rattle.F 
197         readpdb.F 
198         readrtns.F 
199         regularize.F 
200         rmsd.F 
201         sc_move.F 
202         stochfric.F 
203         test.F 
204         thread.F 
205         timing.F
206         unres.F 
207         proc_proc.c 
208
209
210 #================================================
211 # Set comipiler flags for different sourcefiles  
212 #================================================
213 if (Fortran_COMPILER_NAME STREQUAL "ifort")
214   set(FFLAGS0 "-ip -w" ) 
215   set(FFLAGS1 "-w -g -d2 -CA -CB" ) 
216   set(FFLAGS2 "-w -g -00 ")
217   #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" )
218   set(FFLAGS3 "-w -ipo " )
219 elseif (Fortran_COMPILER_NAME STREQUAL "gfortran")
220   set(FFLAGS0 "-std=legacy -I. " ) 
221   set(FFLAGS1 "-std=legacy -g -I. " ) 
222   set(FFLAGS2 "-std=legacy -I. ")
223   #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" )
224   set(FFLAGS3 "-std=legacy -I. " )
225 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
226
227
228 # Add MPI compiler flags
229 if(UNRES_WITH_MPI)
230   set(FFLAGS0 "${FFLAGS0} -I${MPI_Fortran_INCLUDE_PATH}")
231   set(FFLAGS1 "${FFLAGS1} -I${MPI_Fortran_INCLUDE_PATH}")
232   set(FFLAGS2 "${FFLAGS2} -I${MPI_Fortran_INCLUDE_PATH}")
233   set(FFLAGS3 "${FFLAGS3} -I${MPI_Fortran_INCLUDE_PATH}")
234 endif(UNRES_WITH_MPI)
235
236 set_property(SOURCE ${UNRES_MD_SRC0} APPEND PROPERTY COMPILE_FLAGS ${FFLAGS0} )
237 #set_property(SOURCE ${UNRES_MD_SRC1} PROPERTY COMPILE_FLAGS ${FFLAGS1} )
238 #set_property(SOURCE ${UNRES_MD_SRC2} PROPERTY COMPILE_FLAGS ${FFLAGS2} )
239 set_property(SOURCE ${UNRES_MD_SRC3} PROPERTY COMPILE_FLAGS ${FFLAGS3} )
240
241 #=========================================
242 # Settings for GAB force field 
243 #=========================================
244 if(UNRES_MD_FF STREQUAL "GAB" )
245   # set preprocesor flags   
246   set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0 -DCRYST_BOND -DCRYST_THETA -DCRYST_SC")
247
248 #=========================================
249 #  Settings for E0LL2Y force field
250 #=========================================
251 elseif(UNRES_MD_FF STREQUAL "E0LL2Y")
252   # set preprocesor flags   
253   set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0" )
254 elseif(UNRES_MD_FF STREQUAL "4P")
255   set(CPPFLAGS "UNRES -DISNAN -DSPLITELE -DLANG0 -DCRYST_BOND -DCRYST_THETA -DCRYST_SC -DSCCORPDB" )
256 endif(UNRES_MD_FF STREQUAL "GAB")
257
258 if(UNRES_DFA)
259  set(CPPFLAGS "${CPPFLAGS} -DDFA")
260 endif(UNRES_DFA)
261
262 #=========================================
263 # System specific flags
264 #=========================================
265 if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
266   set(CPPFLAGS "${CPPFLAGS} -DLINUX") 
267 endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
268
269 #=========================================
270 # Compiler specific flags
271 #=========================================
272
273 if (Fortran_COMPILER_NAME STREQUAL "ifort")
274   # Add ifort preprocessor flags
275   set(CPPFLAGS "${CPPFLAGS} -DPGI") 
276 elseif (Fortran_COMPILER_NAME STREQUAL "f95")
277   # Add new gfortran flags
278   set(CPPFLAGS "${CPPFLAGS} -DG77") 
279 elseif (Fortran_COMPILER_NAME STREQUAL "gfortran")
280   # Add old gfortran flags
281   set(CPPFLAGS "${CPPFLAGS} -DG77") 
282 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
283
284 #=========================================
285 # Add MPI preprocessor flags
286 #=========================================
287 if (UNRES_WITH_MPI)
288   set(CPPFLAGS "${CPPFLAGS} -DMP -DMPI") 
289 endif(UNRES_WITH_MPI)
290
291 #=========================================
292 # Add 64-bit specific preprocessor flags
293 #=========================================
294 if (architektura STREQUAL "64")
295   set(CPPFLAGS "${CPPFLAGS} -DAMD64")
296 endif (architektura STREQUAL "64")
297
298 #=========================================
299 # Apply preprocesor flags to *.F files
300 #=========================================
301 set_property(SOURCE ${UNRES_MD_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} )  
302
303
304 #========================================
305 #  Setting binary name
306 #========================================
307 if(UNRES_WITH_MPI) 
308   # binary with mpi
309   if(UNRES_DFA)
310    set(UNRES_BIN "unresMD_${Fortran_COMPILER_NAME}_MPI_${UNRES_MD_FF}_DFA.exe")
311   else(UNRES_DFA)
312    set(UNRES_BIN "unresMD_${Fortran_COMPILER_NAME}_MPI_${UNRES_MD_FF}.exe")
313   endif(UNRES_DFA)
314 else(UNRES_WITH_MPI)
315   # binary without mpi
316   if(UNRES_DFA)
317    set(UNRES_BIN "unresMD_${Fortran_COMPILER_NAME}_single_${UNRES_MD_FF}_DFA.exe")
318   else(UNRES_DFA)
319    set(UNRES_BIN "unresMD_${Fortran_COMPILER_NAME}_single_${UNRES_MD_FF}.exe")
320   endif(UNRES_DFA)
321 endif(UNRES_WITH_MPI)  
322
323 #=========================================
324 # cinfo.f workaround for cmake
325 #=========================================
326 # get the current date  
327 TODAY(DATE)
328 # generate cinfo.f
329
330 set(CINFO "${CMAKE_CURRENT_BINARY_DIR}/cinfo.f")
331 FILE(WRITE ${CINFO}
332 "C CMake generated file
333        subroutine cinfo
334        include 'COMMON.IOUNITS'
335        write(iout,*)'++++ Compile info ++++'
336        write(iout,*)'Version ${UNRES_MAJOR}.${UNRES_MINOR} build ${UNRES_PATCH}'
337 ")
338
339 CINFO_FORMAT(${CINFO} "Compiled" "${DATE}" )
340 CINFO_FORMAT(${CINFO} "Compiled by" "$ENV{USER}@$ENV{HOST}" )
341 CINFO_FORMAT(${CINFO} "OS name:" "${CMAKE_SYSTEM_NAME}" )
342 CINFO_FORMAT(${CINFO} "OS release:" "${CMAKE_SYSTEM}" )
343 CINFO_FORMAT(${CINFO} "Fortran Compiler:" "${CMAKE_Fortran_COMPILER}" )
344 CINFO_FORMAT(${CINFO} "MD Force field:" "${UNRES_MD_FF}" )
345 CINFO_FORMAT(${CINFO} "CPPFLAGS =" "${CPPFLAGS}")
346
347 FILE(APPEND ${CINFO} 
348 "       write(iout,*)'++++ End of compile info ++++'  
349        return 
350        end ")
351
352 # add include path
353 set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f PROPERTY COMPILE_FLAGS "${FFLAGS0} -I${CMAKE_CURRENT_SOURCE_DIR}")
354
355 #=========================================
356 # Set full unres MD sources
357 #=========================================
358 set(UNRES_MD_SRCS ${UNRES_MD_SRC0} ${UNRES_MD_SRC3} ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f )
359
360
361 #=========================================
362 # Build the binary
363 #=========================================
364 add_executable(UNRES_BIN-MD ${UNRES_MD_SRCS} )
365 set_target_properties(UNRES_BIN-MD PROPERTIES OUTPUT_NAME ${UNRES_BIN})
366 set_property(TARGET UNRES_BIN-MD PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
367 #add_dependencies (${UNRES_BIN} ${UNRES_XDRFLIB})
368
369
370 #=========================================
371 # Link libraries
372 #=========================================
373 # link MPI library (libmpich.a)  
374 if(UNRES_WITH_MPI)
375   target_link_libraries( UNRES_BIN-MD ${MPI_Fortran_LIBRARIES} )
376 endif(UNRES_WITH_MPI)
377 # link libxdrf.a 
378 #message("UNRES_XDRFLIB=${UNRES_XDRFLIB}")
379 target_link_libraries( UNRES_BIN-MD xdrf )
380
381 #=========================================
382 # Install Path
383 #=========================================
384 install(TARGETS UNRES_BIN-MD DESTINATION ${CMAKE_INSTALL_PREFIX}/unres/MD) 
385
386 #=========================================
387 # TESTS 
388 #=========================================
389
390 #-- Copy all the data files from the test directory into the source directory
391 #SET(UNRES_TEST_FILES
392 #       ala10.inp
393 #    )
394
395 #FOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES})
396 #      SET (unres_test_dest "${CMAKE_CURRENT_BINARY_DIR}/${UNRES_TEST_FILE}")
397 #      MESSAGE (STATUS " Copying ${UNRES_TEST_FILE} from ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} to ${unres_test_dest}")
398 #      ADD_CUSTOM_COMMAND (
399 #          TARGET     ${UNRES_BIN}
400 #          POST_BUILD
401 #          COMMAND    ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} ${unres_test_dest}
402 #      )
403 #ENDFOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES})
404
405 #=========================================
406 # Generate data test files
407 #=========================================
408 #  test_single_ala.sh
409 #=========================================
410
411 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_single_ala.sh
412 "#!/bin/sh
413 export POT=GB
414 export PREFIX=ala10
415 #-----------------------------------------------------------------------------
416 UNRES_BIN=${CMAKE_BINARY_DIR}/bin/${UNRES_BIN}
417 #-----------------------------------------------------------------------------
418 DD=${CMAKE_SOURCE_DIR}/PARAM
419 export BONDPAR=$DD/bond.parm
420 export THETPAR=$DD/thetaml.5parm
421 export ROTPAR=$DD/scgauss.parm
422 export TORPAR=$DD/torsion_631Gdp.parm
423 export TORDPAR=$DD/torsion_double_631Gdp.parm
424 export ELEPAR=$DD/electr_631Gdp.parm
425 export SIDEPAR=$DD/sc_GB_opt.1gab_3S_qclass5no310-shan2-sc-16-10-8k
426 export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3
427 export SCPPAR=$DD/scp.parm
428 export SCCORPAR=$DD/sccor_pdb_shelly.dat
429 export PATTERN=$DD/patterns.cart
430 #-----------------------------------------------------------------------------
431 $UNRES_BIN
432 ")
433
434 #
435 # File permissions workaround
436 #
437 FILE(   COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_single_ala.sh 
438         DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
439         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
440 )
441
442
443
444 #=========================================
445 #  ala10.inp
446 #=========================================
447
448 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ala10.inp
449 "ala10 unblocked
450 SEED=-1111333 MD ONE_LETTER rescale_mode=2 
451 nstep=15000 ntwe=100 ntwx=1000 dt=0.1 lang=0 tbf t_bath=300 damax=1.0          &
452 reset_moment=1000 reset_vel=1000
453 WLONG=1.35279 WSCP=1.59304 WELEC=0.71534 WBOND=1.00000 WANG=1.13873            &
454 WSCLOC=0.16258 WTOR=1.98599 WTORD=1.57069 WCORRH=0.42887 WCORR5=0.00000        &
455 WCORR6=0.00000 WEL_LOC=0.16036 WTURN3=1.68722 WTURN4=0.66230 WTURN6=0.00000    &
456 WVDWPP=0.11371 WHPB=1.00000                                                    &
457 CUTOFF=7.00000 WCORR4=0.00000
458 12
459 XAAAAAAAAAAX 
460  0
461  0
462    90.0000   90.0000   90.0000  90.000   90.000   90.000   90.000   90.000 
463    90.0000   90.0000
464   180.0000  180.0000  180.0000 180.000  180.000  180.000  180.000  180.000
465   180.0000
466   110.0000  110.0000  110.0000 100.000  110.000  100.000  110.000  110.000 
467   110.0000  110.0000
468  -120.0000 -120.0000 -120.000 -120.000 -120.000 -120.000 -120.000 -120.000
469  -120.0000 -120.0000
470 ")
471
472 if(UNRES_MD_FF STREQUAL "E0LL2Y")
473
474 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/prota.pdb
475         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
476
477 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/prota_unres.pdb
478         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
479
480 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/prota_ENE.inp
481         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
482
483 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/prota_MIN_CART.inp
484         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
485
486 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1l2y_micro.inp
487         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
488
489 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1l2y_MIN_INT.inp
490         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
491
492 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1l2y_MIN_REGULAR_INT.inp
493         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
494
495 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1L2Y_B.inp
496         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
497
498 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1L2Y_L.inp
499         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
500
501 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1L2Y_NH.inp
502         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
503
504
505 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1L2Y.pdb
506         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
507
508 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1L2Y_remd.inp
509         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
510
511 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1ei0_min.inp
512         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
513
514 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1ei0.pdb
515         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
516
517 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/prota_unres_energy_check.sh
518         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} 
519         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
520 )
521
522 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/matplotlib_fit_hist.py
523         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} 
524         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
525 )
526
527 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/matplotlib_hist.py
528         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} 
529         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
530 )
531
532
533
534 #=========================================
535 #  test_prota_E0LL2Y.sh
536 #=========================================
537
538 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_prota_E0LL2Y.sh
539 "#!/bin/sh
540 export POT=GB
541 export FGPROCS=$2
542 export PREFIX=$1
543 #-----------------------------------------------------------------------------
544 UNRES_BIN=${CMAKE_BINARY_DIR}/bin/${UNRES_BIN}
545 #-----------------------------------------------------------------------------
546 DD=${CMAKE_SOURCE_DIR}/PARAM
547 export BONDPAR=$DD/bond_AM1.parm
548 export THETPAR=$DD/theta_abinitio.parm
549 export ROTPAR=$DD/rotamers_AM1_aura.10022007.parm
550 export TORPAR=$DD/torsion_631Gdp.parm
551 export TORDPAR=$DD/torsion_double_631Gdp.parm
552 export ELEPAR=$DD/electr_631Gdp.parm
553 export SIDEPAR=$DD/scinter_$POT.parm
554 export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3
555 export SCPPAR=$DD/scp.parm
556 export SCCORPAR=$DD/sccor_am1_pawel.dat
557 export THETPARPDB=$DD/thetaml.5parm
558 export ROTPARPDB=$DD/scgauss.parm
559 export PATTERN=$DD/patterns.cart
560 #-----------------------------------------------------------------------------
561 echo CTEST_FULL_OUTPUT
562 $UNRES_BIN
563 ./prota_unres_energy_check.sh $1 ${UNRES_BIN}
564 ")
565
566 #
567 # File permissions workaround
568 #
569 FILE(   COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_prota_E0LL2Y.sh 
570         DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
571         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
572 )
573
574 #  MESSAGE (STATUS "${MPI_Fortran_LIBRARIES}")
575   if ("${MPI_Fortran_LIBRARIES}"  MATCHES "lam")
576      MESSAGE (STATUS "LAM MPI library detected")
577      set (boot_lam "-boot")
578   else()
579      set (boot_lam "")
580   endif()
581
582   if (UNRES_SRUN)
583    set (np "-n")
584    set (mpiexec "srun")
585   else()
586    set (np "-np")
587    set (mpiexec "mpiexec")
588   endif()
589           
590
591 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_mpi_E0LL2Y.sh
592 "#!/bin/sh
593 export POT=GB
594 export FGPROCS=$2
595 export PREFIX=$1
596 #-----------------------------------------------------------------------------
597 UNRES_BIN=${CMAKE_BINARY_DIR}/bin/${UNRES_BIN}
598 #-----------------------------------------------------------------------------
599 DD=${CMAKE_SOURCE_DIR}/PARAM
600 export BONDPAR=$DD/bond_AM1.parm
601 export THETPAR=$DD/theta_abinitio.parm
602 export ROTPAR=$DD/rotamers_AM1_aura.10022007.parm
603 export TORPAR=$DD/torsion_631Gdp.parm
604 export TORDPAR=$DD/torsion_double_631Gdp.parm
605 export ELEPAR=$DD/electr_631Gdp.parm
606 export SIDEPAR=$DD/scinter_$POT.parm
607 export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3
608 export SCPPAR=$DD/scp.parm
609 export SCCORPAR=$DD/sccor_am1_pawel.dat
610 export THETPARPDB=$DD/thetaml.5parm
611 export ROTPARPDB=$DD/scgauss.parm
612 export PATTERN=$DD/patterns.cart
613 #-----------------------------------------------------------------------------
614 echo CTEST_FULL_OUTPUT
615 ${mpiexec} ${boot_lam} ${np} $3 $UNRES_BIN | grep -v traj1file
616 ./prota_unres_energy_check.sh $1 ${UNRES_BIN}
617 ")
618
619 #
620 # File permissions workaround
621 #
622 FILE(   COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_mpi_E0LL2Y.sh 
623         DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
624         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
625 )
626
627
628 endif(UNRES_MD_FF STREQUAL "E0LL2Y")
629
630
631
632 # Add tests
633
634 if(NOT UNRES_WITH_MPI)
635                   
636   if(UNRES_MD_FF STREQUAL "GAB")
637     add_test(NAME UNRES_MD_Ala10 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh )
638   endif(UNRES_MD_FF STREQUAL "GAB")
639  
640   if(UNRES_MD_FF STREQUAL "E0LL2Y")
641     add_test(NAME UNRES_ENE_prota COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_ENE 1 )
642     add_test(NAME UNRES_MIN_prota COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_MIN_CART 1 )
643     add_test(NAME UNRES_MIN_INT COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_MIN_INT 1 )
644     add_test(NAME UNRES_REGULAR COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_MIN_REGULAR_INT 1 )
645     add_test(NAME UNRES_MD_microcanonical COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_micro 1 )
646     add_test(NAME UNRES_Langevin COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1L2Y_L 1 )
647     add_test(NAME UNRES_NoseHoover COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1L2Y_NH 1 )
648     add_test(NAME UNRES_Berendsen COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1L2Y_B 1 )
649     add_test(NAME UNRES_ss_static_min COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1ei0_min 1 )
650   endif(UNRES_MD_FF STREQUAL "E0LL2Y")
651
652 else(NOT UNRES_WITH_MPI)
653
654
655   if(UNRES_MD_FF STREQUAL "GAB")
656     add_test(NAME UNRES_MD_MPI_Ala10 COMMAND ${mpiexec} ${boot_lam} ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh )
657   endif(UNRES_MD_FF STREQUAL "GAB")
658
659   if(UNRES_MD_FF STREQUAL "E0LL2Y")
660     add_test(NAME UNRES_ENE_prota COMMAND ${mpiexec} ${boot_lam} ${np} 2 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_ENE 2 )
661     add_test(NAME UNRES_ENE1_prota COMMAND ${mpiexec} ${boot_lam} ${np} 1 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_ENE 1 )
662     add_test(NAME UNRES_MIN_prota COMMAND ${mpiexec} ${boot_lam} ${np} 2 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_MIN_CART 2 )
663     add_test(NAME UNRES_MIN_INT COMMAND ${mpiexec} ${boot_lam} ${np} 1 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_MIN_INT 1 )
664     add_test(NAME UNRES_REGULAR COMMAND ${mpiexec} ${boot_lam} ${np} 1 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_MIN_REGULAR_INT 1 )
665     add_test(NAME UNRES_MD_microcanonical COMMAND ${mpiexec} ${boot_lam} ${np} 2 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_micro 2 )
666     add_test(NAME UNRES_Langevin COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1L2Y_L 2 2 )
667     add_test(NAME UNRES_NoseHoover COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1L2Y_NH 2 2 )
668     add_test(NAME UNRES_Berendsen COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1L2Y_B 2 2 )
669     add_test(NAME UNRES_remd COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1L2Y_remd 1 8 )
670     add_test(NAME UNRES_ss_static_min COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1ei0_min 1 2 )
671   endif(UNRES_MD_FF STREQUAL "E0LL2Y")
672
673 endif(NOT UNRES_WITH_MPI)
674